реклама на сайте
подробности

 
 
> SAM7SE застревает прерывание
KITA
сообщение May 27 2013, 16:51
Сообщение #1





Группа: Новичок
Сообщений: 7
Регистрация: 19-09-09
Пользователь №: 52 458



AT91SAM7SE512. На SYS_IRQ (ID=2) висит обработчик. Всё работает долго и успешно, но в какой-то момент обработчик перестаёт вызываться. При этом, AIC_IPR=2 , AIC_IMR=2 , AIC_DCR.GMSK=0 , CPSR.I=0 , CPSR.MODE без изменений. А обработчик не вызывается. Вот как такое может быть?! Подскажите, люди добрые!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
aaarrr
сообщение May 27 2013, 19:26
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Проверьте, нет ли вероятности выхода из какого-либо прерывания без записи AIC_EOICR.
Go to the top of the page
 
+Quote Post
KITA
сообщение May 27 2013, 20:58
Сообщение #3





Группа: Новичок
Сообщений: 7
Регистрация: 19-09-09
Пользователь №: 52 458



Цитата(aaarrr @ May 27 2013, 23:26) *
Проверьте, нет ли вероятности выхода из какого-либо прерывания без записи AIC_EOICR.


Вероятность всегда естьsm.gif Только вот где бы это могло случиться, я не вижу. Во всех обработчиках, return один и последним оператором. А предпоследним EOICR. Ну допустим, что где-то, что-то сглючивается, и вылетает она из какого-нибудь обработчика посередине. А увидеть, что AIC_EOICR не записали в каком-нибудь регистре можно?

Цитата(aaarrr @ May 28 2013, 00:53) *
Код
*AT91C_AIC_ICCR=1<<AT91C_ID_SYS;

Если прерывание сконфигурировано для работы по уровню, то эта строчка не имеет смысла; если по фронту - это готовый источник проблем.

А, да, это атавизм. Спасибо, уберу.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение May 27 2013, 21:14
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(KITA @ May 28 2013, 00:58) *
А увидеть, что AIC_EOICR не записали в каком-нибудь регистре можно?

Увы, нет.
Go to the top of the page
 
+Quote Post
KITA
сообщение May 27 2013, 21:27
Сообщение #5





Группа: Новичок
Сообщений: 7
Регистрация: 19-09-09
Пользователь №: 52 458



Цитата(aaarrr @ May 28 2013, 01:14) *
Увы, нет.


Печалько... Но видимо, больше ничего быть не может. Буду пока копать в этом направлении. Спасибо за подсказку.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение May 27 2013, 21:36
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(KITA @ May 28 2013, 01:27) *
Печалько... Но видимо, больше ничего быть не может. Буду пока копать в этом направлении. Спасибо за подсказку.

Похоже: сброс внутри прерывания по записи ICCR тоже привел бы к неработающим прерываниям, но в этом случае не было бы единички в IPR.
UPD: или оно все же сконфигурировано по уровню? Если нет, то настоятельно рекомендую.

Попробуйте записать EOICR, когда поймаете "зависание" - если логика была нарушена, то после этой записи должно запустится прерывание.

Еще неплохо бы проверить листинг на предмет корректности кода для вложенных прерываний.
Go to the top of the page
 
+Quote Post
KITA
сообщение May 27 2013, 22:55
Сообщение #7





Группа: Новичок
Сообщений: 7
Регистрация: 19-09-09
Пользователь №: 52 458



Цитата(aaarrr @ May 28 2013, 01:36) *
Похоже: сброс внутри прерывания по записи ICCR тоже привел бы к неработающим прерываниям, но в этом случае не было бы единички в IPR.
UPD: или оно все же сконфигурировано по уровню? Если нет, то настоятельно рекомендую.


По уровню.

Цитата(aaarrr @ May 28 2013, 01:36) *
Попробуйте записать EOICR, когда поймаете "зависание" - если логика была нарушена, то после этой записи должно запустится прерывание.


Да, до этого я уже додумался, но теперь надо подождать денёк, пока эта тварь снова повиснетsm.gif

Цитата(aaarrr @ May 28 2013, 01:36) *
Еще неплохо бы проверить листинг на предмет корректности кода для вложенных прерываний.

А вложенных нету, без _nested что-то не так с вызовом процедур из обработчика было (давно было, не помню, что-то они там в один регистр с обработчиком адрес возврата запоминали что-ли...). Сейчас уже, правда, вызовов нет, ну а _nested остался, по-моему так надёжнееsm.gif
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th August 2025 - 21:23
Рейтинг@Mail.ru


Страница сгенерированна за 0.01429 секунд с 7
ELECTRONIX ©2004-2016