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.