Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Странное повидение aduc842
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > MCS51
iskrovec
Всем доброго дня!
Решил поменять на плате 812-й на 842-й, залил программу - а оно не йдеть! Долго копался, оказалось, что при дергании ногой Р3.3 (используется как цифровой выход) контролер наглухо затыкался.
Внешние прерывания запрещены, но такое впечатление, что он входит в интеррапт и уже не выходит. Пробовал на него подавать внешний сигнал - то же самое, виснет.
Что это может быть?
iskrovec
И почему по WATCHDOGу не выходит из этого состояния?
Может у кого какие мысли есть?
SALOME
Цитата(iskrovec @ Jun 13 2007, 20:43) *
И почему по WATCHDOGу не выходит из этого состояния?
Может у кого какие мысли есть?

Мысли такие:
- Полное ли совпадение по ногам 812 и 842.
- для того, чтобы он работал режим WATCHDOG его надо включить в регистре WDCON.
- попробовать подергать другой ногой.
- посмотреть осцилографом идет ли генерация на кварце.
- правильно ли организован RESET и т.д.
iskrovec
Цитата(SALOME @ Jun 14 2007, 14:30) *
Мысли такие:
- Полное ли совпадение по ногам 812 и 842.
- для того, чтобы он работал режим WATCHDOG его надо включить в регистре WDCON.
- попробовать подергать другой ногой.
- посмотреть осцилографом идет ли генерация на кварце.
- правильно ли организован RESET и т.д.


812 и 842 по ногам совпадают полностью, только кварц 32кГц.
WATCHDOG специально запускал на 2с, чтоб постоянно сбрасывал. Сброс проходит нормально, пока не не начну дергать Р3.3. После этого - полная тишина. Даже если программно не трогать Р3.3, а на вывод 19 подать "0" - то же самое.
Соседние ноги дергаются нормально.
Генерация на кварце само-собой есть.
Omen_13
Может не совсем в точно но в ошибках была фраза о длительности 0 на р3.2 и р3.3 может дело в этом?
Цитата
10. Level Triggered Interrupt Operation er010
Background:
The ADuC841/ADuC842/ADuC843 incorporate two external interrupt sources (INT0 and INT1) that can be configured to respond to either an edge event or a level event.
Issue:
If an interrupt occurs on the INT0 or INT1 pins and is then removed within one core instruction cycle, the interrupt vector address that is generated may be incorrect resulting in a vector to 0x0000. This effectively restarts code execution.
Workaround:
To ensure that this does not occur the level triggered interrupt source must be kept low for a minimum of 9 core clock cycles.
Related Issues:
None.
SALOME
Цитата(iskrovec @ Jun 14 2007, 19:03) *
Соседние ноги дергаются нормально.

Тяжелый случай. Посмотрю на своей плате. Но есть мысль, что неисправна обвязка pin3.3. А что показывает осцилограф на этой ноге? Каковы 1, 0 в исходном и испытуемом состоянии. Может pin просто накрылся?
iskrovec
Anomaly прочитал в первую очередь.
Там про внешние прерывания и длительность входного воздействия > 9 тактов. У меня внешние прерывания не используются.
Сегодня картина уточнилась. Контроллер вешается, если в Р2 записать 0xFF и после дернуть ногой Р3.3. 07.gif
Р3.3 сам по себе работает нормально.
iskrovec
Выяснил еще одну особенность:
Если вывод данных в порт производить через операции "чтение-модификация-запись" - то эффект зависания не наблюдается.
Может кто это объяснит?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.