Externer Interrupt

Gast #515709
Lesenswert?

Hallo,

ich habe eine hoffentlich recht einfache Frage. Ich initialisiere den 
externen Interrupt INT7 bei meinem ATmega2560 mit WinAVR, mit folgenden 
Code:

void int7_init()
{
int7_start=0;
int7_end=0;
EICRB=(1<<ISC71) | (1<<ISC70);
EIMSK=(1<<INT7);
}

Meine Frage, warum wird auch das Flag im EIFR Register während dieser 
Initialisierung gesetzt?
Danke
Gast #515785
Lesenswert?

Das Flag wird bei Auftreten eines entsprechenden Ereignisses immer 
gesetzt, auch wenn der Interrupt nicht freigegeben ist! Die (lokale 
und/oder globale) Freigabe geben nur die automatische Bearbeitung, also 
das Auslösen einer Unterbrechung frei. Wenn am externen Interrupt-Pin 
ein entsprechendes Signal ankommt, dann wird das Flag immer gesetzt. 
Deshalb ist es meist sinnvoll, vor der Freigabe eines Interrupt das 
betreffende Flag explizit zu löschen.

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