diff --git a/Marlin/src/Marlin.cpp b/Marlin/src/Marlin.cpp index 2f022ec15f..1d825fe811 100644 --- a/Marlin/src/Marlin.cpp +++ b/Marlin/src/Marlin.cpp @@ -764,11 +764,34 @@ void minkill() { suicide(); #endif - while (1) { - #if ENABLED(USE_WATCHDOG) - watchdog_reset(); - #endif - } // Wait for reset + #if HAS_KILL + + // Wait for kill to be released + while (!READ(KILL_PIN)) { + #if ENABLED(USE_WATCHDOG) + watchdog_reset(); + #endif + } + + // Wait for kill to be pressed + while (READ(KILL_PIN)) { + #if ENABLED(USE_WATCHDOG) + watchdog_reset(); + #endif + } + + void(*resetFunc)(void) = 0; // Declare resetFunc() at address 0 + resetFunc(); // Jump to address 0 + + #else // !HAS_KILL + + for (;;) { + #if ENABLED(USE_WATCHDOG) + watchdog_reset(); + #endif + } // Wait for reset + + #endif // !HAS_KILL } /**