xord
|
|
1 | |
частотомер на at89c5101.06.2012, 12:11. Показов 43428. Ответов 47
Метки нет (Все метки)
|
01.06.2012, 12:11 | |
Ответы с готовыми решениями:
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
0
|
0 / 0 / 0
Регистрация: 11.06.2011
Сообщений: 322
|
|
01.06.2012, 22:00 | 8 |
Сообщение от xord
0
|
0 / 0 / 0
Регистрация: 11.06.2011
Сообщений: 322
|
|
01.06.2012, 22:33 | 10 |
Сообщение от xord
Код
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
Обычно, чтобы просимулировать цифровую, а тем более с микроконтроллером, схему с высокой тактовой частотой и множеством состояний, на время симуляции приходится уменьшать, например, количество прогонов циклов и программные задержки на 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
Код
PER2: CLR P3.1 ; импульс на вход внешн. счетчика SITB P3.1 ; / DJNZ TMP1,PER1 Код
PER2: CLR P2.1 ; импульс на вход внешн. счетчика SITB P2.1 ; / DJNZ TMP1,PER1 А вот, что действительно "неприятно", так это стиль программирования - автор не использует именованных констант и разбираться в такой программе - удовольствие ниже среднего.....
0
|
SWK
|
|
02.06.2012, 13:44 | 20 |
Сообщение от xord
Если, к примеру, у AVR при частоте 10 МГц скорость работы примерно 100 наносекунд на команду, ее эмуляция даже современным компом, да под Виндами, всегда будет на несколько порядков медленнее. |
02.06.2012, 13:44 | |
02.06.2012, 13:44 | |
Помогаю со студенческими работами здесь
20
Ev8031 и at89c51 AT89C51 UART Задержка на МК AT89C51 Частотомер на Tiny12L Частотомер и atmega16 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |