Skip to content

Commit 57d4906

Browse files
committed
esp32/Makefile Updated to add esp32/machine_rtc.c
esp32/modmachine.c Added RTC object esp32/modmachine.h Added RTC object Just enough code for this to work on ESP32: import machine rtc = machine.RTC() # Need to implement this first! rtc.irq(trigger=rtc.ALARM0, wake=machine.DEEPSLEEP) # syntactic sugar to match, probably a NOP rtc.alarm(rtc.ALARM0, 10000) # calls esp_deep_sleep_enable_timer_wakeup() in IDF machine.deepsleep() # calls esp_deep_sleep_start() in IDF
1 parent c09dc68 commit 57d4906

File tree

3 files changed

+21
-0
lines changed

3 files changed

+21
-0
lines changed

ports/esp32/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,7 @@ SRC_C = \
143143
machine_hw_spi.c \
144144
machine_wdt.c \
145145
mpthreadport.c \
146+
machine_rtc.c \
146147
$(SRC_MOD)
147148

148149
EXTMOD_SRC_C = $(addprefix extmod/,\

ports/esp32/modmachine.c

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,10 @@
4646

4747
#if MICROPY_PY_MACHINE
4848

49+
// amount of time to sleep
50+
extern uint64_t machine_rtc_expiry;
51+
#define MACHINE_WAKE_DEEPSLEEP (0x04)
52+
4953
STATIC mp_obj_t machine_freq(size_t n_args, const mp_obj_t *args) {
5054
if (n_args == 0) {
5155
// get
@@ -64,6 +68,16 @@ STATIC mp_obj_t machine_freq(size_t n_args, const mp_obj_t *args) {
6468
}
6569
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(machine_freq_obj, 0, 1, machine_freq);
6670

71+
STATIC mp_obj_t machine_deepsleep(void) {
72+
if (machine_rtc_expiry != 0) {
73+
esp_deep_sleep_enable_timer_wakeup(machine_rtc_expiry);
74+
}
75+
esp_deep_sleep_start();
76+
return mp_const_none;
77+
}
78+
79+
STATIC MP_DEFINE_CONST_FUN_OBJ_0(machine_deepsleep_obj, machine_deepsleep);
80+
6781
STATIC mp_obj_t machine_reset(void) {
6882
esp_restart();
6983
return mp_const_none;
@@ -106,6 +120,7 @@ STATIC const mp_rom_map_elem_t machine_module_globals_table[] = {
106120
{ MP_ROM_QSTR(MP_QSTR_freq), MP_ROM_PTR(&machine_freq_obj) },
107121
{ MP_ROM_QSTR(MP_QSTR_reset), MP_ROM_PTR(&machine_reset_obj) },
108122
{ MP_ROM_QSTR(MP_QSTR_unique_id), MP_ROM_PTR(&machine_unique_id_obj) },
123+
{ MP_ROM_QSTR(MP_QSTR_deepsleep), MP_ROM_PTR(&machine_deepsleep_obj) },
109124
{ MP_ROM_QSTR(MP_QSTR_idle), MP_ROM_PTR(&machine_idle_obj) },
110125

111126
{ MP_ROM_QSTR(MP_QSTR_disable_irq), MP_ROM_PTR(&machine_disable_irq_obj) },
@@ -115,13 +130,17 @@ STATIC const mp_rom_map_elem_t machine_module_globals_table[] = {
115130

116131
{ MP_ROM_QSTR(MP_QSTR_Timer), MP_ROM_PTR(&machine_timer_type) },
117132
{ MP_ROM_QSTR(MP_QSTR_WDT), MP_ROM_PTR(&machine_wdt_type) },
133+
// wake abilities
134+
{ MP_ROM_QSTR(MP_QSTR_DEEPSLEEP), MP_ROM_INT(MACHINE_WAKE_DEEPSLEEP) },
135+
118136
{ MP_ROM_QSTR(MP_QSTR_Pin), MP_ROM_PTR(&machine_pin_type) },
119137
{ MP_ROM_QSTR(MP_QSTR_Signal), MP_ROM_PTR(&machine_signal_type) },
120138
{ MP_ROM_QSTR(MP_QSTR_TouchPad), MP_ROM_PTR(&machine_touchpad_type) },
121139
{ MP_ROM_QSTR(MP_QSTR_ADC), MP_ROM_PTR(&machine_adc_type) },
122140
{ MP_ROM_QSTR(MP_QSTR_DAC), MP_ROM_PTR(&machine_dac_type) },
123141
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&machine_i2c_type) },
124142
{ MP_ROM_QSTR(MP_QSTR_PWM), MP_ROM_PTR(&machine_pwm_type) },
143+
{ MP_ROM_QSTR(MP_QSTR_RTC), MP_ROM_PTR(&machine_rtc_type) },
125144
{ MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&mp_machine_soft_spi_type) },
126145
{ MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&machine_uart_type) },
127146
};

ports/esp32/modmachine.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,6 @@ extern const mp_obj_type_t machine_uart_type;
1515

1616
void machine_pins_init(void);
1717
void machine_pins_deinit(void);
18+
extern const mp_obj_type_t machine_rtc_type;
1819

1920
#endif // MICROPY_INCLUDED_ESP32_MODMACHINE_H

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy