Add HOME_Z_FIRST option (#20113)
This commit is contained in:
		| @@ -660,6 +660,7 @@ | ||||
|  | ||||
| //#define QUICK_HOME                          // If G28 contains XY do a diagonal move first | ||||
| //#define HOME_Y_BEFORE_X                     // If G28 contains XY home Y before X | ||||
| //#define HOME_Z_FIRST                        // Home Z first. Requires a Z-MIN endstop (not a probe). | ||||
| //#define CODEPENDENT_XY_HOMING               // If X/Y can't home without homing Y/X first | ||||
|  | ||||
| // @section bltouch | ||||
|   | ||||
| @@ -313,7 +313,7 @@ void GcodeSuite::G28() { | ||||
|                home_all = homeX == homeY && homeX == homeZ, // All or None | ||||
|                doX = home_all || homeX, doY = home_all || homeY, doZ = home_all || homeZ; | ||||
|  | ||||
|     #if Z_HOME_DIR > 0  // If homing away from BED do Z first | ||||
|     #if ENABLED(HOME_Z_FIRST) | ||||
|  | ||||
|       if (doZ) homeaxis(Z_AXIS); | ||||
|  | ||||
| @@ -373,18 +373,13 @@ void GcodeSuite::G28() { | ||||
|     TERN_(IMPROVE_HOMING_RELIABILITY, end_slow_homing(slow_homing)); | ||||
|  | ||||
|     // Home Z last if homing towards the bed | ||||
|     #if Z_HOME_DIR < 0 | ||||
|  | ||||
|     #if DISABLED(HOME_Z_FIRST) | ||||
|       if (doZ) { | ||||
|         TERN_(BLTOUCH, bltouch.init()); | ||||
|  | ||||
|         TERN(Z_SAFE_HOMING, home_z_safely(), homeaxis(Z_AXIS)); | ||||
|  | ||||
|         probe.move_z_after_homing(); | ||||
|  | ||||
|       } // doZ | ||||
|  | ||||
|     #endif // Z_HOME_DIR < 0 | ||||
|       } | ||||
|     #endif | ||||
|  | ||||
|     sync_plan_position(); | ||||
|  | ||||
|   | ||||
| @@ -778,6 +778,10 @@ | ||||
|   #undef Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN | ||||
| #endif | ||||
|  | ||||
| #if Z_HOME_DIR > 0 | ||||
|   #define HOME_Z_FIRST // If homing away from BED do Z first | ||||
| #endif | ||||
|  | ||||
| /** | ||||
|  * Set granular options based on the specific type of leveling | ||||
|  */ | ||||
|   | ||||
| @@ -1548,7 +1548,7 @@ static_assert(hbm[Z_AXIS] >= 0, "HOMING_BUMP_MM.Z must be greater than or equal | ||||
|  * Deploying the Allen Key probe uses big moves in z direction. Too dangerous for an unhomed z-axis. | ||||
|  */ | ||||
| #if ENABLED(Z_PROBE_ALLEN_KEY) && (Z_HOME_DIR < 0) && ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) | ||||
|   #error "You can't home to a z min endstop with a Z_PROBE_ALLEN_KEY." | ||||
|   #error "You can't home to a Z min endstop with a Z_PROBE_ALLEN_KEY." | ||||
| #endif | ||||
|  | ||||
| /** | ||||
| @@ -1965,6 +1965,10 @@ static_assert(hbm[Z_AXIS] >= 0, "HOMING_BUMP_MM.Z must be greater than or equal | ||||
|   #error "Enable USE_ZMAX_PLUG when homing Z to MAX." | ||||
| #endif | ||||
|  | ||||
| #if BOTH(HOME_Z_FIRST, USE_PROBE_FOR_Z_HOMING) | ||||
|   #error "HOME_Z_FIRST can't be used when homing Z with a probe." | ||||
| #endif | ||||
|  | ||||
| // Dual/multiple endstops requirements | ||||
| #if ENABLED(X_DUAL_ENDSTOPS) | ||||
|   #if !X2_USE_ENDSTOP | ||||
|   | ||||
		Reference in New Issue
	
	Block a user