Hallo. Sind die Interrupts deaktiviert, wenn das Programm sich gerade in der ISR befindet? Ich habe Timer1, der jede halbe Sek. überläuft und einen Interrupt "ISR_von_Timer1" auslöst. Ausserdem habe ich noch einen Hardware Interrupt "ISR_Int0" Stören die sich, wenn es mal beides zu gleichen Zeit auftritt, oder sind die Interrupts deaktiviert, wenn ich mich in der ISR befinde. Danke und LG Jens
Den Mikrocontroller, den du hier beschreibst kenne ich ziemlich gut. Der besitzt eine IAU ( eine sogenannte Interrupt Acceleration Unit ). Diese Einheit besitzt noch einmal einige ALUs und damit kann der µC mehrere Interrupt gleichzeitig abarbeiten. Also es werden dann beide Programmteile parallel ausgeführt. Wenn du das nicht möchtest, musst du das IAUE-Bit im SCR-Register auf 0 setzen. Dann wird die IAE abgeschaltet und der zweite Interrupt wartet, bis der erste fertig ist. Allerdings nur, wenn der zweite Interrupt die gleiche oder eine niedrigere Priorität besitzt. Sonst ist alles ganz anders. Ich hoffe, ich konnte dir helfen. Wenn du noch Fragen hast, dann einfach hier stellen.
Jens schrieb: > Hallo. > Sind die Interrupts deaktiviert, wenn das Programm sich gerade in der > ISR befindet? ja > Ich habe Timer1, der jede halbe Sek. überläuft und einen Interrupt > "ISR_von_Timer1" auslöst. > Ausserdem habe ich noch einen Hardware Interrupt "ISR_Int0" > > Stören die sich, wenn es mal beides zu gleichen Zeit auftritt, oder sind > die Interrupts deaktiviert, wenn ich mich in der ISR befinde. die sind deaktiviert. Aber die Interrupt Anforderung wird registriert und gespeichert. Sobald die erste ISR fertig ist, beginnt dann gleich die jeweils andere zu laufen. Das Auftreten EINES Interrupts geht also nicht verloren. Er beginnt nur etwas zeitversetzt mit seiner ISR.
Jens schrieb: > Stören die sich, wenn es mal beides zu gleichen Zeit auftritt, oder sind > die Interrupts deaktiviert, wenn ich mich in der ISR befinde. Um nicht noch mehr Glaskugeln befragen zu müssen, solltest du spätestens jetzt verraten, um welchen Controller es dir dabei geht. Denn die verhalten tatsächlich nicht alle gleich ;) Oliver
Jens schrieb: > Stören die sich, wenn es mal beides zu gleichen Zeit auftritt, oder sind > die Interrupts deaktiviert, wenn ich mich in der ISR befinde. Du sollst keine LCD im Timerinterupt ansteuern! Interrupts haben schnellstmöglich beendet zu werden.
Hallo, Da hab ich aber gleich mal noch eine Frage: Wie verhält sich ein AVR (Mega8) wenn mehrere Interrupts während der Abarbeitung eines anderen Interrups auftreten? Wieviel INT-Anforderungen kann der AVR sich merken? Weiß das jemand? Gruß Steffen
Steffen H. schrieb: > Weiß das jemand? ja das Datenblatt. Darin erkennt man das es für jeden Interupt ein flag gibt, damit ist klar das sich nur einer je sorte gemerkt werden kann.
Ich darf anmerken, dass es auch noch Prioritätsinterrupts gibt. Ich spreche hier mal von PIC Mikrocontrollern. Die haben Low-Priority und High-Priority Interrupts. Jede Interruptquelle können sowohl low, als auch high-Priority sein. Ein High-Priority-Interrupt hat die Möglichkeit die low-Priority-ISR zu verlassen. Ist die High-Priority-IRS abgearbeitet geht es in der low-Priority-ISR weiter.
Lehrmann Michael schrieb: > Ich spreche hier mal von PIC Mikrocontrollern. Gerne würde ich auch noch über Interrupts bei SH2 Prozessoren sprechen - aber hier geht's ja wohl um ATmega8.
Steffen H. schrieb: > Wie verhält sich ein AVR (Mega8) wenn mehrere Interrupts während der > Abarbeitung eines anderen Interrups auftreten? Wieviel INT-Anforderungen > kann der AVR sich merken? Weiß das jemand? Er kann sich ALLE merken, aber von jeder Sorte nur einen. Du kannst also 100 Pegelwechsel am Pin haben, aber es wird im ungünstigen Fall (Interrupts lang genug gesperrt) nur ein einziger Interrupt ausgelöst werden. Er kann sich aber aber einige verschiedene Timerinterrupts (Compare, Capture, Overflow...), jeweils die Int-Eingänge, serielle Schnitte(n), AD-Wandler, ... alle gleichzeitig merken und bei nächster Gelegenheit abarbeiten.
Peter II schrieb: > Darin erkennt man das es für jeden Interupt ein flag gibt, damit ist > klar das sich nur einer je sorte gemerkt werden kann. Das leuchtet ein.. Und so hab ich es auch verstanden. Wollte mich nur nochmal vergewissern. Danke
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.