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

 
 
> FIQ на RM9200, не сбрасывается прерывание
SSSK
сообщение Dec 27 2006, 16:05
Сообщение #1





Группа: Новичок
Сообщений: 7
Регистрация: 27-12-06
Пользователь №: 23 944



Помогите разобраться !!! AIC не сбрасывает прерывание при считывании FVR.

В стартапе:

org 0x1c
ldr PC,[PC,#-0xF20]

В main.c:
__arm __fiq void f_handler( void ) ;

int main()
{
....
PIOB_PDR = (1 << 28); // PB28 - Perepheral control
PIOB_ASR = (1 << 28); // PB28 - PA (FIQ)
PIOB_ODR = 0x1000ffff; // As input
PMC_PCER = 8;
AT91C_BASE_AIC->AIC_SVR[0] = ( AT91_REG )f_handler ; /* set isr */
AT91C_BASE_AIC->AIC_SMR[0] = (3 << 5) ; /* Positive - edge triggered */
....
}

Тело обработчика:

__arm __fiq void f_handler( void )
{
AIC_EOICR = 0; // Здесь ставлю брейкпоинт и проверяю регистры
}

По теории AIC должен сбросить прерывание при считывании FVR, однако это не отслеживатеся в самом прерывании, да и в результате подачи единичного положительного фронта на PB28 программа зацикливается в обработчике. Если принудидельно очищать прерывание AIC_ICCR = 1, то все нормально работает (но такой способ ИМХО неверен). Подскажите плиз в чем проблема.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 20th July 2025 - 13:04
Рейтинг@Mail.ru


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