Forum: Mikrocontroller und Digitale Elektronik Frage zu Interrupts


von Florian (Gast)


Lesenswert?

Nabend


Die Frage wurde zwar sicherlich schon gestellt, aber über die Suche fand 
ich jetzt nichts was mein Problem anspricht.


Ich habe da folgende Frage:
Angenommen ich habe ein Interruptsignal an einem µC angeschlossen. 
Sobald das Interruptsignal also auf High is geht der µC in die ISR. Was 
geschieht aber, wenn der Interrupt kommt, der µC die kurze ISR ausführt 
und das Interruptsignal immer noch auf High ist? Geht er dann sofort 
wieder in die ISR oder wartet er bis das Signal mindestens einmal wieder 
auf Low war?

Meine Fage richtet sich besonders an AVRs.

mfg
Florian

von Benedikt K. (benedikt)


Lesenswert?

Florian wrote:

> Sobald das Interruptsignal also auf High is geht der µC in die ISR.

Kommt drauf an, ob der Interrupt high oder low aktiv ist.

> Was
> geschieht aber, wenn der Interrupt kommt, der µC die kurze ISR ausführt
> und das Interruptsignal immer noch auf High ist? Geht er dann sofort
> wieder in die ISR oder wartet er bis das Signal mindestens einmal wieder
> auf Low war?

Kommt drauf an, ob der Interrupt Pegel oder Flankengesteuert ist.

von Jochen M. (taschenbuch)


Lesenswert?

Floria,

Wenn der INT pegelgestriggert ist, dann erfolgt sofort wieder ein neuer 
Interupt wie Benedikt schon schrieb, allerdings nicht wörtlich "sofort".
Es wird zuvor ein ASM-Befehl der Hauptroutine ausgeführt bevor der neue 
Int wieder feuert.

Bei flankengetriggertem INT ist das natürlich anders, denn die Flanke 
ist ja schon vorbei wenn die ISR einmal gezündet hatte.

Jochen Müller

von stepp64 (Gast)


Lesenswert?

Ich kenne das jetzt nur von PICs, aber müsste der AVR nicht auch erst 
seine momentane ISR abarbeiten bis er aus der ISR mit einem Returnbefehl 
zurück in die Hauptroutine springt um dann gleich wieder in die ISR zu 
springen? Ich habe die Frage jetzt zumindest so verstanden, das der 
Poster wissen will, ob die gerade laufende ISR abgebrochen wird, wenn 
ein neuer Interrupt rein kommt oder ob der µC erst die laufende ISR 
abarbeitet.

Sven

von Jochen M. (taschenbuch)


Lesenswert?

Sven,

Ich denke zwar nicht, dass der OP das so gemeint hatte, dessen Frage war 
eigentlich offensichtlich. Aber trotzdem würde das, was Du angesprochen 
hast auch gehen, Stichwort verschachtelte Interrupts. Ganz vereinfacht 
müsstest Du dann bereits am Beginn der ISR die INTS wieder enablen und 
nicht erst mit dem abschliessenden RETI wie üblich. Klingt erstmal 
simpel, kann aber einen  ganzen Haufen Zusatzarbeit hinsichtlich 
Sicherheit und Variablenverwaltung bringen. Aber gehen tut es.

Jochen Müller

von Florian (Gast)


Lesenswert?

Hallo

Nein, ich habe gemeint ob der µC wieder in eine ISR springt nachdem er 
die vorherige verlassen hat.
Aber nun habe ich es verstanden, ich wusste nicht, dass man den 
Interrupt konfigurieren kann auf welches Ereignis er anspringen soll. 
Ich laß bisher immer nur anwendungen bei denen er auf einen High-Level 
reagiert.


Danke!

von Johannes M. (johnny-m)


Lesenswert?

Florian wrote:
> Hallo
>
> Nein, ich habe gemeint ob der µC wieder in eine ISR springt nachdem er
> die vorherige verlassen hat.
Ich fand die Frage auch eigentlich recht eindeutig gestellt.

> Aber nun habe ich es verstanden, ich wusste nicht, dass man den
> Interrupt konfigurieren kann auf welches Ereignis er anspringen soll.
> Ich laß bisher immer nur anwendungen bei denen er auf einen High-Level
> reagiert.
Auf einen High-Pegel kann kein einziger AVR reagieren. Wenn überhaupt, 
dann ein Low-Pegel! Die externen Interrupts können i.A. positive, 
negative Flanke und Low-Pegel, manche können zusätzlich noch auf beide 
Flanken getriggert werden. Die Pin-Change-Interrupts reagieren 
grundsätzlich auf jeden Pegelwechsel (also auf beide Flanken), aber 
nicht auf die Pegel selbst.

von Hannes L. (hannes)


Lesenswert?

Ich habe dazu kürzlich eine amüsante Erklärung gefunden:
Beitrag "Re: INT0 auslösen"

...

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.