Timer
(EN google-translate)
(PL google-translate)
Timer sind Zähler, die konfiguriert werden können:
|
Folgendes Programm konfiguriert den 16-Bit-Timer 1 so, dass er auf den digitalen IO9 ( == OC1A PB5 ) ein Rechtecksignal von 2Hz ausgibt:
void setup() { DDRB |= 0b01100000; //Digital IO9 == OC1A PB5 //Digital IO10 == OC1B PB6 //CTC-Frequenz: // // f = fclck/(2*N*(1+OCR1A)) // // Beispiel: // f == 2Hz // N == 1024 // // OCR1A = fclck/(f*2*N) - 1 // = 16000000 / (2*2*1024) // = 3906,25 // deshalb OCR1A = 3906 //Mode 12 == CTC //WGM13...WGM10: 1100 ICR1 = 3906; //statt OCR1A //OCR1A = 3906; //statt OCR1A TCCR1A = (0<<WGM11) | (0<<WGM10) | (0<<COM1A1) | (1<<COM1A0) | (0<<COM1B1) | (0<<COM1B0); TCCR1B = (1<<WGM13) | (1<<WGM12) | (1<<CS12) | (0<<CS11) | (1<<CS10); //tone(9,2); } void loop() { }
Code 0-1: Verwendung von Timer 1 im Mode 12 (CTC, vergl. Datenblatt).
Übung
Über zwei Taster soll das Blinken einer LED konfiguriert werden:
00 => 1Hz 01 => 2Hz 10 => 4Hz 11 => 8Hz
Code 0-2: Blinkfrequenz abhängig von der Tasterkombination.
Wählen Sie selbsttätig geeignete Ein- und Ausgänge aus.