Делаю часы, понимаю что выбрал не самый лучший микроконтроллер, но хочу его заставить работать.
Дело в том, что не могу заставить esp8266 выйти из сна на 150ms (или чуть больше или чуть меньше). Причем deep_sleep использовать нельзя.
В режиме light_sleep пробуждение происходит только по внещним GPIO.
Для засыпания использую следующую функцию:
Все работает отлично, потребление полностью устраивает с одним "но" - микроконтроллер не просыпается по истечению uint16_t time. А значит не проснется через 150ms и не проверить акселерометр или другой датчик. Просыпание происходит только по нажатиям на кнопки.
Уже сижу и думаю встроить в плату attiny, которая будет по таймеру слать импульсы для пробуждения esp8266, но это костыль. Подскажите как заставить esp просыпаться самому.
Дело в том, что не могу заставить esp8266 выйти из сна на 150ms (или чуть больше или чуть меньше). Причем deep_sleep использовать нельзя.
В режиме light_sleep пробуждение происходит только по внещним GPIO.
Для засыпания использую следующую функцию:
Код:
void driver_powerManager_GoSleep(uint16_t time) {
wifi_set_opmode_current(NULL_MODE);
wifi_fpm_set_sleep_type(LIGHT_SLEEP_T);
wifi_fpm_open();
PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTCK_U,
gpio_pin_wakeup_enable(btns_pins[0], GPIO_PIN_INTR_HILEVEL);
gpio_pin_wakeup_enable(btns_pins[1], GPIO_PIN_INTR_HILEVEL);
gpio_pin_wakeup_enable(btns_pins[2], GPIO_PIN_INTR_HILEVEL);
wifi_fpm_set_wakeup_cb(wake_cb);
wifi_fpm_do_sleep(time*1000);
delay (time+1);
#ifdef debug
Serial.println("Going to sleep");
Serial.println(millis());
#endif
}
Уже сижу и думаю встроить в плату attiny, которая будет по таймеру слать импульсы для пробуждения esp8266, но это костыль. Подскажите как заставить esp просыпаться самому.