|
Timer
Die Benutzung eines Timers geschieht bei Mikrocontrollern
folgendermaßen:
1. Man führt einen Timer ein und sagt ihm, wann er
einen Interrupt "werfen" soll.
2. Wird ein Interrupt vom Timer geworfen, wird die dem Timer
zugewiesene
Interrupt Service Routine
ausgeführt.
Beispiel
Im folgenden Beispiel sollen mittels eines Timers 10 Sekunden lang
die Sekundenzahlen auf ein LCD geschrieben werden.
Zuerst solltest Du von:
https://code.google.com/p/arduino-timerone/downloads/list
die Timer-Library (z. B. TimerOne-v9.zip) herunterladen,
entpacken und den so entstandenen Ordner umbenennen in: "Timer".
Diesen Ordner "Timer" legst Du in den Ordner "libraries" in Deinen
Arduino-Sketches-Ordner und startest zuletzt Deine Arduino-IDE neu.
Hier der Quelltext:
#include <TimerOne.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(8,13,9,4,5,6,7);
volatile int sekunde = 0; // "volatile": siehe unten!
void setup() {
// Timer
Timer1.initialize(1000000);
// 1000000µs = 1s
Timer1.attachInterrupt(timerIsr);
// soll "timerIsr()" benutzen
interrupts();
// Ermöglichen von Interrupts
// LCD
lcd.begin(16,2); lcd.clear();
}
void loop() {
if (sekunde==10)
noInterrupts(); // anhalten
}
// Interrupt Service Routine für Timer1
void timerIsr() {
sekunde++;
lcd.setCursor(7,0);
lcd.print(sekunde);
}
volatile: Variablen, die in Interrupt Service Routinen benutzt werden sollen, erhalten den Vorsatz
"volatile"
|