Пытаюсь разобраться с работой функций для снижения потребления энергии. В частности есть документ, в котором всё это достаточно подробно описано – Low Power Solutions.
При этом у меня не модуль ведет себя совершенно не так, тестирую на ESP-07. Задача очень простая: ввести систему в режим сна и выводить её из этого состояния либо "по кнопке", либо "по таймеру".
Функция power_lightsleep выглядит таким образом:
При этом "просыпание" по таймеру срабатывает отлично, а вот по при нажатии кнопки на GPIO13 - ничего не происходит. В чем может быть ошибка?
С system_deep_sleep еще хуже. Функция выглядит так:
Через заданное время чип не поднимается, он так и остается "спать". Если длительность занулить (system_deep_sleep(0): there is no wake up timer; in order to wakeup, connect a GPIO to
pin RST, the chip will wake up by a falling-edge on pin RST. ) и попытаться поднять модуль из спячки кнопокой на RST - тоже ничего не происходит.
Куда хоть капать-то?
При этом у меня не модуль ведет себя совершенно не так, тестирую на ESP-07. Задача очень простая: ввести систему в режим сна и выводить её из этого состояния либо "по кнопке", либо "по таймеру".
Функция power_lightsleep выглядит таким образом:
Код:
void power_lightsleep(uint32 duration){
os_printf("power_lightsleep\n");
os_delay_us(1000);
wifi_station_disconnect();
wifi_set_opmode(NULL_MODE);
wifi_set_sleep_type(LIGHT_SLEEP_T);
wifi_fpm_open();
PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTCK_U,3);
gpio_pin_wakeup_enable(13, GPIO_PIN_INTR_ANYEDGE );
wifi_fpm_set_wakeup_cb(power_cb);
wifi_fpm_do_sleep(0xFFFFFFF);
}
С system_deep_sleep еще хуже. Функция выглядит так:
Код:
void power_deepsleep(uint32 duration){
os_printf("power_deepsleep\n");
os_delay_us(1000);
system_deep_sleep(duration*1000);
}
pin RST, the chip will wake up by a falling-edge on pin RST. ) и попытаться поднять модуль из спячки кнопокой на RST - тоже ничего не происходит.
Куда хоть капать-то?