ATmega16 Timer 1 Fast PWM

In diesem C Code Beispiel erzeugt der Timer 1 im Fast PWM Mode ein hochfrequentes PWM Signal


Beschreibung

Der Timer 1 wird in den 8 bit Fast PWM Modus gesetzt. Beide ausgänge OC1A und OC1B springen auf low, wenn der Timer von 255 auf 0 zurückspringt. OC1A wird auf high gesetzt, wenn der Timer 63 erreicht (entspricht 25%). Der Ausgang OC1B hat mit einem Wert von 127 einen Tastgrad von 50%.

Buchtippp:


AVR Mikrocontroller
In C programmieren

C Sourcecode

#include <avr/io.h>

int main(void)
{
    DDRD = 0x30;                      // Set Port D4 and d5 as Output
    
    TCCR1A = (1<<WGM10)|(1<<COM1A1)   // Set up the two Control registers of Timer1.
            |(1<<COM1B1);             // Wave Form Generation is Fast PWM 8 Bit,
    TCCR1B = (1<<WGM12)|(1<<CS12)     // OC1A and OC1B are cleared on compare match
            |(1<<CS10);               // and set at BOTTOM. Clock Prescaler is 1024.

    OCR1A = 63;                       // Dutycycle of OC1A = 25%
    OCR1B = 127;                      // Dutycycle of OC1B = 50%

    for(;;);                          // Endless loop;
                                        // main() will never be left
    return 0;                         // This line will never be executed
}

Download C-Sourcefile mit ASCII-Schema: C-Sourcefile mit ACII-Schema

Signalplots

ATmega16 Timer 1 Fast PWM 8 Bit

Gelb: Digitales Ausgangssignal PD5 (OC1A)

BGelb: Digitales Ausgangssignal PD4 (OC1B)