Kann ein ATmega8 Interrupts "verlieren"?

Gast #2215648
Guten Tag.

Da ich gerade ein Programm mit sehr vielen Interrupts erstelle frage ich 
mich ob der ATmega8 Interrupts verlieren kann.

Dabei geht es nur um Interrupts unterschiedlicher Herkunft z.B. Timer, 
Eingang1, Eingang2.


Anders gefragt:

Was passiert wenn der Timer1 einen Interrupt auslöst und der AVR in den 
Interrupt springt, nun aber bevor "I" wieder gesetzt wurde ein neuer 
Interrupt  von einer anderen Quelle z.B. ADC ausgelöst wird?
Gast
Die Interupt Flags werden gesetzt und bleiben gesetzt bis der Interupt 
durch zugriff auf ein bestimmtes Register automatisch zurückgesetzt 
wurde oder manuel durch schreiben einer 1 auf das entsprechende 
Interuptflag. Sie werden nach Ihrer Priorität abgearbeitet. Das heißt 
jedesmal wenn ein Interupt Handler beendet wird und das Global Interupt 
enable Flag wieder auf 1 geht kommt der nächste dran.
Gast
Gut .. War mir nicht sicher ob ich das richtig verstanden habe.

Also kann ich höchstens bei Zeitkritischen Programmen (Interrupt welches 
auf ein weiteres Interrupt wartet) Probleme bekommen.
Gast
Ja, kann er. Zum Beispiel wenn ein Interrupt zwei Mal ausgelöst wird und 
vom ersten Auslösen der Interrupthandler noch nicht angesprungen wurde.

Rüdiger schrieb:
> Was passiert wenn der Timer1 einen Interrupt auslöst und der AVR in den
> Interrupt springt, nun aber bevor "I" wieder gesetzt wurde ein neuer
> Interrupt  von einer anderen Quelle z.B. ADC ausgelöst wird?
Der ADC-Interrupt wird durch Setzen des entsprechenden Flags gemerkt und 
nach verlassen des Timer-Interrupt ausgeführt. Er geht also nicht 
verloren.

Das steht aber auch alles im Detail im Datenblatt. Die Basics findest Du 
auf Seite 14-16: Reset and Interrupt Handling
Bitte selbst lesen und anschließend fragen, falls es noch Unklarheiten 
gibt.
http://www.atmel.com/dyn/resources/prod_documents/doc2486.pdf
Gast
Jedoch kann man das alles im Datenblatt nachlesen. Sollte man sich 
einmal kommplett durchlesen. Ich meine ALLES lesen und verstehen. Man 
muß sich ja nicht alles merken, denn man kann ja später noch mal im 
Detail nachschlagen.
Aber es passirt dann öfters, daß man sich denkt: "Mensch da war doch 
was, da guck ich doch noch mal schnell nach, ich glaube dieses Interupt 
Flag wurde eventuell nicht automatisch zurückgesetzt."

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 15 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.