Arduino verstehen und anwenden Teil 10: Richtig auf unerwartete Ereignisse reagieren – Interrupts und Polling

0,00
Aus ELVjournal 03/2015     0 Kommentare
 Arduino verstehen und anwenden Teil 10: Richtig auf unerwartete Ereignisse reagieren – Interrupts und Polling

Inhalt des Fachbeitrags

  • Wozu benötigt man Interrupts?
  • Interruptquellen
  • Wirkung der verschiedenen Interrupt-Modi
  • „Flüchtige“ Variablen
  • Praxisübung: Blinken ohne Delay!
  • Praxisprojekt: Fahrradrücklicht mit Interruptsteuerung
  • Ausblick
PDF- / Onlineversion herunterladen



Der zehnte Artikel der Beitragsreihe „Arduino verstehen und anwenden“ dreht sich um den Bereich „Interrupts und Polling“. Dabei stehen die folgenden Themen im Vordergrund:

  • Was ist ein Interrupt und wozu wird er benötigt?
  • Was ist der Unterschied zwischen Interrupts und „Polling“
  • Welche Interruptquellen stehen auf einem Mikrocontroller zur Verfügung

Wie in dieser Serie üblich, wird wieder besonderer Wert auf praktische Anwendungen gelegt. Dazu werden die folgenden Praxisübungen durchgeführt:

  • Tasterabfrage mit Polling
  • LED-Steuerung mit Interrupts
  • Wirkung verschiedener Interrupt-Modi
  • „Multitasking“: simultanes Blinken und Schalten von LEDs
  • Blinken ohne Delay!

 

Wozu benötigt man Interrupts?

Gerade in der Mikrocontroller-Technik ist es oftmals erforderlich, dass ein Programm auf unerwartete Ereignisse schnell und sicher reagiert. Ein klassisches Beispiel ist die Auslösung von Alarmen beim Vorliegen eines Fehlers. Hier ist eine schnelle und unverzügliche Reaktion erforderlich. Aber auch bei Eingaben über Tastaturen will der Anwender nicht warten, bis das laufende Programm zu irgendeinem Zeitpunkt in die Tastenabfrage springt, sondern jede Eingabe soll unverzüglich übernommen werden. Zudem liefern Sensoren oftmals unvorhersehbare Werte. Soll z. B. beim Überschreiten einer bestimmten Temperatur ein Gerät abgeschaltet werden, so muss der Mikrocontroller (μC) unverzüglich reagieren. Ist er gerade mit komplizierten Berechnungen ausgelastet, kann das betroffene Gerät bereits überlastet sein, bis der Controller einen bestimmten Eingang abfragt und die vorprogrammierte Aktion startet. Prinzipiell könnte man einen Taster oder auch einen Sensorwert in regelmäßigen Abständen über digitalRead(pushButton); abfragen. Dieses Abfragen eines Schaltzustandes in regelmäßigen Abständen wird als „Polling“ (engl. für „Abfragen“) bezeichnet. Wird der betreffende Taster allerdings gedrückt, während das Anwendungsprogramm mit anderen Aufgaben beschäftigt ist, bleibt der Tastendruck ohne Wirkung. Natürlich kann ein solches „Verschlucken“ von Eingabewerten in der Praxis nicht toleriert werden. Auf rein softwaretechnischem Weg ist das Problem nicht zu beheben. Hier ist eine zusätzliche controllerinterne Hardware-Schaltung erforderlich, die kontinuierlich und ohne Unterbrechung einen Schaltpegel an einem bestimmten Pin überwachen kann. Da dieses Problem sehr häufig auftritt, wurde dafür eine spezielle Lösung implementiert, die sogenannte Interruptsteuerung. Interrupts unterbrechen unmittelbar das Hauptprogramm und springen in eine sogenannte Interruptroutine. Erst nach dem Abarbeiten dieser speziellen Befehlsfolge erfolgt wieder ein Rücksprung in das Hauptprogramm. Damit kann z. B. ein Tastendruck zu keinem Zeitpunkt mehr verloren gehen. Bild 1 veranschaulicht diesen Vorgang.

Bild 1: Programmablauf mit Interruptaufruf
Bild 1: Programmablauf mit Interruptaufruf

Fachbeitrag online und als PDF-Download herunterladen

Fachbeitrag herunterladen


Laden Sie die komplette Ausgabe 03/2015 inkl. dieses Beitrags herunter. zum Inhalt


Die ELVjournal-Flatrate!
Für nur EUR 24,95 im Jahr erhalten Sie Zugriff auf alle verfügbaren Fachbeiträge.

Inhalt

Sie erhalten den Artikel in 2 Versionen:

online  als Online-Version

pdf  als PDF (6 Seiten)

Sie erhalten folgende Artikel:
  • Arduino verstehen und anwenden Teil 10: Richtig auf unerwartete Ereignisse reagieren – Interrupts und Polling
    • 1 x Journalbericht
Produkteweitere FachbeiträgeForen
FRANZIS Arduino Uno-Platine R3

FRANZIS Arduino Uno-Platine R3


EUR 27,01*
Lieferzeit 1 Woche(n)
ELV LED-Lupenleuchte, 1,75-fache Vergrößerung, 850 Lumen, dimmbar, wechselbare Linse

ELV LED-Lupenleuchte, 1,75-fache Vergrößerung, 850 Lumen, dimmbar, wechselbare Linse

Energieeffizienzklasse: A-A++ (A++ bis E)


EUR 54,95*
sofort versandfertig Lieferzeit:1-2 Werktage2

Produktdatenblatt
PEAK Atlas DCA 75 Pro Halbleiter-Tester

PEAK Atlas DCA 75 Pro Halbleiter-Tester


EUR 109,95*
sofort versandfertig Lieferzeit:1-2 Werktage2


Hinterlassen Sie einen Kommentar:
(Anmeldung erforderlich)
  Name
  E-Mail
KATEGORIEN
DAS KÖNNTE SIE AUCH INTERESSIEREN