My previous post (Watchdog watchdog) sought to fix a problem – the Arduino ATmega328 I was using to monitor my heating system would occasionally hang. It would remain hung despite the use of the built-in watchdog timer to reset it. I’m not sure why, but I suspect it’s related to the electrical environment. In particular, I’ve replaced the entire Arduino board, and tested the program on the bench (where it worked perfectly, resetting as intended). I tried reconfiguring the watchdog interrupt service routine to pull Arduino pin 12 low and connected that to the ~RESET line. Still no good.
Fast forward (a few years!) while I ignore the problem and manually reset the Arduino every couple days. Finally, I designed and built a new circuit to power-cycle the Arduino; it worked perfectly on the bench. But not in deployment. Rats!
So I did a little modification – I removed the MOSFET and other power-cycling components, and dedicated a pin of the ATtiny to the inverse of the power-cycling pin – it is pulled low when a reset was needed. That pin is connected to the ~RESET line on the Arduino board. It looks like this works. I’ll update this post with news, and if it looks good, with the new program and circuit documentation.