• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

RTL8710.Sleep много кушает и медленно просыпается

nikolz

Well-known member
Добрый день,
при старте RTL8710 по умолчанию WIFI оказывается включенным.
В результате при выходе из deep-sleep получаем 60 ма вместо 11 ма.
Потом конечно отключаю WiFi и получаю 11 ма
Но 60 ма в начале - это не хорошо.
кто знает как сделать по умолчанию отключенным WIFI при старте?
Спасибо
 

nikolz

Well-known member
Что-то разочаровал меня RTL или что-то не так делаю, но вот результат работы следующего примера:
int main(void)
{
gpio_t gpio_led, gpio_btn;
DBG_INFO_MSG_OFF(_DBG_GPIO_);

// Init LED control pin
gpio_init(&gpio_led, GPIO_LED_PIN);
gpio_dir(&gpio_led, PIN_OUTPUT); // Direction: Output
gpio_mode(&gpio_led, PullNone); // No pull

gpio_init(&gpio_btn, GPIO_PUSHBT_PIN);
gpio_dir(&gpio_btn, PIN_INPUT); // Direction: Input
gpio_mode(&gpio_btn, PullDown);

gpio_write(&gpio_led, 1);

while(1){
wifi_off();
gpio_write(&gpio_led, 0);
DiagPrintf("Sleep)\r\n");
sys_log_uart_off();
gpio_pull_control();
standby_wakeup_event_add(STANDBY_WAKEUP_BY_STIMER, 2000, 0);
standby_wakeup_event_add(STANDBY_WAKEUP_BY_PA5, 0, 1);
deepstandby_ex();
}
}
т е в цикле уходим спать и через 2 секунды просыпаемся без перезагрузки.
специально в цикл добавил команду отключения WiFi
но как мертвому припарки.
все очень хреново.
вот картинка потребляемого тока и затраченное время на активность.
upload_2018-6-23_23-18-40.png
------------------------------------------------------
Хотелось бы услышать начальника транспортного цеха.
 

pvvx

Активный участник сообщества
Вас оставили за начальника транспортного цеха, а вы задаете такие тупые вопросы?

>кто знает как сделать по умолчанию отключенным WIFI при старте?

Не включать его. Не вызывать инициализацию драйвера WiFi.

>Но 60 ма в начале - это не хорошо.

На вашем графике в начале явно не 60 мА. В другой теме вы пишите, что у вас на RTL00 всегда больше 60 мА…
Т.е. описать, что вам надо и что сотворили вы не в состоянии объяснить?
При этом хотите получить инструкцию с готовым “скетчем”?

Разберитесь в чем у вас затык и четко это опишите, а не требуйте гаданий на кофейной гуще.

>Что-то разочаровал меня RTL или что-то не так делаю

А как вы хотели, если у вас в голове засел ESP8266?
Весь мир работает по другому принципу и знания полученные от ESP8266 только вредят.
Основная беда у ESP8266 для программистов в том, что её функции в SDK делают что-то не то, для чего предназначены. Например – если написано что это deep-sleep, то оно закрывает все соединения, отключает WiFi, записав конфигурацию, делает паузу до исполнения в 100 мс для перехода в deep-sleep. Вот нафига мне её пауза и закрытие соединений, когда они уже давно закрыты? Т.е. у вас нет выбора – он определен заранее и решениями для телепузиков, для их задачи игры в мигание светодиодом, с пособием по уходу за детьми. SDK от Ameba – это не Arduino. Действие функций в нем ограничено основным действом. При этом имеется масса параметров, которые задаются системе для решения конкретных задач. Если вам надо запустить CPU исполнять NOP на всю катушку, да на самом высоком приоритете и со всеми включенными встроенными контролерами, и жрать за 60 мА – в режиме всегда готов, как пыОнер – укажите это системе динамического управления PMU и CPU, да RTOS. Она же не знает что вам от неё надо, а вы запихали свой код именно в такой тред :) Так же и WiFi – включить дрова WiFi можно и без LwIP и подавать отдельные команды, а можно и комплексно, воспользовавшись нашлепками из функций созданных в SDK для MBED. Можно включить соединение и тут-же дать команду перехода в режим малого потребления. При этом никто протирать дырки в Flash, сохраняя какие-то настройки в кубышку на будущее, как это делается в ESP8266 по уходу за детьми не будет. Для этого есть свои callback. В этом отличия профессиональной системы и игры для детского сада – Arduino.

В вашем представленном коде используются функции, аналогичные Arduino – созданные нашлепки для MBED. Что вы от них и с помощью их хотите получить, если пока ни “бэ” ни “мэ” даже в RTOS?

Примеров кода привести не могу – забросил уже все эти устаревшие чипы в музей.

PS: Откладывайте RTL в помойку, возвращайтесь к игре на ESP8266, да поспамите в теме Многопоточнось... Там у вас лучше получается :)
 
Последнее редактирование:

sharikov

Active member
Что-то разочаровал меня RTL или что-то не так делаю,
...
т е в цикле уходим спать и через 2 секунды просыпаемся без перезагрузки.
Не бывает такого в rtl. После спать только рестарт. AN0045 Table 1.4.2. Wake sources comparison
Переключание ветки старта вы не делаете, код в rtl_boot не правили.
Что вы хотите от sdk в котором поддержка deep-sleep только для галочки.
 

nikolz

Well-known member
Решил проблему с пиком 70 ма в режиме DeepStandby (см картинку в первом посте)
теперь картинка такая
upload_2018-7-17_23-6-32.png
Проблема в глюге в проге DeepStandby SDK
Возможно для RTL 8195 нормально но для RTL8710 дает всплеск потребления
Для RTL8710AF для других не проверял) надо убрать функцию
SpicDeepPowerDownFlashRtl8195A();
 
Сверху Снизу