From 460b788d78c81a63cf49e910a65bcc306ce94c55 Mon Sep 17 00:00:00 2001 From: Bernhard <bkubicek@x201.(none)> Date: Wed, 7 Dec 2011 20:54:34 +0100 Subject: [PATCH] repaired homing position setting. --- Marlin/Marlin.pde | 39 +++++++++++++++++++++++++++++---------- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/Marlin/Marlin.pde b/Marlin/Marlin.pde index 226a7d35df..d0b5a09253 100644 --- a/Marlin/Marlin.pde +++ b/Marlin/Marlin.pde @@ -539,33 +539,52 @@ FORCE_INLINE void process_commands() #ifdef QUICK_HOME if( code_seen(axis_codes[0]) && code_seen(axis_codes[1]) ) //first diagonal move { - current_position[X_AXIS] = 0; current_position[Y_AXIS] = 0; + current_position[X_AXIS] = 0;current_position[Y_AXIS] = 0; plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); - destination[X_AXIS] = 1.5 * X_MAX_LENGTH * X_HOME_DIR; - destination[Y_AXIS] = 1.5 * Y_MAX_LENGTH * Y_HOME_DIR; - feedrate =homing_feedrate[X_AXIS]; + destination[X_AXIS] = 1.5 * X_MAX_LENGTH * X_HOME_DIR;destination[Y_AXIS] = 1.5 * Y_MAX_LENGTH * Y_HOME_DIR; + feedrate = homing_feedrate[X_AXIS]; if(homing_feedrate[Y_AXIS]<feedrate) feedrate =homing_feedrate[Y_AXIS]; - prepare_move(); - current_position[X_AXIS] = 0; current_position[Y_AXIS] = 0; + prepare_move(); + + current_position[X_AXIS] = (X_HOME_DIR == -1) ? 0 : X_MAX_LENGTH; + current_position[Y_AXIS] = (Y_HOME_DIR == -1) ? 0 : Y_MAX_LENGTH; + plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); + destination[X_AXIS] = current_position[X_AXIS]; + destination[Y_AXIS] = current_position[Y_AXIS]; + feedrate = 0.0; + st_synchronize(); + plan_set_position(0, 0, current_position[Z_AXIS], current_position[E_AXIS]); + current_position[X_AXIS] = 0;current_position[Y_AXIS] = 0; + endstops_hit_on_purpose(); } #endif if((home_all_axis) || (code_seen(axis_codes[X_AXIS]))) { HOMEAXIS(X); - current_position[0]=code_value()+add_homeing[0]; } if((home_all_axis) || (code_seen(axis_codes[Y_AXIS]))) { HOMEAXIS(Y); - current_position[1]=code_value()+add_homeing[1]; } if((home_all_axis) || (code_seen(axis_codes[Z_AXIS]))) { HOMEAXIS(Z); - current_position[2]=code_value()+add_homeing[2]; - } + } + + if(code_seen(axis_codes[X_AXIS])) + { + current_position[0]=code_value()+add_homeing[0]; + } + + if(code_seen(axis_codes[Y_AXIS])) { + current_position[1]=code_value()+add_homeing[1]; + } + + if(code_seen(axis_codes[Z_AXIS])) { + current_position[2]=code_value()+add_homeing[2]; + } #ifdef ENDSTOPS_ONLY_FOR_HOMING enable_endstops(false); #endif -- GitLab