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"