Forum: Compiler & IDEs Loeschzeitpunkte der Interruptflags bei AVRs


von Jean (Gast)


Lesenswert?

Hallo,

ich habe eine einfache Frage zum Umgang der AVRs mit Interrupts und 
konnte in den Foren bisher nichts finden.

Tritt ein Interrupt auf, wird das zugehoerige Interrupt-Flag gesetzt. 
Was ich gerne wissen moechte, ist, wann die Flags wieder geloescht 
werden. Werden sie bei Betreten der ISR geloescht, oder bei deren 
Verlassen?

Im Datenblatt habe ich folgendes gefunden, es ist hier aber etwas 
ungenau:

Datenblatt ATmega8 S.13:
The first type is triggered by an event that sets the Interrupt Flag. 
For these interrupts, the Program Counter is vectored to the actual 
Interrupt Vector in order to execute the interrupt handling routine, and 
hardware clears the corresponding
Interrupt Flag.

Datenblatt ATmega8 S.69:
The flag is cleared when the interrupt routine is executed.


Vom letzten Zitat ausgehend, nehme ich an, dass die Flags bei Betreten 
('is executed') der ISR geloescht werden (auch weil dann wieder ein 
neuer Interrupt des selben Typs 'vorgemerkt' werden kann).
Liege ich hiermit richtig?

Vielen Dank,

Jean

von Falk B. (falk)


Lesenswert?

@  Jean (Gast)

>werden. Werden sie bei Betreten der ISR geloescht,

Ja.

> oder bei deren Verlassen?

Nein.

Es gibt aber wenige Ausnahmen, z.B. den UART-RX Interrupt, den 
löscht man implizit durch Auslesen von UDR.

>Vom letzten Zitat ausgehend, nehme ich an, dass die Flags bei Betreten
>('is executed') der ISR geloescht werden (auch weil dann wieder ein
>neuer Interrupt des selben Typs 'vorgemerkt' werden kann).
>Liege ich hiermit richtig?

Ja.

MfG
Falk

von Jean (Gast)


Lesenswert?

Vielen Dank fuer die schnelle Antwort!
Ihr seid echt Klasse!

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.