From: Ian Jackson Date: Wed, 1 Aug 2012 20:12:14 +0000 (+0100) Subject: M206: always use homing ("homeing") offsets X-Git-Tag: firmware-tested-2012-08-04~6^2~2 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=bb9b0a23273a0b8d11074df6c1a1cbb514176ef7;p=marlin.git M206: always use homing ("homeing") offsets Previously the parameters set in M206 would only be used if a G82 command was sent with specific axis home values. This limits its usefulness. Really, we should have a way to adjust the XYZ homing of a machine in the eeprom. So as the first stage of this, make M206 affect every home command. The values set using M206 are now added to the configuration variables [XYZ]_HOME_POS. This is achieved by replacing all uses of [XYZ]_HOME_POS in the code by [XYZ]_HOME_POS_A which is a macro which includes the adjustment. Signed-off-by: Ian Jackson --- diff --git a/Marlin/Marlin.h b/Marlin/Marlin.h index 4123634..7645830 100644 --- a/Marlin/Marlin.h +++ b/Marlin/Marlin.h @@ -157,6 +157,10 @@ void manage_inactivity(byte debug); enum AxisEnum {X_AXIS=0, Y_AXIS=1, Z_AXIS=2, E_AXIS=3}; +#define X_HOME_POS_A (X_HOME_POS + add_homeing[X_AXIS]) +#define Y_HOME_POS_A (Y_HOME_POS + add_homeing[Y_AXIS]) +#define Z_HOME_POS_A (Z_HOME_POS + add_homeing[Z_AXIS]) + void FlushSerialRequestResend(); void ClearToSend(); diff --git a/Marlin/Marlin.pde b/Marlin/Marlin.pde index 73f1f41..dd40cdf 100644 --- a/Marlin/Marlin.pde +++ b/Marlin/Marlin.pde @@ -562,7 +562,7 @@ bool code_seen(char code) plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate/60, active_extruder); \ st_synchronize();\ \ - current_position[LETTER##_AXIS] = LETTER##_HOME_POS;\ + current_position[LETTER##_AXIS] = LETTER##_HOME_POS_A;\ destination[LETTER##_AXIS] = current_position[LETTER##_AXIS];\ feedrate = 0.0;\ endstops_hit_on_purpose();\ @@ -676,8 +676,8 @@ void process_commands() plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate/60, active_extruder); st_synchronize(); - current_position[X_AXIS] = X_HOME_POS; - current_position[Y_AXIS] = Y_HOME_POS; + current_position[X_AXIS] = X_HOME_POS_A; + current_position[Y_AXIS] = Y_HOME_POS_A; 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]; diff --git a/Marlin/motion_control.cpp b/Marlin/motion_control.cpp index f11d8c8..6bcea41 100644 --- a/Marlin/motion_control.cpp +++ b/Marlin/motion_control.cpp @@ -126,9 +126,9 @@ void mc_arc(float *position, float *target, float *offset, uint8_t axis_0, uint8 arc_target[E_AXIS] += extruder_per_segment; if (min_software_endstops) { - if (arc_target[X_AXIS] < X_HOME_POS) arc_target[X_AXIS] = X_HOME_POS; - if (arc_target[Y_AXIS] < Y_HOME_POS) arc_target[Y_AXIS] = Y_HOME_POS; - if (arc_target[Z_AXIS] < Z_HOME_POS) arc_target[Z_AXIS] = Z_HOME_POS; + if (arc_target[X_AXIS] < X_HOME_POS_A) arc_target[X_AXIS] = X_HOME_POS_A; + if (arc_target[Y_AXIS] < Y_HOME_POS_A) arc_target[Y_AXIS] = Y_HOME_POS_A; + if (arc_target[Z_AXIS] < Z_HOME_POS_A) arc_target[Z_AXIS] = Z_HOME_POS_A; } if (max_software_endstops) { diff --git a/README.md b/README.md index 86dd93d..fb2c189 100644 --- a/README.md +++ b/README.md @@ -152,6 +152,7 @@ Movement variables: * M202 - Set max acceleration in units/s^2 for travel moves (M202 X1000 Y1000) Unused in Marlin!! * M203 - Set maximum feedrate that your machine can sustain (M203 X200 Y200 Z300 E10000) in mm/sec * M204 - Set default acceleration: S normal moves T filament only moves (M204 S3000 T7000) im mm/sec^2 also sets minimum segment time in ms (B20000) to prevent buffer underruns and M20 minimum feedrate +* M206 - set home offsets. This sets the X,Y,Z coordinates of the endstops (and is added to the {X,Y,Z}_HOME_POS configuration options (and is also added to the coordinates, if any, provided to G82, as with earlier firmware) * M220 - set build speed mulitplying S:factor in percent ; aka "realtime tuneing in the gcode". So you can slow down if you have islands in one height-range, and speed up otherwise. * M221 - set the extrude multiplying S:factor in percent * M400 - Finish all buffered moves.