Пытаюсь освоить работу с прерываниями...
Сконфигурировала на вход ножку, подцепила к ней девайс, - идея в том, что когда я даю установку девайсу он должен в течении 300 мс держать на этой ножке чётко 1... если был за это время хоть один сброс в 0 - то взываю прерывание... изменяю флаг... и.т.д...
Вот мой код... Функ-я
Код
//обработчик
void pio_c_irq_handler ( void )
{
int dummy;
TFlag = 1;//уст флаг в один - если был сброс в нуль!
//* enable the next PIO IRQ
dummy =AT91C_BASE_PIOA->PIO_ISR;
//* suppress the compilation warning
dummy = dummy;
AT91C_BASE_AIC->AIC_EOICR=0x00;
}
....
и далее в главном цикле ... делаю опрос
AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1 << AT91C_ID_PIOA);
AT91F_PIO_CfgInput(AT91C_BASE_PIOA, LD);
AT91F_AIC_ConfigureIt ( pAic, AT91C_ID_PIOA, 1,AT91C_AIC_SRCTYPE_EXT_LOW_LEVEL, pio_c_irq_handler);
AT91F_PIO_InterruptEnable(AT91C_BASE_PIOA, LD);
AT91F_AIC_EnableIt (AT91C_BASE_AIC, AT91C_ID_PIOA);
AT91C_BASE_PIOA->PIO_IER = (1 << LD);
Sleep(300);
If(TFlag) // прерывание сработало
{
...
}
проблема в том, что прерывание не срабатывает... Т.е. сигнал на ножке скачет и пляшет... а прерывание не срабатывает.

не могу понять - где ошиблась...???... народ подскажите пожаста...
Сообщение отредактировал Annuta - Jul 23 2007, 12:47