Для других чипов TLSR826x/825x и в других SDK такой фичи нет. Там работа с Flash восстанавливается при активации внутренних питаний CPU (режимов работы SoC) и подачи на Flash команды выхода из sleep.
На TLSR8266 восстановление работы Flash после отработки функций sleep в SDK - засИкречено - требует множество доп. действий с регистрами чипа. Т.е. возможно только при использовании стартовых процедур из SDK и правильной последовательности выполнения. Вывод RST во время выполнения sleep у TLSR8266 не отрабатывает полностью - если использовать RST во время сна то чип не всегда запускается...
Для программирования проще скинуть питание чипа при старте "Активации", как указано в прошлом сообщении.
@mikolainer Вы сами загоняете чип в это состояние в своей программе, которая далека от реальных вариантов использования. Ваш код в
main_loop()
останавливает работу BLE, т.к. не выполняется ble_loop()
Т.е. в main_loop() не должно быть длительных процедур. BLE в данных SDK не работает по прерываниям.
GPIO сбрасывают состояние при засыпании SoC, а работать остаются только аппаратные притяжки и то, что вы задали работать - таймеры и контролер прерываний.
А если вы используете чип без BLE - тогда зачем у вас вся его инициализация?
Естественно светодиод от
gpio_write(LEDpin, 1)
не будет работать пока чип спит с отключенным контроллером GPIO.
Так-же в режиме BLE переход к sleep отрабатывается в ble_loop(), а не в пользовательском коде. Задаются флаги и PM сама решает когда чипу спать и на сколько в зависимости от арбитража BLE...
В итоге ваш код - это какая-то каша с непонятным функционалом и построен "вопреки" алгоритмам предназначения данного SDK.