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
>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.
>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
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.
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.