Browse Source

Disable the watchdog early in the program

Alex Voinea 2 years ago
parent
commit
e8c8945650
1 changed files with 12 additions and 0 deletions
  1. 12 0
      Firmware/Marlin_main.cpp

+ 12 - 0
Firmware/Marlin_main.cpp

@@ -685,6 +685,18 @@ void failstats_reset_print()
 	eeprom_update_byte((uint8_t *)EEPROM_MMU_LOAD_FAIL, 0);
 }
 
+extern "C" {
+void __attribute__ ((naked)) __attribute__ ((section (".init3"))) stopWatchdogOnInit(void) {
+    // Regardless if the watchdog support is enabled or not, disable the watchdog very early
+    // after the program starts since there's no danger in doing this.
+    // The reason for this is because old bootloaders might not handle the watchdog timer at all,
+    // leaving it enabled when jumping to the program. This could cause another watchdog reset
+    // during setup() if not handled properly. So to avoid any issue of this kind, stop the
+    // watchdog timer manually.
+    wdt_disable();
+}
+}
+
 void softReset()
 {
     cli();