From 85162da0df26de66280be5f0c8279ecf9bdabd4a Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 23 Feb 2018 00:42:55 -0600 Subject: [PATCH] Fix Z value on HD44780 (#9770) --- Marlin/Marlin.h | 50 ++++++++++++++-------------------- Marlin/ultralcd_impl_HD44780.h | 2 +- 2 files changed, 22 insertions(+), 30 deletions(-) diff --git a/Marlin/Marlin.h b/Marlin/Marlin.h index 0aea84650..e62c5202c 100644 --- a/Marlin/Marlin.h +++ b/Marlin/Marlin.h @@ -244,7 +244,9 @@ extern volatile bool wait_for_heatup; extern float current_position[XYZE], destination[XYZE]; -// Workspace offsets +/** + * Workspace offsets + */ #if HAS_WORKSPACE_OFFSET #if HAS_HOME_OFFSET extern float home_offset[XYZ]; @@ -252,36 +254,26 @@ extern float current_position[XYZE], destination[XYZE]; #if HAS_POSITION_SHIFT extern float position_shift[XYZ]; #endif -#endif - -#if HAS_HOME_OFFSET && HAS_POSITION_SHIFT - extern float workspace_offset[XYZ]; - #define WORKSPACE_OFFSET(AXIS) workspace_offset[AXIS] -#elif HAS_HOME_OFFSET - #define WORKSPACE_OFFSET(AXIS) home_offset[AXIS] -#elif HAS_POSITION_SHIFT - #define WORKSPACE_OFFSET(AXIS) position_shift[AXIS] + #if HAS_HOME_OFFSET && HAS_POSITION_SHIFT + extern float workspace_offset[XYZ]; + #define WORKSPACE_OFFSET(AXIS) workspace_offset[AXIS] + #elif HAS_HOME_OFFSET + #define WORKSPACE_OFFSET(AXIS) home_offset[AXIS] + #elif HAS_POSITION_SHIFT + #define WORKSPACE_OFFSET(AXIS) position_shift[AXIS] + #endif + #define NATIVE_TO_LOGICAL(POS, AXIS) ((POS) + WORKSPACE_OFFSET(AXIS)) + #define LOGICAL_TO_NATIVE(POS, AXIS) ((POS) - WORKSPACE_OFFSET(AXIS)) #else - #define WORKSPACE_OFFSET(AXIS) 0 + #define NATIVE_TO_LOGICAL(POS, AXIS) (POS) + #define LOGICAL_TO_NATIVE(POS, AXIS) (POS) #endif - -#define NATIVE_TO_LOGICAL(POS, AXIS) ((POS) + WORKSPACE_OFFSET(AXIS)) -#define LOGICAL_TO_NATIVE(POS, AXIS) ((POS) - WORKSPACE_OFFSET(AXIS)) - -#if HAS_POSITION_SHIFT || DISABLED(DELTA) - #define LOGICAL_X_POSITION(POS) NATIVE_TO_LOGICAL(POS, X_AXIS) - #define LOGICAL_Y_POSITION(POS) NATIVE_TO_LOGICAL(POS, Y_AXIS) - #define RAW_X_POSITION(POS) LOGICAL_TO_NATIVE(POS, X_AXIS) - #define RAW_Y_POSITION(POS) LOGICAL_TO_NATIVE(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) NATIVE_TO_LOGICAL(POS, Z_AXIS) -#define RAW_Z_POSITION(POS) LOGICAL_TO_NATIVE(POS, Z_AXIS) +#define LOGICAL_X_POSITION(POS) NATIVE_TO_LOGICAL(POS, X_AXIS) +#define LOGICAL_Y_POSITION(POS) NATIVE_TO_LOGICAL(POS, Y_AXIS) +#define LOGICAL_Z_POSITION(POS) NATIVE_TO_LOGICAL(POS, Z_AXIS) +#define RAW_X_POSITION(POS) LOGICAL_TO_NATIVE(POS, X_AXIS) +#define RAW_Y_POSITION(POS) LOGICAL_TO_NATIVE(POS, Y_AXIS) +#define RAW_Z_POSITION(POS) LOGICAL_TO_NATIVE(POS, Z_AXIS) // Hotend Offsets #if HOTENDS > 1 diff --git a/Marlin/ultralcd_impl_HD44780.h b/Marlin/ultralcd_impl_HD44780.h index a69534cce..0f87cbbb1 100644 --- a/Marlin/ultralcd_impl_HD44780.h +++ b/Marlin/ultralcd_impl_HD44780.h @@ -832,7 +832,7 @@ static void lcd_implementation_status_screen() { lcd.setCursor(LCD_WIDTH - 8, 1); _draw_axis_label(Z_AXIS, PSTR(MSG_Z), blink); - lcd.print(ftostr52sp(FIXFLOAT(current_position[Z_AXIS]))); + lcd.print(ftostr52sp(FIXFLOAT(LOGICAL_Y_POSITION(current_position[Z_AXIS])))); #if HAS_LEVELING && !TEMP_SENSOR_BED lcd.write(planner.leveling_active || blink ? '_' : ' ');