I've tried using the avr watchdog timer in the Arduino environment but it doesn't seem to catch everything I expected. I have the wdt_reset() in loop() and wdt_enable(WDTO_2S) in setup(). So if I call a function and put in an intentional delay I can trip the watchdog easily. But if I create a memory corruption like the stack meeting the heap it doesn't seem to catch it. I'm thinking I need an external hardware watchdog. I'm already using an RTC and I think some come with a watchdog feature so that might be an easy fix. Any thoughts? Thanks.