summaryrefslogtreecommitdiffstatshomepage
path: root/esp8266/modesp.c
diff options
context:
space:
mode:
authorpuuu <puuu@users.noreply.github.com>2016-06-04 00:21:26 +0900
committerDamien George <damien.p.george@gmail.com>2016-06-06 10:51:12 +0100
commitee12581a3545c6e950b4a2b5322167eb73326928 (patch)
tree609ae347a303629663d3c7196e2be3b2643bc72e /esp8266/modesp.c
parenteb78a5c530e21b5ce6bae8d7c28c1508275c7f68 (diff)
downloadmicropython-ee12581a3545c6e950b4a2b5322167eb73326928.tar.gz
micropython-ee12581a3545c6e950b4a2b5322167eb73326928.zip
esp8266: Let RTC work correctly after deepsleep.
By design, at wake up from deepsleep, the RTC timer will be reset, but the data stored in RTC memory will not [1]. Therefore, we have to adjust delta in RTC memory before going into deepsleep to get almost correct time after waking up. [1] http://bbs.espressif.com/viewtopic.php?t=1184#p4082
Diffstat (limited to 'esp8266/modesp.c')
-rw-r--r--esp8266/modesp.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/esp8266/modesp.c b/esp8266/modesp.c
index 0c6cc423e1..99f063a756 100644
--- a/esp8266/modesp.c
+++ b/esp8266/modesp.c
@@ -46,6 +46,7 @@
#include "espneopixel.h"
#include "espapa102.h"
#include "modpyb.h"
+#include "modpybrtc.h"
#define MODESP_ESPCONN (0)
@@ -540,8 +541,11 @@ STATIC mp_obj_t esp_sleep_type(mp_uint_t n_args, const mp_obj_t *args) {
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(esp_sleep_type_obj, 0, 1, esp_sleep_type);
STATIC mp_obj_t esp_deepsleep(mp_uint_t n_args, const mp_obj_t *args) {
+ uint32_t sleep_us = n_args > 0 ? mp_obj_get_int(args[0]) : 0;
+ // prepare for RTC reset at wake up
+ rtc_prepare_deepsleep(sleep_us);
system_deep_sleep_set_option(n_args > 1 ? mp_obj_get_int(args[1]) : 0);
- system_deep_sleep(n_args > 0 ? mp_obj_get_int(args[0]) : 0);
+ system_deep_sleep(sleep_us);
return mp_const_none;
}
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(esp_deepsleep_obj, 0, 2, esp_deepsleep);