Цитата(Balaganoff @ Sep 23 2008, 15:02)

Прерывания же от PIO считаются внутренними, а "значения активных уровней внутренних прерываний для пользователя не имеют значения" .
Да, ступил, признаю. Тогда надо проверять, что подтяжки действительно включены, что сигнал от джойстика приходит на нужную ногу, смотреть, в каком виде хочет второй параметр AT91F_PIO_InterruptEnable() и чему равна SW4_MASK
Больше у меня версий нет. Вот этот код работает:
Код
void CMX_init()
{
AT91C_BASE_PIOA->PIO_IER = (1UL<<19); // FFSK_CLK
// AIC
AT91C_BASE_AIC->AIC_SMR[AT91C_ID_PIOA] = AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL | AT91C_AIC_PRIOR_LOWEST + 1;
AT91C_BASE_AIC->AIC_SVR[AT91C_ID_PIOA] = (uint32_t)CMX469_Int_Handler;
AT91C_BASE_AIC->AIC_IECR = (1<<AT91C_ID_PIOA); // enable ints
}
OS_INTERRUPT void CMX469_Int_Handler()
{
OS::TISRW ISR;
if(AT91C_BASE_PIOA->PIO_ISR & (1<<19))
{
FFSK_modem.put(signal(FFSK_DATA), ADC.RSSI());
}
AT91C_BASE_AIC->AIC_EOICR = 0; // Reset AIC logic
}