Wann ist dieser Inteerupt beendet?

Gast #1044476
Lesenswert?

.....INTF1 (External Interrupt Flag 1)

    Dieses Bit wird gesetzt, wenn am INT1-Pin eine Interrupt-Kondition, 
entsprechend der Konfiguration, erkannt wird. Wenn das Global Enable 
Interrupt Flag gesetzt ist, wird die Interruptroutine angesprungen.
    Das Flag wird automatisch gelöscht, wenn die Interruptroutine 
beendet ist. Alternativ kann das Flag gelöscht werden, indem der Wert 
1(!) eingeschrieben wird. ......


Ist der Interrupt beendet, wenn ich die Routine verlassen habe bzw wird 
dann erst das Flag gelöscht ?

ISR(INT0_vect)
{

  encoder_li = encoder_li+1;

  if(encoder_li >= enc_wert)
    {
      robby_aus();  // Ist auch noch eine Funktion
      encoder_li=0;
      encoder_re=0;
    }

}
Gast #1045339
Lesenswert?

...Das INT-Flag bei flankengetriggerten externen IRQs wird beim 
ausführen
des IRQ-Vektoes zurückgesetzt, d.h. beim ersten Befehl der ISR ist das
Bit 0....

Dann wird ja schon am Anfang der Interrupt wieder freigegeben obwohl ich 
mich noch in einer Aufrufschleife/Arbeitsroutine befinde , die ich noch 
erlegigen muss?

mfg
Gast #1045987
Lesenswert?

Also, hab ich so richtig verstanden?
Das Interrupt-Flag für das auftreten des einzelnen Interrupts wird beim 
Einsprung zurück gesetzt, um keinen Interrupt wärend der Abarbeitung zu 
verlieren. Das globale Interrupt-Enable-Flag wird beim Verlassen des 
Interrupts wieder gesetzt.

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