ATmega32 Timer1 CTC Mode

Im CTC Mode zählt der Timer1 des ATmega32 eine vorgegebene Anzahl Clockzyklen ab. Anschliessend setzt er sich zurück.


Beschreibung

In diesem selbstständig lauffähigen Code generiert der Timer 1 im CTC Mode ein 1Hz Signal an OC1A. Mit einem clock von 8MHz, einem Prescaler von 1024 und einem TOP Zählerwert von 3906 setzt sich der Timer zwei mal pro Sekunde zurück. Jedes Mal wird OC1A getoggelt.

C Sourcecode

#include <avr/io.h>

int main(void)
{

     DDRD = 0x20;                         // Setup PD5 as output

     OCR1A = 3906;                        // F_Timer = F_clk/Prescaler
                                          // = 8'000'000 / 1024 = 7812.5
                                          // F_PD5 = F_Timer/ 2 / OCR1A
                                          // = 7812.5 / 2 / 3906 = 1.00006Hz

     TCCR1A = (1<<COM1A0);                // CTC mode, toggle OC1A on compare match
     TCCR1B = (1<<CS12)|(1<<CS10)         // Start Timer1 with prescaler 1024
             |(1<<WGM12);
 
     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

Signalplots

ATmega32 Timer 1 CTC Mode 1

Gelb: Digitales Ausgangssignal (OC1A) PD5