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 Signal gerade abgefragt hat und kurz nach dieser Abfrage das externe Signal am entprechenden Port 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.

Meine Empfehlung für Elektrotechniker

Anzeige

5 Elektrotechnik E-Books als PDF zum Download

In der heutigen Folge sollte es lediglich um den Unterschied zwischen Polling und Interrupts gehen. Die Feinheiten von Interrupts werden wir in den folgenden Folgen behandeln.
Der Vollständigkeit halber 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 .

Wolfgang Bengfort

weitere Videos

März 19, 2010

September 19, 2011

August 29, 2011

Januar 5, 2010

November 11, 2010

November 2, 2009