@ -1033,7 +1033,7 @@ XYZ_CONSTS_FROM_CONFIG(signed char, home_dir, HOME_DIR);
# endif //DUAL_X_CARRIAGE
# ifdef DEBUG_LEVELING
# if ENABLED( DEBUG_LEVELING_FEATURE)
void print_xyz ( const char * prefix , const float x , const float y , const float z ) {
SERIAL_ECHO ( prefix ) ;
SERIAL_ECHOPAIR ( " : ( " , x ) ;
@ -1112,10 +1112,12 @@ static void set_axis_is_at_home(AxisEnum axis) {
if ( axis = = Z_AXIS ) current_position [ Z_AXIS ] - = zprobe_zoffset ;
# endif
# ifdef DEBUG_LEVELING
SERIAL_ECHOPAIR ( " set_axis_is_at_home " , ( unsigned long ) axis ) ;
SERIAL_ECHOPAIR ( " > (home_offset[axis]== " , home_offset [ axis ] ) ;
print_xyz ( " ) > current_position " , current_position ) ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
SERIAL_ECHOPAIR ( " set_axis_is_at_home " , ( unsigned long ) axis ) ;
SERIAL_ECHOPAIR ( " > (home_offset[axis]== " , home_offset [ axis ] ) ;
print_xyz ( " ) > current_position " , current_position ) ;
}
# endif
}
}
@ -1162,8 +1164,10 @@ static void setup_for_endstop_move() {
saved_feedrate_multiplier = feedrate_multiplier ;
feedrate_multiplier = 100 ;
refresh_cmd_timeout ( ) ;
# ifdef DEBUG_LEVELING
SERIAL_ECHOLNPGM ( " setup_for_endstop_move > enable_endstops(true) " ) ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
SERIAL_ECHOLNPGM ( " setup_for_endstop_move > enable_endstops(true) " ) ;
}
# endif
enable_endstops ( true ) ;
}
@ -1175,8 +1179,10 @@ static void setup_for_endstop_move() {
* Calculate delta , start a line , and set current_position to destination
*/
void prepare_move_raw ( ) {
# ifdef DEBUG_LEVELING
print_xyz ( " prepare_move_raw > destination " , destination ) ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
print_xyz ( " prepare_move_raw > destination " , destination ) ;
}
# endif
refresh_cmd_timeout ( ) ;
calculate_delta ( destination ) ;
@ -1205,8 +1211,10 @@ static void setup_for_endstop_move() {
current_position [ Y_AXIS ] = corrected_position . y ;
current_position [ Z_AXIS ] = corrected_position . z ;
# ifdef DEBUG_LEVELING
print_xyz ( " set_bed_level_equation_lsq > current_position " , current_position ) ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
print_xyz ( " set_bed_level_equation_lsq > current_position " , current_position ) ;
}
# endif
sync_plan_position ( ) ;
@ -1238,8 +1246,10 @@ static void setup_for_endstop_move() {
current_position [ Y_AXIS ] = corrected_position . y ;
current_position [ Z_AXIS ] = corrected_position . z ;
# ifdef DEBUG_LEVELING
print_xyz ( " set_bed_level_equation_3pts > current_position " , current_position ) ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
print_xyz ( " set_bed_level_equation_3pts > current_position " , current_position ) ;
}
# endif
sync_plan_position ( ) ;
@ -1254,8 +1264,10 @@ static void setup_for_endstop_move() {
float start_z = current_position [ Z_AXIS ] ;
long start_steps = st_get_position ( Z_AXIS ) ;
# ifdef DEBUG_LEVELING
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
SERIAL_ECHOLNPGM ( " run_z_probe (DELTA) 1 " ) ;
}
# endif
// move down slowly until you find the bed
@ -1270,8 +1282,10 @@ static void setup_for_endstop_move() {
float mm = start_z - float ( start_steps - stop_steps ) / axis_steps_per_unit [ Z_AXIS ] ;
current_position [ Z_AXIS ] = mm ;
# ifdef DEBUG_LEVELING
print_xyz ( " run_z_probe (DELTA) 2 > current_position " , current_position ) ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
print_xyz ( " run_z_probe (DELTA) 2 > current_position " , current_position ) ;
}
# endif
sync_plan_position_delta ( ) ;
@ -1308,8 +1322,10 @@ static void setup_for_endstop_move() {
current_position [ Z_AXIS ] = st_get_position_mm ( Z_AXIS ) ;
sync_plan_position ( ) ;
# ifdef DEBUG_LEVELING
print_xyz ( " run_z_probe > current_position " , current_position ) ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
print_xyz ( " run_z_probe > current_position " , current_position ) ;
}
# endif
# endif // !DELTA
@ -1322,8 +1338,10 @@ static void setup_for_endstop_move() {
static void do_blocking_move_to ( float x , float y , float z ) {
float oldFeedRate = feedrate ;
# ifdef DEBUG_LEVELING
print_xyz ( " do_blocking_move_to " , x , y , z ) ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
print_xyz ( " do_blocking_move_to " , x , y , z ) ;
}
# endif
# if ENABLED(DELTA)
@ -1362,8 +1380,10 @@ static void setup_for_endstop_move() {
static void clean_up_after_endstop_move ( ) {
# if ENABLED(ENDSTOPS_ONLY_FOR_HOMING)
# if ENABLED(DEBUG_LEVELING)
SERIAL_ECHOLNPGM ( " clean_up_after_endstop_move > ENDSTOPS_ONLY_FOR_HOMING > enable_endstops(false) " ) ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
SERIAL_ECHOLNPGM ( " clean_up_after_endstop_move > ENDSTOPS_ONLY_FOR_HOMING > enable_endstops(false) " ) ;
}
# endif
enable_endstops ( false ) ;
# endif
@ -1374,8 +1394,10 @@ static void setup_for_endstop_move() {
static void deploy_z_probe ( ) {
# ifdef DEBUG_LEVELING
print_xyz ( " deploy_z_probe > current_position " , current_position ) ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
print_xyz ( " deploy_z_probe > current_position " , current_position ) ;
}
# endif
# if HAS_SERVO_ENDSTOPS
@ -1468,8 +1490,10 @@ static void setup_for_endstop_move() {
static void stow_z_probe ( bool doRaise = true ) {
# ifdef DEBUG_LEVELING
print_xyz ( " stow_z_probe > current_position " , current_position ) ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
print_xyz ( " stow_z_probe > current_position " , current_position ) ;
}
# endif
# if HAS_SERVO_ENDSTOPS
@ -1479,11 +1503,13 @@ static void setup_for_endstop_move() {
# if Z_RAISE_AFTER_PROBING > 0
if ( doRaise ) {
# ifdef DEBUG_LEVELING
SERIAL_ECHOPAIR ( " Raise Z (after) by " , ( float ) Z_RAISE_AFTER_PROBING ) ;
SERIAL_EOL ;
SERIAL_ECHOPAIR ( " > SERVO_ENDSTOPS > do_blocking_move_to_z " , current_position [ Z_AXIS ] + Z_RAISE_AFTER_PROBING ) ;
SERIAL_EOL ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
SERIAL_ECHOPAIR ( " Raise Z (after) by " , ( float ) Z_RAISE_AFTER_PROBING ) ;
SERIAL_EOL ;
SERIAL_ECHOPAIR ( " > SERVO_ENDSTOPS > do_blocking_move_to_z " , current_position [ Z_AXIS ] + Z_RAISE_AFTER_PROBING ) ;
SERIAL_EOL ;
}
# endif
do_blocking_move_to_z ( current_position [ Z_AXIS ] + Z_RAISE_AFTER_PROBING ) ; // this also updates current_position
st_synchronize ( ) ;
@ -1574,35 +1600,43 @@ static void setup_for_endstop_move() {
// Probe bed height at position (x,y), returns the measured z value
static float probe_pt ( float x , float y , float z_before , ProbeAction probe_action = ProbeDeployAndStow , int verbose_level = 1 ) {
# ifdef DEBUG_LEVELING
SERIAL_ECHOLNPGM ( " probe_pt >>> " ) ;
SERIAL_ECHOPAIR ( " > ProbeAction: " , ( unsigned long ) probe_action ) ;
SERIAL_EOL ;
print_xyz ( " > current_position " , current_position ) ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
SERIAL_ECHOLNPGM ( " probe_pt >>> " ) ;
SERIAL_ECHOPAIR ( " > ProbeAction: " , ( unsigned long ) probe_action ) ;
SERIAL_EOL ;
print_xyz ( " > current_position " , current_position ) ;
}
# endif
# ifdef DEBUG_LEVELING
SERIAL_ECHOPAIR ( " Z Raise to z_before " , z_before ) ;
SERIAL_EOL ;
SERIAL_ECHOPAIR ( " > do_blocking_move_to_z " , z_before ) ;
SERIAL_EOL ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
SERIAL_ECHOPAIR ( " Z Raise to z_before " , z_before ) ;
SERIAL_EOL ;
SERIAL_ECHOPAIR ( " > do_blocking_move_to_z " , z_before ) ;
SERIAL_EOL ;
}
# endif
// Move Z up to the z_before height, then move the Z probe to the given XY
do_blocking_move_to_z ( z_before ) ; // this also updates current_position
# ifdef DEBUG_LEVELING
SERIAL_ECHOPAIR ( " > do_blocking_move_to_xy " , x - X_PROBE_OFFSET_FROM_EXTRUDER ) ;
SERIAL_ECHOPAIR ( " , " , y - Y_PROBE_OFFSET_FROM_EXTRUDER ) ;
SERIAL_EOL ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
SERIAL_ECHOPAIR ( " > do_blocking_move_to_xy " , x - X_PROBE_OFFSET_FROM_EXTRUDER ) ;
SERIAL_ECHOPAIR ( " , " , y - Y_PROBE_OFFSET_FROM_EXTRUDER ) ;
SERIAL_EOL ;
}
# endif
do_blocking_move_to_xy ( x - X_PROBE_OFFSET_FROM_EXTRUDER , y - Y_PROBE_OFFSET_FROM_EXTRUDER ) ; // this also updates current_position
# if DISABLED(Z_PROBE_SLED) && DISABLED(Z_PROBE_ALLEN_KEY)
if ( probe_action & ProbeDeploy ) {
# ifdef DEBUG_LEVELING
SERIAL_ECHOLNPGM ( " > ProbeDeploy " ) ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
SERIAL_ECHOLNPGM ( " > ProbeDeploy " ) ;
}
# endif
deploy_z_probe ( ) ;
}
@ -1613,8 +1647,10 @@ static void setup_for_endstop_move() {
# if DISABLED(Z_PROBE_SLED) && DISABLED(Z_PROBE_ALLEN_KEY)
if ( probe_action & ProbeStow ) {
# ifdef DEBUG_LEVELING
SERIAL_ECHOLNPGM ( " > ProbeStow (stow_z_probe will do Z Raise) " ) ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
SERIAL_ECHOLNPGM ( " > ProbeStow (stow_z_probe will do Z Raise) " ) ;
}
# endif
stow_z_probe ( ) ;
}
@ -1630,8 +1666,10 @@ static void setup_for_endstop_move() {
SERIAL_EOL ;
}
# ifdef DEBUG_LEVELING
SERIAL_ECHOLNPGM ( " <<< probe_pt " ) ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
SERIAL_ECHOLNPGM ( " <<< probe_pt " ) ;
}
# endif
return measured_z ;
@ -1689,8 +1727,10 @@ static void setup_for_endstop_move() {
// Reset calibration results to zero.
void reset_bed_level ( ) {
# ifdef DEBUG_LEVELING
SERIAL_ECHOLNPGM ( " reset_bed_level " ) ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
SERIAL_ECHOLNPGM ( " reset_bed_level " ) ;
}
# endif
for ( int y = 0 ; y < AUTO_BED_LEVELING_GRID_POINTS ; y + + ) {
for ( int x = 0 ; x < AUTO_BED_LEVELING_GRID_POINTS ; x + + ) {
@ -1727,9 +1767,11 @@ static void setup_for_endstop_move() {
* offset [ in ] The additional distance to move to adjust docking location
*/
static void dock_sled ( bool dock , int offset = 0 ) {
# ifdef DEBUG_LEVELING
SERIAL_ECHOPAIR ( " dock_sled " , dock ) ;
SERIAL_EOL ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
SERIAL_ECHOPAIR ( " dock_sled " , dock ) ;
SERIAL_EOL ;
}
# endif
if ( ! axis_known_position [ X_AXIS ] | | ! axis_known_position [ Y_AXIS ] ) {
LCD_MESSAGEPGM ( MSG_POSITION_UNKNOWN ) ;
@ -1765,10 +1807,12 @@ static void setup_for_endstop_move() {
# define HOMEAXIS(LETTER) homeaxis(LETTER##_AXIS)
static void homeaxis ( AxisEnum axis ) {
# ifdef DEBUG_LEVELING
SERIAL_ECHOPAIR ( " >>> homeaxis( " , ( unsigned long ) axis ) ;
SERIAL_CHAR ( ' ) ' ) ;
SERIAL_EOL ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
SERIAL_ECHOPAIR ( " >>> homeaxis( " , ( unsigned long ) axis ) ;
SERIAL_CHAR ( ' ) ' ) ;
SERIAL_EOL ;
}
# endif
# define HOMEAXIS_DO(LETTER) \
( ( LETTER # # _MIN_PIN > - 1 & & LETTER # # _HOME_DIR = = - 1 ) | | ( LETTER # # _MAX_PIN > - 1 & & LETTER # # _HOME_DIR = = 1 ) )
@ -1822,8 +1866,10 @@ static void homeaxis(AxisEnum axis) {
current_position [ axis ] = 0 ;
sync_plan_position ( ) ;
# ifdef DEBUG_LEVELING
SERIAL_ECHOLNPGM ( " > enable_endstops(false) " ) ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
SERIAL_ECHOLNPGM ( " > enable_endstops(false) " ) ;
}
# endif
enable_endstops ( false ) ; // Disable endstops while moving away
@ -1832,8 +1878,10 @@ static void homeaxis(AxisEnum axis) {
line_to_destination ( ) ;
st_synchronize ( ) ;
# ifdef DEBUG_LEVELING
SERIAL_ECHOLNPGM ( " > enable_endstops(true) " ) ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
SERIAL_ECHOLNPGM ( " > enable_endstops(true) " ) ;
}
# endif
enable_endstops ( true ) ; // Enable endstops for next homing move
@ -1845,8 +1893,10 @@ static void homeaxis(AxisEnum axis) {
line_to_destination ( ) ;
st_synchronize ( ) ;
# ifdef DEBUG_LEVELING
print_xyz ( " > TRIGGER ENDSTOP > current_position " , current_position ) ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
print_xyz ( " > TRIGGER ENDSTOP > current_position " , current_position ) ;
}
# endif
# if ENABLED(Z_DUAL_ENDSTOPS)
@ -1877,27 +1927,35 @@ static void homeaxis(AxisEnum axis) {
# if ENABLED(DELTA)
// retrace by the amount specified in endstop_adj
if ( endstop_adj [ axis ] * axis_home_dir < 0 ) {
# ifdef DEBUG_LEVELING
SERIAL_ECHOLNPGM ( " > enable_endstops(false) " ) ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
SERIAL_ECHOLNPGM ( " > enable_endstops(false) " ) ;
}
# endif
enable_endstops ( false ) ; // Disable endstops while moving away
sync_plan_position ( ) ;
destination [ axis ] = endstop_adj [ axis ] ;
# ifdef DEBUG_LEVELING
SERIAL_ECHOPAIR ( " > endstop_adj = " , endstop_adj [ axis ] ) ;
print_xyz ( " > destination " , destination ) ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
SERIAL_ECHOPAIR ( " > endstop_adj = " , endstop_adj [ axis ] ) ;
print_xyz ( " > destination " , destination ) ;
}
# endif
line_to_destination ( ) ;
st_synchronize ( ) ;
# ifdef DEBUG_LEVELING
SERIAL_ECHOLNPGM ( " > enable_endstops(true) " ) ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
SERIAL_ECHOLNPGM ( " > enable_endstops(true) " ) ;
}
# endif
enable_endstops ( true ) ; // Enable endstops for next homing move
}
# ifdef DEBUG_LEVELING
# if ENABLED( DEBUG_LEVELING_FEATURE)
else {
SERIAL_ECHOPAIR ( " > endstop_adj * axis_home_dir = " , endstop_adj [ axis ] * axis_home_dir ) ;
SERIAL_EOL ;
if ( marlin_debug_flags & DEBUG_LEVELING ) {
SERIAL_ECHOPAIR ( " > endstop_adj * axis_home_dir = " , endstop_adj [ axis ] * axis_home_dir ) ;
SERIAL_EOL ;
}
}
# endif
# endif
@ -1906,8 +1964,10 @@ static void homeaxis(AxisEnum axis) {
set_axis_is_at_home ( axis ) ;
sync_plan_position ( ) ;
# ifdef DEBUG_LEVELING
print_xyz ( " > AFTER set_axis_is_at_home > current_position " , current_position ) ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
print_xyz ( " > AFTER set_axis_is_at_home > current_position " , current_position ) ;
}
# endif
destination [ axis ] = current_position [ axis ] ;
@ -1927,8 +1987,10 @@ static void homeaxis(AxisEnum axis) {
// Deploy a Z probe if there is one, and homing towards the bed
if ( axis = = Z_AXIS ) {
if ( axis_home_dir < 0 ) {
# ifdef DEBUG_LEVELING
SERIAL_ECHOLNPGM ( " > SERVO_LEVELING > stow_z_probe " ) ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
SERIAL_ECHOLNPGM ( " > SERVO_LEVELING > stow_z_probe " ) ;
}
# endif
stow_z_probe ( ) ;
}
@ -1941,8 +2003,10 @@ static void homeaxis(AxisEnum axis) {
# if HAS_SERVO_ENDSTOPS
// Retract Servo endstop if enabled
if ( servo_endstop_id [ axis ] > = 0 ) {
# ifdef DEBUG_LEVELING
SERIAL_ECHOLNPGM ( " > SERVO_ENDSTOPS > Stow with servo.move() " ) ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
SERIAL_ECHOLNPGM ( " > SERVO_ENDSTOPS > Stow with servo.move() " ) ;
}
# endif
servo [ servo_endstop_id [ axis ] ] . move ( servo_endstop_angle [ axis ] [ 1 ] ) ;
}
@ -1951,10 +2015,12 @@ static void homeaxis(AxisEnum axis) {
}
# ifdef DEBUG_LEVELING
SERIAL_ECHOPAIR ( " <<< homeaxis( " , ( unsigned long ) axis ) ;
SERIAL_CHAR ( ' ) ' ) ;
SERIAL_EOL ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
SERIAL_ECHOPAIR ( " <<< homeaxis( " , ( unsigned long ) axis ) ;
SERIAL_CHAR ( ' ) ' ) ;
SERIAL_EOL ;
}
# endif
}
@ -2157,8 +2223,10 @@ inline void gcode_G4() {
*/
inline void gcode_G28 ( ) {
# ifdef DEBUG_LEVELING
SERIAL_ECHOLNPGM ( " gcode_G28 >>> " ) ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
SERIAL_ECHOLNPGM ( " gcode_G28 >>> " ) ;
}
# endif
// Wait for planner moves to finish!
@ -2209,8 +2277,10 @@ inline void gcode_G28() {
sync_plan_position_delta ( ) ;
# ifdef DEBUG_LEVELING
print_xyz ( " (DELTA) > current_position " , current_position ) ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
print_xyz ( " (DELTA) > current_position " , current_position ) ;
}
# endif
# else // NOT DELTA
@ -2226,8 +2296,10 @@ inline void gcode_G28() {
# if Z_HOME_DIR > 0 // If homing away from BED do Z first
HOMEAXIS ( Z ) ;
# ifdef DEBUG_LEVELING
print_xyz ( " > HOMEAXIS(Z) > current_position " , current_position ) ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
print_xyz ( " > HOMEAXIS(Z) > current_position " , current_position ) ;
}
# endif
# elif DISABLED(Z_SAFE_HOMING) && defined(Z_RAISE_BEFORE_HOMING) && Z_RAISE_BEFORE_HOMING > 0
@ -2235,10 +2307,12 @@ inline void gcode_G28() {
// Raise Z before homing any other axes
// (Does this need to be "negative home direction?" Why not just use Z_RAISE_BEFORE_HOMING?)
destination [ Z_AXIS ] = - Z_RAISE_BEFORE_HOMING * home_dir ( Z_AXIS ) ;
# ifdef DEBUG_LEVELING
SERIAL_ECHOPAIR ( " Raise Z (before homing) by " , ( float ) Z_RAISE_BEFORE_HOMING ) ;
SERIAL_EOL ;
print_xyz ( " > (home_all_axis || homeZ) > destination " , destination ) ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
SERIAL_ECHOPAIR ( " Raise Z (before homing) by " , ( float ) Z_RAISE_BEFORE_HOMING ) ;
SERIAL_EOL ;
print_xyz ( " > (home_all_axis || homeZ) > destination " , destination ) ;
}
# endif
feedrate = max_feedrate [ Z_AXIS ] * 60 ;
line_to_destination ( ) ;
@ -2276,8 +2350,10 @@ inline void gcode_G28() {
set_axis_is_at_home ( Y_AXIS ) ;
sync_plan_position ( ) ;
# ifdef DEBUG_LEVELING
print_xyz ( " > QUICK_HOME > current_position 1 " , current_position ) ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
print_xyz ( " > QUICK_HOME > current_position 1 " , current_position ) ;
}
# endif
destination [ X_AXIS ] = current_position [ X_AXIS ] ;
@ -2293,8 +2369,10 @@ inline void gcode_G28() {
current_position [ Z_AXIS ] = destination [ Z_AXIS ] ;
# endif
# ifdef DEBUG_LEVELING
print_xyz ( " > QUICK_HOME > current_position 2 " , current_position ) ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
print_xyz ( " > QUICK_HOME > current_position 2 " , current_position ) ;
}
# endif
}
@ -2322,8 +2400,10 @@ inline void gcode_G28() {
# else
HOMEAXIS ( X ) ;
# endif
# ifdef DEBUG_LEVELING
print_xyz ( " > homeX " , current_position ) ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
print_xyz ( " > homeX " , current_position ) ;
}
# endif
}
@ -2331,8 +2411,10 @@ inline void gcode_G28() {
// Home Y
if ( home_all_axis | | homeY ) {
HOMEAXIS ( Y ) ;
# ifdef DEBUG_LEVELING
print_xyz ( " > homeY " , current_position ) ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
print_xyz ( " > homeY " , current_position ) ;
}
# endif
}
# endif
@ -2344,8 +2426,10 @@ inline void gcode_G28() {
# if ENABLED(Z_SAFE_HOMING)
# ifdef DEBUG_LEVELING
SERIAL_ECHOLNPGM ( " > Z_SAFE_HOMING >>> " ) ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
SERIAL_ECHOLNPGM ( " > Z_SAFE_HOMING >>> " ) ;
}
# endif
if ( home_all_axis ) {
@ -2363,11 +2447,13 @@ inline void gcode_G28() {
destination [ Z_AXIS ] = - Z_RAISE_BEFORE_HOMING * home_dir ( Z_AXIS ) ; // Set destination away from bed
feedrate = XY_TRAVEL_SPEED ;
# ifdef DEBUG_LEVELING
SERIAL_ECHOPAIR ( " Raise Z (before homing) by " , ( float ) Z_RAISE_BEFORE_HOMING ) ;
SERIAL_EOL ;
print_xyz ( " > home_all_axis > current_position " , current_position ) ;
print_xyz ( " > home_all_axis > destination " , destination ) ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
SERIAL_ECHOPAIR ( " Raise Z (before homing) by " , ( float ) Z_RAISE_BEFORE_HOMING ) ;
SERIAL_EOL ;
print_xyz ( " > home_all_axis > current_position " , current_position ) ;
print_xyz ( " > home_all_axis > destination " , destination ) ;
}
# endif
// This could potentially move X, Y, Z all together
@ -2403,11 +2489,13 @@ inline void gcode_G28() {
destination [ Z_AXIS ] = - Z_RAISE_BEFORE_HOMING * home_dir ( Z_AXIS ) ;
feedrate = max_feedrate [ Z_AXIS ] * 60 ; // feedrate (mm/m) = max_feedrate (mm/s)
# ifdef DEBUG_LEVELING
SERIAL_ECHOPAIR ( " Raise Z (before homing) by " , ( float ) Z_RAISE_BEFORE_HOMING ) ;
SERIAL_EOL ;
print_xyz ( " > homeZ > current_position " , current_position ) ;
print_xyz ( " > homeZ > destination " , destination ) ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
SERIAL_ECHOPAIR ( " Raise Z (before homing) by " , ( float ) Z_RAISE_BEFORE_HOMING ) ;
SERIAL_EOL ;
print_xyz ( " > homeZ > current_position " , current_position ) ;
print_xyz ( " > homeZ > destination " , destination ) ;
}
# endif
line_to_destination ( ) ;
@ -2430,8 +2518,10 @@ inline void gcode_G28() {
} // !home_all_axes && homeZ
# ifdef DEBUG_LEVELING
SERIAL_ECHOLNPGM ( " <<< Z_SAFE_HOMING " ) ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
SERIAL_ECHOLNPGM ( " <<< Z_SAFE_HOMING " ) ;
}
# endif
# else // !Z_SAFE_HOMING
@ -2440,8 +2530,10 @@ inline void gcode_G28() {
# endif // !Z_SAFE_HOMING
# ifdef DEBUG_LEVELING
print_xyz ( " > (home_all_axis || homeZ) > final " , current_position ) ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
print_xyz ( " > (home_all_axis || homeZ) > final " , current_position ) ;
}
# endif
} // home_all_axis || homeZ
@ -2457,8 +2549,10 @@ inline void gcode_G28() {
# endif
# if ENABLED(ENDSTOPS_ONLY_FOR_HOMING)
# ifdef DEBUG_LEVELING
SERIAL_ECHOLNPGM ( " ENDSTOPS_ONLY_FOR_HOMING enable_endstops(false) " ) ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
SERIAL_ECHOLNPGM ( " ENDSTOPS_ONLY_FOR_HOMING enable_endstops(false) " ) ;
}
# endif
enable_endstops ( false ) ;
# endif
@ -2475,8 +2569,10 @@ inline void gcode_G28() {
current_position [ Z_AXIS ] = MESH_HOME_SEARCH_Z ;
sync_plan_position ( ) ;
mbl . active = 1 ;
# ifdef DEBUG_LEVELING
print_xyz ( " mbl_was_active > current_position " , current_position ) ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
print_xyz ( " mbl_was_active > current_position " , current_position ) ;
}
# endif
}
# endif
@ -2486,8 +2582,10 @@ inline void gcode_G28() {
refresh_cmd_timeout ( ) ;
endstops_hit_on_purpose ( ) ; // clear endstop hit flags
# ifdef DEBUG_LEVELING
SERIAL_ECHOLNPGM ( " <<< gcode_G28 " ) ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
SERIAL_ECHOLNPGM ( " <<< gcode_G28 " ) ;
}
# endif
}
@ -2675,8 +2773,10 @@ inline void gcode_G28() {
*/
inline void gcode_G29 ( ) {
# ifdef DEBUG_LEVELING
SERIAL_ECHOLNPGM ( " gcode_G29 >>> " ) ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
SERIAL_ECHOLNPGM ( " gcode_G29 >>> " ) ;
}
# endif
// Don't allow auto-leveling without homing first
@ -2838,15 +2938,19 @@ inline void gcode_G28() {
z_before = probePointCounter ? Z_RAISE_BETWEEN_PROBINGS + current_position [ Z_AXIS ] : Z_RAISE_BEFORE_PROBING ;
if ( probePointCounter ) {
# ifdef DEBUG_LEVELING
SERIAL_ECHOPAIR ( " z_before = (between) " , ( float ) ( Z_RAISE_BETWEEN_PROBINGS + current_position [ Z_AXIS ] ) ) ;
SERIAL_EOL ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
SERIAL_ECHOPAIR ( " z_before = (between) " , ( float ) ( Z_RAISE_BETWEEN_PROBINGS + current_position [ Z_AXIS ] ) ) ;
SERIAL_EOL ;
}
# endif
}
else {
# ifdef DEBUG_LEVELING
SERIAL_ECHOPAIR ( " z_before = (before) " , ( float ) Z_RAISE_BEFORE_PROBING ) ;
SERIAL_EOL ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
SERIAL_ECHOPAIR ( " z_before = (before) " , ( float ) Z_RAISE_BEFORE_PROBING ) ;
SERIAL_EOL ;
}
# endif
}
@ -2887,8 +2991,10 @@ inline void gcode_G28() {
} //xProbe
} //yProbe
# ifdef DEBUG_LEVELING
print_xyz ( " > probing complete > current_position " , current_position ) ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
print_xyz ( " > probing complete > current_position " , current_position ) ;
}
# endif
clean_up_after_endstop_move ( ) ;
@ -2987,8 +3093,10 @@ inline void gcode_G28() {
# else // !AUTO_BED_LEVELING_GRID
# ifdef DEBUG_LEVELING
SERIAL_ECHOLNPGM ( " > 3-point Leveling " ) ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
SERIAL_ECHOLNPGM ( " > 3-point Leveling " ) ;
}
# endif
// Actions for each probe
@ -3020,11 +3128,13 @@ inline void gcode_G28() {
z_tmp = current_position [ Z_AXIS ] ,
real_z = st_get_position_mm ( Z_AXIS ) ; //get the real Z (since plan_get_position is now correcting the plane)
# ifdef DEBUG_LEVELING
SERIAL_ECHOPAIR ( " > BEFORE apply_rotation_xyz > z_tmp = " , z_tmp ) ;
SERIAL_EOL ;
SERIAL_ECHOPAIR ( " > BEFORE apply_rotation_xyz > real_z = " , real_z ) ;
SERIAL_EOL ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
SERIAL_ECHOPAIR ( " > BEFORE apply_rotation_xyz > z_tmp = " , z_tmp ) ;
SERIAL_EOL ;
SERIAL_ECHOPAIR ( " > BEFORE apply_rotation_xyz > real_z = " , real_z ) ;
SERIAL_EOL ;
}
# endif
apply_rotation_xyz ( plan_bed_level_matrix , x_tmp , y_tmp , z_tmp ) ; // Apply the correction sending the Z probe offset
@ -3045,9 +3155,11 @@ inline void gcode_G28() {
// adjust for inaccurate endstops, not for reasonably accurate probes. If it were
// added here, it could be seen as a compensating factor for the Z probe.
//
# ifdef DEBUG_LEVELING
SERIAL_ECHOPAIR ( " > AFTER apply_rotation_xyz > z_tmp = " , z_tmp ) ;
SERIAL_EOL ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
SERIAL_ECHOPAIR ( " > AFTER apply_rotation_xyz > z_tmp = " , z_tmp ) ;
SERIAL_EOL ;
}
# endif
current_position [ Z_AXIS ] = - zprobe_zoffset + ( z_tmp - real_z )
@ -3058,8 +3170,10 @@ inline void gcode_G28() {
// current_position[Z_AXIS] += home_offset[Z_AXIS]; // The Z probe determines Z=0, not "Z home"
sync_plan_position ( ) ;
# ifdef DEBUG_LEVELING
print_xyz ( " > corrected Z in G29 " , current_position ) ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
print_xyz ( " > corrected Z in G29 " , current_position ) ;
}
# endif
}
# endif // !DELTA
@ -3071,16 +3185,20 @@ inline void gcode_G28() {
# endif
# ifdef Z_PROBE_END_SCRIPT
# ifdef DEBUG_LEVELING
SERIAL_ECHO ( " Z Probe End Script: " ) ;
SERIAL_ECHOLNPGM ( Z_PROBE_END_SCRIPT ) ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
SERIAL_ECHO ( " Z Probe End Script: " ) ;
SERIAL_ECHOLNPGM ( Z_PROBE_END_SCRIPT ) ;
}
# endif
enqueuecommands_P ( PSTR ( Z_PROBE_END_SCRIPT ) ) ;
st_synchronize ( ) ;
# endif
# ifdef DEBUG_LEVELING
SERIAL_ECHOLNPGM ( " <<< gcode_G29 " ) ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
SERIAL_ECHOLNPGM ( " <<< gcode_G29 " ) ;
}
# endif
}
@ -3891,6 +4009,12 @@ inline void gcode_M111() {
SERIAL_ECHOLNPGM ( MSG_DEBUG_DRYRUN ) ;
disable_all_heaters ( ) ;
}
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
SERIAL_ECHO_START ;
SERIAL_ECHOLNPGM ( MSG_DEBUG_LEVELING ) ;
}
# endif
}
/**
@ -4377,22 +4501,28 @@ inline void gcode_M206() {
* M666 : Set delta endstop adjustment
*/
inline void gcode_M666 ( ) {
# ifdef DEBUG_LEVELING
SERIAL_ECHOLNPGM ( " >>> gcode_M666 " ) ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
SERIAL_ECHOLNPGM ( " >>> gcode_M666 " ) ;
}
# endif
for ( int8_t i = X_AXIS ; i < = Z_AXIS ; i + + ) {
if ( code_seen ( axis_codes [ i ] ) ) {
endstop_adj [ i ] = code_value ( ) ;
# ifdef DEBUG_LEVELING
SERIAL_ECHOPGM ( " endstop_adj[ " ) ;
SERIAL_ECHO ( axis_codes [ i ] ) ;
SERIAL_ECHOPAIR ( " ] = " , endstop_adj [ i ] ) ;
SERIAL_EOL ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
SERIAL_ECHOPGM ( " endstop_adj[ " ) ;
SERIAL_ECHO ( axis_codes [ i ] ) ;
SERIAL_ECHOPAIR ( " ] = " , endstop_adj [ i ] ) ;
SERIAL_EOL ;
}
# endif
}
}
# ifdef DEBUG_LEVELING
SERIAL_ECHOLNPGM ( " <<< gcode_M666 " ) ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
SERIAL_ECHOLNPGM ( " <<< gcode_M666 " ) ;
}
# endif
}
# elif ENABLED(Z_DUAL_ENDSTOPS) // !DELTA && ENABLED(Z_DUAL_ENDSTOPS)
@ -6096,9 +6226,11 @@ void clamp_to_software_endstops(float target[3]) {
# if ENABLED(AUTO_BED_LEVELING_FEATURE)
if ( zprobe_zoffset < 0 ) negative_z_offset + = zprobe_zoffset ;
if ( home_offset [ Z_AXIS ] < 0 ) {
# ifdef DEBUG_LEVELING
SERIAL_ECHOPAIR ( " > clamp_to_software_endstops > Add home_offset[Z_AXIS]: " , home_offset [ Z_AXIS ] ) ;
SERIAL_EOL ;
# if ENABLED(DEBUG_LEVELING_FEATURE)
if ( marlin_debug_flags & DEBUG_LEVELING ) {
SERIAL_ECHOPAIR ( " > clamp_to_software_endstops > Add home_offset[Z_AXIS]: " , home_offset [ Z_AXIS ] ) ;
SERIAL_EOL ;
}
# endif
negative_z_offset + = home_offset [ Z_AXIS ] ;
}