Forum: Compiler & IDEs Interuppt enabled bit in interuppt service routine gesetzt?


von Alfred (Gast)


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

von Peter (Gast)


Lesenswert?

ja es geht ohne, aber für solche sachen gibt es eine Doku und den 
Simulator.

von Alfred (Gast)


Lesenswert?

Hallo Peter,

vielen Dank für deine Antwort.

Sollte ich eine Doku und einen Simulator vorliegen haben, werde ich mich 
deren gerne bemühen, war aber grad nicht so...

Grüße,

Alfred

von Rolf Magnus (Gast)


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.

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.