gerkimuyda
New member
Столкнулся с проблемкой, что при сильной загрузке проца (например некоторые расчеты в цикле), не обрабатываются фоновые задачи SDK (например, поддержка соединения wifi, таймер wdt). Вся прога построена на прерываниях, но есть моменты, в которых нужна немного длительная обработка.
system_soft_wdt_feed() сбрасывает wdt, но вот фоновые процессы sdk не получают управления и wifi начинает отваливаться по таймауту (extensive data lost).
Пробовал найти команды для отдачи тиков процессора фоновым задачам (передачи управления для их исполнения с возвратом и продолжением текущего кода). Ничего не смог найти. Вроде что-то est_run() должна делать, но она не возвращает управление назад.
А что делает <sub_0ecc> ?
Еще читал в доке, что есть таски с маленькими приоритетами, ниже чем пользовательские, и они в такой ситуации могут не получать управление совсем (до них не доходит очередь).
Среда разработки: Unofficial Development Kit
Есть ли более простой способ, чем создавать отдельную функцию "продолжения" и вешать ее на таймер (типа аля callback после фоновых процессов )?
system_soft_wdt_feed() сбрасывает wdt, но вот фоновые процессы sdk не получают управления и wifi начинает отваливаться по таймауту (extensive data lost).
Пробовал найти команды для отдачи тиков процессора фоновым задачам (передачи управления для их исполнения с возвратом и продолжением текущего кода). Ничего не смог найти. Вроде что-то est_run() должна делать, но она не возвращает управление назад.
Код:
40000e04 <ets_run>:
40000e04: 12c1f0 addi a1, a1, -16 ; stack
40000e07: 21feff l32r a2, 40000e00 ; ( 3fffc6fc )
40000e0a: 026100 s32i a0, a1, 0 ; save return
40000e0d: 02a000 movi a0, 0 ; a0 = 0
40000e10: 024200 s8i a0, a2, 0 ; 0 byte --> 3fffc6fc
40000e13: 85feff call0 40000dfc <sub_0dfc> (stub)
40000e16: 450b00 call0 40000ecc <sub_0ecc>
40000e19: 022100 l32i a0, a1, 0 ; restore return
40000e1c: 12c110 addi a1, a1, 16 ; stack
40000e1f: 0df0 ret.n
Среда разработки: Unofficial Development Kit
Есть ли более простой способ, чем создавать отдельную функцию "продолжения" и вешать ее на таймер (типа аля callback после фоновых процессов )?