Olá pessoal,
To apanhando feio no timer com interrupcao, quando to usando so mr0 funciona legal mas quando coloco o mr0 e mr1 da pau.
Rotina:
void init_timer_interrupcao(void)
{
T0PR = 30000000/1000; // Valor do prescale = Pclk /valor
T0TCR = 2; //Reseta timer 0
T0MCR = 0x1b; //habilita a interrupção e reseta Mr0 e Mr1
T0MR0 = 1000; //Valor de comparação = 1000
T0MR1 = 2000;
T0TCR = 0x00000001; //habilita timer
VICVectAddr4 = (unsigned)Timer0ISR; //Interrupção
VICVectCntl4 = 32|4; //
VICIntEnable |= BIT4; //Habilita a interrupção o timer
}
void Timer0ISR(void) __irq //Função de atendimento da interrupção
{
int f;
f = T0IR;
if(f & 1) segundos++;
if(f & 2) minutos++;
T0IR |= f; //Clear match 0 interrupt
VICVectAddr = 0; // VICAddress =0 LIMPA A INTERRUPCAO
}