diff --git a/Marlin/src/Marlin.cpp b/Marlin/src/Marlin.cpp index cc4ee1b705..08042dd5c5 100644 --- a/Marlin/src/Marlin.cpp +++ b/Marlin/src/Marlin.cpp @@ -502,19 +502,16 @@ void manage_inactivity(const bool ignore_stepper_queue/*=false*/) { #endif #if HAS_HOME - // Check to see if we have to home, use poor man's debouncer - // --------------------------------------------------------- - static int homeDebounceCount = 0; // poor man's debouncing count - const int HOME_DEBOUNCE_DELAY = 2500; - if (!IS_SD_PRINTING() && !READ(HOME_PIN)) { - if (!homeDebounceCount) { - queue.inject_P(PSTR("G28")); + // Handle a standalone HOME button + constexpr millis_t HOME_DEBOUNCE_DELAY = 1000UL; + static millis_t next_home_key_ms; // = 0 + if (!IS_SD_PRINTING() && !READ(HOME_PIN)) { // HOME_PIN goes LOW when pressed + const millis_t ms = millis(); + if (ELAPSED(ms, next_home_key_ms)) { + next_home_key_ms = ms + HOME_DEBOUNCE_DELAY; LCD_MESSAGEPGM(MSG_AUTO_HOME); + queue.enqueue_now_P(PSTR("G28")); } - if (homeDebounceCount < HOME_DEBOUNCE_DELAY) - homeDebounceCount++; - else - homeDebounceCount = 0; } #endif diff --git a/Marlin/src/gcode/bedlevel/abl/G29.cpp b/Marlin/src/gcode/bedlevel/abl/G29.cpp index bcef33ec4a..d17e1ff627 100644 --- a/Marlin/src/gcode/bedlevel/abl/G29.cpp +++ b/Marlin/src/gcode/bedlevel/abl/G29.cpp @@ -966,7 +966,7 @@ G29_TYPE GcodeSuite::G29() { #ifdef Z_PROBE_END_SCRIPT if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPAIR("Z Probe End Script: ", Z_PROBE_END_SCRIPT); planner.synchronize(); - queue.inject_P(PSTR(Z_PROBE_END_SCRIPT)); + process_subcommands_now_P(PSTR(Z_PROBE_END_SCRIPT)); #endif // Auto Bed Leveling is complete! Enable if possible.