ATmega16 Timer 1 CTC Mode
Im CTC Mode zählt der Timer 1 eine vorgegebene Anzahl Clockzyklen ab, bevor er sich zurücksetzt.
Beschreibung Dieses Beispiel lässt den Timer 1 im CTC Mode ein 1Hz signal an OC1A erzeugen. 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. |
Please visit: the four |
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 C-Sourcefile mit ASCII-Schema: C-Sourcefile mit ACII-Schema
Signalplots
Gelb: Digitales Ausgangssignal (OC1A) PD5
|