From 1f48b5c30fa4a560eaa5fedc3883d008d2ecd9dd Mon Sep 17 00:00:00 2001
From: Scott Lahteine <sourcetree@thinkyhead.com>
Date: Wed, 22 Jun 2016 16:39:51 -0700
Subject: [PATCH] Pass a raise to probe_pt, not a Z position

---
 Marlin/Marlin_main.cpp | 37 ++++++++++++++++---------------------
 1 file changed, 16 insertions(+), 21 deletions(-)

diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp
index 9d8d2e6b31..519215287b 100644
--- a/Marlin/Marlin_main.cpp
+++ b/Marlin/Marlin_main.cpp
@@ -2094,7 +2094,7 @@ static void clean_up_after_endstop_or_probe_move() {
   };
 
   // Probe bed height at position (x,y), returns the measured z value
-  static float probe_pt(float x, float y, float z_before, ProbeAction probe_action = ProbeDeployAndStow, int verbose_level = 1) {
+  static float probe_pt(float x, float y, float z_raise, ProbeAction probe_action = ProbeDeployAndStow, int verbose_level = 1) {
     #if ENABLED(DEBUG_LEVELING_FEATURE)
       if (DEBUGGING(LEVELING)) {
         SERIAL_ECHOLNPGM("probe_pt >>>");
@@ -2104,20 +2104,16 @@ static void clean_up_after_endstop_or_probe_move() {
       }
     #endif
 
+    float old_feedrate = feedrate;
+
+    // Raise by z_raise, then move the Z probe to the given XY
     #if ENABLED(DEBUG_LEVELING_FEATURE)
       if (DEBUGGING(LEVELING)) {
-        SERIAL_ECHOPAIR("Z Raise to z_before ", z_before);
-        SERIAL_EOL;
-        SERIAL_ECHOPAIR("> do_blocking_move_to_z ", z_before);
+        SERIAL_ECHOPAIR("Z Raise by z_raise ", z_raise);
         SERIAL_EOL;
       }
     #endif
-
-    float old_feedrate = feedrate;
-
-    // Move Z up to the z_before height, then move the Z probe to the given XY
-    feedrate = homing_feedrate[Z_AXIS];
-    do_blocking_move_to_z(z_before); // this also updates current_position
+    do_probe_raise(z_raise); // this also updates current_position
 
     #if ENABLED(DEBUG_LEVELING_FEATURE)
       if (DEBUGGING(LEVELING)) {
@@ -3546,16 +3542,16 @@ inline void gcode_G28() {
 
           // raise extruder
           float measured_z,
-                z_before = probePointCounter ? Z_RAISE_BETWEEN_PROBINGS + current_position[Z_AXIS] : Z_RAISE_BEFORE_PROBING + home_offset[Z_AXIS];
+                z_raise = probePointCounter ? Z_RAISE_BETWEEN_PROBINGS : Z_RAISE_BEFORE_PROBING;
 
           #if ENABLED(DEBUG_LEVELING_FEATURE)
             if (DEBUGGING(LEVELING)) {
-              SERIAL_ECHOPGM("z_before = (");
+              SERIAL_ECHOPGM("z_raise = (");
               if (probePointCounter)
                 SERIAL_ECHOPGM("between) ");
               else
                 SERIAL_ECHOPGM("before) ");
-              SERIAL_ECHOLN(z_before);
+              SERIAL_ECHOLN(z_raise);
             }
           #endif
 
@@ -3579,7 +3575,7 @@ inline void gcode_G28() {
               act = ProbeStay;
           #endif
 
-          measured_z = probe_pt(xProbe, yProbe, z_before, act, verbose_level);
+          measured_z = probe_pt(xProbe, yProbe, z_raise, act, verbose_level);
 
           #if DISABLED(DELTA)
             mean += measured_z;
@@ -3720,15 +3716,15 @@ inline void gcode_G28() {
       // Probe at 3 arbitrary points
       float z_at_pt_1 = probe_pt( ABL_PROBE_PT_1_X + home_offset[X_AXIS],
                                   ABL_PROBE_PT_1_Y + home_offset[Y_AXIS],
-                                  Z_RAISE_BEFORE_PROBING + home_offset[Z_AXIS],
+                                  Z_RAISE_BEFORE_PROBING,
                                   p1, verbose_level),
             z_at_pt_2 = probe_pt( ABL_PROBE_PT_2_X + home_offset[X_AXIS],
                                   ABL_PROBE_PT_2_Y + home_offset[Y_AXIS],
-                                  current_position[Z_AXIS] + Z_RAISE_BETWEEN_PROBINGS,
+                                  Z_RAISE_BETWEEN_PROBINGS,
                                   p2, verbose_level),
             z_at_pt_3 = probe_pt( ABL_PROBE_PT_3_X + home_offset[X_AXIS],
                                   ABL_PROBE_PT_3_Y + home_offset[Y_AXIS],
-                                  current_position[Z_AXIS] + Z_RAISE_BETWEEN_PROBINGS,
+                                  Z_RAISE_BETWEEN_PROBINGS,
                                   p3, verbose_level);
 
       if (!dryrun) set_bed_level_equation_3pts(z_at_pt_1, z_at_pt_2, z_at_pt_3);
@@ -4283,11 +4279,11 @@ inline void gcode_M42() {
      */
 
     // Height before each probe (except the first)
-    float z_between = home_offset[Z_AXIS] + (deploy_probe_for_each_reading ? Z_RAISE_BEFORE_PROBING : Z_RAISE_BETWEEN_PROBINGS);
+    float z_between = deploy_probe_for_each_reading ? Z_RAISE_BEFORE_PROBING : Z_RAISE_BETWEEN_PROBINGS;
 
     // Deploy the probe and probe the first point
     probe_pt(X_probe_location, Y_probe_location,
-      home_offset[Z_AXIS] + Z_RAISE_BEFORE_PROBING,
+      Z_RAISE_BEFORE_PROBING,
       deploy_probe_for_each_reading ? ProbeDeployAndStow : ProbeDeploy,
       verbose_level);
 
@@ -4418,8 +4414,7 @@ inline void gcode_M42() {
       // Raise before the next loop for the legs,
       // or do the final raise after the last probe
       if (n_legs || last_probe) {
-        feedrate = homing_feedrate[Z_AXIS];
-        do_blocking_move_to_z(last_probe ? home_offset[Z_AXIS] + Z_RAISE_AFTER_PROBING : z_between);
+        do_probe_raise(last_probe ? Z_RAISE_AFTER_PROBING : z_between);
         if (!last_probe) delay(500);
       }
 
-- 
GitLab