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