Forum: Mikrocontroller und Digitale Elektronik Was ist der Sinn eines Interrupts?


von Basti (Gast)


Lesenswert?

Hi,

eine ganz grundsätzliche Frage möchte ich gerne stellen. Ich frage mich, 
was eigentlich der Sinn von sog. Interrupts ist. Im Wikipedia-Artikel 
steht dazu, dass der Sinn eines Interrupts darin bestehen würde, dass 
dadurch die CPU auf äußere Ergeignisse schneller reagieren kann.

Warum ist das so? Aus dem Wikipedia-Artikel werde ich da nicht richtig 
schlau.

http://de.wikipedia.org/wiki/Interrupt

Gruß

Basti

von Karl H. (kbuchegg)


Lesenswert?

Folgende Analogie:

Stell dir eine Arzt vor. Der arbeitet in seinem Zimmer und regelmäßig,
so alle halbe Stunde, öffnet er mal die Tür um Nachzusehen ob nicht
eventuell ein Patient auf Behandlung wartet. In Computer-Speak
würde man sagen: "Er pollt das Wartezimmer". Solange du mit einem
Schnupfen im Wartezimmer sitzt, ist die Wartezeit auch kein
Problem.

Aber, jetzt fehlt dir etwas Gröberes, dein Anliegen ist wichtig
genug, daß du an die Tür klopfst und zum Arzt reingehts. Du
machst einen Interrupt und unterbrichst den Arzt bei seiner
momentanen Tätigkeit, weil du sonst die nächste halbe Stunde
nicht überleben würdest.


Polling: Der Computer sieht regelmässig nach, ob es etwas zu
tun gibt und bearbeitet das dann. Folge: Durch das Zeitraster
gibt es möglicherweise eine Wartezeit. Das Zeitraster kann sich
auch mal verlängern, wenn der Computer gerade beschäftigt ist.

Interrupt: Ein Ereignis unterbricht den Computer bei seiner
momentanen Tätigkeit. Die Unterbrechung wird sofort bearbeitet.

von Patrick (Gast)


Lesenswert?

Echt klasse Erklärung!!

von Rolf Magnus (Gast)


Lesenswert?

Man kann beim Polling das Zeitraster minimieren, so daß die Reaktion 
unter Umständen schneller ist als bei einem Interrupt. Allerdings kann 
der Prozessor während der Wartezeit dann nichts anderes machen. Das 
warten lastet ihn schon voll aus. Bei der obigen Analogie wäre das so, 
als ob der Arzt sich ins Wartezimmer setzt und da wartet, bis ein 
Patient kommt. Wenn er zwei Wartezimmer hat, kann es dann sein, daß er 
ewig wartet, obwohl im anderen Wartezimmer schon die ersten Verluste zu 
vermelden sind.

von Jörg R. (Firma: Rehrmann Elektronik) (j_r)


Lesenswert?

Neben der Reaktion auf äußere Ereignisse dient der Interrupt häufig auch 
der Erfüllung präziser Timing-Aufgaben (Timer-Interrupt). Hier kommt es 
weniger auch die schnelle Reaktion als vielmehr auf auf eine genau 
definierte Reaktionszeit an. Das ist dann wichtig, wenn die CPU neben 
ihren Rechenarbeit noch streng regelmäßige Sequenzen wie z.B. 
Softwareuhr, Displayausgabe und/oder Tonerzeugung ausführen muß.

Jörg

von ChristophK (Gast)


Lesenswert?

Vielleicht ist auch noch wichtig zu erwähnen, wenn wir mal bei dem 
Analogon mit der Arztpraxis bleiben, daß der Arzt bei der Unterbrechung 
seiner Tätigkeit sein momentanes Arbeitsumfeld gegen ein neues 
austauscht, er also seine Geräte beiseite legt, und einen neuen Satz 
Geräte (Spritzen, Skalpell) benutzt und nach der Unterbrechung - die im 
allgemeinen kurz sein sollte (insofern hinkt der Vergleich etwas) - 
wieder an dem Punkt fortfährt, an dem er unterbrochen wurde.

Das bedeutet, bei einer CPU mit Stack-Architektur, daß die CPU ihre 
Register in der Interrupt-Routine auf den Stack sichert und nach 
Verlassen wieder
vom Stack restauriert.

Die in einer Interruptroutine erforderliche Aktion sollte kurz sein im 
Vergleich zur Haupttätigkeit.

Typisches Beispiel (stammt aus der Zeit der seriellen UARTs):

Ein Ausgabeprozeß sendet Zeichen aus einem Ram-Puffer an den UART.
Während das Zeichen am UART seriell ausgegeben wird, braucht die CPU
nicht zu warten, sondern kann etwas anderes machen in den vielen 
Millisekunden. Ist der UART-Puffer leer, sendet er einen Interrupt an 
die CPU und diese kann das nächste Zeichen in den UART-Sendepuffer 
laden. usw.

von Luther B. (luther-blissett)


Lesenswert?

Karl heinz Buchegger wrote:

> Polling: Der Computer sieht regelmässig nach, ob es etwas zu
> tun gibt und bearbeitet das dann. Folge: Durch das Zeitraster
> gibt es möglicherweise eine Wartezeit. Das Zeitraster kann sich
> auch mal verlängern, wenn der Computer gerade beschäftigt ist.

Das Zeitraster kann sogar ein echtes Problem werden, wenn ein Ereignis 
kürzer als das Zeitraster ist: dann besteht die Gefahr, daß es nicht 
wahrgenommen wird. In der Analogie: Während der Arzt mit einem Patienten 
beschäftigt ist, kann er das Wartezimmer nicht pollen. Jetzt aber kommt 
der Pharmareferent rein und will Schmier^H^H^H^H^H^H 
Produktinformationen vorbeibringen, weil aber nur wenig Zeit hat geht er 
bald wieder, ohne den Arzt "informieren" zu können.

von yalu (Gast)


Lesenswert?

Und wenn der Arzt mal kurz ungestört mit seiner Sprechstundenhilfe ...
äh, sagen wir mal, den weiteren Arbeitsablauf besprechen möchte, dann
kann er das Behandlungszimmer abschließen, so dass du auch als
Schwerkranker keinen Zutritt hast. Sobald er fertig ist, lässt er dich
aber sofort herein, da er dein Klopfen trotz abgeschlossener Tür
gehört und noch in Erinnerung hat.

Das nennt sich dann Interruptsperre (Abschließen der Tür) und
Zwischenspeichern oder Latchen des Interrupts (sich merken, wenn
jemand bei abgeschlossener Tür anklopft).

Interrupts sollten, wenn überhaupt, immer nur für sehr kurze Zeit
gesperrt werden, sonst geht der Vorteil der kurzen Reaktionszeit
verloren, und dem Arzt sterben die Notfallpatienten weg.

Das Zwischenspeichern von kurzen Signalen wird oft auch im
Pollingbetrieb praktiziert. Da die meisten µC dafür aber keine
Hardwareunterstützung bieten, muss der Zwischenspeicher extern,
bspw.in Form eines RS-Flipflops, angebaut werden.

von Christian Erker (Gast)


Lesenswert?

Das RS-Flipflop entspricht dann den Helferinnen an der "Rezeption" .. 
die speichern Anfragen zwischen und sagen dem pollenden Arzt was er zu 
tun hat.. :D

von Basti (Gast)


Lesenswert?

Vielen Dank für die teils sehr originellen Erklärungen!

Jörg R. hat darauf hingewiesen, dass Interrupts auch zu präzisen 
Timing-Aufgaben eingesetzt werden. So wie ich es bisher kennengelernt 
habe, zählt dabei ein Timer eine ganz bestimmte Zeit vor sich hin und 
verursacht nach Ablauf der Zeitspanne einen Interrupt. Inwiefern ist 
denn der Interrupt für die exakte Zeitmessung notwendig?

Gruß

Basti

von ChristophK (Gast)


Lesenswert?

>Inwiefern ist
>denn der Interrupt für die exakte Zeitmessung notwendig?

Was heißt "exakte Zeitmessung"? Der Interrupt ist nur die Aufforderung 
an die CPU, unmittelbar, in einer determinierten Zeitspanne, auf das 
Ereignis ,z.B. "Zählerunterlauf", zu reagieren. Der Programmierer kennt 
das Zeitintervall, das durch den Zählerablauf durchschritten wurde und 
kann entsprechend kalkulieren. Da es sich oft im periodische Prozesse 
handelt, subtrahiert sich die Interrupt-Latenzzeit heraus.

Die Interrupt-Routine kann beispielsweise benutzt werden, um den Zähler 
neu zu initialisieren, auch mit einem anderen Wert (PWM) und so weiter 
und so fort.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.