Interrupt

Gast #206119
Lesenswert?

Hallo,

ich habe eine kurze Frage zu Interrupts. Und zwar sind ja soweit ich
verstanden habe während der abarbeitung einer ISR alle weiteren
anstehenden Interrupts blockiert und werden erst nach beendigung der
ISR   berarbeitet. Aber wie merkt sich der Prozessor, dass da ein
Interrup-Request war bzw. wo wird dieser Request bis nach beendigung
der vorherigen ISR zwischengespeichert?

Grüsse Ralf
Gast #206120
Lesenswert?

>während der abarbeitung einer ISR alle weiteren
>anstehenden Interrupts blockiert und werden erst nach beendigung der
>ISR   berarbeitet

Das hängt ganz davon ab, ob Du das Globale Interruptflag in Deiner ISR
wieder setzt oder nicht.

>wo wird dieser Request bis nach beendigung
>der vorherigen ISR zwischengespeichert?

Das jeweilige Interrupt-Bit im passenden Interrupt-Flag-Register wird
dazu benutzt.
Gast #206121
Lesenswert?

>während der abarbeitung einer ISR alle weiteren
>anstehenden Interrupts blockiert und werden erst nach beendigung der
>ISR   berarbeitet

Das hängt ganz von der Architektur ab.
MCs mit Interruptprioritäten (der  8051 ist so einer, der AVR aber
nicht) erlauben das Unterbrechen eines niederen durch einen mit höherer
Priorität.

Ordentliche MCs haben für jede Interruptquelle ein Interruptflag,
welches den Einsprung in die Interruptroutine veranlaßt, sobald
freigegeben.

Man kann aber auch auf dieses Flag pollen (zyklisch testen, ob gesetzt)
und es dann manuell zurücksetzen.


Peter
Gast #206122
Lesenswert?

wenn du mit "sei" die Interrupts global wieder aktivierst oder mit
"reti" aus dem Interrupt zurückkehrst, dann sind die Interrupts
wieder eingeschaltet und wenn nötig wird der nächste Interrupt
abgearbeitet.

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