Forum: Mikrocontroller und Digitale Elektronik Arduino: sleep_mode im yield()?


von Schlafwandler (Gast)


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.

von Stefan F. (Gast)


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.

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.