Loeschzeitpunkte der Interruptflags bei AVRs

Gast #1839566
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
#1839589
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

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