Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
You are viewing an older revision! See the latest version
Interrupt
Bei Interrupts wird sofort reagiert. Wenn ein Interrupts-Signal auftritt, wird der aktuelle Befehl des Hauptprogramms beendet, die nötigen Register auf den Stack gerettet und dann anschließend sofort die ISR (Interrupt Service Routine) aufgerufen.
Technische Realisierung der Interrupts¶
- der Prozessor besitzt einen oder mehrere spezielle Interrupt Eingänge
- wird eine Interruptleitung aktiviert, so führt dies zum Auslösen der zugehörigen Programmunterbrechung
- richtige" Rechner verwenden oft sog. Interruptcontroller, welche verschiedene Interruptquellen managen
Z.B. die Tastenabfrage mittels ISR; Statt DugitalIn wird mit InterruptIn der Taster definiert. Die ISR wird wie eine Funktion ohne Parameter und Rückgabewert (void change()) definiert. Zum Datenaustausch wird eine globale Variable (toggle) verwendet:
InterruptIn taste(P0_10); bool toggle = true; // globale Variable void change() // ISR { toggle = !toggle; } int main() { taste.rise(&change); // attach the address of the change-function to the rising edge int zeit = 100; while(1) { led1 = 0; wait_ms(zeit); led1 = 1; wait_ms(zeit); if(toggle){ // code } } }
ACHTUNG¶
- No blocking code in ISR
In der ISR sollten keine wait-Funktionen, Endlosschleifen oder blockierende System Calls verwendet werden. - No printf, malloc, or new in ISR
Keine Bibliotheksfunktionen, die nicht re-entrant sind.
Vor-/Nachteile¶
Man hat in diesem Fall also kaum Zeitverzug zwischen der Ausführung der ISR und dem Auftreten des Signals.
Gut:
- sehr geringe Extra Belastung des Prozessors
- Prozessor wird nur dann beansprucht, wenn es notwendig ist
Schlecht:
- in der Regel längere Reaktionszeit (gilt im Vergleich zu Polling mit wenigen Ereignisquellen und modernen Betriebssystemen)