ATmega16 Timer0 Fast PWM

Dieses lauffähige Programm betreibt den Timer0 des ATmega32 im fast PWM mode.


Beschreibung

Am Ausgang PB3 wird ein ohne Timer Prescaler ein PWM Signal erzeugt. Das Register OCR0 (0..255) definiert den Tastgrad. Der Timer läuft im non inverting mode. Somit wird, der Ausgang high, sobald der Zähler von 255 auf 0 springt und der Ausgang wird low, wenn der Coampare Match stattfindet und der Zähler gleich OCR0 ist.

C Sourcecode

#include <avr/io.h>

int main(void)
{

    DDRB = 0x08;                         // Setup PB3 as output

    TCCR0 |= (1<<WGM00)|(1<<WGM01)       // Start timer0 without
             |(1<<COM01)|(1<<CS00);      // prescaler in non
                                         // inverting fast PWM
                                         // mode. Connect OC0 in
                                         // non-inverting mode

    OCR0 = 64;                           // Set Dutycycle to 25%

    for(;;);                             // Endless loop
                                         // main() will never be left

    return 0;                            // This line will never be executed

}


Download lauffähiges C-File mit ASCII-Schema: Downloadlink

Signalplot

ATMega32 Timer0 Fast PWM Plot

Gelb: PB3 PWM Signal