Watchdog and Timer priority
Posted: Mon Jun 26, 2017 6:09 pm
Hi again guys . Now, I need to know why os_timer can't call an function inside of while without yield(). I search about system task priority but don't find good news.
In MCU world, like arduino, timer (hardware) have max priority in system, then, if MCU is locked inside of any loop, timer go to function without problems.
But in ESP, OS_TIMER don't make this, if MCU is locked inside of any loop, os_timer can't go to a function WITHOUT yield's or delay's.
How can i change os_timer to max priority (if have)? I testing hardware watchdog and need to feed her, even MCU inside of loop without yield.
I know os_timer is based on software, but can change this situation?
Image of testing code.
Hardware watchdog has ~8 seconds to reset MCU, then, I put timer to feed before 8 sec. I put an while to lock MCU inside of loop. Hardware Watchdog DON'T fed with yield or delay, like Software Watchdog.
Loop with yield, os_timer work's and MCU not reset. Because yield processes some task os system I think.
Loop without yield, os_timer doens't work, then HW WDT reset.
OK, OK. After explications, I need to UP task priority of os_timer without put yield in all of 2500 lines.
In MCU world, like arduino, timer (hardware) have max priority in system, then, if MCU is locked inside of any loop, timer go to function without problems.
But in ESP, OS_TIMER don't make this, if MCU is locked inside of any loop, os_timer can't go to a function WITHOUT yield's or delay's.
How can i change os_timer to max priority (if have)? I testing hardware watchdog and need to feed her, even MCU inside of loop without yield.
I know os_timer is based on software, but can change this situation?
Image of testing code.
Hardware watchdog has ~8 seconds to reset MCU, then, I put timer to feed before 8 sec. I put an while to lock MCU inside of loop. Hardware Watchdog DON'T fed with yield or delay, like Software Watchdog.
Loop with yield, os_timer work's and MCU not reset. Because yield processes some task os system I think.
Loop without yield, os_timer doens't work, then HW WDT reset.
OK, OK. After explications, I need to UP task priority of os_timer without put yield in all of 2500 lines.