Browse Source

Add HOME_Z_FIRST option (#20113)

Scott Lahteine 3 years ago
parent
commit
2282801172
No account linked to committer's email address

+ 1
- 0
Marlin/Configuration_adv.h View File

@@ -660,6 +660,7 @@
660 660
 
661 661
 //#define QUICK_HOME                          // If G28 contains XY do a diagonal move first
662 662
 //#define HOME_Y_BEFORE_X                     // If G28 contains XY home Y before X
663
+//#define HOME_Z_FIRST                        // Home Z first. Requires a Z-MIN endstop (not a probe).
663 664
 //#define CODEPENDENT_XY_HOMING               // If X/Y can't home without homing Y/X first
664 665
 
665 666
 // @section bltouch

+ 4
- 9
Marlin/src/gcode/calibrate/G28.cpp View File

@@ -313,7 +313,7 @@ void GcodeSuite::G28() {
313 313
                home_all = homeX == homeY && homeX == homeZ, // All or None
314 314
                doX = home_all || homeX, doY = home_all || homeY, doZ = home_all || homeZ;
315 315
 
316
-    #if Z_HOME_DIR > 0  // If homing away from BED do Z first
316
+    #if ENABLED(HOME_Z_FIRST)
317 317
 
318 318
       if (doZ) homeaxis(Z_AXIS);
319 319
 
@@ -373,18 +373,13 @@ void GcodeSuite::G28() {
373 373
     TERN_(IMPROVE_HOMING_RELIABILITY, end_slow_homing(slow_homing));
374 374
 
375 375
     // Home Z last if homing towards the bed
376
-    #if Z_HOME_DIR < 0
377
-
376
+    #if DISABLED(HOME_Z_FIRST)
378 377
       if (doZ) {
379 378
         TERN_(BLTOUCH, bltouch.init());
380
-
381 379
         TERN(Z_SAFE_HOMING, home_z_safely(), homeaxis(Z_AXIS));
382
-
383 380
         probe.move_z_after_homing();
384
-
385
-      } // doZ
386
-
387
-    #endif // Z_HOME_DIR < 0
381
+      }
382
+    #endif
388 383
 
389 384
     sync_plan_position();
390 385
 

+ 4
- 0
Marlin/src/inc/Conditionals_LCD.h View File

@@ -778,6 +778,10 @@
778 778
   #undef Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN
779 779
 #endif
780 780
 
781
+#if Z_HOME_DIR > 0
782
+  #define HOME_Z_FIRST // If homing away from BED do Z first
783
+#endif
784
+
781 785
 /**
782 786
  * Set granular options based on the specific type of leveling
783 787
  */

+ 5
- 1
Marlin/src/inc/SanityCheck.h View File

@@ -1548,7 +1548,7 @@ static_assert(hbm[Z_AXIS] >= 0, "HOMING_BUMP_MM.Z must be greater than or equal
1548 1548
  * Deploying the Allen Key probe uses big moves in z direction. Too dangerous for an unhomed z-axis.
1549 1549
  */
1550 1550
 #if ENABLED(Z_PROBE_ALLEN_KEY) && (Z_HOME_DIR < 0) && ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN)
1551
-  #error "You can't home to a z min endstop with a Z_PROBE_ALLEN_KEY."
1551
+  #error "You can't home to a Z min endstop with a Z_PROBE_ALLEN_KEY."
1552 1552
 #endif
1553 1553
 
1554 1554
 /**
@@ -1965,6 +1965,10 @@ static_assert(hbm[Z_AXIS] >= 0, "HOMING_BUMP_MM.Z must be greater than or equal
1965 1965
   #error "Enable USE_ZMAX_PLUG when homing Z to MAX."
1966 1966
 #endif
1967 1967
 
1968
+#if BOTH(HOME_Z_FIRST, USE_PROBE_FOR_Z_HOMING)
1969
+  #error "HOME_Z_FIRST can't be used when homing Z with a probe."
1970
+#endif
1971
+
1968 1972
 // Dual/multiple endstops requirements
1969 1973
 #if ENABLED(X_DUAL_ENDSTOPS)
1970 1974
   #if !X2_USE_ENDSTOP

Loading…
Cancel
Save