+#if DEBUG
+
+static const FLASH char * const FLASH rreasons[] = {
+ FSTR("Power on"),
+ FSTR("External"),
+ FSTR("Brown out"),
+ FSTR("Watchdog"),
+ FSTR("JTAG"),
+ };
+
+static
+void print_reset_reason(void)
+{
+ uint8_t r = mcusr & 0x1f;
+ const FLASH char * const FLASH *p = rreasons;
+
+ my_puts_P(PSTR("### Reset reason(s): "));
+ if (r == 0)
+ my_puts_P(PSTR("none"));
+ for ( ; r; p++, r >>= 1) {
+ if (r & 1) {
+ my_puts_P(*p);
+ if (r & ~1)
+ my_puts_P(PSTR(", "));
+ }
+ }
+ my_puts_P(PSTR(".\n"));
+}