Forum: Compiler & IDEs Wann ist dieser Inteerupt beendet?


von roboter (Gast)


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;
    }

}

von Johann L. (gjlayde) Benutzerseite


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.

Die ISR ist mit verlassen der Routine beendet. Auch das Handbuch ist 
dein Freund, da steht das alles erfreulich gut beschrieben drinne.

von roboter (Gast)


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

von Mark .. (mork)


Lesenswert?

Ja genau. Sollte während der ISR ein weiterer Interrupt auf diesem Pin 
auftreten, geht er dadurch nicht verloren sondern kann später 
verarbeitet werden.

MfG Mark

von Falk B. (falk)


Lesenswert?

Siehe Interrupt.

von Didda (Gast)


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.

von (prx) A. K. (prx)


Lesenswert?

Korrekt.

Wäre der Vollständigkeit halber nur noch anzufügen, dass dies auf viele 
Interrupt-Quellen der AVRs zutrifft, nicht aber auf alle. Bei manchen 
leitet sich das Interrupt-Flag anders ab und muss evtl. explizit 
zurückgesetzt werden. Näheres verrät das Datasheet.

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.