diff --git a/Marlin/src/gcode/calibrate/G28.cpp b/Marlin/src/gcode/calibrate/G28.cpp index c30a323637..5f5f42e9e7 100644 --- a/Marlin/src/gcode/calibrate/G28.cpp +++ b/Marlin/src/gcode/calibrate/G28.cpp @@ -39,9 +39,12 @@ #include "../../feature/tmc_util.h" #endif -#if HAS_BED_PROBE +#if HOMING_Z_WITH_PROBE || ENABLED(BLTOUCH) #include "../../module/probe.h" - #define STOW_PROBE_BEFORE_HOMING NONE(Z_PROBE_ALLEN_KEY, Z_PROBE_SLED) +#endif + +#if ENABLED(BLTOUCH) + #include "../../feature/bltouch.h" #endif #include "../../lcd/ultralcd.h" @@ -255,10 +258,6 @@ void GcodeSuite::G28(const bool always_home_all) { set_destination_from_current(); - #if STOW_PROBE_BEFORE_HOMING - STOW_PROBE(); - #endif - #if Z_HOME_DIR > 0 // If homing away from BED do Z first if (doZ) homeaxis(Z_AXIS); @@ -338,6 +337,9 @@ void GcodeSuite::G28(const bool always_home_all) { // Home Z last if homing towards the bed #if Z_HOME_DIR < 0 if (doZ) { + #if ENABLED(BLTOUCH) + bltouch.init(); + #endif #if ENABLED(Z_SAFE_HOMING) home_z_safely(); #else diff --git a/Marlin/src/module/probe.cpp b/Marlin/src/module/probe.cpp index 9f8d520246..93d057a175 100644 --- a/Marlin/src/module/probe.cpp +++ b/Marlin/src/module/probe.cpp @@ -376,13 +376,15 @@ FORCE_INLINE void probe_specific_action(const bool deploy) { dock_sled(!deploy); - #elif ENABLED(BLTOUCH) - - deploy ? bltouch.deploy() : bltouch.stow(); - #elif HAS_Z_SERVO_PROBE - MOVE_SERVO(Z_PROBE_SERVO_NR, servo_angles[Z_PROBE_SERVO_NR][deploy ? 0 : 1]); + #if DISABLED(BLTOUCH) + MOVE_SERVO(Z_PROBE_SERVO_NR, servo_angles[Z_PROBE_SERVO_NR][deploy ? 0 : 1]); + #elif ENABLED(BLTOUCH_HS_MODE) + // In HIGH SPEED MODE, use the normal retractable probe logic in this code + // i.e. no intermediate STOWs and DEPLOYs in between individual probe actions + if (deploy) bltouch.deploy(); else bltouch.stow(); + #endif #elif EITHER(TOUCH_MI_PROBE, Z_PROBE_ALLEN_KEY) @@ -445,12 +447,14 @@ bool set_probe_deployed(const bool deploy) { oldYpos = current_position[Y_AXIS]; #if ENABLED(PROBE_TRIGGERED_WHEN_STOWED_TEST) - #if USES_Z_MIN_PROBE_ENDSTOP #define PROBE_STOWED() (READ(Z_MIN_PROBE_PIN) != Z_MIN_PROBE_ENDSTOP_INVERTING) #else #define PROBE_STOWED() (READ(Z_MIN_PIN) != Z_MIN_ENDSTOP_INVERTING) #endif + #endif + + #ifdef PROBE_STOWED // Only deploy/stow if needed if (PROBE_STOWED() == deploy) {