#include <ESP8266WiFi.h>
void setup()
{
delay(1);
WiFi.mode( WIFI_STA );
WiFi.begin( "********", "********" );
}
void loop()
{
//empty
}
аименно с SDK os_timer из /cores/esp8266/core_esp8266_wiring.cppSo it is something in the core libraries (or SDK) which is changing something to have this effect.
void delay(unsigned long ms) {
if(ms) {
os_timer_setfn(&delay_timer, (os_timer_func_t*) &delay_end, 0);
os_timer_arm(&delay_timer, ms, ONCE);
} else {
esp_schedule();
}
esp_yield();
if(ms) {
os_timer_disarm(&delay_timer);
}
}
под SDK надо не цикл делать а колбеки использовать как и в LUA и ничего греться не будетКое-что стало прояснятся, но появились новые вопросы.
Нагрев под SDK удалось побороть вставив в loop небольшой delay. В простое все отлично - контроллер абсолютно холодный, но ведь под нагрузкой (к примеру будет отдавать в сеть большой файл) эта задержка будет как палка в колесах. Как бы так сделать чтобы и волки сыты были и овцы целы?
а покажите пример правильной реализации колбеков, а то как говорят - трепаться не мешки ворочать. спасибопод SDK надо не цикл делать а колбеки использовать как и в LUA и ничего греться не будет
если изучите основы разработки систем реального времени, то греться ничего не будет.
Это противоречит концепции Arduino. Реализуется исключительно хаками и прочими костыльными методами с правкой всех библиотек и самого ядра Arduino в ESP.а покажите пример правильной реализации колбеков, а то как говорят - трепаться не мешки ворочать. спасибо
Так кто ж спорит. Ticker как раз на колбеках и работает.под SDK надо не цикл делать а колбеки использовать
В начале темы вроде бы речь шла о СИ а не о дурине? или я что-то упустил?Это противоречит концепции Arduino. Реализуется исключительно хаками и прочими костыльными методами с правкой всех библиотек и самого ядра Arduino в ESP.
Ну вам то зачем примеры? Вы же спец. Все знаете. или я что-то пропустил?а покажите пример правильной реализации колбеков, а то как говорят - трепаться не мешки ворочать. спасибо
Описано использование Loop и Delay() - это Arduino.В начале темы вроде бы речь шла о СИ а не о дурине? или я что-то упустил?
С методом описания программы на "си" по концепции Arduino (всё в Loop()) и без RTOS.Заметил что программы выполняющие одинаковые функции (простой блинк) написанные для NodeMCU и SDK вызывают разный нагрев контроллера (esp8266). Если сишная программа греет весьма заметно, то программа на Lua оставляет устройство практически холодным.
Соответственно вопрос - с чем это связано?
я не специалист иначе бы тут не сидел. если уж собрались поучать молодежь, то хотя бы ссылку дайте на чужой пример, чтоб новичкам типа меня было на чем учится.Ну вам то зачем примеры? Вы же спец. Все знаете. или я что-то пропустил?
А примеры есть в док по SDK
а есть ли в sdk функция понижения потребления CPU, чтоб костылем delay(1) не пользоваться?Описано использование Loop и Delay() - это Arduino.
При этом реализация Delay() в Arduino вызывает системную ROM функцию с указанной asm командой (ожидания в режиме понижения потребления CPU до срабатывания прерывания или заданного счетчика тактов).
В Lua вызов данной ROM функции встроено практически в каждой команде...
Как таковой, для простого использования, нет. И delay(1) - это не SDK, а Arduino.а есть ли в sdk функция понижения потребления CPU, чтоб костылем delay(1) не пользоваться?
а чё сразу китайцы? Надо сначала SDK проверить. Может это наш соотечественник накодил.я вас поздравлю с открытием новой пасхалки от китайцев.
я щас посмотрел исходники они там здорово почистили, по сравнению с 2.4.0. гладишь так к 3.0.0 доберемся и до мультизадачности.Детям писать систему, основанную на событиях сложно. Arduino образовалось как игра для детей и в своей концепции не имеет мультизадачности, много-поточности, событий и т.д. (как и в Lua).