Allow NO_WORKSPACE_OFFSETS with DELTA_AUTO_CALIBRATION
- On `DELTA` the `M665 H` option supplants `M206` - On `DELTA` `NO_WORKSPACE_OFFSETS` only reverts `G92` behavior - Spawn 4 conditionals based on `NO_WORKSPACE_OFFSETS` - Optimize coordinate space conversion for `DELTA` workspace - To keep EEPROM version, retain `home_offset[XYZ]`, just ignore XY
This commit is contained in:
		
							parent
							
								
									40dfafbe89
								
							
						
					
					
						commit
						24882adfbf
					
				| @ -805,6 +805,15 @@ | |||||||
|     #define HAS_FOLDER_SORTING (FOLDER_SORTING || ENABLED(SDSORT_GCODE)) |     #define HAS_FOLDER_SORTING (FOLDER_SORTING || ENABLED(SDSORT_GCODE)) | ||||||
|   #endif |   #endif | ||||||
| 
 | 
 | ||||||
|  |   // Updated G92 behavior shifts the workspace
 | ||||||
|  |   #define HAS_POSITION_SHIFT DISABLED(NO_WORKSPACE_OFFSETS) | ||||||
|  |   // The home offset also shifts the coordinate space
 | ||||||
|  |   #define HAS_HOME_OFFSET (DISABLED(NO_WORKSPACE_OFFSETS) || ENABLED(DELTA)) | ||||||
|  |   // Either offset yields extra calculations on all moves
 | ||||||
|  |   #define HAS_WORKSPACE_OFFSET (HAS_POSITION_SHIFT || HAS_HOME_OFFSET) | ||||||
|  |   // M206 doesn't apply to DELTA
 | ||||||
|  |   #define HAS_M206_COMMAND (HAS_HOME_OFFSET && DISABLED(DELTA)) | ||||||
|  | 
 | ||||||
|   // LCD timeout to status screen default is 15s
 |   // LCD timeout to status screen default is 15s
 | ||||||
|   #ifndef LCD_TIMEOUT_TO_STATUS |   #ifndef LCD_TIMEOUT_TO_STATUS | ||||||
|     #define LCD_TIMEOUT_TO_STATUS 15000 |     #define LCD_TIMEOUT_TO_STATUS 15000 | ||||||
|  | |||||||
| @ -228,32 +228,52 @@ extern volatile bool wait_for_heatup; | |||||||
| extern float current_position[NUM_AXIS]; | extern float current_position[NUM_AXIS]; | ||||||
| 
 | 
 | ||||||
| // Workspace offsets
 | // Workspace offsets
 | ||||||
| #if DISABLED(NO_WORKSPACE_OFFSETS) | #if HAS_WORKSPACE_OFFSET | ||||||
|   extern float position_shift[XYZ], |   #if HAS_HOME_OFFSET | ||||||
|                home_offset[XYZ], |     extern float home_offset[XYZ]; | ||||||
|                workspace_offset[XYZ]; |   #endif | ||||||
|   #define LOGICAL_POSITION(POS, AXIS) ((POS) + workspace_offset[AXIS]) |   #if HAS_POSITION_SHIFT | ||||||
|   #define RAW_POSITION(POS, AXIS)     ((POS) - workspace_offset[AXIS]) |     extern float position_shift[XYZ]; | ||||||
| #else |   #endif | ||||||
|   #define LOGICAL_POSITION(POS, AXIS) (POS) |  | ||||||
|   #define RAW_POSITION(POS, AXIS)     (POS) |  | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #define LOGICAL_X_POSITION(POS)     LOGICAL_POSITION(POS, X_AXIS) | #if HAS_HOME_OFFSET && HAS_POSITION_SHIFT | ||||||
| #define LOGICAL_Y_POSITION(POS)     LOGICAL_POSITION(POS, Y_AXIS) |   extern float workspace_offset[XYZ]; | ||||||
| #define LOGICAL_Z_POSITION(POS)     LOGICAL_POSITION(POS, Z_AXIS) |   #define WORKSPACE_OFFSET(AXIS) workspace_offset[AXIS] | ||||||
| #define RAW_X_POSITION(POS)         RAW_POSITION(POS, X_AXIS) | #elif HAS_HOME_OFFSET | ||||||
| #define RAW_Y_POSITION(POS)         RAW_POSITION(POS, Y_AXIS) |   #define WORKSPACE_OFFSET(AXIS) home_offset[AXIS] | ||||||
| #define RAW_Z_POSITION(POS)         RAW_POSITION(POS, Z_AXIS) | #elif HAS_POSITION_SHIFT | ||||||
| #define RAW_CURRENT_POSITION(AXIS)  RAW_POSITION(current_position[AXIS], AXIS) |   #define WORKSPACE_OFFSET(AXIS) position_shift[AXIS] | ||||||
|  | #else | ||||||
|  |   #define WORKSPACE_OFFSET(AXIS) 0 | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
|  | #define LOGICAL_POSITION(POS, AXIS) ((POS) + WORKSPACE_OFFSET(AXIS)) | ||||||
|  | #define RAW_POSITION(POS, AXIS)     ((POS) - WORKSPACE_OFFSET(AXIS)) | ||||||
|  | 
 | ||||||
|  | #if HAS_POSITION_SHIFT || DISABLED(DELTA) | ||||||
|  |   #define LOGICAL_X_POSITION(POS)   LOGICAL_POSITION(POS, X_AXIS) | ||||||
|  |   #define LOGICAL_Y_POSITION(POS)   LOGICAL_POSITION(POS, Y_AXIS) | ||||||
|  |   #define RAW_X_POSITION(POS)       RAW_POSITION(POS, X_AXIS) | ||||||
|  |   #define RAW_Y_POSITION(POS)       RAW_POSITION(POS, Y_AXIS) | ||||||
|  | #else | ||||||
|  |   #define LOGICAL_X_POSITION(POS)   (POS) | ||||||
|  |   #define LOGICAL_Y_POSITION(POS)   (POS) | ||||||
|  |   #define RAW_X_POSITION(POS)       (POS) | ||||||
|  |   #define RAW_Y_POSITION(POS)       (POS) | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #define LOGICAL_Z_POSITION(POS)     LOGICAL_POSITION(POS, Z_AXIS) | ||||||
|  | #define RAW_Z_POSITION(POS)         RAW_POSITION(POS, Z_AXIS) | ||||||
|  | #define RAW_CURRENT_POSITION(A)     RAW_##A##_POSITION(current_position[A##_AXIS]) | ||||||
|  | 
 | ||||||
|  | // Hotend Offsets
 | ||||||
| #if HOTENDS > 1 | #if HOTENDS > 1 | ||||||
|   extern float hotend_offset[XYZ][HOTENDS]; |   extern float hotend_offset[XYZ][HOTENDS]; | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| // Software Endstops
 | // Software Endstops
 | ||||||
| extern float soft_endstop_min[XYZ]; | extern float soft_endstop_min[XYZ], soft_endstop_max[XYZ]; | ||||||
| extern float soft_endstop_max[XYZ]; |  | ||||||
| 
 | 
 | ||||||
| #if HAS_SOFTWARE_ENDSTOPS | #if HAS_SOFTWARE_ENDSTOPS | ||||||
|   extern bool soft_endstops_enabled; |   extern bool soft_endstops_enabled; | ||||||
| @ -263,7 +283,7 @@ extern float soft_endstop_max[XYZ]; | |||||||
|   #define clamp_to_software_endstops(x) NOOP |   #define clamp_to_software_endstops(x) NOOP | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #if DISABLED(NO_WORKSPACE_OFFSETS) || ENABLED(DUAL_X_CARRIAGE) || ENABLED(DELTA) | #if HAS_WORKSPACE_OFFSET || ENABLED(DUAL_X_CARRIAGE) | ||||||
|   void update_software_endstops(const AxisEnum axis); |   void update_software_endstops(const AxisEnum axis); | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -147,7 +147,7 @@ | |||||||
|             S<print> T<travel> minimum speeds |             S<print> T<travel> minimum speeds | ||||||
|             B<minimum segment time> |             B<minimum segment time> | ||||||
|             X<max X jerk>, Y<max Y jerk>, Z<max Z jerk>, E<max E jerk> |             X<max X jerk>, Y<max Y jerk>, Z<max Z jerk>, E<max E jerk> | ||||||
|  * M206 - Set additional homing offset. |  * M206 - Set additional homing offset. (Disabled by NO_WORKSPACE_OFFSETS or DELTA) | ||||||
|  * M207 - Set Retract Length: S<length>, Feedrate: F<units/min>, and Z lift: Z<distance>. (Requires FWRETRACT) |  * M207 - Set Retract Length: S<length>, Feedrate: F<units/min>, and Z lift: Z<distance>. (Requires FWRETRACT) | ||||||
|  * M208 - Set Recover (unretract) Additional (!) Length: S<length> and Feedrate: F<units/min>. (Requires FWRETRACT) |  * M208 - Set Recover (unretract) Additional (!) Length: S<length> and Feedrate: F<units/min>. (Requires FWRETRACT) | ||||||
|  * M209 - Turn Automatic Retract Detection on/off: S<0|1> (For slicers that don't support G10/11). (Requires FWRETRACT) |  * M209 - Turn Automatic Retract Detection on/off: S<0|1> (For slicers that don't support G10/11). (Requires FWRETRACT) | ||||||
| @ -180,7 +180,7 @@ | |||||||
|  * M410 - Quickstop. Abort all planned moves. |  * M410 - Quickstop. Abort all planned moves. | ||||||
|  * M420 - Enable/Disable Leveling (with current values) S1=enable S0=disable (Requires MESH_BED_LEVELING or ABL) |  * M420 - Enable/Disable Leveling (with current values) S1=enable S0=disable (Requires MESH_BED_LEVELING or ABL) | ||||||
|  * M421 - Set a single Z coordinate in the Mesh Leveling grid. X<units> Y<units> Z<units> (Requires MESH_BED_LEVELING or AUTO_BED_LEVELING_UBL) |  * M421 - Set a single Z coordinate in the Mesh Leveling grid. X<units> Y<units> Z<units> (Requires MESH_BED_LEVELING or AUTO_BED_LEVELING_UBL) | ||||||
|  * M428 - Set the home_offset based on the current_position. Nearest edge applies. |  * M428 - Set the home_offset based on the current_position. Nearest edge applies. (Disabled by NO_WORKSPACE_OFFSETS or DELTA) | ||||||
|  * M500 - Store parameters in EEPROM. (Requires EEPROM_SETTINGS) |  * M500 - Store parameters in EEPROM. (Requires EEPROM_SETTINGS) | ||||||
|  * M501 - Restore parameters from EEPROM. (Requires EEPROM_SETTINGS) |  * M501 - Restore parameters from EEPROM. (Requires EEPROM_SETTINGS) | ||||||
|  * M502 - Revert to the default "factory settings". ** Does not write them to EEPROM! ** |  * M502 - Revert to the default "factory settings". ** Does not write them to EEPROM! ** | ||||||
| @ -409,18 +409,20 @@ bool axis_relative_modes[] = AXIS_RELATIVE_MODES, | |||||||
| float filament_size[EXTRUDERS] = ARRAY_BY_EXTRUDERS1(DEFAULT_NOMINAL_FILAMENT_DIA), | float filament_size[EXTRUDERS] = ARRAY_BY_EXTRUDERS1(DEFAULT_NOMINAL_FILAMENT_DIA), | ||||||
|       volumetric_multiplier[EXTRUDERS] = ARRAY_BY_EXTRUDERS1(1.0); |       volumetric_multiplier[EXTRUDERS] = ARRAY_BY_EXTRUDERS1(1.0); | ||||||
| 
 | 
 | ||||||
| #if DISABLED(NO_WORKSPACE_OFFSETS) | #if HAS_WORKSPACE_OFFSET | ||||||
| 
 |   #if HAS_POSITION_SHIFT | ||||||
|   // The distance that XYZ has been offset by G92. Reset by G28.
 |     // The distance that XYZ has been offset by G92. Reset by G28.
 | ||||||
|   float position_shift[XYZ] = { 0 }; |     float position_shift[XYZ] = { 0 }; | ||||||
| 
 |   #endif | ||||||
|   // This offset is added to the configured home position.
 |   #if HAS_HOME_OFFSET | ||||||
|   // Set by M206, M428, or menu item. Saved to EEPROM.
 |     // This offset is added to the configured home position.
 | ||||||
|   float home_offset[XYZ] = { 0 }; |     // Set by M206, M428, or menu item. Saved to EEPROM.
 | ||||||
| 
 |     float home_offset[XYZ] = { 0 }; | ||||||
|   // The above two are combined to save on computes
 |   #endif | ||||||
|   float workspace_offset[XYZ] = { 0 }; |   #if HAS_HOME_OFFSET && HAS_POSITION_SHIFT | ||||||
| 
 |     // The above two are combined to save on computes
 | ||||||
|  |     float workspace_offset[XYZ] = { 0 }; | ||||||
|  |   #endif | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| // Software Endstops are based on the configured limits.
 | // Software Endstops are based on the configured limits.
 | ||||||
| @ -1382,7 +1384,7 @@ bool get_target_extruder_from_command(int code) { | |||||||
| 
 | 
 | ||||||
| #endif // DUAL_X_CARRIAGE
 | #endif // DUAL_X_CARRIAGE
 | ||||||
| 
 | 
 | ||||||
| #if DISABLED(NO_WORKSPACE_OFFSETS) || ENABLED(DUAL_X_CARRIAGE) || ENABLED(DELTA) | #if HAS_WORKSPACE_OFFSET || ENABLED(DUAL_X_CARRIAGE) | ||||||
| 
 | 
 | ||||||
|   /**
 |   /**
 | ||||||
|    * Software endstops can be used to monitor the open end of |    * Software endstops can be used to monitor the open end of | ||||||
| @ -1394,7 +1396,18 @@ bool get_target_extruder_from_command(int code) { | |||||||
|    * at the same positions relative to the machine. |    * at the same positions relative to the machine. | ||||||
|    */ |    */ | ||||||
|   void update_software_endstops(const AxisEnum axis) { |   void update_software_endstops(const AxisEnum axis) { | ||||||
|     const float offs = workspace_offset[axis] = home_offset[axis] + position_shift[axis]; |     const float offs = 0.0 | ||||||
|  |       #if HAS_HOME_OFFSET | ||||||
|  |         + home_offset[axis] | ||||||
|  |       #endif | ||||||
|  |       #if HAS_POSITION_SHIFT | ||||||
|  |         + position_shift[axis] | ||||||
|  |       #endif | ||||||
|  |     ; | ||||||
|  | 
 | ||||||
|  |     #if HAS_HOME_OFFSET && HAS_POSITION_SHIFT | ||||||
|  |       workspace_offset[axis] = offs; | ||||||
|  |     #endif | ||||||
| 
 | 
 | ||||||
|     #if ENABLED(DUAL_X_CARRIAGE) |     #if ENABLED(DUAL_X_CARRIAGE) | ||||||
|       if (axis == X_AXIS) { |       if (axis == X_AXIS) { | ||||||
| @ -1427,8 +1440,10 @@ bool get_target_extruder_from_command(int code) { | |||||||
|     #if ENABLED(DEBUG_LEVELING_FEATURE) |     #if ENABLED(DEBUG_LEVELING_FEATURE) | ||||||
|       if (DEBUGGING(LEVELING)) { |       if (DEBUGGING(LEVELING)) { | ||||||
|         SERIAL_ECHOPAIR("For ", axis_codes[axis]); |         SERIAL_ECHOPAIR("For ", axis_codes[axis]); | ||||||
|         #if DISABLED(NO_WORKSPACE_OFFSETS) |         #if HAS_HOME_OFFSET | ||||||
|           SERIAL_ECHOPAIR(" axis:\n home_offset = ", home_offset[axis]); |           SERIAL_ECHOPAIR(" axis:\n home_offset = ", home_offset[axis]); | ||||||
|  |         #endif | ||||||
|  |         #if HAS_POSITION_SHIFT | ||||||
|           SERIAL_ECHOPAIR("\n position_shift = ", position_shift[axis]); |           SERIAL_ECHOPAIR("\n position_shift = ", position_shift[axis]); | ||||||
|         #endif |         #endif | ||||||
|         SERIAL_ECHOPAIR("\n soft_endstop_min = ", soft_endstop_min[axis]); |         SERIAL_ECHOPAIR("\n soft_endstop_min = ", soft_endstop_min[axis]); | ||||||
| @ -1442,9 +1457,9 @@ bool get_target_extruder_from_command(int code) { | |||||||
|     #endif |     #endif | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
| #endif // NO_WORKSPACE_OFFSETS
 | #endif // HAS_WORKSPACE_OFFSET || DUAL_X_CARRIAGE
 | ||||||
| 
 | 
 | ||||||
| #if DISABLED(NO_WORKSPACE_OFFSETS) && DISABLED(DELTA) | #if HAS_M206_COMMAND | ||||||
|   /**
 |   /**
 | ||||||
|    * Change the home offset for an axis, update the current |    * Change the home offset for an axis, update the current | ||||||
|    * position and the software endstops to retain the same |    * position and the software endstops to retain the same | ||||||
| @ -1458,7 +1473,7 @@ bool get_target_extruder_from_command(int code) { | |||||||
|     home_offset[axis] = v; |     home_offset[axis] = v; | ||||||
|     update_software_endstops(axis); |     update_software_endstops(axis); | ||||||
|   } |   } | ||||||
| #endif // !NO_WORKSPACE_OFFSETS && !DELTA
 | #endif // HAS_M206_COMMAND
 | ||||||
| 
 | 
 | ||||||
| /**
 | /**
 | ||||||
|  * Set an axis' current position to its home position (after homing). |  * Set an axis' current position to its home position (after homing). | ||||||
| @ -1489,7 +1504,7 @@ static void set_axis_is_at_home(AxisEnum axis) { | |||||||
| 
 | 
 | ||||||
|   axis_known_position[axis] = axis_homed[axis] = true; |   axis_known_position[axis] = axis_homed[axis] = true; | ||||||
| 
 | 
 | ||||||
|   #if DISABLED(NO_WORKSPACE_OFFSETS) |   #if HAS_POSITION_SHIFT | ||||||
|     position_shift[axis] = 0; |     position_shift[axis] = 0; | ||||||
|     update_software_endstops(axis); |     update_software_endstops(axis); | ||||||
|   #endif |   #endif | ||||||
| @ -1565,7 +1580,7 @@ static void set_axis_is_at_home(AxisEnum axis) { | |||||||
| 
 | 
 | ||||||
|   #if ENABLED(DEBUG_LEVELING_FEATURE) |   #if ENABLED(DEBUG_LEVELING_FEATURE) | ||||||
|     if (DEBUGGING(LEVELING)) { |     if (DEBUGGING(LEVELING)) { | ||||||
|       #if DISABLED(NO_WORKSPACE_OFFSETS) |       #if HAS_HOME_OFFSET | ||||||
|         SERIAL_ECHOPAIR("> home_offset[", axis_codes[axis]); |         SERIAL_ECHOPAIR("> home_offset[", axis_codes[axis]); | ||||||
|         SERIAL_ECHOLNPAIR("] = ", home_offset[axis]); |         SERIAL_ECHOLNPAIR("] = ", home_offset[axis]); | ||||||
|       #endif |       #endif | ||||||
| @ -5366,7 +5381,7 @@ inline void gcode_G92() { | |||||||
|         current_position[i] = code_value_axis_units(i); |         current_position[i] = code_value_axis_units(i); | ||||||
|         if (i != E_AXIS) didXYZ = true; |         if (i != E_AXIS) didXYZ = true; | ||||||
|       #else |       #else | ||||||
|         #if DISABLED(NO_WORKSPACE_OFFSETS) |         #if HAS_POSITION_SHIFT | ||||||
|           float p = current_position[i]; |           float p = current_position[i]; | ||||||
|         #endif |         #endif | ||||||
|         float v = code_value_axis_units(i); |         float v = code_value_axis_units(i); | ||||||
| @ -5375,7 +5390,7 @@ inline void gcode_G92() { | |||||||
| 
 | 
 | ||||||
|         if (i != E_AXIS) { |         if (i != E_AXIS) { | ||||||
|           didXYZ = true; |           didXYZ = true; | ||||||
|           #if DISABLED(NO_WORKSPACE_OFFSETS) |           #if HAS_POSITION_SHIFT | ||||||
|             position_shift[i] += v - p; // Offset the coordinate space
 |             position_shift[i] += v - p; // Offset the coordinate space
 | ||||||
|             update_software_endstops((AxisEnum)i); |             update_software_endstops((AxisEnum)i); | ||||||
|           #endif |           #endif | ||||||
| @ -7382,7 +7397,7 @@ inline void gcode_M205() { | |||||||
|   if (code_seen('E')) planner.max_jerk[E_AXIS] = code_value_axis_units(E_AXIS); |   if (code_seen('E')) planner.max_jerk[E_AXIS] = code_value_axis_units(E_AXIS); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| #if DISABLED(NO_WORKSPACE_OFFSETS) && DISABLED(DELTA) | #if HAS_M206_COMMAND | ||||||
| 
 | 
 | ||||||
|   /**
 |   /**
 | ||||||
|    * M206: Set Additional Homing Offset (X Y Z). SCARA aliases T=X, P=Y |    * M206: Set Additional Homing Offset (X Y Z). SCARA aliases T=X, P=Y | ||||||
| @ -7401,7 +7416,7 @@ inline void gcode_M205() { | |||||||
|     report_current_position(); |     report_current_position(); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
| #endif // NO_WORKSPACE_OFFSETS
 | #endif // HAS_M206_COMMAND
 | ||||||
| 
 | 
 | ||||||
| #if ENABLED(DELTA) | #if ENABLED(DELTA) | ||||||
|   /**
 |   /**
 | ||||||
| @ -8280,7 +8295,7 @@ void quickstop_stepper() { | |||||||
| 
 | 
 | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #if DISABLED(NO_WORKSPACE_OFFSETS) && DISABLED(DELTA) | #if HAS_M206_COMMAND | ||||||
| 
 | 
 | ||||||
|   /**
 |   /**
 | ||||||
|    * M428: Set home_offset based on the distance between the |    * M428: Set home_offset based on the distance between the | ||||||
| @ -8322,7 +8337,7 @@ void quickstop_stepper() { | |||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
| #endif // NO_WORKSPACE_OFFSETS
 | #endif // HAS_M206_COMMAND
 | ||||||
| 
 | 
 | ||||||
| /**
 | /**
 | ||||||
|  * M500: Store settings in EEPROM |  * M500: Store settings in EEPROM | ||||||
| @ -9301,9 +9316,9 @@ void tool_change(const uint8_t tmp_extruder, const float fr_mm_s/*=0.0*/, bool n | |||||||
|           // The newly-selected extruder XY is actually at...
 |           // The newly-selected extruder XY is actually at...
 | ||||||
|           current_position[X_AXIS] += xydiff[X_AXIS]; |           current_position[X_AXIS] += xydiff[X_AXIS]; | ||||||
|           current_position[Y_AXIS] += xydiff[Y_AXIS]; |           current_position[Y_AXIS] += xydiff[Y_AXIS]; | ||||||
|           #if DISABLED(NO_WORKSPACE_OFFSETS) || ENABLED(DUAL_X_CARRIAGE) |           #if HAS_WORKSPACE_OFFSET || ENABLED(DUAL_X_CARRIAGE) | ||||||
|             for (uint8_t i = X_AXIS; i <= Y_AXIS; i++) { |             for (uint8_t i = X_AXIS; i <= Y_AXIS; i++) { | ||||||
|               #if DISABLED(NO_WORKSPACE_OFFSETS) |               #if HAS_POSITION_SHIFT | ||||||
|                 position_shift[i] += xydiff[i]; |                 position_shift[i] += xydiff[i]; | ||||||
|               #endif |               #endif | ||||||
|               update_software_endstops((AxisEnum)i); |               update_software_endstops((AxisEnum)i); | ||||||
| @ -9895,7 +9910,7 @@ void process_next_command() { | |||||||
|         gcode_M205(); |         gcode_M205(); | ||||||
|         break; |         break; | ||||||
| 
 | 
 | ||||||
|       #if DISABLED(NO_WORKSPACE_OFFSETS) && DISABLED(DELTA) |       #if HAS_M206_COMMAND | ||||||
|         case 206: // M206: Set home offsets
 |         case 206: // M206: Set home offsets
 | ||||||
|           gcode_M206(); |           gcode_M206(); | ||||||
|           break; |           break; | ||||||
| @ -10063,7 +10078,7 @@ void process_next_command() { | |||||||
|           break; |           break; | ||||||
|       #endif |       #endif | ||||||
| 
 | 
 | ||||||
|       #if DISABLED(NO_WORKSPACE_OFFSETS) && DISABLED(DELTA) |       #if HAS_M206_COMMAND | ||||||
|         case 428: // M428: Apply current_position to home_offset
 |         case 428: // M428: Apply current_position to home_offset
 | ||||||
|           gcode_M428(); |           gcode_M428(); | ||||||
|           break; |           break; | ||||||
| @ -10584,8 +10599,8 @@ void set_current_from_steppers_for_axis(const AxisEnum axis) { | |||||||
|    * splitting the move where it crosses mesh borders. |    * splitting the move where it crosses mesh borders. | ||||||
|    */ |    */ | ||||||
|   void mesh_line_to_destination(float fr_mm_s, uint8_t x_splits = 0xff, uint8_t y_splits = 0xff) { |   void mesh_line_to_destination(float fr_mm_s, uint8_t x_splits = 0xff, uint8_t y_splits = 0xff) { | ||||||
|     int cx1 = mbl.cell_index_x(RAW_CURRENT_POSITION(X_AXIS)), |     int cx1 = mbl.cell_index_x(RAW_CURRENT_POSITION(X)), | ||||||
|         cy1 = mbl.cell_index_y(RAW_CURRENT_POSITION(Y_AXIS)), |         cy1 = mbl.cell_index_y(RAW_CURRENT_POSITION(Y)), | ||||||
|         cx2 = mbl.cell_index_x(RAW_X_POSITION(destination[X_AXIS])), |         cx2 = mbl.cell_index_x(RAW_X_POSITION(destination[X_AXIS])), | ||||||
|         cy2 = mbl.cell_index_y(RAW_Y_POSITION(destination[Y_AXIS])); |         cy2 = mbl.cell_index_y(RAW_Y_POSITION(destination[Y_AXIS])); | ||||||
|     NOMORE(cx1, GRID_MAX_POINTS_X - 2); |     NOMORE(cx1, GRID_MAX_POINTS_X - 2); | ||||||
| @ -11799,7 +11814,7 @@ void setup() { | |||||||
|   // This also updates variables in the planner, elsewhere
 |   // This also updates variables in the planner, elsewhere
 | ||||||
|   (void)settings.load(); |   (void)settings.load(); | ||||||
| 
 | 
 | ||||||
|   #if DISABLED(NO_WORKSPACE_OFFSETS) |   #if HAS_M206_COMMAND | ||||||
|     // Initialize current position based on home_offset
 |     // Initialize current position based on home_offset
 | ||||||
|     COPY(current_position, home_offset); |     COPY(current_position, home_offset); | ||||||
|   #else |   #else | ||||||
|  | |||||||
| @ -391,13 +391,6 @@ | |||||||
|   #error "To use BED_LIMIT_SWITCHING you must disable PIDTEMPBED." |   #error "To use BED_LIMIT_SWITCHING you must disable PIDTEMPBED." | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| /**
 |  | ||||||
|  * Delta Auto calibration |  | ||||||
|  */ |  | ||||||
| #if ENABLED(DELTA_AUTO_CALIBRATION) && ENABLED(NO_WORKSPACE_OFFSETS) |  | ||||||
|   #error "DELTA_AUTO_CALIBRATION is incompatible with NO_WORKSPACE_OFFSETS." |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| /**
 | /**
 | ||||||
|  * Allow only one bed leveling option to be defined |  * Allow only one bed leveling option to be defined | ||||||
|  */ |  */ | ||||||
|  | |||||||
| @ -202,7 +202,7 @@ void MarlinSettings::postprocess() { | |||||||
| 
 | 
 | ||||||
|   calculate_volumetric_multipliers(); |   calculate_volumetric_multipliers(); | ||||||
| 
 | 
 | ||||||
|   #if DISABLED(NO_WORKSPACE_OFFSETS) || ENABLED(DUAL_X_CARRIAGE) || ENABLED(DELTA) |   #if HAS_HOME_OFFSET || ENABLED(DUAL_X_CARRIAGE) | ||||||
|     // Software endstops depend on home_offset
 |     // Software endstops depend on home_offset
 | ||||||
|     LOOP_XYZ(i) update_software_endstops((AxisEnum)i); |     LOOP_XYZ(i) update_software_endstops((AxisEnum)i); | ||||||
|   #endif |   #endif | ||||||
| @ -299,7 +299,7 @@ void MarlinSettings::postprocess() { | |||||||
|     EEPROM_WRITE(planner.min_travel_feedrate_mm_s); |     EEPROM_WRITE(planner.min_travel_feedrate_mm_s); | ||||||
|     EEPROM_WRITE(planner.min_segment_time); |     EEPROM_WRITE(planner.min_segment_time); | ||||||
|     EEPROM_WRITE(planner.max_jerk); |     EEPROM_WRITE(planner.max_jerk); | ||||||
|     #if ENABLED(NO_WORKSPACE_OFFSETS) |     #if !HAS_HOME_OFFSET | ||||||
|       const float home_offset[XYZ] = { 0 }; |       const float home_offset[XYZ] = { 0 }; | ||||||
|     #endif |     #endif | ||||||
|     #if ENABLED(DELTA) |     #if ENABLED(DELTA) | ||||||
| @ -653,7 +653,7 @@ void MarlinSettings::postprocess() { | |||||||
|       EEPROM_READ(planner.min_segment_time); |       EEPROM_READ(planner.min_segment_time); | ||||||
|       EEPROM_READ(planner.max_jerk); |       EEPROM_READ(planner.max_jerk); | ||||||
| 
 | 
 | ||||||
|       #if ENABLED(NO_WORKSPACE_OFFSETS) |       #if !HAS_HOME_OFFSET | ||||||
|         float home_offset[XYZ]; |         float home_offset[XYZ]; | ||||||
|       #endif |       #endif | ||||||
|       EEPROM_READ(home_offset); |       EEPROM_READ(home_offset); | ||||||
| @ -999,7 +999,7 @@ void MarlinSettings::reset() { | |||||||
|     planner.z_fade_height = 0.0; |     planner.z_fade_height = 0.0; | ||||||
|   #endif |   #endif | ||||||
| 
 | 
 | ||||||
|   #if DISABLED(NO_WORKSPACE_OFFSETS) |   #if HAS_HOME_OFFSET | ||||||
|     ZERO(home_offset); |     ZERO(home_offset); | ||||||
|   #endif |   #endif | ||||||
| 
 | 
 | ||||||
| @ -1039,10 +1039,10 @@ void MarlinSettings::reset() { | |||||||
|     delta_segments_per_second = DELTA_SEGMENTS_PER_SECOND; |     delta_segments_per_second = DELTA_SEGMENTS_PER_SECOND; | ||||||
|     COPY(delta_diagonal_rod_trim, drt); |     COPY(delta_diagonal_rod_trim, drt); | ||||||
|     COPY(delta_tower_angle_trim, dta); |     COPY(delta_tower_angle_trim, dta); | ||||||
|     #if ENABLED(DELTA) |     home_offset[Z_AXIS] = 0; | ||||||
|       home_offset[Z_AXIS] = 0; | 
 | ||||||
|     #endif |  | ||||||
|   #elif ENABLED(Z_DUAL_ENDSTOPS) |   #elif ENABLED(Z_DUAL_ENDSTOPS) | ||||||
|  | 
 | ||||||
|     float z_endstop_adj = |     float z_endstop_adj = | ||||||
|       #ifdef Z_DUAL_ENDSTOPS_ADJUSTMENT |       #ifdef Z_DUAL_ENDSTOPS_ADJUSTMENT | ||||||
|         Z_DUAL_ENDSTOPS_ADJUSTMENT |         Z_DUAL_ENDSTOPS_ADJUSTMENT | ||||||
| @ -1050,6 +1050,7 @@ void MarlinSettings::reset() { | |||||||
|         0 |         0 | ||||||
|       #endif |       #endif | ||||||
|     ; |     ; | ||||||
|  | 
 | ||||||
|   #endif |   #endif | ||||||
| 
 | 
 | ||||||
|   #if ENABLED(ULTIPANEL) |   #if ENABLED(ULTIPANEL) | ||||||
| @ -1254,7 +1255,7 @@ void MarlinSettings::reset() { | |||||||
|     SERIAL_ECHOPAIR(" E", planner.max_jerk[E_AXIS]); |     SERIAL_ECHOPAIR(" E", planner.max_jerk[E_AXIS]); | ||||||
|     SERIAL_EOL; |     SERIAL_EOL; | ||||||
| 
 | 
 | ||||||
|     #if DISABLED(NO_WORKSPACE_OFFSETS) && DISABLED(DELTA) |     #if HAS_M206_COMMAND | ||||||
|       CONFIG_ECHO_START; |       CONFIG_ECHO_START; | ||||||
|       if (!forReplay) { |       if (!forReplay) { | ||||||
|         SERIAL_ECHOLNPGM("Home offset (mm)"); |         SERIAL_ECHOLNPGM("Home offset (mm)"); | ||||||
|  | |||||||
| @ -817,7 +817,7 @@ void kill_screen(const char* lcd_msg) { | |||||||
|    * |    * | ||||||
|    */ |    */ | ||||||
| 
 | 
 | ||||||
|   #if DISABLED(NO_WORKSPACE_OFFSETS) && DISABLED(DELTA) |   #if HAS_M206_COMMAND | ||||||
|     /**
 |     /**
 | ||||||
|      * Set the home offset based on the current_position |      * Set the home offset based on the current_position | ||||||
|      */ |      */ | ||||||
| @ -1672,7 +1672,7 @@ void kill_screen(const char* lcd_msg) { | |||||||
| 
 | 
 | ||||||
|     #endif |     #endif | ||||||
| 
 | 
 | ||||||
|     #if DISABLED(NO_WORKSPACE_OFFSETS) && DISABLED(DELTA) |     #if HAS_M206_COMMAND | ||||||
|       //
 |       //
 | ||||||
|       // Set Home Offsets
 |       // Set Home Offsets
 | ||||||
|       //
 |       //
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user