Arduino Playground is read-only starting December 31st, 2018. For more info please look at this Forum Post

Hallo Welt! - Mit Interrupt und Timer Library

Die Hallo Welt-Led kann man auch per Interrupt und mit Hilfe der Timerlibrary ansteuern lassen.

Dazu ist es nötig die Timerlibrary "TimerOne"

https://playground.arduino.cc/uploads/Code/TimerOne.zip

zunächst in den Libraries Ordner zu entpacken und anschließend in den Quelltext einzubinden.

Dies stellt nur eine weitere Möglichkeit dar das Hallo Welt Example umzusetzen.

Code:

  1. #include "TimerOne.h"  
  2. int ledpin=13;
  3. int alle_x_sekunden=1;
  4.  
  5. void setup()   {
  6.                pinMode(ledpin, OUTPUT);
  7.                Timer1.initialize(alle_x_sekunden*1000000);
  8.                Timer1.attachInterrupt(blinken);
  9.                }
  10.  
  11.  
  12. void blinken() {
  13.                digitalWrite(ledpin, digitalRead(ledpin) ^ 1);
  14.                }
  15.  
  16.  
  17. void loop()    {
  18. // Hier könnt Ihr nun ganz normal euer Programm
  19. // einfügen.
  20. // Die Led wird nun unabhängig von eurem Programmcode
  21. // jede Sekunde einmal aufblinken.
  22.                }

Vorteile:

Die Hallo Welt! Led wird vom internen Zeitgeber angesteuert, und reagiert so unabhängig vom eigenen Programmcode. Ähnlich wie das Beispiel "Blinken ohne delay();" wird hier der interne Timer zum auslösen genutzt, jedoch garantiert der herangezogene Interrupt die definitive Ausführung, da Interrupts im System Ausführungsvorrang haben. Außerdem bleibt die eigentliche Programmschleife void loop() unberührt was zu besserer Übersichtlichkeit führt.

Nachteile:

Die für die Umsetzung herangezogene Timerlibrary generiert einen erheblichen Overhead an Code, so steigt die Codegröße mit eingebundener Library erheblich.