yield()

shuraf

Member
Как эта функция работает?
"которая эквивалентна delay(0)" - это ни о чем не говорит.

Пытаюсь повысить стабильность и недавно в одном описалове встретил, что у человека без этой функции в конце скетча, не хотело стабильно работать.
 

pvvx

Активный участник сообщества
Как эта функция работает?
"которая эквивалентна delay(0)" - это ни о чем не говорит.
Там-же, от куда скопипастено "которая эквивалентна delay(0)" и описано, что это отдает время работы процессора на выполнение процедур SDK связанных с задачами LwIP (TCP стека), WiFi и других. Мультизадочности в системе для ESP8266 Arduino, базирующейся на NON_OS SDK от Espressif нет.
 

shuraf

Member
Т.е. WiFi и TCP не имеют высокой приоритетности в ESP? И эта функция дает им возможность захватить ресурсы?
 

pvvx

Активный участник сообщества
Т.е. WiFi и TCP не имеют высокой приоритетности в ESP? И эта функция дает им возможность захватить ресурсы?
Вообще нет приоритетов.
Практически все функции, включая таймерные и task вызываются из процедуры ets_run(), находящейся в ROM-BIOS. Но для этого надо отдать ей управление. По событиям отрабатывают только аппаратные прерывания.
Если на долго отберете управление, то не отработает ничего, включая таймеры. Далее сработает WDT, т.к. она управляется одним из task и программным таймером.
 
Последнее редактирование:
Сверху Снизу