davidevisconti wrote on Wednesday, November 19, 2008:
Hi to all, I’m new in the forum.
I have a simple question because I’m frustrated…
how to set up an interrupt input ???
On the internet i have found some example but nobody works!
Follow I post my simple code.
Thank you in advance and sorry for my bad english.
best regards,
Davide
INP1 is the PortA 21
This is in the main()
…
AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC, 1 << AT91C_ID_PIOA);
AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC, 1 << AT91C_ID_PIOB);
AT91F_PIO_CfgInput (AT91C_BASE_PIOA, AT91C_ID_PIOA);
AT91F_AIC_ConfigureItH (AT91C_BASE_AIC, AT91C_ID_PIOA, 5, AT91C_AIC_SRCTYPE_HIGH_LEVEL, InterruptOnInput);
AT91F_PIO_InterruptEnable (AT91C_BASE_PIOA, (1 << INP1));
AT91F_AIC_EnableIt (AT91C_BASE_AIC, AT91C_ID_PIOA);
…and the function InterruptOnInput
//***************************
void InterruptOnInput( void )
//***************************
{
int dummy;
//* enable the next PIO IRQ
dummy =AT91C_BASE_PIOA->PIO_ISR;
//* suppress the compilation warning
dummy = dummy;
AT91C_BASE_AIC->AIC_EOICR=0x00;
// Set the output for a visual verify
// OUT5 = Port B 23 = 55
AT91C_BASE_PIOB->PIO_CODR = 1 << OUT5;
}