Arduino: sleep_mode im yield()?

Gast #7212644
Lesenswert?

Hallo an die AVR-Spezialisten,

Im Arduino-Framework gibt's ja eine leere "weak" Funktion yield(), die 
u.A. im delay() aufgerufen wird, wenn Zeit vertrödelt werden soll.

Spricht was dagegen, da einfach
1
void yield() {
2
    set_sleep_mode(SLEEP_MODE_IDLE);
3
    sleep_mode();
4
}
in's Hauptprogramm mit aufzunehmen?
Funktioniert bei mir zumindest in kleinen Test-Programmen.

Spätestens der Timer für die "millis()" sollte den AVR ja rechtzeitig 
wieder wecken.

Im eigenen Code hat man oft die Möglichkeit, delay zu vermeiden, in 
extern dazugeholten Libraries eher unpraktisch. Wär' eine elegante 
Option, da zumindest ein wenig Stromsparen nachzurüsten.
Gast #7212654
Lesenswert?

Wenn du immer mindestens bis zum nächsten Interrupt schlafen willst kann 
man das wohl machen. Was da genau alles schläft hängt wohl vom 
Mikrocontroller und dessen Arduino Core ab. Bei einem ESP8266 würde ich 
die Funktion lieber nicht überschrieben.

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