Easyelectronics.ru

Электроника для всех
Текущее время: 05 июн 2020, 15:50

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 50 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: частотомер на at89c51
СообщениеДобавлено: 02 июн 2012, 11:58 
Только пришел

Зарегистрирован: 02 июн 2012, 11:42
Сообщения: 9
Сделал модель частотомера ra4nal'а в протеусе.

Изображение

не могу разобраться, почему не работает индикация.


Последний раз редактировалось xard 02 июн 2012, 12:16, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: частотомер на at89c51
СообщениеДобавлено: 02 июн 2012, 12:10 
Старожил
Аватара пользователя

Зарегистрирован: 28 дек 2011, 11:24
Сообщения: 4254
Откуда: г. Липецк
xard писал(а):
не могу разобраться, ...

Приятно, когда считают экстрасенсом. А приложить проект нельзя?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: частотомер на at89c51
СообщениеДобавлено: 02 июн 2012, 12:13 
Старожил

Зарегистрирован: 24 окт 2011, 17:29
Сообщения: 2338
Откуда: Украина
нихера ты не экстрасенс.
вон, по ссылке "не работает индикация."


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: частотомер на at89c51
СообщениеДобавлено: 02 июн 2012, 12:25 
Старожил
Аватара пользователя

Зарегистрирован: 28 дек 2011, 11:24
Сообщения: 4254
Откуда: г. Липецк
led_fan писал(а):
нихера ты не экстрасенс.

Да уж, до экстрасенса мне как до Пекина... Не привык тыкать во все подряд. Скачал, погляжу.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: частотомер на at89c51
СообщениеДобавлено: 02 июн 2012, 13:14 
Старожил
Аватара пользователя

Зарегистрирован: 28 дек 2011, 11:24
Сообщения: 4254
Откуда: г. Липецк
Сначала из описания: Программа для работы с внешним и внутренним ПЗУ имеет некоторые отличия.
Из asm файла не очень ясно, какая это модификация, но дело не в этом.
Особо не разбирался, но похоже индикатор подключен не правильно. На схеме сигналы на индикатор приходят через инвертирующие ключи. В протеусе они подключены напрямую. Из программы видно, что код гашения сегментов - 0FEH, при этом подключении сегменты наоборот будут включены.


Вложения:
schema1.png
schema1.png [ 22.22 Кб | Просмотров: 13544 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: частотомер на at89c51
СообщениеДобавлено: 02 июн 2012, 20:29 
Только пришел

Зарегистрирован: 02 июн 2012, 11:42
Сообщения: 9
Насколько я понял, чтобы не использовать инверторы, необходимо изменить таблицу перекодировки значений регистра в код для семисегментного индикатора.

заменил
Код:
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:
прикладываю измененные файлы
ссылка


Последний раз редактировалось xard 02 июн 2012, 20:40, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: частотомер на at89c51
СообщениеДобавлено: 02 июн 2012, 20:37 
Старожил
Аватара пользователя

Зарегистрирован: 28 дек 2011, 11:24
Сообщения: 4254
Откуда: г. Липецк
xard писал(а):
индикация про прежнему работает некорректно

Приложите измененные asm и hex.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: частотомер на at89c51
СообщениеДобавлено: 02 июн 2012, 21:47 
Старожил
Аватара пользователя

Зарегистрирован: 14 июн 2011, 14:22
Сообщения: 335
xard писал(а):
индикация про прежнему работает некорректно
... скорее всего неверно подключены выводы порта P1


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: частотомер на at89c51
СообщениеДобавлено: 02 июн 2012, 22:04 
Только пришел

Зарегистрирован: 02 июн 2012, 11:42
Сообщения: 9
Выводы действительно стояли в неправильном порядке, теперь вроде правильно расположил. Но индикация по прежнему не работает


ссылка


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: частотомер на at89c51
СообщениеДобавлено: 02 июн 2012, 22:20 
Старожил
Аватара пользователя

Зарегистрирован: 14 июн 2011, 14:22
Сообщения: 335
xard писал(а):
теперь вроде правильно расположил.
... не нужно никаких "вроде", напиши новый знакогенератор через константы - делов на 5 минут, а то так и будешь дергаться ....
Код:
led_A   EQU   01000000b
led_B   EQU   00100000b
led_C   EQU   00010000b
led_D   EQU   00001000b
led_E   EQU   00000100b
led_F   EQU   00000001b
led_G   EQU   00000010b
led_H   EQU   10000000b 

ch_0   EQU 255-(led_A+led_B+led_C+led_D+led_E+led_F)
ch_1   EQU 255-(led_B+led_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
....


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: частотомер на at89c51
СообщениеДобавлено: 02 июн 2012, 22:28 
Старожил
Аватара пользователя

Зарегистрирован: 28 дек 2011, 11:24
Сообщения: 4254
Откуда: г. Липецк
Сначала про симуляцию вообще.
1. Вы поставили 8 подтягивающих (pull-up) резисторов на порт D0. Но оставили их в ANALOG. И бедному Proteus приходилось пересчитывать на них U и I с частотой симуляции.
2. В качестве генератора применен виртуальный сигнал-генератор. Он при симуляции отжирает прилично процессорного времени.
В результате желтый горчичник и предупреждение о 100% загрузке системы.
Пришлось ваш проект переделать, горчичник пропал. Смотрим на импульсы управления разрядами (вложение).
Рабочий уровень - низкий, а на этом индикаторе должен быть высокий.
Проект прилагаю.


Вложения:
Schema2.png
Schema2.png [ 5.93 Кб | Просмотров: 13490 ]
schema2.zip [30.99 Кб]
Скачиваний: 734
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: частотомер на at89c51
СообщениеДобавлено: 02 июн 2012, 22:51 
Старожил
Аватара пользователя

Зарегистрирован: 28 дек 2011, 11:24
Сообщения: 4254
Откуда: г. Липецк
Подумал, если не использовать инверторы, легче переделать схему протеуса под светодиодные индикаторы с ОК. Тогда изменений в программе не нужно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: частотомер на at89c51
СообщениеДобавлено: 03 июн 2012, 01:12 
Старожил
Аватара пользователя

Зарегистрирован: 28 дек 2011, 11:24
Сообщения: 4254
Откуда: г. Липецк
Заменил индикатор с ОА типа 7SEG-MPX8-CA-BLUE на индикатор с ОК типа 7SEG-MPX8-CС-BLUE. Частоту не отображает, хотя измерение (1 с) и досчет импульсов идут. Надо отлаживать, кому надо.


Вложения:
schema2.zip [60.22 Кб]
Скачиваний: 488
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: частотомер на at89c51
СообщениеДобавлено: 03 июн 2012, 02:01 
Только пришел

Зарегистрирован: 02 июн 2012, 11:42
Сообщения: 9
anakost, спасибо большое за помощь


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: частотомер на at89c51
СообщениеДобавлено: 03 июн 2012, 12:13 
Только пришел

Зарегистрирован: 02 июн 2012, 11:42
Сообщения: 9
При запуске симуляции на индикаторы должно выводиться слово HELLO, что судя по логическому анализатору и происходит. Однако сам вывод на индикаторы не происходит. При подаче низкого уровня на INT0 и INT1 должен быть переход в режим измерения частоты, либо нестабильности частоты, чего тоже не происходит.
Не понятно в чем может быть причина


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: частотомер на at89c51
СообщениеДобавлено: 03 июн 2012, 12:27 
Супермодератор
Аватара пользователя

Зарегистрирован: 26 янв 2010, 22:08
Сообщения: 7549
Откуда: Алма-ата
xard писал(а):
Не понятно в чем может быть причина

Может, вы просто не дождались. Например, 1 секунда рабочего цикла реального частотомера, в симуляторе может считаться часами...

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

Эта одна из причин (есть еще куча), по которым я не пользуюсь симуляторами. Отлаживаю сразу на готовой плате. Проще и быстрее.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: частотомер на at89c51
СообщениеДобавлено: 03 июн 2012, 12:40 
Только пришел

Зарегистрирован: 02 июн 2012, 11:42
Сообщения: 9
SWG, раньше схема действительно считалась долго, но после того как anakost ее исправил, заменив резисторы, схема начала симулироваться в реальном времени.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: частотомер на at89c51
СообщениеДобавлено: 03 июн 2012, 12:52 
Старожил
Аватара пользователя

Зарегистрирован: 28 дек 2011, 11:24
Сообщения: 4254
Откуда: г. Липецк
Самое неприятное, что в этой схеме USART занят на досчет импульсов. И быстрого способа навесить отладочный терминал я не вижу. Можно попробовать задействовать SPI и отладчик SPI в Proteus, но я с ним никогда не работал.
P.S. Поглядел даташит, в at89c51 отсутствует SPI, тогда методов простой отладки я вообще не вижу.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: частотомер на at89c51
СообщениеДобавлено: 03 июн 2012, 13:22 
Старожил
Аватара пользователя

Зарегистрирован: 14 июн 2011, 14:22
Сообщения: 335
anakost писал(а):
Самое неприятное, что в этой схеме USART занят на досчет импульсов.
... исходник под рукой, поэтому можно перекинуть досчет на свободный Р2.
Код:
PER2:   CLR    P3.1         ; импульс на вход внешн. счетчика
        SETB   P3.1         ; /
        DJNZ   TMP1,PER1
меняем например на
Код:
PER2:   CLR    P2.1         ; импульс на вход внешн. счетчика
        SETB   P2.1         ; /
        DJNZ   TMP1,PER1
...ну и не забываем про P3.0
А вот, что действительно "неприятно", так это стиль программирования - автор не использует именованных констант и разбираться в такой программе - удовольствие ниже среднего.....


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: частотомер на at89c51
СообщениеДобавлено: 03 июн 2012, 13:31 
Супермодератор
Аватара пользователя

Зарегистрирован: 26 янв 2010, 22:08
Сообщения: 7549
Откуда: Алма-ата
xard писал(а):
SWG, раньше схема действительно считалась долго, но после того как anakost ее исправил, заменив резисторы, схема начала симулироваться в реальном времени.

Никакой симулятор в РЕАЛЬНОМ времени работать не может...

Если, к примеру, у AVR при частоте 10 МГц скорость работы примерно 100 наносекунд на команду, ее эмуляция даже современным компом, да под Виндами, всегда будет на несколько порядков медленнее.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: частотомер на at89c51
СообщениеДобавлено: 03 июн 2012, 13:36 
Старожил
Аватара пользователя

Зарегистрирован: 14 июн 2011, 14:22
Сообщения: 335
SWG писал(а):
Никакой симулятор в РЕАЛЬНОМ времени работать не может...
... думаю это и так всем понятно, но баг не в этом.....


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: частотомер на at89c51
СообщениеДобавлено: 03 июн 2012, 13:37 
Старожил
Аватара пользователя

Зарегистрирован: 28 дек 2011, 11:24
Сообщения: 4254
Откуда: г. Липецк
ChipKiller писал(а):
А вот, что действительно "неприятно", так это стиль программирования - автор не использует именованных констант и разбираться в такой программе - удовольствие ниже среднего.....

Согласен, вылавливать по тексту обращения к портам, морока еще та. Особенно в С51 с его кучей методов адресации. Однако при непосредственной адресации не все так плохо. Простым поиском я насчитал по 2 места с непосредственным обращением с портам P3.0 и P3.1. Если не используются другие методы обращения, возможно и прокатит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: частотомер на at89c51
СообщениеДобавлено: 03 июн 2012, 13:57 
Старожил
Аватара пользователя

Зарегистрирован: 14 июн 2011, 14:22
Сообщения: 335
по логике в принципе все понятно -
Р3.0 разрешает/запрещает цикл измерения
Р3.1 выполняет досчет
так что замена Р3.0-Р3.1 на Р2.0-Р2.1 думаю пройдет, а вот строки типа
Код:
....
MOV    @R1,#0FH     ; гашение нуля
....
MOV    R4,#0B7H     ; точки без делителя
JB     P3.4,DS1     ; без делителя
MOV    R4,#0DBH     ; точки с делителем
которыми пестрит программа, наводит на мысль, что лучше все написать с нуля.....


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: частотомер на at89c51
СообщениеДобавлено: 03 июн 2012, 14:11 
Старожил
Аватара пользователя

Зарегистрирован: 28 дек 2011, 11:24
Сообщения: 4254
Откуда: г. Липецк
ChipKiller писал(а):
... наводит на мысль, что лучше все написать с нуля.....

Было бы еще время и желание ...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: частотомер на at89c51
СообщениеДобавлено: 03 июн 2012, 15:17 
Супермодератор
Аватара пользователя

Зарегистрирован: 26 янв 2010, 22:08
Сообщения: 7549
Откуда: Алма-ата
Вообще-то, чем маяться с переделкой довольно древней конструкуции на чуть менее древнюю, лучше подобрать что-нибудь из готовых разработок.
Например, тут: http://www.cqham.ru/cons_trx.htm#10

Я бы посоветовал делать на PIC. Они без особых проблем считают с внешнего входа через внутренний предделитель до 60-70МГц, с дискретностью 1 Гц, независимо от тактовой частоты самого контроллера (хоть 1 МГц), - в отличие от Атмеловских, на которых больше единиц мегагерц не получишь, даже при тактовой 20МГц.

Например, "Классика жанра", - частотомер Денисова (он же еще и - цифровая шкала):
http://www.cqham.ru/digi.htm
Особенно если использовать для него прошивку с доработками Корабельникова (есть и под 84, и под 628).


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 50 ]  На страницу 1, 2  След.


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB