diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index 6b3589d7c..b7c2f0dc5 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -1254,18 +1254,18 @@ inline void sync_plan_position() { } - static void retract_z_probe(const float z_after=Z_RAISE_AFTER_PROBING) { + static void retract_z_probe() { #ifdef SERVO_ENDSTOPS // Retract Z Servo endstop if enabled if (servo_endstops[Z_AXIS] >= 0) { - if (z_after > 0) { - do_blocking_move_to(current_position[X_AXIS], current_position[Y_AXIS], z_after); + #if Z_RAISE_AFTER_PROBING > 0 + do_blocking_move_to(current_position[X_AXIS], current_position[Y_AXIS], Z_RAISE_AFTER_PROBING); st_synchronize(); - } - + #endif + #if SERVO_LEVELING servos[servo_endstops[Z_AXIS]].attach(0); #endif @@ -1343,8 +1343,15 @@ inline void sync_plan_position() { run_z_probe(); float measured_z = current_position[Z_AXIS]; + #if Z_RAISE_BETWEEN_PROBINGS > 0 + if (retract_action == ProbeStay) { + do_blocking_move_to(current_position[X_AXIS], current_position[Y_AXIS], Z_RAISE_BETWEEN_PROBINGS); + st_synchronize(); + } + #endif + #if !defined(Z_PROBE_SLED) && !defined(Z_PROBE_ALLEN_KEY) - if (retract_action & ProbeRetract) retract_z_probe(z_before); + if (retract_action & ProbeRetract) retract_z_probe(); #endif if (verbose_level > 2) {