Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Влияние отладки на прерывания AT91
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
ivstech
Вопрос такой:
Есть обработчик прерывания IRQ от DBGU: AT91C_US_RXRDY и AT91C_US_TXEMPTY.
Если приостановить работу программы JTAG отладчиком (break) и передать 2 байта через HyperTerminal в контроллер AT91SAM7S, произойдет OVERRUN. Далее если продолжить работу контроллера, он указанные прерывания уже не обрабатывает, даже если сбросить OVRE записью AT91C_US_RSTSTA в DBGU_CR.
Отлаживаю в IAR H-JTAG + Wiggler

Дополнительно, не так важно:
В некоторых других случаях (подозреваю, что при остановке в момент передачи байта), но с 100% вероятностью нарушается нормальная работа всей программы, по последствиям похоже на затирание стеком/стека. Увеличение размеров стеков, сохранение всех регистров (R1-R11 место R1-R3) в обработчике IRQ не меняет ничего. Можно еще попробовать программу разместить не в ОЗУ, а во FLASH
ivstech
Сбои устранились после установки вместо H-JTAG V0.2 версии V0.4

Остался вопрос по прерываниям:
Если прекратить выполнение программы отладчиком внутри прерывания, то при повторной загрузке программы прерывания не вызываются, нужно сделать аппаратный сброс (нажатием кнопки на плате). Я так понимаю, контроллером запоминается приоритет выполняемого прерывания.
Как заставить прерывания отрабатывать, не выполняя аппаратного сброса?
Сергей Борщ
Цитата(ivstech @ Feb 23 2007, 15:25) *
Как заставить прерывания отрабатывать, не выполняя аппаратного сброса?
вставить в процедуру инициализации AT91C_BASE_AIC->AIC_EOICR = 0;
Dron_Gus
Так же можно добавить
AT91C_BASE_AIC->AIC_DEBUG = 1;
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.