Browse Source

Clear up HAS_WORKSPACE_OFFSET meaning

pull/1/head
Scott Lahteine 6 years ago
parent
commit
2c9586be0c
  1. 10
      Marlin/src/inc/Conditionals_post.h
  2. 28
      Marlin/src/module/motion.cpp
  3. 8
      Marlin/src/module/motion.h

10
Marlin/src/inc/Conditionals_post.h

@ -1527,11 +1527,11 @@
// 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) && DISABLED(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))
#define HAS_HOME_OFFSET (DISABLED(NO_WORKSPACE_OFFSETS) && (IS_SCARA || IS_CARTESIAN))
// Cumulative offset to workspace to save some calculation
#define HAS_WORKSPACE_OFFSET (HAS_POSITION_SHIFT && HAS_HOME_OFFSET)
// M206 sets the home offset for Cartesian machines
#define HAS_M206_COMMAND (HAS_HOME_OFFSET && !IS_SCARA)
// LCD timeout to status screen default is 15s
#ifndef LCD_TIMEOUT_TO_STATUS

28
Marlin/src/module/motion.cpp

@ -138,20 +138,18 @@ float cartes[XYZ];
* The workspace can be offset by some commands, or
* these offsets may be omitted to save on computation.
*/
#if HAS_WORKSPACE_OFFSET
#if HAS_POSITION_SHIFT
// The distance that XYZ has been offset by G92. Reset by G28.
float position_shift[XYZ] = { 0 };
#endif
#if HAS_HOME_OFFSET
// This offset is added to the configured home position.
// Set by M206, M428, or menu item. Saved to EEPROM.
float home_offset[XYZ] = { 0 };
#endif
#if HAS_HOME_OFFSET && HAS_POSITION_SHIFT
// The above two are combined to save on computes
float workspace_offset[XYZ] = { 0 };
#endif
#if HAS_POSITION_SHIFT
// The distance that XYZ has been offset by G92. Reset by G28.
float position_shift[XYZ] = { 0 };
#endif
#if HAS_HOME_OFFSET
// This offset is added to the configured home position.
// Set by M206, M428, or menu item. Saved to EEPROM.
float home_offset[XYZ] = { 0 };
#endif
#if HAS_HOME_OFFSET && HAS_POSITION_SHIFT
// The above two are combined to save on computes
float workspace_offset[XYZ] = { 0 };
#endif
#if OLDSCHOOL_ABL
@ -1518,7 +1516,7 @@ void homeaxis(const AxisEnum axis) {
* at the same positions relative to the machine.
*/
void update_software_endstops(const AxisEnum axis) {
#if HAS_HOME_OFFSET && HAS_POSITION_SHIFT
#if HAS_HOME_OFFSET
workspace_offset[axis] = home_offset[axis] + position_shift[axis];
#endif

8
Marlin/src/module/motion.h

@ -211,14 +211,10 @@ void homeaxis(const AxisEnum axis);
void sensorless_homing_per_axis(const AxisEnum axis, const bool enable=true);
#endif
//
// Macros
//
/**
* Workspace offsets
*/
#if HAS_WORKSPACE_OFFSET
#if HAS_HOME_OFFSET || HAS_POSITION_SHIFT
#if HAS_HOME_OFFSET
extern float home_offset[XYZ];
#endif
@ -230,7 +226,7 @@ void homeaxis(const AxisEnum axis);
#define WORKSPACE_OFFSET(AXIS) workspace_offset[AXIS]
#elif HAS_HOME_OFFSET
#define WORKSPACE_OFFSET(AXIS) home_offset[AXIS]
#elif HAS_POSITION_SHIFT
#else
#define WORKSPACE_OFFSET(AXIS) position_shift[AXIS]
#endif
#define NATIVE_TO_LOGICAL(POS, AXIS) ((POS) + WORKSPACE_OFFSET(AXIS))

Loading…
Cancel
Save