Wie programmierst du einen Schlafmodus für deinen Arduino? Was sind besonders bei batteriebetriebenen Designs gute Techniken, um die CPU zu schonen, aber nur bei Bedarf aufzuwachen?
Wie programmierst du einen Schlafmodus für deinen Arduino? Was sind besonders bei batteriebetriebenen Designs gute Techniken, um die CPU zu schonen, aber nur bei Bedarf aufzuwachen?
Antworten:
avr / sleep.h hat vielleicht das, was Sie brauchen - Dokumentation ist bei http://www.nongnu.org/avr-libc/user-manual/group__avr__sleep.html
Es gibt jedoch einige Warnungen, wie die CPU in den Ruhezustand versetzt werden kann :)
Hoffe das hilft.
Denken Sie daran, dass abhängig von Ihrem Schlafmodus auf Ihrem Arduino mehrere Interruptquellen ausgeführt werden. timer0 generiert einen Überlauf-Interrupt, der Ihr Arduino ungefähr jede Millisekunde weckt, und der uart generiert jedes Mal einen Interrupt, wenn ein Zeichen eingeht. ... und natürlich gibt es die externen Interrupts an Pin 2 und 3, die Sie möglicherweise mit der Funktion attachInterrupt aktiviert haben oder nicht.
Wenn ein Interrupt auftritt, wird Ihre Skizze aus dem Ruhezustand geweckt und nach der Wartung des Interrupts an dem Punkt weiter ausgeführt, an dem sie in den Ruhezustand übergegangen ist. Die Lösung besteht darin, Ihre Skizze so einzurichten, dass sie sich jedes Mal wieder in den Ruhezustand versetzt, es sei denn, es ist wirklich Zeit aufzuwachen.
Hier, meine Arduino-Schlafbibliothek