I ran into the following issue: after five days of working fine my unit is not responding anymore. Most likely the software crashed.
However, there are two things that I don’t understand, but maybe someone can explain these to me:
I have implemented the standard watchdog functionality. I verified the working using a while(1) which works fine and also in other situations it went off. However, now it doesn’t. So it looks like the software is completely dead. If I crashed the software by making a memory overrun or something like that, I would expect the watchdog to reboot. Is this assumption correct? If not, what could prohibit the watchdog from rebooting?
In the timer interrupt function, which runs every minute, I flash the LED for a few millisecs to see if the unit is still alive. This is not working anymore. This is an interrupt routine. Even if the SW hangs, I would expect the Timer IRQ to continue. Is this assumption correct?
The only thing I can imagine causing both symptoms is that my program is completely corrupted. But it is on flash. Normally my program cannot write this flash memory. Correct?
As I am using deep sleep mode, there is no way using the USB to do any debugging. Will the Atmel ICE debugger give any information?
Any answers to the above questions or suggestions how to solve this are welcome.
Thanks in advance,