Forum: Mikrocontroller und Digitale Elektronik Allgemeine Interrupt frage


von Thomas D (Gast)


Lesenswert?

Hallo,

angenommen ich habe eine Code:
1
cli();
2
....
3
Jede Menge toller C-Code
4
....
5
sei();

Dann sind ja während dieser Zeit die Interrupts gesperrt, wenn jetzt 
aber trotzem die Bedinungen für einen Interrupt während dieser Zeit 
gegeben sind ( z.b. Signal am Ext. Interrupt), wird dieser dann direkt 
nach der Reaktivierung abgearbeitet, oder geht der verloren ?

Gruß

Thomas

von Domi (Gast)


Lesenswert?

Ist verloren

von Flo (Gast)


Lesenswert?

Die Interruptflags werden ja gesetzt, egal ob global die Interrupts 
aktiviert sind oder nicht.
Falls nach Reaktivieren des global interrupt enable (sei) gesetzte Flags 
gefunden werden und die entsprechenden Interrupts eingestellt sind, 
werden diese ausgeführt.
(die Reihenfolge der Abarbeitung bei mehreren Interrupts richtet sich 
glaube ich nach der Reihenfolge der Einsprungvektoren).
;-)

von g457 (Gast)


Lesenswert?

depends. I.d.R. wird das Flag gespeichert und der zugehörige Handler 
dann angesprungen (Priorität beachten bei mehreren IRQs!). Verloren geht 
'der Interrupt' i.d.R., wenn er mehrfach ausgelöst wird, dann wird der 
Handler (i.d.R.) nur ein Mal angesprungen.

Die Details stehen wie immer im Datenblatt :-)

HTH

von Falk B. (falk)


Lesenswert?

@  Thomas D (Gast)

>gegeben sind ( z.b. Signal am Ext. Interrupt), wird dieser dann direkt
>nach der Reaktivierung abgearbeitet,

Ja.

> oder geht der verloren ?

Nur dann, wenn innerhalb der Sperrzeit mehr als ein Interrupt vom selben 
Typ auftritt. Siehe Interrupt.

MfG
Falk

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.