Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.51/225: Рейтинг темы: голосов - 225, средняя оценка - 4.51
xord
1

частотомер на at89c51

01.06.2012, 12:11. Показов 43428. Ответов 47
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Сделал модель частотомера ra4nalа в протеусе.



не могу разобраться, почему не работает индикация.
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.06.2012, 12:11
Ответы с готовыми решениями:

частотомер
форумчани подскажите пожалуйста, разрабатываю вот этот частотомер...

Частотомер.
Делаю частотомер для струнного датчика с автогенератором, сигнал на выходе 0,3 В прямоугольный от 2...

Частотомер
Привет всем, есть программа таймера ( частотомера) написана на ассемблере, в протеусе проверил сам...

Частотомер
Помогите разобраться в схеме: http://i025.***********/1108/36/f927493416ca.jpg Вопросы: ...

Частотомер
Всем привет. Решил обзавестись сим девайсом, погуглив в инете и просмотрев несколько вариантов схем...

47
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,752
01.06.2012, 12:23 2
Цитата Сообщение от xord
не могу разобраться, ...
Приятно, когда считают экстрасенсом. А приложить проект нельзя?
0
0 / 0 / 0
Регистрация: 21.10.2011
Сообщений: 1,860
01.06.2012, 12:26 3
нихера ты не экстрасенс.
вон, по ссылке "не работает индикация."
0
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,752
01.06.2012, 12:38 4
Цитата Сообщение от tid_fom
нихера ты не экстрасенс.
Да уж, до экстрасенса мне как до Пекина... Не привык тыкать во все подряд. Скачал, погляжу.
0
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,752
01.06.2012, 13:27 5
Сначала из описания: Программа для работы с внешним и внутренним ПЗУ имеет некоторые отличия.
Из asm файла не очень ясно, какая это модификация, но дело не в этом.
Особо не разбирался, но похоже индикатор подключен не правильно. На схеме сигналы на индикатор приходят через инвертирующие ключи. В протеусе они подключены напрямую. Из программы видно, что код гашения сегментов - 0FEH, при этом подключении сегменты наоборот будут включены.


<Изображение удалено>
0
xord
01.06.2012, 20:42 6
Насколько я понял, чтобы не использовать инверторы, необходимо изменить таблицу перекодировки значений регистра в код для семисегментного индикатора.

заменил
Код
TAB:    DB     04H,9EH,22H,0AH,98H,48H,40H,1EH,00H,08H ;0-9
DB     0F0H,0FAH,3CH  ; +,-,П
DB     0FEH,0FEH,0FEH ; гашение
на
Код
TAB:    DB     0FBH,61H,0DDH,0F5H,67H,0B7H,0BFH,0E1H,0FFH,0F7H ;0-9
DB     0FH,5H,0C3H  ; +,-,П
DB     1H,1H,1H ; гашение
индикация про прежнему работает некорректно

Upd:
прикладываю измененные файлы
ссылка
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,752
01.06.2012, 20:50 7
Цитата Сообщение от xord
индикация про прежнему работает некорректно
Приложите измененные asm и hex.
0
0 / 0 / 0
Регистрация: 11.06.2011
Сообщений: 322
01.06.2012, 22:00 8
Цитата Сообщение от xord
индикация про прежнему работает некорректно
... скорее всего неверно подключены выводы порта P1
0
xord
01.06.2012, 22:17 9
Выводы действительно стояли в неправильном порядке, теперь вроде правильно расположил. Но индикация по прежнему не работает

ссылка
0 / 0 / 0
Регистрация: 11.06.2011
Сообщений: 322
01.06.2012, 22:33 10
Цитата Сообщение от xord
теперь вроде правильно расположил.
... не нужно никаких "вроде", напиши новый знакогенератор через константы - делов на 5 минут, а то так и будешь дергаться ....
Код
tid_A   EQU   01000000b
tid_B   EQU   00100000b
tid_C   EQU   00010000b
tid_D   EQU   00001000b
tid_E   EQU   00000100b
tid_F   EQU   00000001b
tid_G   EQU   00000010b
tid_H   EQU   10000000b

ch_0   EQU 255-(tid_A+tid_B+tid_C+tid_D+tid_E+tid_F)
ch_1   EQU 255-(tid_B+tid_C)
........ ; и так далее

TAB:    DB     ch_0,ch_1,ch_2,ch_3,ch_4,ch_5,ch_6,ch_7,ch_8,ch_9 ;0-9
....
0
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,752
01.06.2012, 22:41 11
Сначала про симуляцию вообще.
1. Вы поставили 8 подтягивающих (pull-up) резисторов на порт D0. Но оставили их в ANALOG. И бедному Proteus приходилось пересчитывать на них U и I с частотой симуляции.
2. В качестве генератора применен виртуальный сигнал-генератор. Он при симуляции отжирает прилично процессорного времени.
В результате желтый горчичник и предупреждение о 100% загрузке системы.
Пришлось ваш проект переделать, горчичник пропал. Смотрим на импульсы управления разрядами (вложение).
Рабочий уровень - низкий, а на этом индикаторе должен быть высокий.
Проект прилагаю.


<Изображение удалено>

[30.99 Кб]
0
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,752
01.06.2012, 23:04 12
Подумал, если не использовать инверторы, легче переделать схему протеуса под светодиодные индикаторы с ОК. Тогда изменений в программе не нужно.
0
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,752
02.06.2012, 01:25 13
Заменил индикатор с ОА типа 7SEG-MPX8-CA-BLUE на индикатор с ОК типа 7SEG-MPX8-CС-BLUE. Частоту не отображает, хотя измерение (1 с) и досчет импульсов идут. Надо отлаживать, кому надо.

[60.22 Кб]
0
xord
02.06.2012, 02:14 14
omokost, спасибо большое за помощь
xord
02.06.2012, 12:26 15
При запуске симуляции на индикаторы должно выводиться слово HELLO, что судя по логическому анализатору и происходит. Однако сам вывод на индикаторы не происходит. При подаче низкого уровня на INT0 и INT1 должен быть переход в режим измерения частоты, либо нестабильности частоты, чего тоже не происходит.
Не понятно в чем может быть причина
SWK
02.06.2012, 12:40 16
Цитата Сообщение от xord
Не понятно в чем может быть причина
Может, вы просто не дождались. Например, 1 секунда рабочего цикла реального частотомера, в симуляторе может считаться часами...

Обычно, чтобы просимулировать цифровую, а тем более с микроконтроллером, схему с высокой тактовой частотой и множеством состояний, на время симуляции приходится уменьшать, например, количество прогонов циклов и программные задержки на 2-3 порядка и более. Иначе просто не хватит терпения дождаться нужного события....

Эта одна из причин (есть еще куча), по которым я не пользуюсь симуляторами. Отлаживаю сразу на готовой плате. Проще и быстрее.
xord
02.06.2012, 12:53 17
SWK, раньше схема действительно считалась долго, но после того как omokost ее исправил, заменив резисторы, схема начала симулироваться в реальном времени.
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,752
02.06.2012, 13:05 18
Самое неприятное, что в этой схеме USORT занят на досчет импульсов. И быстрого способа навесить отладочный терминал я не вижу. Можно попробовать задействовать SPI и отладчик SPI в Proteus, но я с ним никогда не работал.
P.S. Поглядел даташит, в at89c51 отсутствует SPI, тогда методов простой отладки я вообще не вижу.
0
0 / 0 / 0
Регистрация: 11.06.2011
Сообщений: 322
02.06.2012, 13:35 19
Цитата Сообщение от omokost
Самое неприятное, что в этой схеме USORT занят на досчет импульсов.
... исходник под рукой, поэтому можно перекинуть досчет на свободный Р2.
Код
PER2:   CLR    P3.1         ; импульс на вход внешн. счетчика
SITB   P3.1         ; /
DJNZ   TMP1,PER1
меняем например на
Код
PER2:   CLR    P2.1         ; импульс на вход внешн. счетчика
SITB   P2.1         ; /
DJNZ   TMP1,PER1
...ну и не забываем про P3.0
А вот, что действительно "неприятно", так это стиль программирования - автор не использует именованных констант и разбираться в такой программе - удовольствие ниже среднего.....
0
SWK
02.06.2012, 13:44 20
Цитата Сообщение от xord
SWK, раньше схема действительно считалась долго, но после того как omokost ее исправил, заменив резисторы, схема начала симулироваться в реальном времени.
Никакой симулятор в РЕАЛЬНОМ времени работать не может...

Если, к примеру, у AVR при частоте 10 МГц скорость работы примерно 100 наносекунд на команду, ее эмуляция даже современным компом, да под Виндами, всегда будет на несколько порядков медленнее.
02.06.2012, 13:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.06.2012, 13:44
Помогаю со студенческими работами здесь

Ev8031 и at89c51
Суть вопроса такова: есть стенд ev8031 и на нём мк at89c51. к стенду есть методичка с лабами, в...

AT89C51 UART
Добрый вечер. Вот возникла такая проблема: на контролере AT89C51 питаюсь завести UART. SCON: SM0 =...

Задержка на МК AT89C51
Добрый день. Вот такая проблема: хочу организовать задержку на МК AT89C51. Делаю циклом: нифига, а...

Частотомер на Tiny12L
Всем привет! Не могу побороть программу-частотомер, прошу помощи. Код перепроверил вдоль и поперёк,...

Частотомер и atmega16
Собираюсь сделать тахометр для мотоцикла на индукционном датчике(катушке собственного изготовления)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru