@ -1300,6 +1300,10 @@ static void setup_for_endstop_move() {
feedrate = oldFeedRate ;
feedrate = oldFeedRate ;
}
}
inline void do_blocking_move_to_xy ( float x , float y ) { do_blocking_move_to ( x , y , current_position [ Z_AXIS ] ) ; }
inline void do_blocking_move_to_x ( float x ) { do_blocking_move_to ( x , current_position [ Y_AXIS ] , current_position [ Z_AXIS ] ) ; }
inline void do_blocking_move_to_z ( float z ) { do_blocking_move_to ( current_position [ X_AXIS ] , current_position [ Y_AXIS ] , z ) ; }
static void clean_up_after_endstop_move ( ) {
static void clean_up_after_endstop_move ( ) {
# ifdef ENDSTOPS_ONLY_FOR_HOMING
# ifdef ENDSTOPS_ONLY_FOR_HOMING
enable_endstops ( false ) ;
enable_endstops ( false ) ;
@ -1408,7 +1412,7 @@ static void setup_for_endstop_move() {
# if Z_RAISE_AFTER_PROBING > 0
# if Z_RAISE_AFTER_PROBING > 0
if ( doRaise ) {
if ( doRaise ) {
do_blocking_move_to ( current_position [ X_AXIS ] , current_position [ Y_AXIS ] , current_position [ Z_AXIS ] + Z_RAISE_AFTER_PROBING ) ; // this also updates current_position
do_blocking_move_to _z( current_position [ Z_AXIS ] + Z_RAISE_AFTER_PROBING ) ; // this also updates current_position
st_synchronize ( ) ;
st_synchronize ( ) ;
}
}
# endif
# endif
@ -1494,8 +1498,8 @@ static void setup_for_endstop_move() {
// Probe bed height at position (x,y), returns the measured z value
// 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 ) {
static float probe_pt ( float x , float y , float z_before , ProbeAction probe_action = ProbeDeployAndStow , int verbose_level = 1 ) {
// Move Z up to the z_before height, then move the probe to the given XY
// Move Z up to the z_before height, then move the probe to the given XY
do_blocking_move_to ( current_position [ X_AXIS ] , current_position [ Y_AXIS ] , z_before ) ; // this also updates current_position
do_blocking_move_to _z( z_before ) ; // this also updates current_position
do_blocking_move_to ( x - X_PROBE_OFFSET_FROM_EXTRUDER , y - Y_PROBE_OFFSET_FROM_EXTRUDER , current_position [ Z_AXIS ] ) ; // this also updates current_position
do_blocking_move_to _xy ( x - X_PROBE_OFFSET_FROM_EXTRUDER , y - Y_PROBE_OFFSET_FROM_EXTRUDER ) ; // this also updates current_position
# if !defined(Z_PROBE_SLED) && !defined(Z_PROBE_ALLEN_KEY)
# if !defined(Z_PROBE_SLED) && !defined(Z_PROBE_ALLEN_KEY)
if ( probe_action & ProbeDeploy ) deploy_z_probe ( ) ;
if ( probe_action & ProbeDeploy ) deploy_z_probe ( ) ;
@ -1604,20 +1608,18 @@ static void setup_for_endstop_move() {
return ;
return ;
}
}
float oldXpos = current_position [ X_AXIS ] ; // save x position
if ( dock ) {
if ( dock ) {
float oldXpos = current_position [ X_AXIS ] ; // save x position
do_blocking_move_to_z ( current_position [ Z_AXIS ] + Z_RAISE_AFTER_PROBING ) ; // raise Z
do_blocking_move_to ( current_position [ X_AXIS ] , current_position [ Y_AXIS ] , current_position [ Z_AXIS ] + Z_RAISE_AFTER_PROBING ) ; // rise Z
do_blocking_move_to_x ( X_MAX_POS + SLED_DOCKING_OFFSET + offset - 1 ) ; // Dock sled a bit closer to ensure proper capturing
do_blocking_move_to ( X_MAX_POS + SLED_DOCKING_OFFSET + offset - 1 , current_position [ Y_AXIS ] , current_position [ Z_AXIS ] ) ; // Dock sled a bit closer to ensure proper capturing
digitalWrite ( SLED_PIN , LOW ) ; // turn off magnet
digitalWrite ( SLED_PIN , LOW ) ; // turn off magnet
do_blocking_move_to ( oldXpos , current_position [ Y_AXIS ] , current_position [ Z_AXIS ] ) ; // return to position before docking
} else {
} else {
float oldXpos = current_position [ X_AXIS ] ; // save x position
float z_loc = current_position [ Z_AXIS ] ;
float z_loc = current_position [ Z_AXIS ] ;
if ( z_loc < Z_RAISE_BEFORE_PROBING + 5 ) z_loc = Z_RAISE_BEFORE_PROBING ;
if ( z_loc < Z_RAISE_BEFORE_PROBING + 5 ) z_loc = Z_RAISE_BEFORE_PROBING ;
do_blocking_move_to ( X_MAX_POS + SLED_DOCKING_OFFSET + offset , current_position [ Y_AXIS ] , z_loc ) ; // this also updates current_position
do_blocking_move_to ( X_MAX_POS + SLED_DOCKING_OFFSET + offset , current_position [ Y_AXIS ] , z_loc ) ; // this also updates current_position
digitalWrite ( SLED_PIN , HIGH ) ; // turn on magnet
digitalWrite ( SLED_PIN , HIGH ) ; // turn on magnet
do_blocking_move_to ( oldXpos , current_position [ Y_AXIS ] , current_position [ Z_AXIS ] ) ; // return to position before docking
}
}
do_blocking_move_to_x ( oldXpos ) ; // return to position before docking
}
}
# endif // Z_PROBE_SLED
# endif // Z_PROBE_SLED
@ -4559,8 +4561,7 @@ inline void gcode_M400() { st_synchronize(); }
void raise_z_for_servo ( ) {
void raise_z_for_servo ( ) {
float zpos = current_position [ Z_AXIS ] , z_dest = Z_RAISE_BEFORE_HOMING ;
float zpos = current_position [ Z_AXIS ] , z_dest = Z_RAISE_BEFORE_HOMING ;
z_dest + = axis_known_position [ Z_AXIS ] ? zprobe_zoffset : zpos ;
z_dest + = axis_known_position [ Z_AXIS ] ? zprobe_zoffset : zpos ;
if ( zpos < z_dest )
if ( zpos < z_dest ) do_blocking_move_to_z ( z_dest ) ; // also updates current_position
do_blocking_move_to ( current_position [ X_AXIS ] , current_position [ Y_AXIS ] , z_dest ) ; // also updates current_position
}
}
# endif
# endif