diff --git a/Marlin/Marlin.h b/Marlin/Marlin.h index b463ba75d..237321712 100644 --- a/Marlin/Marlin.h +++ b/Marlin/Marlin.h @@ -259,6 +259,7 @@ extern float home_offset[3]; // axis[n].home_offset extern float min_pos[3]; // axis[n].min_pos extern float max_pos[3]; // axis[n].max_pos extern bool axis_known_position[3]; // axis[n].is_known +extern bool axis_homed[3]; // axis[n].is_homed #if ENABLED(DELTA) extern float delta[3]; diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index d985b15db..7e2ba0ed6 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -245,6 +245,7 @@ static float feedrate = 1500.0, saved_feedrate; float current_position[NUM_AXIS] = { 0.0 }; static float destination[NUM_AXIS] = { 0.0 }; bool axis_known_position[3] = { false }; +bool axis_homed[3] = { false }; static long gcode_N, gcode_LastN, Stopped_gcode_LastN = 0; @@ -1981,6 +1982,7 @@ static void homeaxis(AxisEnum axis) { feedrate = 0.0; endstops_hit_on_purpose(); // clear endstop hit flags axis_known_position[axis] = true; + axis_homed[axis] = true; #if ENABLED(Z_PROBE_SLED) // bring Z probe back diff --git a/Marlin/dogm_lcd_implementation.h b/Marlin/dogm_lcd_implementation.h index 00c3a774c..35a2de35b 100644 --- a/Marlin/dogm_lcd_implementation.h +++ b/Marlin/dogm_lcd_implementation.h @@ -352,7 +352,7 @@ static void lcd_implementation_status_screen() { u8g.drawPixel(8, XYZ_BASELINE - 5); u8g.drawPixel(8, XYZ_BASELINE - 3); u8g.setPrintPos(10, XYZ_BASELINE); - if (axis_known_position[X_AXIS] || (blink & 1)) + if (axis_homed[X_AXIS] || (blink & 1)) lcd_print(ftostr31ns(current_position[X_AXIS])); else lcd_printPGM(PSTR("---")); @@ -361,7 +361,7 @@ static void lcd_implementation_status_screen() { u8g.drawPixel(49, XYZ_BASELINE - 5); u8g.drawPixel(49, XYZ_BASELINE - 3); u8g.setPrintPos(51, XYZ_BASELINE); - if (axis_known_position[Y_AXIS] || (blink & 1)) + if (axis_homed[Y_AXIS] || (blink & 1)) lcd_print(ftostr31ns(current_position[Y_AXIS])); else lcd_printPGM(PSTR("---")); @@ -370,7 +370,7 @@ static void lcd_implementation_status_screen() { u8g.drawPixel(89, XYZ_BASELINE - 5); u8g.drawPixel(89, XYZ_BASELINE - 3); u8g.setPrintPos(91, XYZ_BASELINE); - if (axis_known_position[Z_AXIS] || (blink & 1)) + if (axis_homed[Z_AXIS] || (blink & 1)) lcd_print(ftostr32sp(current_position[Z_AXIS])); else lcd_printPGM(PSTR("---.--")); diff --git a/Marlin/ultralcd_implementation_hitachi_HD44780.h b/Marlin/ultralcd_implementation_hitachi_HD44780.h index fbcba3e75..583f3a8dd 100644 --- a/Marlin/ultralcd_implementation_hitachi_HD44780.h +++ b/Marlin/ultralcd_implementation_hitachi_HD44780.h @@ -617,13 +617,13 @@ static void lcd_implementation_status_screen() { #else lcd.print('X'); - if (axis_known_position[X_AXIS] || (blink & 1)) + if (axis_homed[X_AXIS] || (blink & 1)) lcd.print(ftostr4sign(current_position[X_AXIS])); else lcd_printPGM(PSTR(" ---")); lcd_printPGM(PSTR(" Y")); - if (axis_known_position[Y_AXIS] || (blink & 1)) + if (axis_homed[Y_AXIS] || (blink & 1)) lcd.print(ftostr4sign(current_position[Y_AXIS])); else lcd_printPGM(PSTR(" ---")); @@ -634,7 +634,7 @@ static void lcd_implementation_status_screen() { lcd.setCursor(LCD_WIDTH - 8, 1); lcd_printPGM(PSTR("Z ")); - if (axis_known_position[Z_AXIS] || (blink & 1)) + if (axis_homed[Z_AXIS] || (blink & 1)) lcd.print(ftostr32sp(current_position[Z_AXIS] + 0.00001)); else lcd_printPGM(PSTR("---.--"));