Add HOME_Z_FIRST option (#20113)
This commit is contained in:
parent
f4e9f3654e
commit
2282801172
|
@ -660,6 +660,7 @@
|
||||||
|
|
||||||
//#define QUICK_HOME // If G28 contains XY do a diagonal move first
|
//#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_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
|
//#define CODEPENDENT_XY_HOMING // If X/Y can't home without homing Y/X first
|
||||||
|
|
||||||
// @section bltouch
|
// @section bltouch
|
||||||
|
|
|
@ -313,7 +313,7 @@ void GcodeSuite::G28() {
|
||||||
home_all = homeX == homeY && homeX == homeZ, // All or None
|
home_all = homeX == homeY && homeX == homeZ, // All or None
|
||||||
doX = home_all || homeX, doY = home_all || homeY, doZ = home_all || homeZ;
|
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);
|
if (doZ) homeaxis(Z_AXIS);
|
||||||
|
|
||||||
|
@ -373,18 +373,13 @@ void GcodeSuite::G28() {
|
||||||
TERN_(IMPROVE_HOMING_RELIABILITY, end_slow_homing(slow_homing));
|
TERN_(IMPROVE_HOMING_RELIABILITY, end_slow_homing(slow_homing));
|
||||||
|
|
||||||
// Home Z last if homing towards the bed
|
// Home Z last if homing towards the bed
|
||||||
#if Z_HOME_DIR < 0
|
#if DISABLED(HOME_Z_FIRST)
|
||||||
|
|
||||||
if (doZ) {
|
if (doZ) {
|
||||||
TERN_(BLTOUCH, bltouch.init());
|
TERN_(BLTOUCH, bltouch.init());
|
||||||
|
|
||||||
TERN(Z_SAFE_HOMING, home_z_safely(), homeaxis(Z_AXIS));
|
TERN(Z_SAFE_HOMING, home_z_safely(), homeaxis(Z_AXIS));
|
||||||
|
|
||||||
probe.move_z_after_homing();
|
probe.move_z_after_homing();
|
||||||
|
}
|
||||||
} // doZ
|
#endif
|
||||||
|
|
||||||
#endif // Z_HOME_DIR < 0
|
|
||||||
|
|
||||||
sync_plan_position();
|
sync_plan_position();
|
||||||
|
|
||||||
|
|
|
@ -778,6 +778,10 @@
|
||||||
#undef Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN
|
#undef Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN
|
||||||
#endif
|
#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
|
* 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.
|
* 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)
|
#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
|
#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."
|
#error "Enable USE_ZMAX_PLUG when homing Z to MAX."
|
||||||
#endif
|
#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
|
// Dual/multiple endstops requirements
|
||||||
#if ENABLED(X_DUAL_ENDSTOPS)
|
#if ENABLED(X_DUAL_ENDSTOPS)
|
||||||
#if !X2_USE_ENDSTOP
|
#if !X2_USE_ENDSTOP
|
||||||
|
|
Loading…
Reference in a new issue