diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index ae635e475..72a34dc17 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -3056,12 +3056,7 @@ static void homeaxis(const AxisEnum axis) { // Homing Z towards the bed? Deploy the Z probe or endstop. #if HOMING_Z_WITH_PROBE - if (axis == Z_AXIS) { - if (DEPLOY_PROBE()) return; - #if ENABLED(BLTOUCH) - if (set_bltouch_deployed(true)) return; - #endif - } + if (axis == Z_AXIS && DEPLOY_PROBE()) return; #endif // Set flags for X, Y, Z motor locking @@ -3085,6 +3080,12 @@ static void homeaxis(const AxisEnum axis) { #if ENABLED(DEBUG_LEVELING_FEATURE) if (DEBUGGING(LEVELING)) SERIAL_ECHOLNPGM("Home 1 Fast:"); #endif + + #if HOMING_Z_WITH_PROBE && ENABLED(BLTOUCH) + // BLTOUCH needs to be deployed every time + if (axis == Z_AXIS && set_bltouch_deployed(true)) return; + #endif + do_homing_move(axis, 1.5f * max_length(axis) * axis_home_dir); #if HOMING_Z_WITH_PROBE && ENABLED(BLTOUCH) @@ -3123,6 +3124,11 @@ static void homeaxis(const AxisEnum axis) { #endif do_homing_move(axis, 2 * bump, get_homing_bump_feedrate(axis)); + + #if HOMING_Z_WITH_PROBE && ENABLED(BLTOUCH) + // BLTOUCH needs to be stowed after trigger to rearm itself + if (axis == Z_AXIS) set_bltouch_deployed(false); + #endif } /** @@ -3202,12 +3208,7 @@ static void homeaxis(const AxisEnum axis) { // Put away the Z probe #if HOMING_Z_WITH_PROBE - if (axis == Z_AXIS) { - #if ENABLED(BLTOUCH) - if (set_bltouch_deployed(false)) return; - #endif - if (STOW_PROBE()) return; - } + if (axis == Z_AXIS && STOW_PROBE()) return; #endif // Clear retracted status if homing the Z axis