Las interrupciones Atmega168 no funcionan

0

Estoy probando algunos programas simples para probar mi microcontrolador, pero estoy teniendo problemas con el primer programa de prueba: parpadear un LED con interrupciones.

Estoy usando un Atmega168A-PU .

Aquí está mi programa:

#include <avr/io.h>

    #include <avr/delay.h>
    #include <avr/interrupt.h>

  //ISR(TIMER0_OVF) -> this syntax also not works
    ISR(TIMER0_OVF_vect)
    {
        PORTB ^= (1 << PB1);
    }

    int main(void)
    {
        DDRB |= (1 << PB1); // set PB1 as output
        PORTB |= (1 << PB1); // led on
        TIMSK0 |= (1 << TOIE0); // enable timer overflow interrupt
        TCCR0B |= (1 << CS00) | (1 << CS02);  //set prescaler to 1024

        sei();
        while(1)
        {

        }

        return 0;
    }

Todas las conexiones son buenas, pero el LED no parpadea.

    
pregunta bielu000

1 respuesta

0

Estás utilizando TC de 8 bits. Se desborda a 255, lo que incluso con 1024 prescaler es demasiado rápido para ver cualquier parpadeo.

También, verifique el código generado. He visto informes de algunas versiones anteriores de compiladores que "optimizan" bucles infinitos como ese.

    
respondido por el Maple

Lea otras preguntas en las etiquetas