Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

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

Тема в разделе "Realtek - SDK, прошивки и утилиты", создана пользователем nikolz, 12 июн 2018.

  1. nikolz

    nikolz Гуру

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

    nikolz Гуру

    Сообщения:
    4.519
    Симпатии:
    444
    Что-то разочаровал меня 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
    ------------------------------------------------------
    Хотелось бы услышать начальника транспортного цеха.
     
  3. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.492
    Симпатии:
    1.275
    Вас оставили за начальника транспортного цеха, а вы задаете такие тупые вопросы?

    >кто знает как сделать по умолчанию отключенным 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, да поспамите в теме Многопоточнось... Там у вас лучше получается :)
     
    Последнее редактирование: 25 июн 2018
  4. sharikov

    sharikov Авторитетный участник сообщества

    Сообщения:
    551
    Симпатии:
    51
    Не бывает такого в rtl. После спать только рестарт. AN0045 Table 1.4.2. Wake sources comparison
    Переключание ветки старта вы не делаете, код в rtl_boot не правили.
    Что вы хотите от sdk в котором поддержка deep-sleep только для галочки.
     
  5. nikolz

    nikolz Гуру

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

Поделиться этой страницей