Vreemde vraag misschien, maar stel dat ik een ESP32 in slaapmodus zet
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
sleep_enable();
sleep_cpu();Wat doet die dan als die wakker wordt?
Waar kan ik dat vinden?
Gaat die verder met zijn instructies van waar hij gebleven was of springt die naar een bepaalde instructie? Kan ik dit configureren?
Het mag zelfs zijn dat die gewoon opnieuw zijn programma 100% van in begin start..
De reden van deze vraag is dat ik een ESP32-C3 omwille stroombesparing even wil doen slapen, maar wil die naar een bepaalde actie terug laten keren..
Hier kan je veel informatie vinden: https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-refere…
Die functies die jij noemt lijken uit een library te komen, daar zal je wat informatie moeten zoeken.
Doorgaans werkt 'deep_sleep' alleen nog met een interne timer. Je kan dan zeggen:"Wordt over 30 seconden of 30 minuten weer wakker.(En doe daarna een meting, en weer slapen)"
Light_sleep heeft al wat meer functies, zoals veranderingen aan de GPIO pennen meten, ik zag op de site die ik noemde ook een touch display als mogelijke light_sleep wake-up source.
Daarna kan je je routine weer verder gaan of uitzoeken wat de reden was het wakker worden (bijvoorbeeld de timer of een knopje).
In het algemeen zijn er twee mogelijkheden, afhankelijk van CPU en hoe diep de slaap is:
- Verder gaan met de volgende instructie
- Reboot.
Zoals K7Jz al aangaf, TFM (The Friendly Manual) is je vriend.
De ESP32 heeft wel een bepaald RAM bereik dat behouden blijft na "deep sleep", dus daar kan variabelen wegschrijven die je programma afloop kunnen sturen na "wakker worden". In Arduino de makro RTC_DATA_ATTR gebruiken : vb
RTC_DATA_ATTR int RTC_bat_choice = 0;
De boel zo maken dat een reset na sleep voldoende is maakt het wel robuust.
Je kan met handige truukjes misschien energiezuiniger werken met een reeds aangemeld wifi netwerk en dan telkens iets verzenden na de slaaptijd. Echter, stel je wifi AP is even uit geweest dan kan blijft je routine mogelijk oneindig lang iets versturen naar een niet verbonden netwerk. Nog slimmer is om dat dan weer af te vangen maar je begrijpt vast wat ik bedoel.