ATmega8 Timer1 CTC
CTC Code Beispiel für den Timer1 des ATmega8
Beschreibung Der ATmega8 Timer1 CTC Mode zählt in diesem Beipsiel immer auf 3906. Nach der Rechnung 8MHz / 1024 / 2 / 3906 = 1.00006Hz erscheint deshalb am Ausgang OC1A en Signal von zeimlich genau 1Hz. Der Faktor 1024 kommt vom Timer1 Prescaler. Der Faktor 2 ist in der Rechnung, weil das Signal getoggelt wird, dies findet pro Periode zwei Mal statt. |
Please visit: the four |
C Sourcecode
#include <avr/io.h>
int main(void)
{
DDRB = 0x02; // Setup PB1 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: Digitaler Ausgang PC0
|