Forum: Mikrocontroller und Digitale Elektronik 2 Interrupts gleichzeitig?


von Jens (Gast)


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

von xtten (Gast)


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.

von Karl H. (kbuchegg)


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.

von Oliver (Gast)


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

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


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.
Du sollst keine LCD im Timerinterupt ansteuern!
Interrupts haben schnellstmöglich beendet zu werden.

von Jens (Gast)


Lesenswert?

Danke für die Antworten.
Es geht um den Atmega8
LG Jens

von Falk B. (falk)


Lesenswert?

Siehe Interrupt

von Steffen H. (avrsteffen)


Lesenswert?

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

von Peter II (Gast)


Lesenswert?

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.

von Lehrmann M. (ubimbo)


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.

von Willi (Gast)


Lesenswert?

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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


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.

von Steffen H. (avrsteffen)


Lesenswert?

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
Noch kein Account? Hier anmelden.