Franz Pucher / HIM0Board

You are viewing an older revision! See the latest version

Interrupt

Table of Contents

    Inhalt

    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.

    /media/uploads/fpucher/interrupt.gif

    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

    1. No blocking code in ISR
      In der ISR sollten keine wait-Funktionen, Endlosschleifen oder blockierende System Calls verwendet werden.
    2. 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)

    All wikipages