Soy nuevo en Embedded y he estado luchando con esto durante días. Simplemente no entiendo por qué esto no funciona.
Estoy usando un ATxMega128A1. Quiero usar una interrupción de desbordamiento del temporizador para desplazar a la izquierda un poco en un puerto al siguiente pin. El temporizador funciona. Puedo verlo hacer clic a través de CNT en el simulador, y la marca de desbordamiento se establece, pero el ISR nunca se ejecuta (y, por lo tanto, la bandera de desbordamiento nunca se restablece). ¿Alguien tiene alguna idea de dónde voy mal? Más o menos copié / pegué el temporizador / código de interrupción del código de entrenamiento de Atmel.
ISR(TCC0_OVF_vect)
{
LEDPORT = (LEDPORT << 1);
}
int main(void)
{
initLights();
// Set up Timer/Counter 0.
TCC0.PER = 0x10; //
TCC0.CTRLA = ( TCC0.CTRLA & ~TC0_CLKSEL_gm ) | TC_CLKSEL_DIV1_gc; //start timer with system clock
TCC0.INTCTRLA = ( TCC0.INTCTRLA & ~TC0_OVFINTLVL_gm ) | TC_OVFINTLVL_LO_gc; // Enable overflow interrupt.
// enable global interrupts:
sei();
while(true)
{
//do nothing, the timer interrupt will handle it
}
}