Problema LPC2142 - interrupção do timer0

Pessoal,
Já estou a quase dois dias tentando usar a interrupção do timer 0 do LPC2142.
Estou usando o Crossstudio, peguei uma dezena de exemplos na internet e todos são bem parecidos com o que estou, usando.
O timer roda bonitinho mas a interrupção nunca é chamada. Caso eu use a biblioteca de configuração de interrupção que vem com o crossstudio a interrupção ocorre uma única vez e depois não ocorre mais.
Alguem tem uma luz???
Já tentei de tudo mas o ultimo foi:
void T0ISR (void) __attribute__ ((interrupt));
void T0ISR (void) {
count++;
if(count == ctl_get_ticks_per_second())
{
onNotOff = !onNotOff;
if(onNotOff)
{
IO1SET |= IO_PIN_16;
}
else
{
IO1CLR |=IO_PIN_16;
}
}
T0IR = 0x01;
VICVectAddr = 0xFF;
}
void init_timer0(void)
{
/* Timer 0 interrupt is an IRQ interrupt */
VICIntSelect &= ~(0x10);
/* Enable timer 0 interrupt */
VICIntEnable = (0x10);
/* Use slot 0 for timer 0 interrupt */
VICVectCntl0 = 0x24;
/* Set the address of ISR for slot 0 */
VICVectAddr0 = (unsigned long)T0ISR;
/* Reset timer 0 */
T0TC = 0; // clear the timer count
T0PR = 1; // prescale divide by 2
T0MR0 = 14400; // divide by 14400 to get 2048 ints per second
T0MCR = 0x03; // interrupt on match, reset on match
T0TCR = 0x01; // start the timer
}
Já estou a quase dois dias tentando usar a interrupção do timer 0 do LPC2142.
Estou usando o Crossstudio, peguei uma dezena de exemplos na internet e todos são bem parecidos com o que estou, usando.
O timer roda bonitinho mas a interrupção nunca é chamada. Caso eu use a biblioteca de configuração de interrupção que vem com o crossstudio a interrupção ocorre uma única vez e depois não ocorre mais.
Alguem tem uma luz???
Já tentei de tudo mas o ultimo foi:
void T0ISR (void) __attribute__ ((interrupt));
void T0ISR (void) {
count++;
if(count == ctl_get_ticks_per_second())
{
onNotOff = !onNotOff;
if(onNotOff)
{
IO1SET |= IO_PIN_16;
}
else
{
IO1CLR |=IO_PIN_16;
}
}
T0IR = 0x01;
VICVectAddr = 0xFF;
}
void init_timer0(void)
{
/* Timer 0 interrupt is an IRQ interrupt */
VICIntSelect &= ~(0x10);
/* Enable timer 0 interrupt */
VICIntEnable = (0x10);
/* Use slot 0 for timer 0 interrupt */
VICVectCntl0 = 0x24;
/* Set the address of ISR for slot 0 */
VICVectAddr0 = (unsigned long)T0ISR;
/* Reset timer 0 */
T0TC = 0; // clear the timer count
T0PR = 1; // prescale divide by 2
T0MR0 = 14400; // divide by 14400 to get 2048 ints per second
T0MCR = 0x03; // interrupt on match, reset on match
T0TCR = 0x01; // start the timer
}