Can someone please explain how windowed watchdog timer is different from the normal watchdog timer? When is windowed watchdog timer prefferred over normal watchdog timer?
So, let's start with what a watchdog is :
A watchdog is basically a timer system, like a "tic-tac" bomb which is re-armed periodically during normal operation of your processor/controller. If your processor happens to be stuck during execution, it will fail to re-arm the watchdog, an the "tic-tac" bomb will be triggered. Then, the watchdog's job is to re-initialize the stuck system, or trigger an alarm, or execute specific instructions etc... So basically, a watchdog protects a system from being stuck.
Now, imagine that your system is not absolutely stuck (=not executing anything), but for example, is stuck inside an infinite loop meaning it executes all the instructions inside the loop, one of which should be "re-arm the watchdog". But it is not able to exit the loop like it should be in normal operation. If you use a simple watchdog, it will be able to be re-armed at every iteration and your system will never be re-initialized and will stay stuck in this infinite loop. That's why the window watchdog exists : it protects the system against being stuck by needing periodical refresh like in 1), but it also detects when it is re-armed "too much" compared to what it knows to be the nominal system's operation. It's like a watchdog 2.0.
I agree with the answer from MaximGi. Here is just an alternative wording:
- Standard watchdog: only asserts its output when the watchdog timer overflows, not when it underflows.
- Windowed watchdog: asserts its watchdog output if the watchdog timer overflows or underflows.
Picture below from Microchip describing a windowed watchdog: