ATmega16 Timer0 Fast PWM

Sourcecode Beispiel um auf dem ATmega16 den Timer0 mit Fast PWM zu betreiben.


Beschreibung

Am Ausgang PB3 wird ein PWM Signal erzeugt. Der Prescaler des Timers wird nicht verwendet. Mit dem Wert im Register OCR0 (0..255) wird der Dutycycle festgelegt. Der Timer läuft im non inverting mode das heisst, der Ausgang wird eins, wenn der Zähler von 255 auf 0 springt und der Ausgang wird null, wenn der Zähler gleich OCR0 ist.

Buchtippp:


AVR Mikrocontroller
Programmierung in C

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 C-Sourcefile mit ASCII-Schema: C-Sourcefile mit ACII-Schema

Signalplot

ATMega16 Timer0 Fast PWM Plot

Gelb: PWM Signal an PB3