Interuppt enabled bit in interuppt service routine gesetzt?

Gast #1330706
Lesenswert?

Hallo Leute,

kann mir jemand folgende Frage beantworten?
Löscht der AVR beim Eintritt in eine Interrupt-Service-Routine sein 
Interrupt Enabled Bit selbstständig oder muss ich das machen? -> cli();
Setzt der AVR beim Verlassen der ISR sein IE-Bit dann auch wieder, oder 
muss ich das machen? -> sei();
Bisher hab ich sicherheitshalber cli und sei einfach immer 
reingeschrieben, aber gehts auch ohne?

Grüße,

Patrick
Gast #1331136
Lesenswert?

> Bisher hab ich sicherheitshalber cli und sei einfach immer
> reingeschrieben, aber gehts auch ohne?

Das sei am Ende kann sogar schädlich sein, da in dem Fall die Interrupts 
schon wieder freigeschaltet werden, bevor aus der ISR zurückgesprungen 
wird. Wenn sehr viele Interrupts in kurzer Zeit auftreten, kann es 
theoretisch zu einem Stack-Überlauf kommen.

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