Полная версия этой страницы:
Вопрос по AT91SAM7Sxx
Разбираюсь с отладочной платой AT91SAM7S61-IAR. Возникла проблема с прерываниями от PIT таймера. Делаю примерно следующее:
...
//* Open the interrupt on the AIC
AT91F_AIC_ConfigureIt ( pAic, AT91C_ID_SYS, SOFT_INTERRUPT_LEVEL, AT91C_AIC_SRCTYPE_INT_EDGE_TRIGGERED, aic_software_interrupt);
AT91F_AIC_EnableIt (pAic, AT91C_ID_SYS);
...
AT91F_PITInit (AT91C_BASE_PITC, PIT_CONST, MCKMHz);
AT91F_PITEnableInt (AT91C_BASE_PITC);
...
Прерывания генерятся только после
AT91F_AIC_Trig (AT91C_BASE_AIC, AT91C_ID_SYS) ;
PIT таймер работает. При просмотре сотояния регистров соответствующие флаги pend. int. установлены. Прерывания от других периферийных устройств приходят.
В чем я неправ?
P.S. Использую IAR 4.30.
Т.е мои ответы не дали результата.
Я до них дошёл следующим образом. Останавливался на брейкпойнте где-нибудь в программе и у меня был открыт дамп памяти (адреса как раз регистров таймера). Толкал программу дальше и прерывания появлялись, так я нащупал те регистры которые надо читать ,что бы не было такого глюка.
Да результат отрицательный ... Причем не повлияло никак на RTT и на PIT. Не может быть каких-нибудь глюков связанных с IARом? Я нашел пример для Keil - там делается все то же самое....
У меня прерывание сконфигурировано так
AT91F_AIC_ConfigureIt ( pAic, AT91C_ID_SYS, SOFT_INTERRUPT_LEVEL, AT91C_AIC_SRCTYPE_EXT_POSITIVE_EDGE,
aic_software_interrupt);
Решение оказалось очень простым: в самом начале main втавил строку AT91C_BASE_AIC->AIC_EOICR = 0x0
Цитата(40in @ Oct 7 2005, 16:10)
Решение оказалось очень простым: в самом начале main втавил строку AT91C_BASE_AIC->AIC_EOICR = 0x0

В догонку, нечто подобное я описывал тут
http://forum.electronix.ru/index.php?showtopic=8187
Я уже видел это сообщение. Поправил файл. Но окончательно все заработало (вроде

) тока после добавления а main строки.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.