Ela ocorre a primeira vez e depois simplesmente não ocorre mais, se alguém puder ajudar eu agradeceria muito.
As minhas rotinas são :
- Código: Selecionar todos
int main (void)
{
/*================================
** INICIALIZAÇÃO DOS PERIFÉRICOS
**===============================*/
PCONP |= (1 << 1); //Timer0 Power Enabled
INIT_TIMER(10); //Timer p/ 10 segundos
for(;;);
}
void INIT_TIMER(int seconds)
{
int counter_timer;
counter_timer=seconds*20000000;
/* Setup Timer Counter 0: Periodic Timer with nterrupt */
PCONP |= (1 << 1); //Timer0 Power Enabled
T0MR0 = counter_timer;
T0MCR =3; // Gera interrupção quanto MR0 se igualar ao TC (T0MCR =3 => 0x03)
/*resetar timer antes de iniciar contagem*/
T0TCR = 2; // Reseta o TC
T0TCR = 0; // Release o Reset
T0TCR = 1; // START TIMER
/* Setup Timer Counter 0 Interrupt */
VICVectAddr4 = (unsigned long)timer0_irq;
VICVectCntl4 = 0x02;
VICIntEnable |= 1 << 4;
}
/*===================================================================*/
/* TRATAMENTO DA INTERRUPÇÃO DO TIMER 0 */
/*===================================================================*/
__irq void timer0_irq (void)
{
LED_DEBUG_NEGVAL(); //
T0IR = 1; // Clear interrupt flag
VICVectAddr = 0; // Acknowledge Interrupt
}