Bare ATMEGA328P - Reloj con TIMER 1, PWM en TIMER 0 y TIMER 2

0

Estoy atascado en un problema. Como dice el título, estoy tratando de generar 2 señales PWM diferentes en TIMER 0 y TIMER 2, mientras uso la interrupción en TIMER 1 para contar la hora.

Probé varias cosas, pero cada vez que trato de asignar un ciclo de trabajo a OC2B o OC0B, el tiempo se complica.

Aquí está mi código de configuración para TIMER 1 para la interrupción:

void setupTimer1() {

    // TIMER 1 for interrupt frequency 25000 Hz:
    cli(); // stop interrupts
    TCCR1A = 0; // set entire TCCR1A register to 0
    TCCR1B = 0; // same for TCCR1B
    TCNT1  = 0; // initialize counter value to 0
    // set compare match register for 25000 Hz increments
    OCR1A = 639; // = 16000000 / (1 * 25000) - 1 (must be <65536)
    // turn on CTC mode
    TCCR1B |= (1 << WGM12);
    // Set CS12, CS11 and CS10 bits for 1 prescaler
    TCCR1B |= (0 << CS12) | (0 << CS11) | (1 << CS10);
    // enable timer compare interrupt
    TIMSK1 |= (1 << OCIE1A);
    sei(); // allow interrupts

}

Espero que algunos de ustedes puedan ayudarme a resolver esto.

Gracias.

    
pregunta Niels

0 respuestas

Lea otras preguntas en las etiquetas