Цитата
Во-первых, не нужно читать write-only регистры.
Если это про AIC_IVR, то это я наверно на автомате набрал, читая pdf на контроллер. Вообще-то этот регистр уже наверно считался до входа в эту процедуру обработки:
cstartup.s:
Код
...
__irq_handler:
ldr PC,[PC,#-0xF20] ;; IRQ
....
Цитата
Во-вторых, какой смысл использовать прерывания по фронту для внутреннего источника в данном случае?
AT91C_AIC_SRCTYPE_INT_EDGE_TRIGGERED в файле AT91RM9200.h описан как:
#define AT91C_AIC_SRCTYPE_INT_EDGE_TRIGGERED ((unsigned int) 0x1 << 5) // (AIC) Internal Sources Code Label Edge triggered, т.е. в соответствии с pdf на контроллер это и прерывание по фронту для внутреннего источника так и прерывание по спаду для внешнего прерывания.