Kostenloser Elektrotechnik VIDEO-Kurs


Grundlagen der Elektrotechnik, Gleichstromnetze und Berechnungsverfahren
Wechselstrom- und Drehstromnetze, elektrische Maschinen und Regelungstechnik
Digitaltechnik, Mikrocontrollertechnik und C-Programmierung


Interrupts und Polling

Heute geht es nun um das Thema Interrupts.

  • Was sind Interrupts?
  • Wozu benötigt man Interrupts?
  • Was ist der Unterschied zum Polling-Verfahren

Interrupts versus Polling

Beim Polling fragt man Signale regelmäßig innerhalb der while-Schleife ab und wertet diese Signale aus.
Ein großer Nachteil beim Polling ist allerdings, dass auf Signale nicht sofort reagiert werden kann, sondern erst mit einer Verzögerung.
So kann es im schlechtesten Fall passieren, dass man ein Signale gerade abgefragt hat und kurz nach dieser Abfrage das externe Signal am enstpechenden Potrt anliegt.

In dieser Situation kann es relativ lange dauern, bis der Port wieder abgefragt wird, je nach dem wie lange die Verarbeitung der Befehle in der while-Schleife dauert.

Bei kritischen Signalen, beispielsweise einer kritischen Fehlersituation, bei der sofort reagiert werden muss, kann das untragbar sein.

In solchen Fällen nimmt man besser Interrupts.

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 aufgerufen.
Man hat in diesem Fall also kaum Zeitverzug zwischen der Ausführung der ISR und dem Auftreten des Signals.

Den Unterschied zwischen dem Polling-Verfahren und Interrupts zeige ich im folgenden Video.




In der heutigen Folge sollte es lediglich um den Unterschied zwsichen Polling und Interrupts gehen. Die Feinheiten von Interrupts werden wir in den folgenden Folgen behandeln.
Der Vollständigkeit halbe kopiere ich hier noch die beiden Quellcodes hinein.

Polling

#include<REG515.H>

sbit Fehler=P2^0;
sbit Alarm=P2^1;

void alarmauswertung(void)
{
Alarm = Fehler;
}

void main(void)
{
unsigned long int i=0;
P1 = 0;
P2 = 0;

Fehler = 1;
Alarm = Fehler;

while(1)
{
for (i=0; i<100000;i++)
{
P1=i;
}
alarmauswertung();

}

}

Interrupt

#include<REG515.H>

sbit Alarm=P2^1;

void ISR_alarmauswertung(void) interrupt 0
{
Alarm = 1;
}

void main(void)
{
unsigned long int i=0;
P1 = 0;
P2 = 0;

EAL    = 1;
EX0 = 1;

while(1)
{
for (i=0; i<100000;i++)
{
P1=i;
}

}

;

}

Bis zum nächsten Mal!

Dieser Artikel ist Teil des Mikrocontrollerkurs auf ET-Tutorials.de.
Hier geht es zurück zur Übersichtsseite des Mikrocontroller-Kurses .

Elektrotechnik muss nicht kompliziert sein.
Deshalb gibt es VIDEO-Tutorials.

Hat Dir der Artikel geholfen? - Dann hilf dem Artikel ;-)

Interrupts und Polling:
1 Star2 Stars3 Stars4 Stars5 Stars
4,89 von 5 Punkten, basieren auf 9 abgegebenen Stimmen.
Stimme jetzt ab ! (auf die Sternchen klicken)
Loading ... Loading ...


Fragen und Antworten zu diesem Artikel und zu anderen Themen findest Du im ET-Tutorials Forum

Ähnliche Artikel

Folgende Artikel aus der gleichen Kategorie könnten Dich ebenfalls interessieren:

Lösung zur Aufgabe: Lesen aus Ports Heute geht es nun um die Lösung der Aufgabe aus der vorherigen Folge. Also darum, wie man aus Ports ...

Externe Interrupts beim 8051 Heute geht es nun um die Programmierung eines externen Interrupts. Die Programmierung eines externen...

Lösung der Aufgabe zu den externen Interrupts Heute geht es nun um die Lösung aus dem Artikel der vergangenen Woche, in dem ich die Mechansmen des...

Funktionen in C, Definition und Deklaration Durch die Verwendung von Funktionen kann man Programme strukturieren und effizienter machen. In unse...

Bits, Bytes und Nibbles Der  Mikrocontroller rechnet digital, also mit binären Werten. Um in diesen Wust von Nullen und Eins...