|
|
|
@ -2908,6 +2908,9 @@ inline void gcode_G28() {
|
|
|
|
|
#if ENABLED(MESH_BED_LEVELING)
|
|
|
|
|
float pre_home_z = MESH_HOME_SEARCH_Z;
|
|
|
|
|
if (mbl.active()) {
|
|
|
|
|
#if ENABLED(DEBUG_LEVELING_FEATURE)
|
|
|
|
|
if (DEBUGGING(LEVELING)) SERIAL_ECHOLNPGM("MBL was active");
|
|
|
|
|
#endif
|
|
|
|
|
// Save known Z position if already homed
|
|
|
|
|
if (axis_homed[X_AXIS] && axis_homed[Y_AXIS] && axis_homed[Z_AXIS]) {
|
|
|
|
|
pre_home_z = current_position[Z_AXIS];
|
|
|
|
@ -2915,6 +2918,9 @@ inline void gcode_G28() {
|
|
|
|
|
}
|
|
|
|
|
mbl.set_active(false);
|
|
|
|
|
current_position[Z_AXIS] = pre_home_z;
|
|
|
|
|
#if ENABLED(DEBUG_LEVELING_FEATURE)
|
|
|
|
|
if (DEBUGGING(LEVELING)) DEBUG_POS("Set Z to pre_home_z", current_position);
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
@ -3140,7 +3146,13 @@ inline void gcode_G28() {
|
|
|
|
|
// Enable mesh leveling again
|
|
|
|
|
#if ENABLED(MESH_BED_LEVELING)
|
|
|
|
|
if (mbl.has_mesh()) {
|
|
|
|
|
#if ENABLED(DEBUG_LEVELING_FEATURE)
|
|
|
|
|
if (DEBUGGING(LEVELING)) SERIAL_ECHOLNPGM("MBL has mesh");
|
|
|
|
|
#endif
|
|
|
|
|
if (home_all_axis || (axis_homed[X_AXIS] && axis_homed[Y_AXIS] && homeZ)) {
|
|
|
|
|
#if ENABLED(DEBUG_LEVELING_FEATURE)
|
|
|
|
|
if (DEBUGGING(LEVELING)) SERIAL_ECHOLNPGM("MBL Z homing");
|
|
|
|
|
#endif
|
|
|
|
|
current_position[Z_AXIS] = MESH_HOME_SEARCH_Z
|
|
|
|
|
#if Z_HOME_DIR > 0
|
|
|
|
|
+ Z_MAX_POS
|
|
|
|
@ -3154,6 +3166,9 @@ inline void gcode_G28() {
|
|
|
|
|
feedrate = homing_feedrate[Z_AXIS];
|
|
|
|
|
line_to_destination();
|
|
|
|
|
stepper.synchronize();
|
|
|
|
|
#if ENABLED(DEBUG_LEVELING_FEATURE)
|
|
|
|
|
if (DEBUGGING(LEVELING)) DEBUG_POS("MBL Rest Origin", current_position);
|
|
|
|
|
#endif
|
|
|
|
|
#else
|
|
|
|
|
current_position[Z_AXIS] = MESH_HOME_SEARCH_Z -
|
|
|
|
|
mbl.get_z(RAW_CURRENT_POSITION(X_AXIS), RAW_CURRENT_POSITION(Y_AXIS))
|
|
|
|
@ -3161,6 +3176,9 @@ inline void gcode_G28() {
|
|
|
|
|
+ Z_MAX_POS
|
|
|
|
|
#endif
|
|
|
|
|
;
|
|
|
|
|
#if ENABLED(DEBUG_LEVELING_FEATURE)
|
|
|
|
|
if (DEBUGGING(LEVELING)) DEBUG_POS("MBL adjusted MESH_HOME_SEARCH_Z", current_position);
|
|
|
|
|
#endif
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
else if ((axis_homed[X_AXIS] && axis_homed[Y_AXIS] && axis_homed[Z_AXIS]) && (homeX || homeY)) {
|
|
|
|
@ -3169,6 +3187,9 @@ inline void gcode_G28() {
|
|
|
|
|
mbl.set_active(true);
|
|
|
|
|
current_position[Z_AXIS] = pre_home_z -
|
|
|
|
|
mbl.get_z(RAW_CURRENT_POSITION(X_AXIS), RAW_CURRENT_POSITION(Y_AXIS));
|
|
|
|
|
#if ENABLED(DEBUG_LEVELING_FEATURE)
|
|
|
|
|
if (DEBUGGING(LEVELING)) DEBUG_POS("MBL Home X or Y", current_position);
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|