Grundlagenfrage: Erster Befehl im Interrupt - disablen?

Gast #2740738
Lesenswert?

Hi,

mal wieder eine Frage:

muss der erste Befehl in einer ISR die Abschaltung des entsprechenden 
Interrupts sein, oder genügt es, das auslösende Interruptflag zu 
löschen?
...oder empiehlt sich ggf. sogar, beides auszuführen?

Ich bin mir nicht sicher, da in einigen Datenblättern steht, dass das 
Interruptflag bei Bearbeitung der entsprechenden ISR automatisch 
gelöscht würde, dort allerdings nicht klar hervorgeht, ob dies bereits 
am Anfang, oder erst am Ende der ISR geschieht...

DANKE!
#2740755
Lesenswert?

Man kann auch mal logisch überlegen.
An welcher Stelle 'weiß' die CPU am einfachsten, um welchen Interrupt es 
sich handelt?

  An der Stelle an der sie in die ISR verzweigt oder an
  der Stelle an der sie mit einem RETI wieder aus der ISR rauskommt?

Wo hat man daher weniger Arbeit, das entsprechende Flag zurückzusetzen 
und wie will man eigentlich den Fall handhaben, wenn während einer ISR 
dieselbe Interruptbedingung schon wieder eintritt?
Gast #2740887
Lesenswert?

Karl Heinz Buchegger schrieb:
> Man kann auch mal logisch überlegen.

Ja, kann man. Aber besser ist es allemal, die Doku gründlich zu lesen. 
Manche Interrupts bei manchen uC sind statisch, werden also sofort 
wieder ausgelöst, wenn die Ursache nicht in der ISR beseitigt wird und 
andere sind flankengesteuert und werden nur einmal ausgelöst, nämlich 
mit der Flanke, mit der die Bedingung wahr wird.

Dazu kommt noch ein generell unterschiedliches Verhalten der diversen uC 
bei Interrupts. Manche werden per Spezialbefehl beendet (RETI und so), 
andere nicht...

Also: Buch lesen, das hilft am ehesten.

W.S.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren