What is a watchdog, why does it need to be feed, what is it fed, and why does it stop my code from running properly?

burkulesomesh43
Posts: 132
Joined: Tue Aug 14, 2018 6:21 am
Location: India

Re: What is a watchdog, why does it need to be feed, what is it fed, and why does it stop my code from running properly?

Postby burkulesomesh43 » Fri Jan 11, 2019 6:01 am

fly135 wrote:
Thu Jan 10, 2019 9:47 pm
burkulesomesh43 wrote:
Thu Jan 10, 2019 6:10 pm
Is there any effect if we disable the watchdogs ??
I am using upto 10 tasks in my code but giving me an TG1WDT RESET ERROR. So I want to remove this error to prevent esp32 from reset. I want my esp32 live for long time.
Could you please explain if any issue by disabling watchdogs?
Is the WD resetting your ESP32? If you preform a make menuconfig, there is a setting under component config/esp32-specific called "Invoke panic handler on Task watchdog timeout". If you un-select that, then the WD timeouts will print bu not reset the chip or affect anything except for printing the statement. You can also change the time from 60 secs to a higher number.

The reason you are getting the WD statement is because the task ALTIMITER is executing with no statements to allow other lower priority tasks to execute. The IDLE task is a low priority task that tells the WD that everything is OK because the application is not hung. If you don't care about the device rebooting itself if it's hung then you don't need a WD.

The reason that ALTIMITER is not allowing the IDLE task to run in a 60 sec period is the issue here. If you know that you have 100 secs of processing in ALTIMITER before you use some mechanism to allow the task to go idle then you can just change the WD timeout to a number higher than 100. Or maybe the design of your app doesn't let tasks other than ALTIMITER to run. Only you know what your intentions are.

It's always a good idea to have a task supervise the application and make sure it is functioning. The IDLE task is the default "supervisor". When it doesn't run it lets you know with a WD. You can code up an alternative way of supervising. But if the supervisor task never gets invoked because your application is hung up, then the only way the supervisor can do the job of resetting the ESP32 is with a WD of some kind.

John A
I directly disabled task watchdog from menuconfig.
getting error -->>

Code: Select all

rst:0x8 (TG1WDT_SYS_RESET),boot:0x1b (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:5800
load:0x40078000,len:0
ho 12 tail 0 room 4
load:0x40078000,len:15000
entry 0x40078630
W (91) boot: PRO CPU has been reset by WDT.
W (91) boot: WDT reset info: PRO CPU PC=0x400803c0
0x400803c0: _DoubleExceptionVector at C:/esp32/esp-idf/components/freertos/xtensa_vectors.S:512

W (91) boot: WDT reset info: APP CPU PC=0x400803c0
0x400803c0: _DoubleExceptionVector at C:/esp32/esp-idf/components/freertos/xtensa_vectors.S:512
--
Somesh Burkule

Who is online

Users browsing this forum: Google [Bot], MicroController and 58 guests