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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.