Are you using the system monitor thread to detect the watchdog timeout or read_bits from the status register as defined in 43xxx_Wi-Fi/WICED/platform/MCU/BCM4390x/platform_appscr4.h?
I do use the system monitor thread but the watchdog still triggers. Since the system monitor is in a thread, this leaves two possible areas of the watchdog:
- WWD thread is locking up - i think off the top of my head that it is the same level priority as the system monitor thread by default in WICED.
- This is with FreeRTOS + low power enabled. I have found if something blocks sleep from executing, the FreeRTOS scheduler basically stops executing and the idle task constantly tries to enter sleep mode without advancing the tick counter, so effectively the system monitor thread never executes, which is responsible for kicking the watchdog.
- I have to block entering sleep based on a GPIO condition and i found this check in one of the entering sleep callbacks would actually create this condition so i found and implemented the FreeRTOS macro, configPRE_SUPPRESS_TICKS_AND_SLEEP_PROCESSING, which cleared up most Watchdogs relating to this.