This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

LPC2138 Timer0 Interrupt

Can anyone tell me why my interrupt is not firing? The T0IR flag is set upon rollover of the TIMER0 32 bit timer, but my code is not vectored to the interrupt code. My variable 'system_timer' never gets decremented.

unsigned long system_timer, j;

void decrement_timers() __irq
{
// occurs 896 times per second

system_timer--;

T0IR |= 1;
}

int main()
{
VPBDIV = 1;

// set up delay timer (TIMER 0)

VICIntSelect = 0; // all interrupts classified as IRQs
VICVectCntl0 = 0x00000024;
VICVectAddr0 = (unsigned int) decrement_timers;
VICIntEnable = 0x00000010;

// Disable Timer0 and Reset Interrupt Flag

T0TCR = 0;
T0IR |= 1;

T0MR0 = 0;
T0MCR = 1;

T0CTCR = 0;
T0PR = 0;
T0TCR = 1;

// just an infinite loop to check Timer0

system_timer = 4000;

j = 0;
for(;;)
{
j = j + 2;
}
}