PIT interrupt on SAM7

Greetings all,

I have tried to make the PIT Interrupt working on a SAM7X256 and I can't make it work. I only have one file file - main.c so it's a really simple piece of code. Can anybody help me by telling me why this doesn't work ?

#include #include

void swi_handler (void) __attribute__ ((interrupt ("SWI"))); void swi_handler (void) { }

void vISR (void); void InitPIT (unsigned long int ulPeriod);

void vISR (void) { static unsigned char ucLED = 1; unsigned long ulDummy;

// Toggle back light here. if (ucLED) { AT91F_PIO_ClearOutput (AT91C_BASE_PIOB, AT91C_PIO_PB20); ucLED = 0; } else { AT91F_PIO_SetOutput (AT91C_BASE_PIOB, AT91C_PIO_PB20); ucLED = 1; }

ulDummy = AT91C_BASE_PITC->PITC_PIVR; AT91C_BASE_AIC->AIC_EOICR = ulDummy; }

void InitPIT (unsigned long int ulPeriod) { //initialize PIT (Periodic Interrupt Timer), base time microseconds AT91F_PITInit(AT91C_BASE_PITC,ulPeriod,48);

//Enable interrupts AT91F_PITEnableInt(AT91C_BASE_PITC);

//Interrupt Handler AT91F_AIC_ConfigureIt(AT91C_BASE_AIC, AT91C_ID_SYS, AT91C_AIC_PRIOR_HIGHEST, AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL, vISR);

// Enable Peripheral clock in PMC for PITC AT91F_PITC_CfgPMC();

AT91F_AIC_EnableIt(AT91C_BASE_AIC, AT91C_ID_SYS); }

int main( void ) { // Setup hardware AT91F_PIO_CfgPeriph (AT91C_BASE_PIOB, AT91C_PIO_PB20, 0); AT91F_PIO_CfgOutput (AT91C_BASE_PIOB, AT91C_PIO_PB20);

// Setup PIT InitPIT (1000);

while( 1 ); }

Reply to
RaceMouse
Loading thread data ...

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.