2 Interrupts gleichzeitig?

Gast #2356756
Lesenswert?

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
Gast #2356765
Lesenswert?

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.
#2356766
Lesenswert?

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.
Gast #2356784
Lesenswert?

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
#2357094
Lesenswert?

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.
Moderator (Firma: Titel) Persönliche Seite #2357129
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren