Also remember the WDT should be running off the main loop, not via an interrupt that might still work code wise, it needs to be in the main routine, so that anything that sends the processor off into the twilight zone will stop resetting it, and it will implement the same restart. Also probably good to add to the main loop a power on check, to see if the reset was via mains fail, power on or WDT reset, probably by having a set of memory locations with a predefined value, that you check on power on, with reset from power on leaving them other than the magic value, and a WDT reset leaving them set to the magic. Then write a log, increment a software counter on the display, normally zero, but every WDT rest increments it, and then writes the magic values to RAM to set them anyway. Writing to display is the least damaging, as log writes use flash cycles, unless you also have a replaceable EEPROM that you use I2C to write to, and a separate device at a different address that handles volatile settings, or you have a battery backed RTC that you use the built in SRAM to add the counter to.