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?
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.
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.
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
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."
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.