mikrocontroller.net

Forum: Compiler & IDEs Wann ist dieser Inteerupt beendet?


Autor: roboter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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;
    }

}

Autor: Johann L. (gjlayde) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: roboter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Mark .. (mork)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Siehe Interrupt.

Autor: Didda (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.