|
|
|
@ -1803,7 +1803,19 @@ inline void gcode_G28() {
|
|
|
|
|
home_all_axis = !homeX && !homeY && !homeZ; // No parameters means home all axes
|
|
|
|
|
|
|
|
|
|
#if Z_HOME_DIR > 0 // If homing away from BED do Z first
|
|
|
|
|
|
|
|
|
|
if (home_all_axis || homeZ) HOMEAXIS(Z);
|
|
|
|
|
|
|
|
|
|
#elif !defined(Z_SAFE_HOMING) && defined(Z_RAISE_BEFORE_HOMING) && Z_RAISE_BEFORE_HOMING > 0
|
|
|
|
|
|
|
|
|
|
// Raise Z before homing any other axes
|
|
|
|
|
if (home_all_axis || homeZ) {
|
|
|
|
|
destination[Z_AXIS] = -Z_RAISE_BEFORE_HOMING * home_dir(Z_AXIS); // Set destination away from bed
|
|
|
|
|
feedrate = max_feedrate[Z_AXIS];
|
|
|
|
|
line_to_destination();
|
|
|
|
|
st_synchronize();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifdef QUICK_HOME
|
|
|
|
@ -1897,16 +1909,7 @@ inline void gcode_G28() {
|
|
|
|
|
|
|
|
|
|
#ifndef Z_SAFE_HOMING
|
|
|
|
|
|
|
|
|
|
if (home_all_axis || homeZ) {
|
|
|
|
|
// Raise Z before homing Z? Shouldn't this happen before homing X or Y?
|
|
|
|
|
#if defined(Z_RAISE_BEFORE_HOMING) && Z_RAISE_BEFORE_HOMING > 0
|
|
|
|
|
destination[Z_AXIS] = -Z_RAISE_BEFORE_HOMING * home_dir(Z_AXIS); // Set destination away from bed
|
|
|
|
|
feedrate = max_feedrate[Z_AXIS];
|
|
|
|
|
line_to_destination();
|
|
|
|
|
st_synchronize();
|
|
|
|
|
#endif
|
|
|
|
|
HOMEAXIS(Z);
|
|
|
|
|
}
|
|
|
|
|
if (home_all_axis || homeZ) HOMEAXIS(Z);
|
|
|
|
|
|
|
|
|
|
#else // Z_SAFE_HOMING
|
|
|
|
|
|
|
|
|
|