From 256f88da5c92dd24e63db8185468f85ff4ad93c6 Mon Sep 17 00:00:00 2001 From: vovodroid Date: Thu, 29 Aug 2024 13:51:33 +0300 Subject: [PATCH 01/21] G28 F --- Marlin/src/gcode/calibrate/G28.cpp | 7 +++++++ Marlin/src/module/motion.cpp | 3 +++ Marlin/src/module/motion.h | 7 ++++++- 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/Marlin/src/gcode/calibrate/G28.cpp b/Marlin/src/gcode/calibrate/G28.cpp index fb52a30690..9125512f40 100644 --- a/Marlin/src/gcode/calibrate/G28.cpp +++ b/Marlin/src/gcode/calibrate/G28.cpp @@ -237,6 +237,13 @@ void GcodeSuite::G28() { return; } + #if NUM_AXES >= 2 + if (parser.seen_test('F')) + homing_feedrate_mm_m.x = homing_feedrate_mm_m.y = parser.floatval('F'); + else + homing_feedrate_mm_m = xyz_feedrate_t(HOMING_FEEDRATE_MM_M); + #endif + #if ENABLED(FULL_REPORT_TO_HOST_FEATURE) const M_StateEnum old_grblstate = M_State_grbl; set_and_report_grblstate(M_HOMING); diff --git a/Marlin/src/module/motion.cpp b/Marlin/src/module/motion.cpp index bdf99b0ed5..8d2fe21e57 100644 --- a/Marlin/src/module/motion.cpp +++ b/Marlin/src/module/motion.cpp @@ -141,6 +141,9 @@ xyze_pos_t destination; // {0} #endif feedRate_t feedrate_mm_s = MMM_TO_MMS(DEFAULT_FEEDRATE_MM_M); int16_t feedrate_percentage = 100; +#if NUM_AXES >= 2 + xyz_feedrate_t homing_feedrate_mm_m = HOMING_FEEDRATE_MM_M; +#endif // Cartesian conversion result goes here: xyz_pos_t cartes; diff --git a/Marlin/src/module/motion.h b/Marlin/src/module/motion.h index 2dcc8202e8..de23aaab06 100644 --- a/Marlin/src/module/motion.h +++ b/Marlin/src/module/motion.h @@ -79,7 +79,12 @@ extern xyz_pos_t cartes; * Feed rates are often configured with mm/m * but the planner and stepper like mm/s units. */ -constexpr xyz_feedrate_t homing_feedrate_mm_m = HOMING_FEEDRATE_MM_M; +#if NUM_AXES >= 2 + extern xyz_feedrate_t homing_feedrate_mm_m; +#else + constexpr xyz_feedrate_t homing_feedrate_mm_m = HOMING_FEEDRATE_MM_M; +#endif + FORCE_INLINE feedRate_t homing_feedrate(const AxisEnum a) { float v = TERN0(HAS_Z_AXIS, homing_feedrate_mm_m.z); #if DISABLED(DELTA) From aebd51952d537a30531b59f3f4ffb69c111e5162 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 4 Oct 2024 12:52:31 -0500 Subject: [PATCH 02/21] tweaks --- Marlin/Configuration.h | 3 ++- Marlin/src/gcode/calibrate/G28.cpp | 8 ++++---- Marlin/src/module/motion.cpp | 2 +- Marlin/src/module/motion.h | 2 +- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index afa37cd131..abdc654da2 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -1610,7 +1610,8 @@ // with NOZZLE_AS_PROBE this can be negative for a wider probing area. #define PROBING_MARGIN 10 -// X and Y axis travel speed (mm/min) between probes +// X and Y axis travel speed (mm/min) between probes. +// Leave undefined to use the average of the current XY homing feedrate. #define XY_PROBE_FEEDRATE (133*60) // Feedrate (mm/min) for the first approach when double-probing (MULTIPLE_PROBING == 2) diff --git a/Marlin/src/gcode/calibrate/G28.cpp b/Marlin/src/gcode/calibrate/G28.cpp index 9125512f40..b5ae3f8457 100644 --- a/Marlin/src/gcode/calibrate/G28.cpp +++ b/Marlin/src/gcode/calibrate/G28.cpp @@ -237,11 +237,11 @@ void GcodeSuite::G28() { return; } - #if NUM_AXES >= 2 - if (parser.seen_test('F')) - homing_feedrate_mm_m.x = homing_feedrate_mm_m.y = parser.floatval('F'); + #if HAS_Y_AXIS + if (parser.floatval('F') > 0) + homing_feedrate_mm_m.x = homing_feedrate_mm_m.y = parser.value_feedrate(); else - homing_feedrate_mm_m = xyz_feedrate_t(HOMING_FEEDRATE_MM_M); + homing_feedrate_mm_m = xyz_feedrate_t(HOMING_FEEDRATE_MM_M); #endif #if ENABLED(FULL_REPORT_TO_HOST_FEATURE) diff --git a/Marlin/src/module/motion.cpp b/Marlin/src/module/motion.cpp index 8d2fe21e57..cca22b0f10 100644 --- a/Marlin/src/module/motion.cpp +++ b/Marlin/src/module/motion.cpp @@ -141,7 +141,7 @@ xyze_pos_t destination; // {0} #endif feedRate_t feedrate_mm_s = MMM_TO_MMS(DEFAULT_FEEDRATE_MM_M); int16_t feedrate_percentage = 100; -#if NUM_AXES >= 2 +#if HAS_Y_AXIS xyz_feedrate_t homing_feedrate_mm_m = HOMING_FEEDRATE_MM_M; #endif diff --git a/Marlin/src/module/motion.h b/Marlin/src/module/motion.h index de23aaab06..4166402824 100644 --- a/Marlin/src/module/motion.h +++ b/Marlin/src/module/motion.h @@ -79,7 +79,7 @@ extern xyz_pos_t cartes; * Feed rates are often configured with mm/m * but the planner and stepper like mm/s units. */ -#if NUM_AXES >= 2 +#if HAS_Y_AXIS extern xyz_feedrate_t homing_feedrate_mm_m; #else constexpr xyz_feedrate_t homing_feedrate_mm_m = HOMING_FEEDRATE_MM_M; From 23a56c23e7db387dc304aa81a5ca5060c70e0b67 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 4 Oct 2024 13:11:06 -0500 Subject: [PATCH 03/21] As `G28_F_TEMPORARY_FEEDRATE` --- Marlin/src/gcode/calibrate/G28.cpp | 7 +++---- Marlin/src/gcode/gcode.cpp | 5 +++-- Marlin/src/module/motion.cpp | 2 +- Marlin/src/module/motion.h | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Marlin/src/gcode/calibrate/G28.cpp b/Marlin/src/gcode/calibrate/G28.cpp index b5ae3f8457..e22af34ab7 100644 --- a/Marlin/src/gcode/calibrate/G28.cpp +++ b/Marlin/src/gcode/calibrate/G28.cpp @@ -237,11 +237,10 @@ void GcodeSuite::G28() { return; } - #if HAS_Y_AXIS + #if ENABLED(G28_F_TEMPORARY_FEEDRATE) + REMEMBER(fr, homing_feedrate_mm_m); if (parser.floatval('F') > 0) - homing_feedrate_mm_m.x = homing_feedrate_mm_m.y = parser.value_feedrate(); - else - homing_feedrate_mm_m = xyz_feedrate_t(HOMING_FEEDRATE_MM_M); + homing_feedrate_mm_m.x = TERN_(HAS_Y_AXIS, homing_feedrate_mm_m.y =) parser.value_feedrate(); #endif #if ENABLED(FULL_REPORT_TO_HOST_FEATURE) diff --git a/Marlin/src/gcode/gcode.cpp b/Marlin/src/gcode/gcode.cpp index 595312e6ae..9e1a330974 100644 --- a/Marlin/src/gcode/gcode.cpp +++ b/Marlin/src/gcode/gcode.cpp @@ -199,10 +199,11 @@ void GcodeSuite::get_destination_from_command() { recovery.save(); #endif - if (parser.floatval('F') > 0) { + const float fr_mm_m = parser.floatval('F'); + if (fr_mm_m > 0) { feedrate_mm_s = parser.value_feedrate(); // Update the cutter feed rate for use by M4 I set inline moves. - TERN_(LASER_FEATURE, cutter.feedrate_mm_m = MMS_TO_MMM(feedrate_mm_s)); + TERN_(LASER_FEATURE, cutter.feedrate_mm_m = fr_mm_m); } #if ALL(PRINTCOUNTER, HAS_EXTRUDERS) diff --git a/Marlin/src/module/motion.cpp b/Marlin/src/module/motion.cpp index cca22b0f10..31530fd87d 100644 --- a/Marlin/src/module/motion.cpp +++ b/Marlin/src/module/motion.cpp @@ -141,7 +141,7 @@ xyze_pos_t destination; // {0} #endif feedRate_t feedrate_mm_s = MMM_TO_MMS(DEFAULT_FEEDRATE_MM_M); int16_t feedrate_percentage = 100; -#if HAS_Y_AXIS +#if ENABLED(G28_F_TEMPORARY_FEEDRATE) xyz_feedrate_t homing_feedrate_mm_m = HOMING_FEEDRATE_MM_M; #endif diff --git a/Marlin/src/module/motion.h b/Marlin/src/module/motion.h index 4166402824..fa9abf6a79 100644 --- a/Marlin/src/module/motion.h +++ b/Marlin/src/module/motion.h @@ -79,7 +79,7 @@ extern xyz_pos_t cartes; * Feed rates are often configured with mm/m * but the planner and stepper like mm/s units. */ -#if HAS_Y_AXIS +#if ENABLED(G28_F_TEMPORARY_FEEDRATE) extern xyz_feedrate_t homing_feedrate_mm_m; #else constexpr xyz_feedrate_t homing_feedrate_mm_m = HOMING_FEEDRATE_MM_M; From 576986ad0d29fcde91a74b595492c4dab9810333 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 4 Oct 2024 13:32:05 -0500 Subject: [PATCH 04/21] mm/min --- Marlin/src/gcode/calibrate/G28.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/src/gcode/calibrate/G28.cpp b/Marlin/src/gcode/calibrate/G28.cpp index e22af34ab7..6211ef0a28 100644 --- a/Marlin/src/gcode/calibrate/G28.cpp +++ b/Marlin/src/gcode/calibrate/G28.cpp @@ -240,7 +240,7 @@ void GcodeSuite::G28() { #if ENABLED(G28_F_TEMPORARY_FEEDRATE) REMEMBER(fr, homing_feedrate_mm_m); if (parser.floatval('F') > 0) - homing_feedrate_mm_m.x = TERN_(HAS_Y_AXIS, homing_feedrate_mm_m.y =) parser.value_feedrate(); + homing_feedrate_mm_m.x = TERN_(HAS_Y_AXIS, homing_feedrate_mm_m.y =) parser.value_linear_units(); // mm/min #endif #if ENABLED(FULL_REPORT_TO_HOST_FEATURE) From a934f401d983320d2b65b04768ff1c58df2bdca7 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 4 Oct 2024 14:13:24 -0500 Subject: [PATCH 05/21] G-code and menu item --- Marlin/Configuration.h | 3 + Marlin/src/core/language.h | 32 ++++--- Marlin/src/core/types.h | 2 + Marlin/src/gcode/calibrate/G28.cpp | 2 +- Marlin/src/gcode/config/M210.cpp | 100 +++++++++++++++++++++ Marlin/src/gcode/gcode.cpp | 4 + Marlin/src/gcode/gcode.h | 6 ++ Marlin/src/gcode/parser.h | 3 + Marlin/src/lcd/language/language_de.h | 2 +- Marlin/src/lcd/language/language_en.h | 4 +- Marlin/src/lcd/language/language_fr.h | 2 +- Marlin/src/lcd/language/language_fr_na.h | 2 +- Marlin/src/lcd/language/language_hu.h | 2 +- Marlin/src/lcd/language/language_it.h | 2 +- Marlin/src/lcd/language/language_ru.h | 2 +- Marlin/src/lcd/language/language_sk.h | 2 +- Marlin/src/lcd/language/language_tr.h | 2 +- Marlin/src/lcd/language/language_uk.h | 2 +- Marlin/src/lcd/menu/menu_configuration.cpp | 31 +++++++ Marlin/src/lcd/menu/menu_motion.cpp | 2 +- Marlin/src/module/motion.cpp | 2 +- Marlin/src/module/motion.h | 2 +- Marlin/src/module/settings.cpp | 33 +++++++ buildroot/tests/mega1280 | 2 +- ini/features.ini | 1 + 25 files changed, 221 insertions(+), 26 deletions(-) create mode 100644 Marlin/src/gcode/config/M210.cpp diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index abdc654da2..90a93dee9f 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -2305,6 +2305,9 @@ // Homing speeds (linear=mm/min, rotational=°/min) #define HOMING_FEEDRATE_MM_M { (50*60), (50*60), (4*60) } +// Edit homing feedrates with M210 and MarlinUI menu items +//#define EDITABLE_HOMING_FEEDRATE + // Validate that endstops are triggered on homing moves #define VALIDATE_HOMING_ENDSTOPS diff --git a/Marlin/src/core/language.h b/Marlin/src/core/language.h index 2736a7833e..67830ac95c 100644 --- a/Marlin/src/core/language.h +++ b/Marlin/src/core/language.h @@ -290,6 +290,7 @@ #define STR_MAX_ACCELERATION "Max Acceleration (units/s2)" #define STR_MAX_FEEDRATES "Max feedrates (units/s)" #define STR_ACCELERATION_P_R_T "Acceleration (units/s2) (P R T)" +#define STR_HOMING_FEEDRATE "Homing Feedrate" #define STR_TOOL_CHANGING "Tool-changing" #define STR_HOTEND_OFFSETS "Hotend offsets" #define STR_SERVO_ANGLES "Servo Angles" @@ -358,24 +359,33 @@ #define STR_CALIBRATION "calibration" // General axis names -#define STR_X "X" -#define STR_Y "Y" -#define STR_Z "Z" +#if HAS_X_AXIS + #define AXIS1_NAME 'X' + #define STR_X "X" +#endif +#if HAS_Y_AXIS + #define AXIS2_NAME 'Y' + #define STR_Y "Y" +#endif +#if HAS_Z_AXIS + #define AXIS3_NAME 'Z' + #define STR_Z "Z" +#endif #define STR_E "E" #if IS_KINEMATIC #define STR_A "A" #define STR_B "B" #define STR_C "C" #else - #define STR_A "X" - #define STR_B "Y" - #define STR_C "Z" + #define STR_A STR_X + #define STR_B STR_Y + #define STR_C STR_Z #endif -#define STR_X2 "X2" -#define STR_Y2 "Y2" -#define STR_Z2 "Z2" -#define STR_Z3 "Z3" -#define STR_Z4 "Z4" +#define STR_X2 STR_A "2" +#define STR_Y2 STR_B "2" +#define STR_Z2 STR_C "2" +#define STR_Z3 STR_C "3" +#define STR_Z4 STR_C "4" // Extra Axis and Endstop Names #if HAS_I_AXIS diff --git a/Marlin/src/core/types.h b/Marlin/src/core/types.h index 7793f1f995..9e6ff7ee16 100644 --- a/Marlin/src/core/types.h +++ b/Marlin/src/core/types.h @@ -51,6 +51,8 @@ template struct IF { typedef L type; }; #define MAIN_AXIS_NAMES NUM_AXIS_LIST(X, Y, Z, I, J, K, U, V, W) #define MAIN_AXIS_NAMES_LC NUM_AXIS_LIST(x, y, z, i, j, k, u, v, w) #define STR_AXES_MAIN NUM_AXIS_GANG("X", "Y", "Z", STR_I, STR_J, STR_K, STR_U, STR_V, STR_W) +#define MAIN_AXIS_MAP(F) MAP(F, MAIN_AXIS_NAMES) +#define MAIN_AXIS_MAP_LC(F) MAP(F, MAIN_AXIS_NAMES_LC) #define LOGICAL_AXIS_GANG(N,V...) NUM_AXIS_GANG(V) GANG_ITEM_E(N) #define LOGICAL_AXIS_CODE(N,V...) NUM_AXIS_CODE(V) CODE_ITEM_E(N) diff --git a/Marlin/src/gcode/calibrate/G28.cpp b/Marlin/src/gcode/calibrate/G28.cpp index 6211ef0a28..3d0ff1aea5 100644 --- a/Marlin/src/gcode/calibrate/G28.cpp +++ b/Marlin/src/gcode/calibrate/G28.cpp @@ -237,7 +237,7 @@ void GcodeSuite::G28() { return; } - #if ENABLED(G28_F_TEMPORARY_FEEDRATE) + #if ENABLED(EDITABLE_HOMING_FEEDRATE) REMEMBER(fr, homing_feedrate_mm_m); if (parser.floatval('F') > 0) homing_feedrate_mm_m.x = TERN_(HAS_Y_AXIS, homing_feedrate_mm_m.y =) parser.value_linear_units(); // mm/min diff --git a/Marlin/src/gcode/config/M210.cpp b/Marlin/src/gcode/config/M210.cpp new file mode 100644 index 0000000000..c51fca5488 --- /dev/null +++ b/Marlin/src/gcode/config/M210.cpp @@ -0,0 +1,100 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2024 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../../inc/MarlinConfigPre.h" + +#if ENABLED(EDITABLE_HOMING_FEEDRATE) + +#include "../gcode.h" +#include "../../module/motion.h" + +/** + * M210 - Set homing feedrate for one or more axes + * in current units (in/mm) per minute + * + * X[feedrate] Set X axis homing feedrate + * Y[feedrate] Set Y axis homing feedrate + * Z[feedrate] Set Z axis homing feedrate + * I[feedrate] Set I axis homing feedrate + * J[feedrate] Set J axis homing feedrate + * K[feedrate] Set K axis homing feedrate + * U[feedrate] Set U axis homing feedrate + * V[feedrate] Set V axis homing feedrate + * W[feedrate] Set W axis homing feedrate + * + * With no arguments, report the current offsets. + */ +void GcodeSuite::M210() { + if (!parser.seen_any()) + return M210_report(); + + #if HAS_X_AXIS + if (parser.floatval('X') > 0) homing_feedrate_mm_m.x = parser.value_axis_units(X_AXIS); + #endif + #if HAS_Y_AXIS + if (parser.floatval('Y') > 0) homing_feedrate_mm_m.y = parser.value_axis_units(Y_AXIS); + #endif + #if HAS_Z_AXIS + if (parser.floatval('Z') > 0) homing_feedrate_mm_m.z = parser.value_axis_units(Z_AXIS); + #endif + #if HAS_I_AXIS + if (parser.floatval(AXIS4_NAME) > 0) homing_feedrate_mm_m.i = parser.value_axis_units(I_AXIS); + #endif + #if HAS_J_AXIS + if (parser.floatval(AXIS5_NAME) > 0) homing_feedrate_mm_m.j = parser.value_axis_units(J_AXIS); + #endif + #if HAS_K_AXIS + if (parser.floatval(AXIS6_NAME) > 0) homing_feedrate_mm_m.k = parser.value_axis_units(K_AXIS); + #endif + #if HAS_U_AXIS + if (parser.floatval(AXIS7_NAME) > 0) homing_feedrate_mm_m.u = parser.value_axis_units(U_AXIS); + #endif + #if HAS_V_AXIS + if (parser.floatval(AXIS8_NAME) > 0) homing_feedrate_mm_m.v = parser.value_axis_units(V_AXIS); + #endif + #if HAS_W_AXIS + if (parser.floatval(AXIS9_NAME) > 0) homing_feedrate_mm_m.w = parser.value_axis_units(W_AXIS); + #endif +} + +void GcodeSuite::M210_report(const bool forReplay/*=true*/) { + TERN_(MARLIN_SMALL_BUILD, return); + + report_heading_etc(forReplay, F(STR_HOMING_FEEDRATE)); + + SERIAL_ECHOPGM(" M210"); + SERIAL_ECHOLNPGM_P( + LIST_N(DOUBLE(NUM_AXES) + , SP_X_STR, X_AXIS_UNIT(homing_feedrate_mm_m.x) + , SP_Y_STR, Y_AXIS_UNIT(homing_feedrate_mm_m.y) + , SP_Z_STR, Z_AXIS_UNIT(homing_feedrate_mm_m.z) + , SP_I_STR, I_AXIS_UNIT(homing_feedrate_mm_m.i) + , SP_J_STR, J_AXIS_UNIT(homing_feedrate_mm_m.j) + , SP_K_STR, K_AXIS_UNIT(homing_feedrate_mm_m.k) + , SP_U_STR, U_AXIS_UNIT(homing_feedrate_mm_m.u) + , SP_V_STR, V_AXIS_UNIT(homing_feedrate_mm_m.v) + , SP_W_STR, W_AXIS_UNIT(homing_feedrate_mm_m.w) + ) + ); +} + +#endif // EDITABLE_HOMING_FEEDRATE diff --git a/Marlin/src/gcode/gcode.cpp b/Marlin/src/gcode/gcode.cpp index 9e1a330974..2afaffbb97 100644 --- a/Marlin/src/gcode/gcode.cpp +++ b/Marlin/src/gcode/gcode.cpp @@ -743,6 +743,10 @@ void GcodeSuite::process_parsed_command(const bool no_ok/*=false*/) { #endif #endif + #if ENABLED(EDITABLE_HOMING_FEEDRATE) + case 210: M210(); break; // M210: Set the homing feedrate + #endif + #if HAS_SOFTWARE_ENDSTOPS case 211: M211(); break; // M211: Enable, Disable, and/or Report software endstops #endif diff --git a/Marlin/src/gcode/gcode.h b/Marlin/src/gcode/gcode.h index 421dda9aec..611ce85295 100644 --- a/Marlin/src/gcode/gcode.h +++ b/Marlin/src/gcode/gcode.h @@ -195,6 +195,7 @@ * M208 - Set Recover (unretract) Additional (!) Length: S and Feedrate: F. (Requires FWRETRACT) * M209 - Turn Automatic Retract Detection on/off: S<0|1> (For slicers that don't support G10/11). (Requires FWRETRACT_AUTORETRACT) Every normal extrude-only move will be classified as retract depending on the direction. + * M210 - Set or Report the homing feedrate (Requires EDITABLE_HOMING_FEEDRATE) * M211 - Enable, Disable, and/or Report software endstops: S<0|1> (Requires MIN_SOFTWARE_ENDSTOPS or MAX_SOFTWARE_ENDSTOPS) * M217 - Set filament swap parameters: "M217 S P R". (Requires SINGLENOZZLE) * M218 - Set/get a tool offset: "M218 T X Y". (Requires 2 or more extruders) @@ -897,6 +898,11 @@ private: #endif #endif + #if ENABLED(EDITABLE_HOMING_FEEDRATE) + static void M210(); + static void M210_report(const bool forReplay=true); + #endif + static void M211(); static void M211_report(const bool forReplay=true); diff --git a/Marlin/src/gcode/parser.h b/Marlin/src/gcode/parser.h index 94c5b284e0..9a51fca834 100644 --- a/Marlin/src/gcode/parser.h +++ b/Marlin/src/gcode/parser.h @@ -347,6 +347,9 @@ public: #define LINEAR_UNIT(V) parser.mm_to_linear_unit(V) #define VOLUMETRIC_UNIT(V) parser.mm_to_volumetric_unit(V) + #define X_AXIS_UNIT LINEAR_UNIT + #define Y_AXIS_UNIT LINEAR_UNIT + #define Z_AXIS_UNIT LINEAR_UNIT #define I_AXIS_UNIT(V) TERN(AXIS4_ROTATES, (V), LINEAR_UNIT(V)) #define J_AXIS_UNIT(V) TERN(AXIS5_ROTATES, (V), LINEAR_UNIT(V)) #define K_AXIS_UNIT(V) TERN(AXIS6_ROTATES, (V), LINEAR_UNIT(V)) diff --git a/Marlin/src/lcd/language/language_de.h b/Marlin/src/lcd/language/language_de.h index 828a44bf52..10ad8c6bad 100644 --- a/Marlin/src/lcd/language/language_de.h +++ b/Marlin/src/lcd/language/language_de.h @@ -61,7 +61,7 @@ namespace LanguageNarrow_de { LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Statusbalken-Test"); LSTR MSG_HOMING = _UxGT("Homing"); LSTR MSG_AUTO_HOME = _UxGT("Auto Home"); - LSTR MSG_AUTO_HOME_A = _UxGT("Home @"); + LSTR MSG_AUTO_HOME_N = _UxGT("Home @"); LSTR MSG_AUTO_HOME_X = _UxGT("Home X"); LSTR MSG_AUTO_HOME_Y = _UxGT("Home Y"); LSTR MSG_AUTO_HOME_Z = _UxGT("Home Z"); diff --git a/Marlin/src/lcd/language/language_en.h b/Marlin/src/lcd/language/language_en.h index 286c386a44..c00920d931 100644 --- a/Marlin/src/lcd/language/language_en.h +++ b/Marlin/src/lcd/language/language_en.h @@ -99,9 +99,11 @@ namespace LanguageNarrow_en { LSTR MSG_ENDSTOP_TEST = _UxGT("Endstop Test"); LSTR MSG_Z_PROBE = _UxGT("Z Probe"); LSTR MSG_HOMING = _UxGT("Homing"); + LSTR MSG_HOMING_FEEDRATE = _UxGT("Homing Feed Rate"); + LSTR MSG_HOMING_FEEDRATE_N = _UxGT("@ Homing Feed Rate"); LSTR MSG_AUTO_HOME = _UxGT("Auto Home"); LSTR MSG_HOME_ALL = _UxGT("Home All"); - LSTR MSG_AUTO_HOME_A = _UxGT("Home @"); + LSTR MSG_AUTO_HOME_N = _UxGT("Home @"); LSTR MSG_AUTO_HOME_X = _UxGT("Home X"); LSTR MSG_AUTO_HOME_Y = _UxGT("Home Y"); LSTR MSG_AUTO_HOME_Z = _UxGT("Home Z"); diff --git a/Marlin/src/lcd/language/language_fr.h b/Marlin/src/lcd/language/language_fr.h index 029e9744a0..7390930cd8 100644 --- a/Marlin/src/lcd/language/language_fr.h +++ b/Marlin/src/lcd/language/language_fr.h @@ -58,7 +58,7 @@ namespace LanguageNarrow_fr { LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Test barre progress."); LSTR MSG_HOMING = _UxGT("Origine"); LSTR MSG_AUTO_HOME = _UxGT("Origine auto"); - LSTR MSG_AUTO_HOME_A = _UxGT("Origine @ auto"); + LSTR MSG_AUTO_HOME_N = _UxGT("Origine @ auto"); LSTR MSG_AUTO_HOME_X = _UxGT("Origine X auto"); LSTR MSG_AUTO_HOME_Y = _UxGT("Origine Y auto"); LSTR MSG_AUTO_HOME_Z = _UxGT("Origine Z auto"); diff --git a/Marlin/src/lcd/language/language_fr_na.h b/Marlin/src/lcd/language/language_fr_na.h index 8fb7b68026..1d9af9b22c 100644 --- a/Marlin/src/lcd/language/language_fr_na.h +++ b/Marlin/src/lcd/language/language_fr_na.h @@ -58,7 +58,7 @@ namespace LanguageNarrow_fr_na { LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Test barre progress."); LSTR MSG_HOMING = _UxGT("Origine"); LSTR MSG_AUTO_HOME = _UxGT("Origine auto"); - LSTR MSG_AUTO_HOME_A = _UxGT("Origine @ auto"); + LSTR MSG_AUTO_HOME_N = _UxGT("Origine @ auto"); LSTR MSG_AUTO_HOME_X = _UxGT("Origine X auto"); LSTR MSG_AUTO_HOME_Y = _UxGT("Origine Y auto"); LSTR MSG_AUTO_HOME_Z = _UxGT("Origine Z auto"); diff --git a/Marlin/src/lcd/language/language_hu.h b/Marlin/src/lcd/language/language_hu.h index f7e98ff8e5..adb6d54a26 100644 --- a/Marlin/src/lcd/language/language_hu.h +++ b/Marlin/src/lcd/language/language_hu.h @@ -62,7 +62,7 @@ namespace LanguageNarrow_hu { LSTR MSG_DEBUG_MENU = _UxGT("Hiba Menü"); LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Haladás sáv teszt"); LSTR MSG_AUTO_HOME = _UxGT("X-Y-Z auto kezdöpont"); - LSTR MSG_AUTO_HOME_A = _UxGT("Kezdö @"); + LSTR MSG_AUTO_HOME_N = _UxGT("Kezdö @"); LSTR MSG_AUTO_HOME_X = _UxGT("X kezdöpont"); LSTR MSG_AUTO_HOME_Y = _UxGT("Y kezdöpont"); LSTR MSG_AUTO_HOME_Z = _UxGT("Z kezdöpont"); diff --git a/Marlin/src/lcd/language/language_it.h b/Marlin/src/lcd/language/language_it.h index 4d7f1fdc4d..a945d94a4f 100644 --- a/Marlin/src/lcd/language/language_it.h +++ b/Marlin/src/lcd/language/language_it.h @@ -77,7 +77,7 @@ namespace LanguageNarrow_it { LSTR MSG_Z_PROBE = _UxGT("Sonda Z"); LSTR MSG_HOMING = _UxGT("Azzeramento"); LSTR MSG_AUTO_HOME = _UxGT("Auto home"); - LSTR MSG_AUTO_HOME_A = _UxGT("Home @"); + LSTR MSG_AUTO_HOME_N = _UxGT("Home @"); LSTR MSG_AUTO_HOME_X = _UxGT("Home X"); LSTR MSG_AUTO_HOME_Y = _UxGT("Home Y"); LSTR MSG_AUTO_HOME_Z = _UxGT("Home Z"); diff --git a/Marlin/src/lcd/language/language_ru.h b/Marlin/src/lcd/language/language_ru.h index 430a686019..9b441e1484 100644 --- a/Marlin/src/lcd/language/language_ru.h +++ b/Marlin/src/lcd/language/language_ru.h @@ -58,7 +58,7 @@ namespace LanguageNarrow_ru { LSTR MSG_DEBUG_MENU = _UxGT("Меню отладки"); LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Тест индикатора"); LSTR MSG_AUTO_HOME = _UxGT("Парковка XYZ"); - LSTR MSG_AUTO_HOME_A = _UxGT("Парковка @"); + LSTR MSG_AUTO_HOME_N = _UxGT("Парковка @"); LSTR MSG_AUTO_HOME_X = _UxGT("Парковка X"); LSTR MSG_AUTO_HOME_Y = _UxGT("Парковка Y"); LSTR MSG_AUTO_HOME_Z = _UxGT("Парковка Z"); diff --git a/Marlin/src/lcd/language/language_sk.h b/Marlin/src/lcd/language/language_sk.h index 9746329015..e3007b12ae 100644 --- a/Marlin/src/lcd/language/language_sk.h +++ b/Marlin/src/lcd/language/language_sk.h @@ -74,7 +74,7 @@ namespace LanguageNarrow_sk { LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Test uk. priebehu"); LSTR MSG_HOMING = _UxGT("Parkovanie"); LSTR MSG_AUTO_HOME = _UxGT("Domovská pozícia"); - LSTR MSG_AUTO_HOME_A = _UxGT("Domov os @"); + LSTR MSG_AUTO_HOME_N = _UxGT("Domov os @"); LSTR MSG_AUTO_HOME_X = _UxGT("Domov os X"); LSTR MSG_AUTO_HOME_Y = _UxGT("Domov os Y"); LSTR MSG_AUTO_HOME_Z = _UxGT("Domov os Z"); diff --git a/Marlin/src/lcd/language/language_tr.h b/Marlin/src/lcd/language/language_tr.h index 6b50ddfd3b..544383f188 100644 --- a/Marlin/src/lcd/language/language_tr.h +++ b/Marlin/src/lcd/language/language_tr.h @@ -76,7 +76,7 @@ namespace LanguageNarrow_tr { LSTR MSG_Z_PROBE = _UxGT("Z Probe"); LSTR MSG_HOMING = _UxGT("Sıfırlanıyor"); LSTR MSG_AUTO_HOME = _UxGT("Eksenleri Sıfırla"); - LSTR MSG_AUTO_HOME_A = _UxGT("@ Sıfırla"); + LSTR MSG_AUTO_HOME_N = _UxGT("@ Sıfırla"); LSTR MSG_AUTO_HOME_X = _UxGT("X Sıfırla"); LSTR MSG_AUTO_HOME_Y = _UxGT("Y Sıfırla"); LSTR MSG_AUTO_HOME_Z = _UxGT("Z Sıfırla"); diff --git a/Marlin/src/lcd/language/language_uk.h b/Marlin/src/lcd/language/language_uk.h index 5010aff703..e223a815a0 100644 --- a/Marlin/src/lcd/language/language_uk.h +++ b/Marlin/src/lcd/language/language_uk.h @@ -59,7 +59,7 @@ namespace LanguageNarrow_uk { LSTR MSG_DEBUG_MENU = _UxGT("Меню Debug"); LSTR MSG_PROGRESS_BAR_TEST = _UxGT("Тест лінії прогр."); LSTR MSG_AUTO_HOME = _UxGT("Авто паркування"); - LSTR MSG_AUTO_HOME_A = _UxGT("Паркування @"); + LSTR MSG_AUTO_HOME_N = _UxGT("Паркування @"); LSTR MSG_AUTO_HOME_X = _UxGT("Паркування X"); LSTR MSG_AUTO_HOME_Y = _UxGT("Паркування Y"); LSTR MSG_AUTO_HOME_Z = _UxGT("Паркування Z"); diff --git a/Marlin/src/lcd/menu/menu_configuration.cpp b/Marlin/src/lcd/menu/menu_configuration.cpp index bd5ed492a1..6b7f03e0a3 100644 --- a/Marlin/src/lcd/menu/menu_configuration.cpp +++ b/Marlin/src/lcd/menu/menu_configuration.cpp @@ -397,6 +397,33 @@ void menu_advanced_settings(); #endif +#if ENABLED(EDITABLE_HOMING_FEEDRATE) + + #include "../../module/motion.h" + #include "../../module/planner.h" + #include "../../gcode/parser.h" + + // Edit homing feedrates in inches- or degrees- or mm-per-minute + void menu_homing_feedrate() { + START_MENU(); + BACK_ITEM(MSG_HOMING_FEEDRATE); + + #define _EDIT_HOMING_FR(A) do{ \ + const float maxfr = MMS_TO_MMM(planner.settings.max_feedrate_mm_s[_AXIS(A)]); \ + editable.decimal = A##_AXIS_UNIT(homing_feedrate_mm_m.A); \ + EDIT_ITEM(float61, MSG_HOMING_FEEDRATE_N, &editable.decimal, \ + A##_AXIS_UNIT(10), A##_AXIS_UNIT(maxfr), []{ \ + homing_feedrate_mm_m.A = parser.axis_value_to_mm(_AXIS(A), editable.decimal); \ + }); \ + }while(0); + + MAIN_AXIS_MAP(_EDIT_HOMING_FR); + + END_MENU(); + } + +#endif + #if HAS_PREHEAT && DISABLED(SLIM_LCD_MENUS) void _menu_configuration_preheat_settings() { @@ -629,6 +656,10 @@ void menu_configuration() { #endif #endif + #if ENABLED(EDITABLE_HOMING_FEEDRATE) + SUBMENU(MSG_HOMING_FEEDRATE, menu_homing_feedrate); + #endif + #if ENABLED(FWRETRACT) SUBMENU(MSG_RETRACT, menu_config_retract); #endif diff --git a/Marlin/src/lcd/menu/menu_motion.cpp b/Marlin/src/lcd/menu/menu_motion.cpp index 926d64ccca..f356d62e54 100644 --- a/Marlin/src/lcd/menu/menu_motion.cpp +++ b/Marlin/src/lcd/menu/menu_motion.cpp @@ -296,7 +296,7 @@ void menu_move() { END_MENU(); } -#define _HOME_ITEM(N) GCODES_ITEM_N(N##_AXIS, MSG_AUTO_HOME_A, F("G28" STR_##N)); +#define _HOME_ITEM(N) GCODES_ITEM_N(N##_AXIS, MSG_AUTO_HOME_N, F("G28" STR_##N)); #if ENABLED(INDIVIDUAL_AXIS_HOMING_SUBMENU) // diff --git a/Marlin/src/module/motion.cpp b/Marlin/src/module/motion.cpp index 31530fd87d..bd74fa8afe 100644 --- a/Marlin/src/module/motion.cpp +++ b/Marlin/src/module/motion.cpp @@ -141,7 +141,7 @@ xyze_pos_t destination; // {0} #endif feedRate_t feedrate_mm_s = MMM_TO_MMS(DEFAULT_FEEDRATE_MM_M); int16_t feedrate_percentage = 100; -#if ENABLED(G28_F_TEMPORARY_FEEDRATE) +#if ENABLED(EDITABLE_HOMING_FEEDRATE) xyz_feedrate_t homing_feedrate_mm_m = HOMING_FEEDRATE_MM_M; #endif diff --git a/Marlin/src/module/motion.h b/Marlin/src/module/motion.h index fa9abf6a79..ad78d83515 100644 --- a/Marlin/src/module/motion.h +++ b/Marlin/src/module/motion.h @@ -79,7 +79,7 @@ extern xyz_pos_t cartes; * Feed rates are often configured with mm/m * but the planner and stepper like mm/s units. */ -#if ENABLED(G28_F_TEMPORARY_FEEDRATE) +#if ENABLED(EDITABLE_HOMING_FEEDRATE) extern xyz_feedrate_t homing_feedrate_mm_m; #else constexpr xyz_feedrate_t homing_feedrate_mm_m = HOMING_FEEDRATE_MM_M; diff --git a/Marlin/src/module/settings.cpp b/Marlin/src/module/settings.cpp index 52057ceab5..00924a15ec 100644 --- a/Marlin/src/module/settings.cpp +++ b/Marlin/src/module/settings.cpp @@ -462,6 +462,13 @@ typedef struct SettingsDataStruct { fwretract_settings_t fwretract_settings; // M207 S F Z W, M208 S F W R bool autoretract_enabled; // M209 S + // + // EDITABLE_HOMING_FEEDRATE + // + #if ENABLED(EDITABLE_HOMING_FEEDRATE) + xyz_feedrate_t homing_feedrate_mm_m; // M210 X Y Z I J K U V W + #endif + // // !NO_VOLUMETRIC // @@ -1333,6 +1340,14 @@ void MarlinSettings::postprocess() { EEPROM_WRITE(TERN(FWRETRACT_AUTORETRACT, fwretract.autoretract_enabled, autoretract_enabled)); } + // + // Homing Feedrate + // + #if ENABLED(EDITABLE_HOMING_FEEDRATE) + _FIELD_TEST(homing_feedrate_mm_m); + EEPROM_WRITE(homing_feedrate_mm_m); + #endif + // // Volumetric & Filament Size // @@ -2421,6 +2436,14 @@ void MarlinSettings::postprocess() { #endif } + // + // Homing Feedrate + // + #if ENABLED(EDITABLE_HOMING_FEEDRATE) + _FIELD_TEST(homing_feedrate_mm_m); + EEPROM_READ(homing_feedrate_mm_m); + #endif + // // Volumetric & Filament Size // @@ -3649,6 +3672,11 @@ void MarlinSettings::reset() { // TERN_(FWRETRACT, fwretract.reset()); + // + // Homing Feedrate + // + TERN_(EDITABLE_HOMING_FEEDRATE, homing_feedrate_mm_m = xyz_feedrate_t(HOMING_FEEDRATE_MM_M)); + // // Volumetric & Filament Size // @@ -4049,6 +4077,11 @@ void MarlinSettings::reset() { TERN_(FWRETRACT_AUTORETRACT, gcode.M209_report(forReplay)); #endif + // + // Homing Feedrate + // + TERN_(EDITABLE_HOMING_FEEDRATE, gcode.M210_report(forReplay)); + // // Probe Offset // diff --git a/buildroot/tests/mega1280 b/buildroot/tests/mega1280 index 7e99ee4a60..73bbd1385e 100755 --- a/buildroot/tests/mega1280 +++ b/buildroot/tests/mega1280 @@ -19,7 +19,7 @@ restore_configs opt_set LCD_LANGUAGE an \ POWER_MONITOR_CURRENT_PIN 14 POWER_MONITOR_VOLTAGE_PIN 15 \ CLOSED_LOOP_ENABLE_PIN 44 CLOSED_LOOP_MOVE_COMPLETE_PIN 45 -opt_enable SPINDLE_FEATURE ULTIMAKERCONTROLLER LCD_BED_LEVELING \ +opt_enable SPINDLE_FEATURE ULTIMAKERCONTROLLER LCD_BED_LEVELING EDITABLE_HOMING_FEEDRATE \ EEPROM_SETTINGS EEPROM_BOOT_SILENT EEPROM_AUTO_INIT \ SENSORLESS_BACKOFF_MM HOMING_BACKOFF_POST_MM HOME_Y_BEFORE_X CODEPENDENT_XY_HOMING \ MESH_BED_LEVELING ENABLE_LEVELING_FADE_HEIGHT MESH_G28_REST_ORIGIN \ diff --git a/ini/features.ini b/ini/features.ini index a502808f09..ea06319644 100644 --- a/ini/features.ini +++ b/ini/features.ini @@ -287,6 +287,7 @@ SKEW_CORRECTION_GCODE = build_src_filter=+ + PINS_DEBUGGING = build_src_filter=+ EDITABLE_STEPS_PER_UNIT = build_src_filter=+ +EDITABLE_HOMING_FEEDRATE = build_src_filter=+ HAS_MULTI_EXTRUDER = build_src_filter=+ HAS_HOTEND_OFFSET = build_src_filter=+ EDITABLE_SERVO_ANGLES = build_src_filter=+ From f799aa2934ac2e8ab671f78e5dda032691a7ef94 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 4 Oct 2024 14:32:28 -0500 Subject: [PATCH 06/21] 'feedrate' --- Marlin/src/lcd/language/language_en.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Marlin/src/lcd/language/language_en.h b/Marlin/src/lcd/language/language_en.h index c00920d931..df3aa930d8 100644 --- a/Marlin/src/lcd/language/language_en.h +++ b/Marlin/src/lcd/language/language_en.h @@ -99,8 +99,8 @@ namespace LanguageNarrow_en { LSTR MSG_ENDSTOP_TEST = _UxGT("Endstop Test"); LSTR MSG_Z_PROBE = _UxGT("Z Probe"); LSTR MSG_HOMING = _UxGT("Homing"); - LSTR MSG_HOMING_FEEDRATE = _UxGT("Homing Feed Rate"); - LSTR MSG_HOMING_FEEDRATE_N = _UxGT("@ Homing Feed Rate"); + LSTR MSG_HOMING_FEEDRATE = _UxGT("Homing Feedrate"); + LSTR MSG_HOMING_FEEDRATE_N = _UxGT("@ Homing Feedrate"); LSTR MSG_AUTO_HOME = _UxGT("Auto Home"); LSTR MSG_HOME_ALL = _UxGT("Home All"); LSTR MSG_AUTO_HOME_N = _UxGT("Home @"); @@ -643,7 +643,7 @@ namespace LanguageNarrow_en { LSTR MSG_ZPROBE_ZOFFSET = _UxGT("Probe Z Offset"); LSTR MSG_ZPROBE_MARGIN = _UxGT("Probe Margin"); LSTR MSG_ZOFFSET = _UxGT("Z Offset"); - LSTR MSG_Z_FEED_RATE = _UxGT("Z Feed Rate"); + LSTR MSG_Z_FEED_RATE = _UxGT("Z Feedrate"); LSTR MSG_ENABLE_HS_MODE = _UxGT("Enable HS mode"); LSTR MSG_MOVE_NOZZLE_TO_BED = _UxGT("Move Nozzle to Bed"); LSTR MSG_BABYSTEP_X = _UxGT("Babystep X"); From 340dd93743b5494501d3b41a0959211c5f916356 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 4 Oct 2024 14:35:52 -0500 Subject: [PATCH 07/21] axis notes --- Marlin/src/gcode/config/M210.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Marlin/src/gcode/config/M210.cpp b/Marlin/src/gcode/config/M210.cpp index c51fca5488..99c750bd25 100644 --- a/Marlin/src/gcode/config/M210.cpp +++ b/Marlin/src/gcode/config/M210.cpp @@ -31,15 +31,15 @@ * M210 - Set homing feedrate for one or more axes * in current units (in/mm) per minute * - * X[feedrate] Set X axis homing feedrate - * Y[feedrate] Set Y axis homing feedrate - * Z[feedrate] Set Z axis homing feedrate - * I[feedrate] Set I axis homing feedrate - * J[feedrate] Set J axis homing feedrate - * K[feedrate] Set K axis homing feedrate - * U[feedrate] Set U axis homing feedrate - * V[feedrate] Set V axis homing feedrate - * W[feedrate] Set W axis homing feedrate + * X[feedrate] Set X axis homing feedrate + * Y[feedrate] Set Y axis homing feedrate + * Z[feedrate] Set Z axis homing feedrate + * A[feedrate] Set I axis homing feedrate (configured axis name applies) + * B[feedrate] Set J axis homing feedrate (configured axis name applies) + * C[feedrate] Set K axis homing feedrate (configured axis name applies) + * U[feedrate] Set U axis homing feedrate (configured axis name applies) + * V[feedrate] Set V axis homing feedrate (configured axis name applies) + * W[feedrate] Set W axis homing feedrate (configured axis name applies) * * With no arguments, report the current offsets. */ From e662cff9becad3fd3f1ebd676829eaf9663241c3 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 4 Oct 2024 14:41:49 -0500 Subject: [PATCH 08/21] tweak F for G-code move --- Marlin/src/gcode/gcode.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Marlin/src/gcode/gcode.cpp b/Marlin/src/gcode/gcode.cpp index 2afaffbb97..a71ab9822d 100644 --- a/Marlin/src/gcode/gcode.cpp +++ b/Marlin/src/gcode/gcode.cpp @@ -199,11 +199,11 @@ void GcodeSuite::get_destination_from_command() { recovery.save(); #endif - const float fr_mm_m = parser.floatval('F'); - if (fr_mm_m > 0) { - feedrate_mm_s = parser.value_feedrate(); + if (parser.floatval('F') > 0) { + const float fr_mm_min = parser.value_linear_units(); + feedrate_mm_s = MMM_TO_MMS(fr_mm_min); // Update the cutter feed rate for use by M4 I set inline moves. - TERN_(LASER_FEATURE, cutter.feedrate_mm_m = fr_mm_m); + TERN_(LASER_FEATURE, cutter.feedrate_mm_m = fr_mm_min); } #if ALL(PRINTCOUNTER, HAS_EXTRUDERS) From 02a76ce4ca9c92ef38c0010ac172e747570ffa24 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 4 Oct 2024 14:44:04 -0500 Subject: [PATCH 09/21] need more space --- Marlin/src/lcd/language/language_en.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Marlin/src/lcd/language/language_en.h b/Marlin/src/lcd/language/language_en.h index df3aa930d8..a88755c26f 100644 --- a/Marlin/src/lcd/language/language_en.h +++ b/Marlin/src/lcd/language/language_en.h @@ -100,7 +100,7 @@ namespace LanguageNarrow_en { LSTR MSG_Z_PROBE = _UxGT("Z Probe"); LSTR MSG_HOMING = _UxGT("Homing"); LSTR MSG_HOMING_FEEDRATE = _UxGT("Homing Feedrate"); - LSTR MSG_HOMING_FEEDRATE_N = _UxGT("@ Homing Feedrate"); + LSTR MSG_HOMING_FEEDRATE_N = _UxGT("@ Homing FR"); LSTR MSG_AUTO_HOME = _UxGT("Auto Home"); LSTR MSG_HOME_ALL = _UxGT("Home All"); LSTR MSG_AUTO_HOME_N = _UxGT("Home @"); @@ -1233,6 +1233,7 @@ namespace LanguageWide_en { LSTR MSG_INFO_PRINT_TIME = _UxGT("Print Time"); LSTR MSG_INFO_PRINT_LONGEST = _UxGT("Longest Job Time"); LSTR MSG_INFO_PRINT_FILAMENT = _UxGT("Extruded Total"); + LSTR MSG_HOMING_FEEDRATE_N = _UxGT("@ Homing Feedrate"); #endif } From de3e4ca30e5e5e7db89ac402c23e96976ad206c7 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 4 Oct 2024 14:49:51 -0500 Subject: [PATCH 10/21] for consistency --- Marlin/src/lcd/language/language_cz.h | 2 +- Marlin/src/lcd/language/language_de.h | 2 +- Marlin/src/lcd/language/language_en.h | 2 +- Marlin/src/lcd/language/language_es.h | 2 +- Marlin/src/lcd/language/language_fr.h | 2 +- Marlin/src/lcd/language/language_fr_na.h | 2 +- Marlin/src/lcd/language/language_gl.h | 2 +- Marlin/src/lcd/language/language_hu.h | 2 +- Marlin/src/lcd/language/language_it.h | 2 +- Marlin/src/lcd/language/language_pl.h | 2 +- Marlin/src/lcd/language/language_pt_br.h | 2 +- Marlin/src/lcd/language/language_ro.h | 2 +- Marlin/src/lcd/language/language_ru.h | 2 +- Marlin/src/lcd/language/language_sk.h | 2 +- Marlin/src/lcd/language/language_sv.h | 2 +- Marlin/src/lcd/language/language_tr.h | 2 +- Marlin/src/lcd/language/language_uk.h | 2 +- Marlin/src/lcd/language/language_zh_CN.h | 2 +- Marlin/src/lcd/language/language_zh_TW.h | 2 +- Marlin/src/lcd/menu/menu_configuration.cpp | 8 ++++---- 20 files changed, 23 insertions(+), 23 deletions(-) diff --git a/Marlin/src/lcd/language/language_cz.h b/Marlin/src/lcd/language/language_cz.h index 89f1a4ab2a..d1f8a18bf2 100644 --- a/Marlin/src/lcd/language/language_cz.h +++ b/Marlin/src/lcd/language/language_cz.h @@ -125,7 +125,7 @@ namespace LanguageNarrow_cz { LSTR MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Zrcadlení"); LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Plná kontrola"); LSTR MSG_HOTEND_OFFSET_Z = _UxGT("2. tryska Z"); - LSTR MSG_HOTEND_OFFSET_A = _UxGT("2. tryska @"); + LSTR MSG_HOTEND_OFFSET_N = _UxGT("2. tryska @"); LSTR MSG_UBL_DOING_G29 = _UxGT("Provádím G29"); LSTR MSG_UBL_TOOLS = _UxGT("UBL nástroje"); diff --git a/Marlin/src/lcd/language/language_de.h b/Marlin/src/lcd/language/language_de.h index 10ad8c6bad..f62b017f2f 100644 --- a/Marlin/src/lcd/language/language_de.h +++ b/Marlin/src/lcd/language/language_de.h @@ -173,7 +173,7 @@ namespace LanguageNarrow_de { LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("vollstä. Kontrolle"); LSTR MSG_IDEX_DUPE_GAP = _UxGT("X-Lücke duplizieren"); LSTR MSG_HOTEND_OFFSET_Z = _UxGT("2. Düse Z"); - LSTR MSG_HOTEND_OFFSET_A = _UxGT("2. Düse @"); + LSTR MSG_HOTEND_OFFSET_N = _UxGT("2. Düse @"); LSTR MSG_UBL_DOING_G29 = _UxGT("G29 ausführen"); LSTR MSG_UBL_TOOLS = _UxGT("UBL-Werkzeuge"); LSTR MSG_LCD_TILTING_MESH = _UxGT("Berührungspunkt"); diff --git a/Marlin/src/lcd/language/language_en.h b/Marlin/src/lcd/language/language_en.h index a88755c26f..366cc68410 100644 --- a/Marlin/src/lcd/language/language_en.h +++ b/Marlin/src/lcd/language/language_en.h @@ -228,7 +228,7 @@ namespace LanguageNarrow_en { LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Full Control"); LSTR MSG_IDEX_DUPE_GAP = _UxGT("Duplicate X-Gap"); LSTR MSG_HOTEND_OFFSET_Z = _UxGT("2nd Nozzle Z"); - LSTR MSG_HOTEND_OFFSET_A = _UxGT("2nd Nozzle @"); + LSTR MSG_HOTEND_OFFSET_N = _UxGT("2nd Nozzle @"); LSTR MSG_UBL_DOING_G29 = _UxGT("Doing G29"); LSTR MSG_UBL_TOOLS = _UxGT("UBL Tools"); LSTR MSG_LCD_TILTING_MESH = _UxGT("Tilting Point"); diff --git a/Marlin/src/lcd/language/language_es.h b/Marlin/src/lcd/language/language_es.h index 5bee09b242..1b3ec5f0dc 100644 --- a/Marlin/src/lcd/language/language_es.h +++ b/Marlin/src/lcd/language/language_es.h @@ -124,7 +124,7 @@ namespace LanguageNarrow_es { LSTR MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Copia Reflejada"); LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Control Total"); LSTR MSG_HOTEND_OFFSET_Z = _UxGT("2ª Fusor Z"); - LSTR MSG_HOTEND_OFFSET_A = _UxGT("2ª Fusor @"); + LSTR MSG_HOTEND_OFFSET_N = _UxGT("2ª Fusor @"); LSTR MSG_UBL_DOING_G29 = _UxGT("Hacer G29"); LSTR MSG_UBL_TOOLS = _UxGT("Herramientas UBL"); LSTR MSG_LCD_TILTING_MESH = _UxGT("Punto de inclinación"); diff --git a/Marlin/src/lcd/language/language_fr.h b/Marlin/src/lcd/language/language_fr.h index 7390930cd8..c13311d9d8 100644 --- a/Marlin/src/lcd/language/language_fr.h +++ b/Marlin/src/lcd/language/language_fr.h @@ -129,7 +129,7 @@ namespace LanguageNarrow_fr { LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Contrôle complet"); LSTR MSG_OFFSETS_MENU = _UxGT("Offsets Outil"); LSTR MSG_HOTEND_OFFSET_Z = _UxGT("Buse 2 Z"); - LSTR MSG_HOTEND_OFFSET_A = _UxGT("Buse 2 @"); + LSTR MSG_HOTEND_OFFSET_N = _UxGT("Buse 2 @"); LSTR MSG_G26_HEATING_BED = _UxGT("G26: Chauffage du lit"); LSTR MSG_G26_HEATING_NOZZLE = _UxGT("Buse en chauffe..."); LSTR MSG_G26_MANUAL_PRIME = _UxGT("Amorce manuelle..."); diff --git a/Marlin/src/lcd/language/language_fr_na.h b/Marlin/src/lcd/language/language_fr_na.h index 1d9af9b22c..02ee698035 100644 --- a/Marlin/src/lcd/language/language_fr_na.h +++ b/Marlin/src/lcd/language/language_fr_na.h @@ -129,7 +129,7 @@ namespace LanguageNarrow_fr_na { LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Controle complet"); LSTR MSG_OFFSETS_MENU = _UxGT("Offsets Outil"); LSTR MSG_HOTEND_OFFSET_Z = _UxGT("Buse 2 Z"); - LSTR MSG_HOTEND_OFFSET_A = _UxGT("Buse 2 @"); + LSTR MSG_HOTEND_OFFSET_N = _UxGT("Buse 2 @"); LSTR MSG_G26_HEATING_BED = _UxGT("G26: Chauffage du lit"); LSTR MSG_G26_HEATING_NOZZLE = _UxGT("Buse en chauffe..."); LSTR MSG_G26_MANUAL_PRIME = _UxGT("Amorce manuelle..."); diff --git a/Marlin/src/lcd/language/language_gl.h b/Marlin/src/lcd/language/language_gl.h index ebcf384c5c..26b9a6da4b 100644 --- a/Marlin/src/lcd/language/language_gl.h +++ b/Marlin/src/lcd/language/language_gl.h @@ -121,7 +121,7 @@ namespace LanguageNarrow_gl { LSTR MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Copia Espello"); LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Control Total"); LSTR MSG_HOTEND_OFFSET_Z = _UxGT("2º Bico Z"); - LSTR MSG_HOTEND_OFFSET_A = _UxGT("2º Bico @"); + LSTR MSG_HOTEND_OFFSET_N = _UxGT("2º Bico @"); LSTR MSG_UBL_DOING_G29 = _UxGT("Executando G29"); LSTR MSG_UBL_TOOLS = _UxGT("Ferramentas UBL"); LSTR MSG_LCD_TILTING_MESH = _UxGT("Punto de inclinación"); diff --git a/Marlin/src/lcd/language/language_hu.h b/Marlin/src/lcd/language/language_hu.h index adb6d54a26..1d403e6265 100644 --- a/Marlin/src/lcd/language/language_hu.h +++ b/Marlin/src/lcd/language/language_hu.h @@ -151,7 +151,7 @@ namespace LanguageNarrow_hu { LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Teljes felügyelet"); LSTR MSG_IDEX_DUPE_GAP = _UxGT("X-hézag másolása"); LSTR MSG_HOTEND_OFFSET_Z = _UxGT("2. fej Z"); - LSTR MSG_HOTEND_OFFSET_A = _UxGT("2. fej @"); + LSTR MSG_HOTEND_OFFSET_N = _UxGT("2. fej @"); LSTR MSG_UBL_DOING_G29 = _UxGT("Szintezz! G29"); LSTR MSG_UBL_TOOLS = _UxGT("UBL eszköz"); LSTR MSG_LCD_TILTING_MESH = _UxGT("Döntési pont"); diff --git a/Marlin/src/lcd/language/language_it.h b/Marlin/src/lcd/language/language_it.h index a945d94a4f..edb554ed1a 100644 --- a/Marlin/src/lcd/language/language_it.h +++ b/Marlin/src/lcd/language/language_it.h @@ -193,7 +193,7 @@ namespace LanguageNarrow_it { LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Pieno controllo"); LSTR MSG_IDEX_DUPE_GAP = _UxGT("X-Gap-X duplicato"); LSTR MSG_HOTEND_OFFSET_Z = _UxGT("2° ugello Z"); - LSTR MSG_HOTEND_OFFSET_A = _UxGT("2° ugello @"); + LSTR MSG_HOTEND_OFFSET_N = _UxGT("2° ugello @"); LSTR MSG_UBL_DOING_G29 = _UxGT("G29 in corso"); LSTR MSG_UBL_TOOLS = _UxGT("Strumenti UBL"); LSTR MSG_LCD_TILTING_MESH = _UxGT("Punto inclinaz."); diff --git a/Marlin/src/lcd/language/language_pl.h b/Marlin/src/lcd/language/language_pl.h index c96da22b60..f23fcd3874 100644 --- a/Marlin/src/lcd/language/language_pl.h +++ b/Marlin/src/lcd/language/language_pl.h @@ -134,7 +134,7 @@ namespace LanguageNarrow_pl { LSTR MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Kopia lustrzana"); LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Pełne sterowanie"); LSTR MSG_HOTEND_OFFSET_Z = _UxGT("2ga dysza Z"); - LSTR MSG_HOTEND_OFFSET_A = _UxGT("2ga dysza @"); + LSTR MSG_HOTEND_OFFSET_N = _UxGT("2ga dysza @"); LSTR MSG_UBL_DOING_G29 = _UxGT("Wykonywanie G29"); LSTR MSG_UBL_TOOLS = _UxGT("Narzędzia UBL"); LSTR MSG_LCD_TILTING_MESH = _UxGT("Punkt pochylenia"); diff --git a/Marlin/src/lcd/language/language_pt_br.h b/Marlin/src/lcd/language/language_pt_br.h index 17c6ada026..97ade279bf 100644 --- a/Marlin/src/lcd/language/language_pt_br.h +++ b/Marlin/src/lcd/language/language_pt_br.h @@ -111,7 +111,7 @@ namespace LanguageNarrow_pt_br { LSTR MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Cópia espelhada"); LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Controle Total"); LSTR MSG_HOTEND_OFFSET_Z = _UxGT("2o bico Z"); - LSTR MSG_HOTEND_OFFSET_A = _UxGT("2o bico @"); + LSTR MSG_HOTEND_OFFSET_N = _UxGT("2o bico @"); LSTR MSG_UBL_DOING_G29 = _UxGT("Executando G29"); LSTR MSG_UBL_TOOLS = _UxGT("Ferramentas UBL"); LSTR MSG_UBL_MANUAL_MESH = _UxGT("Fazer malha manual"); diff --git a/Marlin/src/lcd/language/language_ro.h b/Marlin/src/lcd/language/language_ro.h index 81f44fe65a..57095b7475 100644 --- a/Marlin/src/lcd/language/language_ro.h +++ b/Marlin/src/lcd/language/language_ro.h @@ -120,7 +120,7 @@ namespace LanguageNarrow_ro { LSTR MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Mirrored Copy"); LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Full Control"); LSTR MSG_HOTEND_OFFSET_Z = _UxGT("2nd Nozzle Z"); - LSTR MSG_HOTEND_OFFSET_A = _UxGT("2nd Nozzle @"); + LSTR MSG_HOTEND_OFFSET_N = _UxGT("2nd Nozzle @"); LSTR MSG_UBL_DOING_G29 = _UxGT("Doing G29"); LSTR MSG_UBL_TOOLS = _UxGT("UBL Tools"); LSTR MSG_LCD_TILTING_MESH = _UxGT("Tilting Point"); diff --git a/Marlin/src/lcd/language/language_ru.h b/Marlin/src/lcd/language/language_ru.h index 9b441e1484..7ef15a61e0 100644 --- a/Marlin/src/lcd/language/language_ru.h +++ b/Marlin/src/lcd/language/language_ru.h @@ -150,7 +150,7 @@ namespace LanguageNarrow_ru { LSTR MSG_IDEX_DUPE_GAP = _UxGT("Дублировать X-зазор"); LSTR MSG_HOTEND_OFFSET_Z = _UxGT("2-е сопло Z"); - LSTR MSG_HOTEND_OFFSET_A = _UxGT("2-е сопло @"); + LSTR MSG_HOTEND_OFFSET_N = _UxGT("2-е сопло @"); LSTR MSG_UBL_DOING_G29 = _UxGT("Выполняем G29"); LSTR MSG_UBL_TOOLS = _UxGT("Инструменты UBL"); diff --git a/Marlin/src/lcd/language/language_sk.h b/Marlin/src/lcd/language/language_sk.h index e3007b12ae..44ad37aa9b 100644 --- a/Marlin/src/lcd/language/language_sk.h +++ b/Marlin/src/lcd/language/language_sk.h @@ -189,7 +189,7 @@ namespace LanguageNarrow_sk { LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Plná kontrola"); LSTR MSG_IDEX_DUPE_GAP = _UxGT("Duplik. medz.-X"); LSTR MSG_HOTEND_OFFSET_Z = _UxGT("2. tryska Z"); - LSTR MSG_HOTEND_OFFSET_A = _UxGT("2. tryska @"); + LSTR MSG_HOTEND_OFFSET_N = _UxGT("2. tryska @"); LSTR MSG_UBL_DOING_G29 = _UxGT("Vykonávam G29"); LSTR MSG_UBL_TOOLS = _UxGT("Nástroje UBL"); LSTR MSG_LCD_TILTING_MESH = _UxGT("Vyrovnávam bod"); diff --git a/Marlin/src/lcd/language/language_sv.h b/Marlin/src/lcd/language/language_sv.h index 4023d13521..5f47a75b34 100644 --- a/Marlin/src/lcd/language/language_sv.h +++ b/Marlin/src/lcd/language/language_sv.h @@ -143,7 +143,7 @@ namespace LanguageNarrow_sv { LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Full Kontroll"); LSTR MSG_IDEX_DUPE_GAP = _UxGT("Duplicera X-Avstånd"); LSTR MSG_HOTEND_OFFSET_Z = _UxGT("2:a Munstycke Z"); - LSTR MSG_HOTEND_OFFSET_A = _UxGT("2:a Munstycke @"); + LSTR MSG_HOTEND_OFFSET_N = _UxGT("2:a Munstycke @"); LSTR MSG_UBL_DOING_G29 = _UxGT("Utför G29"); LSTR MSG_UBL_TOOLS = _UxGT("UBL Verktyg"); LSTR MSG_LCD_TILTING_MESH = _UxGT("Lutningspunkt"); diff --git a/Marlin/src/lcd/language/language_tr.h b/Marlin/src/lcd/language/language_tr.h index 544383f188..b3c20407f6 100644 --- a/Marlin/src/lcd/language/language_tr.h +++ b/Marlin/src/lcd/language/language_tr.h @@ -192,7 +192,7 @@ namespace LanguageNarrow_tr { LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Tam Kontrol"); LSTR MSG_IDEX_DUPE_GAP = _UxGT("Yinelenen X-Boşluğu"); LSTR MSG_HOTEND_OFFSET_Z = _UxGT("2. nozul Z"); - LSTR MSG_HOTEND_OFFSET_A = _UxGT("2. nozul @"); + LSTR MSG_HOTEND_OFFSET_N = _UxGT("2. nozul @"); LSTR MSG_UBL_DOING_G29 = _UxGT("G29 Çalışıyor"); LSTR MSG_UBL_TOOLS = _UxGT("UBL Araçları"); LSTR MSG_LCD_TILTING_MESH = _UxGT("Eğim Noktası"); diff --git a/Marlin/src/lcd/language/language_uk.h b/Marlin/src/lcd/language/language_uk.h index e223a815a0..2d06a92676 100644 --- a/Marlin/src/lcd/language/language_uk.h +++ b/Marlin/src/lcd/language/language_uk.h @@ -148,7 +148,7 @@ namespace LanguageNarrow_uk { LSTR MSG_IDEX_DUPE_GAP = _UxGT("Дублюв. X-проміжок"); LSTR MSG_HOTEND_OFFSET_Z = _UxGT("Друге сопло Z"); - LSTR MSG_HOTEND_OFFSET_A = _UxGT("Друге сопло @"); + LSTR MSG_HOTEND_OFFSET_N = _UxGT("Друге сопло @"); LSTR MSG_UBL_DOING_G29 = _UxGT("Виконується G29"); LSTR MSG_UBL_TOOLS = _UxGT("Інструменти UBL"); diff --git a/Marlin/src/lcd/language/language_zh_CN.h b/Marlin/src/lcd/language/language_zh_CN.h index 75d81f2c9a..e223267bec 100644 --- a/Marlin/src/lcd/language/language_zh_CN.h +++ b/Marlin/src/lcd/language/language_zh_CN.h @@ -124,7 +124,7 @@ namespace LanguageNarrow_zh_CN { LSTR MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("镜像复制"); LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("完全控制"); LSTR MSG_HOTEND_OFFSET_Z = _UxGT("第二喷头是Z"); - LSTR MSG_HOTEND_OFFSET_A = _UxGT("第二喷头是@"); + LSTR MSG_HOTEND_OFFSET_N = _UxGT("第二喷头是@"); LSTR MSG_UBL_DOING_G29 = _UxGT("执行G29"); // "Doing G29" LSTR MSG_UBL_TOOLS = _UxGT("UBL工具"); // "UBL Tools" LSTR MSG_LCD_TILTING_MESH = _UxGT("倾斜點"); diff --git a/Marlin/src/lcd/language/language_zh_TW.h b/Marlin/src/lcd/language/language_zh_TW.h index e47704da7e..547500c4d1 100644 --- a/Marlin/src/lcd/language/language_zh_TW.h +++ b/Marlin/src/lcd/language/language_zh_TW.h @@ -116,7 +116,7 @@ namespace LanguageNarrow_zh_TW { LSTR MSG_IDEX_MODE_MIRRORED_COPY = _UxGT("Mirrored Copy"); LSTR MSG_IDEX_MODE_FULL_CTRL = _UxGT("Full Control"); LSTR MSG_HOTEND_OFFSET_Z = _UxGT("2nd Nozzle Z"); - LSTR MSG_HOTEND_OFFSET_A = _UxGT("2nd Nozzle @"); + LSTR MSG_HOTEND_OFFSET_N = _UxGT("2nd Nozzle @"); LSTR MSG_UBL_DOING_G29 = _UxGT("執行G29"); // "Doing G29" LSTR MSG_UBL_TOOLS = _UxGT("UBL工具"); // "UBL Tools" LSTR MSG_LCD_TILTING_MESH = _UxGT("傾斜點"); // "Tilting Point" diff --git a/Marlin/src/lcd/menu/menu_configuration.cpp b/Marlin/src/lcd/menu/menu_configuration.cpp index 6b7f03e0a3..6a2468b9d5 100644 --- a/Marlin/src/lcd/menu/menu_configuration.cpp +++ b/Marlin/src/lcd/menu/menu_configuration.cpp @@ -241,12 +241,12 @@ void menu_advanced_settings(); START_MENU(); BACK_ITEM(MSG_CONFIGURATION); #if ENABLED(DUAL_X_CARRIAGE) - EDIT_ITEM_FAST_N(float42_52, X_AXIS, MSG_HOTEND_OFFSET_A, &hotend_offset[1].x, float(X2_HOME_POS - 25), float(X2_HOME_POS + 25), _recalc_offsets); + EDIT_ITEM_FAST_N(float42_52, X_AXIS, MSG_HOTEND_OFFSET_N, &hotend_offset[1].x, float(X2_HOME_POS - 25), float(X2_HOME_POS + 25), _recalc_offsets); #else - EDIT_ITEM_FAST_N(float42_52, X_AXIS, MSG_HOTEND_OFFSET_A, &hotend_offset[1].x, -99.0f, 99.0f, _recalc_offsets); + EDIT_ITEM_FAST_N(float42_52, X_AXIS, MSG_HOTEND_OFFSET_N, &hotend_offset[1].x, -99.0f, 99.0f, _recalc_offsets); #endif - EDIT_ITEM_FAST_N(float42_52, Y_AXIS, MSG_HOTEND_OFFSET_A, &hotend_offset[1].y, -99.0f, 99.0f, _recalc_offsets); - EDIT_ITEM_FAST_N(float42_52, Z_AXIS, MSG_HOTEND_OFFSET_A, &hotend_offset[1].z, -10.0f, 10.0f, _recalc_offsets); + EDIT_ITEM_FAST_N(float42_52, Y_AXIS, MSG_HOTEND_OFFSET_N, &hotend_offset[1].y, -99.0f, 99.0f, _recalc_offsets); + EDIT_ITEM_FAST_N(float42_52, Z_AXIS, MSG_HOTEND_OFFSET_N, &hotend_offset[1].z, -10.0f, 10.0f, _recalc_offsets); #if ENABLED(EEPROM_SETTINGS) ACTION_ITEM(MSG_STORE_EEPROM, ui.store_settings); #endif From 458c5d1e1dce5636f795e6d736f9391540e0af40 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 4 Oct 2024 15:51:24 -0500 Subject: [PATCH 11/21] fix e only --- Marlin/src/core/language.h | 6 +++--- Marlin/src/core/types.h | 2 -- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/Marlin/src/core/language.h b/Marlin/src/core/language.h index 67830ac95c..217cd2c2ec 100644 --- a/Marlin/src/core/language.h +++ b/Marlin/src/core/language.h @@ -361,16 +361,16 @@ // General axis names #if HAS_X_AXIS #define AXIS1_NAME 'X' - #define STR_X "X" #endif #if HAS_Y_AXIS #define AXIS2_NAME 'Y' - #define STR_Y "Y" #endif #if HAS_Z_AXIS #define AXIS3_NAME 'Z' - #define STR_Z "Z" #endif +#define STR_X "X" +#define STR_Y "Y" +#define STR_Z "Z" #define STR_E "E" #if IS_KINEMATIC #define STR_A "A" diff --git a/Marlin/src/core/types.h b/Marlin/src/core/types.h index 9e6ff7ee16..7793f1f995 100644 --- a/Marlin/src/core/types.h +++ b/Marlin/src/core/types.h @@ -51,8 +51,6 @@ template struct IF { typedef L type; }; #define MAIN_AXIS_NAMES NUM_AXIS_LIST(X, Y, Z, I, J, K, U, V, W) #define MAIN_AXIS_NAMES_LC NUM_AXIS_LIST(x, y, z, i, j, k, u, v, w) #define STR_AXES_MAIN NUM_AXIS_GANG("X", "Y", "Z", STR_I, STR_J, STR_K, STR_U, STR_V, STR_W) -#define MAIN_AXIS_MAP(F) MAP(F, MAIN_AXIS_NAMES) -#define MAIN_AXIS_MAP_LC(F) MAP(F, MAIN_AXIS_NAMES_LC) #define LOGICAL_AXIS_GANG(N,V...) NUM_AXIS_GANG(V) GANG_ITEM_E(N) #define LOGICAL_AXIS_CODE(N,V...) NUM_AXIS_CODE(V) CODE_ITEM_E(N) From 7c8e5fc97d327a53ff1360a348418b8ed0dca231 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 4 Oct 2024 15:55:30 -0500 Subject: [PATCH 12/21] tweak order --- Marlin/src/core/language.h | 61 +++++++++++++++++++------------------- 1 file changed, 31 insertions(+), 30 deletions(-) diff --git a/Marlin/src/core/language.h b/Marlin/src/core/language.h index 217cd2c2ec..e641a1431b 100644 --- a/Marlin/src/core/language.h +++ b/Marlin/src/core/language.h @@ -324,6 +324,37 @@ #define STR_USER_THERMISTORS "User thermistors" #define STR_DELAYED_POWEROFF "Delayed poweroff" +// +// General axis names +// +#if HAS_X_AXIS + #define AXIS1_NAME 'X' +#endif +#if HAS_Y_AXIS + #define AXIS2_NAME 'Y' +#endif +#if HAS_Z_AXIS + #define AXIS3_NAME 'Z' +#endif +#define STR_X "X" +#define STR_Y "Y" +#define STR_Z "Z" +#define STR_E "E" +#if IS_KINEMATIC + #define STR_A "A" + #define STR_B "B" + #define STR_C "C" +#else + #define STR_A STR_X + #define STR_B STR_Y + #define STR_C STR_Z +#endif +#define STR_X2 STR_A "2" +#define STR_Y2 STR_B "2" +#define STR_Z2 STR_C "2" +#define STR_Z3 STR_C "3" +#define STR_Z4 STR_C "4" + // // Endstop Names used by Endstops::report_states // @@ -355,38 +386,8 @@ #define STR_Z_PROBE "z_probe" #define STR_PROBE_EN "probe_en" #define STR_FILAMENT "filament" - #define STR_CALIBRATION "calibration" -// General axis names -#if HAS_X_AXIS - #define AXIS1_NAME 'X' -#endif -#if HAS_Y_AXIS - #define AXIS2_NAME 'Y' -#endif -#if HAS_Z_AXIS - #define AXIS3_NAME 'Z' -#endif -#define STR_X "X" -#define STR_Y "Y" -#define STR_Z "Z" -#define STR_E "E" -#if IS_KINEMATIC - #define STR_A "A" - #define STR_B "B" - #define STR_C "C" -#else - #define STR_A STR_X - #define STR_B STR_Y - #define STR_C STR_Z -#endif -#define STR_X2 STR_A "2" -#define STR_Y2 STR_B "2" -#define STR_Z2 STR_C "2" -#define STR_Z3 STR_C "3" -#define STR_Z4 STR_C "4" - // Extra Axis and Endstop Names #if HAS_I_AXIS #if AXIS4_NAME == 'A' From 0da6c2f682b4d7075d1c03cd56668db1ac8aeed6 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 4 Oct 2024 16:26:32 -0500 Subject: [PATCH 13/21] G28 F override specified axes as needed --- Marlin/src/gcode/calibrate/G28.cpp | 41 ++++++++++++++++++++++-------- 1 file changed, 31 insertions(+), 10 deletions(-) diff --git a/Marlin/src/gcode/calibrate/G28.cpp b/Marlin/src/gcode/calibrate/G28.cpp index 3d0ff1aea5..17c4d8456a 100644 --- a/Marlin/src/gcode/calibrate/G28.cpp +++ b/Marlin/src/gcode/calibrate/G28.cpp @@ -239,8 +239,10 @@ void GcodeSuite::G28() { #if ENABLED(EDITABLE_HOMING_FEEDRATE) REMEMBER(fr, homing_feedrate_mm_m); - if (parser.floatval('F') > 0) - homing_feedrate_mm_m.x = TERN_(HAS_Y_AXIS, homing_feedrate_mm_m.y =) parser.value_linear_units(); // mm/min + float override_fr_units_min = parser.floatval('F'); + NOLESS(override_fr_units_min, 0.0f); + #else + constexpr float override_fr_units_min = 0.0f; #endif #if ENABLED(FULL_REPORT_TO_HOST_FEATURE) @@ -307,6 +309,12 @@ void GcodeSuite::G28() { #if ENABLED(DELTA) + if (override_fr_units_min) { + homing_feedrate_mm_m.x = X_AXIS_UNIT(override_fr_units_min); + homing_feedrate_mm_m.y = Y_AXIS_UNIT(override_fr_units_min); + homing_feedrate_mm_m.z = Z_AXIS_UNIT(override_fr_units_min); + } + constexpr bool doZ = true; // for NANODLP_Z_SYNC if your DLP is on a DELTA home_delta(); @@ -315,6 +323,12 @@ void GcodeSuite::G28() { #elif ENABLED(AXEL_TPARA) + if (override_fr_units_min) { + homing_feedrate_mm_m.x = X_AXIS_UNIT(override_fr_units_min); + homing_feedrate_mm_m.y = Y_AXIS_UNIT(override_fr_units_min); + homing_feedrate_mm_m.z = Z_AXIS_UNIT(override_fr_units_min); + } + constexpr bool doZ = true; // for NANODLP_Z_SYNC if your DLP is on a TPARA home_TPARA(); @@ -352,6 +366,14 @@ void GcodeSuite::G28() { constexpr bool doY = false; #endif + #define OVERRIDE_AXIS_FR(A) if (override_fr_units_min && do##A) homing_feedrate_mm_m.A = A##_AXIS_UNIT(override_fr_units_min); + + XYZ_CODE( + OVERRIDE_AXIS_FR(X), + OVERRIDE_AXIS_FR(Y), + OVERRIDE_AXIS_FR(Z) + ); + #if HAS_Z_AXIS UNUSED(needZ); UNUSED(homeZZ); @@ -433,7 +455,9 @@ void GcodeSuite::G28() { #if ALL(FOAMCUTTER_XYUV, HAS_I_AXIS) // Home I (after X) + OVERRIDE_AXIS_FR(I); if (doI) homeaxis(I_AXIS); + doI = false; #endif #if HAS_Y_AXIS @@ -444,7 +468,9 @@ void GcodeSuite::G28() { #if ALL(FOAMCUTTER_XYUV, HAS_J_AXIS) // Home J (after Y) + OVERRIDE_AXIS_FR(J); if (doJ) homeaxis(J_AXIS); + doJ = false; #endif TERN_(IMPROVE_HOMING_RELIABILITY, end_slow_homing(saved_motion_state)); @@ -476,14 +502,9 @@ void GcodeSuite::G28() { } #endif - SECONDARY_AXIS_CODE( - if (doI) homeaxis(I_AXIS), - if (doJ) homeaxis(J_AXIS), - if (doK) homeaxis(K_AXIS), - if (doU) homeaxis(U_AXIS), - if (doV) homeaxis(V_AXIS), - if (doW) homeaxis(W_AXIS) - ); + #define _HOME_AXIS(A) if (do##A) homeaxis(_AXIS(A)); + SECONDARY_AXIS_MAP(OVERRIDE_AXIS_FR); + SECONDARY_AXIS_MAP(_HOME_AXIS); #endif // HAS_Z_AXIS From 6484085720a52eb6d8cfe2ef4158fcb463231851 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 4 Oct 2024 16:37:43 -0500 Subject: [PATCH 14/21] =?UTF-8?q?also=E2=80=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/gcode/calibrate/G28.cpp | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/Marlin/src/gcode/calibrate/G28.cpp b/Marlin/src/gcode/calibrate/G28.cpp index 17c4d8456a..9fbe0d2c57 100644 --- a/Marlin/src/gcode/calibrate/G28.cpp +++ b/Marlin/src/gcode/calibrate/G28.cpp @@ -307,12 +307,12 @@ void GcodeSuite::G28() { bool finalRaiseZ = false; #endif + #define SET_AXIS_FR(A) homing_feedrate_mm_m.A = A##_AXIS_UNIT(override_fr_units_min) + #if ENABLED(DELTA) if (override_fr_units_min) { - homing_feedrate_mm_m.x = X_AXIS_UNIT(override_fr_units_min); - homing_feedrate_mm_m.y = Y_AXIS_UNIT(override_fr_units_min); - homing_feedrate_mm_m.z = Z_AXIS_UNIT(override_fr_units_min); + SET_AXIS_FR(X); SET_AXIS_FR(Y); SET_AXIS_FR(Z); } constexpr bool doZ = true; // for NANODLP_Z_SYNC if your DLP is on a DELTA @@ -324,9 +324,7 @@ void GcodeSuite::G28() { #elif ENABLED(AXEL_TPARA) if (override_fr_units_min) { - homing_feedrate_mm_m.x = X_AXIS_UNIT(override_fr_units_min); - homing_feedrate_mm_m.y = Y_AXIS_UNIT(override_fr_units_min); - homing_feedrate_mm_m.z = Z_AXIS_UNIT(override_fr_units_min); + SET_AXIS_FR(X); SET_AXIS_FR(Y); SET_AXIS_FR(Z); } constexpr bool doZ = true; // for NANODLP_Z_SYNC if your DLP is on a TPARA @@ -366,13 +364,17 @@ void GcodeSuite::G28() { constexpr bool doY = false; #endif - #define OVERRIDE_AXIS_FR(A) if (override_fr_units_min && do##A) homing_feedrate_mm_m.A = A##_AXIS_UNIT(override_fr_units_min); + #define OVERRIDE_AXIS_FR(A) if (override_fr_units_min && do##A) SET_AXIS_FR(A); - XYZ_CODE( - OVERRIDE_AXIS_FR(X), - OVERRIDE_AXIS_FR(Y), - OVERRIDE_AXIS_FR(Z) - ); + #if HAS_X_AXIS + OVERRIDE_AXIS_FR(X); + #endif + #if HAS_Y_AXIS + OVERRIDE_AXIS_FR(Y); + #endif + #if HAS_Z_AXIS + OVERRIDE_AXIS_FR(Z); + #endif #if HAS_Z_AXIS From 823067cc29180bb452af8e26b2efccca311a6bc4 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 4 Oct 2024 16:43:02 -0500 Subject: [PATCH 15/21] wrapper --- Marlin/src/gcode/calibrate/G28.cpp | 29 +++++++++++------------------ 1 file changed, 11 insertions(+), 18 deletions(-) diff --git a/Marlin/src/gcode/calibrate/G28.cpp b/Marlin/src/gcode/calibrate/G28.cpp index 9fbe0d2c57..773fa636bc 100644 --- a/Marlin/src/gcode/calibrate/G28.cpp +++ b/Marlin/src/gcode/calibrate/G28.cpp @@ -307,7 +307,11 @@ void GcodeSuite::G28() { bool finalRaiseZ = false; #endif - #define SET_AXIS_FR(A) homing_feedrate_mm_m.A = A##_AXIS_UNIT(override_fr_units_min) + #if ENABLED(EDITABLE_HOMING_FEEDRATE) + #define SET_AXIS_FR(A) homing_feedrate_mm_m.A = A##_AXIS_UNIT(override_fr_units_min) + #else + #define SET_AXIS_FR(...) NOOP + #endif #if ENABLED(DELTA) @@ -366,15 +370,9 @@ void GcodeSuite::G28() { #define OVERRIDE_AXIS_FR(A) if (override_fr_units_min && do##A) SET_AXIS_FR(A); - #if HAS_X_AXIS - OVERRIDE_AXIS_FR(X); - #endif - #if HAS_Y_AXIS - OVERRIDE_AXIS_FR(Y); - #endif - #if HAS_Z_AXIS - OVERRIDE_AXIS_FR(Z); - #endif + TERN_(HAS_X_AXIS, OVERRIDE_AXIS_FR(X)); + TERN_(HAS_Y_AXIS, OVERRIDE_AXIS_FR(Y)); + TERN_(HAS_Z_AXIS, OVERRIDE_AXIS_FR(Z)); #if HAS_Z_AXIS @@ -457,22 +455,17 @@ void GcodeSuite::G28() { #if ALL(FOAMCUTTER_XYUV, HAS_I_AXIS) // Home I (after X) - OVERRIDE_AXIS_FR(I); - if (doI) homeaxis(I_AXIS); - doI = false; + if (doI) { OVERRIDE_AXIS_FR(I); homeaxis(I_AXIS); } #endif #if HAS_Y_AXIS // Home Y (after X) - if (DISABLED(HOME_Y_BEFORE_X) && doY) - homeaxis(Y_AXIS); + if (DISABLED(HOME_Y_BEFORE_X) && doY) homeaxis(Y_AXIS); #endif #if ALL(FOAMCUTTER_XYUV, HAS_J_AXIS) // Home J (after Y) - OVERRIDE_AXIS_FR(J); - if (doJ) homeaxis(J_AXIS); - doJ = false; + if (doJ) { OVERRIDE_AXIS_FR(J); homeaxis(J_AXIS); } #endif TERN_(IMPROVE_HOMING_RELIABILITY, end_slow_homing(saved_motion_state)); From 7ac255b92e5b6adf6e526de9eb91e4a776b551e0 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 4 Oct 2024 16:50:35 -0500 Subject: [PATCH 16/21] use MAP() --- Marlin/src/gcode/calibrate/G28.cpp | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/Marlin/src/gcode/calibrate/G28.cpp b/Marlin/src/gcode/calibrate/G28.cpp index 773fa636bc..c94abc88c3 100644 --- a/Marlin/src/gcode/calibrate/G28.cpp +++ b/Marlin/src/gcode/calibrate/G28.cpp @@ -308,16 +308,14 @@ void GcodeSuite::G28() { #endif #if ENABLED(EDITABLE_HOMING_FEEDRATE) - #define SET_AXIS_FR(A) homing_feedrate_mm_m.A = A##_AXIS_UNIT(override_fr_units_min) + #define SET_AXIS_FR(A) homing_feedrate_mm_m.A = A##_AXIS_UNIT(override_fr_units_min); #else - #define SET_AXIS_FR(...) NOOP + #define SET_AXIS_FR(...) NOOP; #endif #if ENABLED(DELTA) - if (override_fr_units_min) { - SET_AXIS_FR(X); SET_AXIS_FR(Y); SET_AXIS_FR(Z); - } + if (override_fr_units_min) MAP(SET_AXIS_FR, X, Y, Z); constexpr bool doZ = true; // for NANODLP_Z_SYNC if your DLP is on a DELTA @@ -327,9 +325,7 @@ void GcodeSuite::G28() { #elif ENABLED(AXEL_TPARA) - if (override_fr_units_min) { - SET_AXIS_FR(X); SET_AXIS_FR(Y); SET_AXIS_FR(Z); - } + if (override_fr_units_min) MAP(SET_AXIS_FR, X, Y, Z); constexpr bool doZ = true; // for NANODLP_Z_SYNC if your DLP is on a TPARA From 6ea7af129186a18da5fbb07ef0acb08a5d0dad94 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 4 Oct 2024 16:58:18 -0500 Subject: [PATCH 17/21] move within axis test --- Marlin/src/gcode/calibrate/G28.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Marlin/src/gcode/calibrate/G28.cpp b/Marlin/src/gcode/calibrate/G28.cpp index c94abc88c3..76748a64ed 100644 --- a/Marlin/src/gcode/calibrate/G28.cpp +++ b/Marlin/src/gcode/calibrate/G28.cpp @@ -237,14 +237,6 @@ void GcodeSuite::G28() { return; } - #if ENABLED(EDITABLE_HOMING_FEEDRATE) - REMEMBER(fr, homing_feedrate_mm_m); - float override_fr_units_min = parser.floatval('F'); - NOLESS(override_fr_units_min, 0.0f); - #else - constexpr float override_fr_units_min = 0.0f; - #endif - #if ENABLED(FULL_REPORT_TO_HOST_FEATURE) const M_StateEnum old_grblstate = M_State_grbl; set_and_report_grblstate(M_HOMING); @@ -307,9 +299,14 @@ void GcodeSuite::G28() { bool finalRaiseZ = false; #endif + // Allow 'G28 F' to override specified homing axes #if ENABLED(EDITABLE_HOMING_FEEDRATE) + REMEMBER(fr, homing_feedrate_mm_m); + float override_fr_units_min = parser.floatval('F'); + NOLESS(override_fr_units_min, 0.0f); #define SET_AXIS_FR(A) homing_feedrate_mm_m.A = A##_AXIS_UNIT(override_fr_units_min); #else + constexpr float override_fr_units_min = 0.0f; #define SET_AXIS_FR(...) NOOP; #endif @@ -539,6 +536,9 @@ void GcodeSuite::G28() { endstops.not_homing(); + // Restore feedrates before any machine-dependent moves + TERN_(EDITABLE_HOMING_FEEDRATE, RESTORE(fr)); + // Clear endstop state for polled stallGuard endstops TERN_(SPI_ENDSTOPS, endstops.clear_endstop_state()); From b94a82a5e3fe50fd6c24a431186db7e2750151b5 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 4 Oct 2024 17:13:29 -0500 Subject: [PATCH 18/21] require axis names for override? --- Marlin/src/gcode/calibrate/G28.cpp | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/Marlin/src/gcode/calibrate/G28.cpp b/Marlin/src/gcode/calibrate/G28.cpp index 76748a64ed..48249c170e 100644 --- a/Marlin/src/gcode/calibrate/G28.cpp +++ b/Marlin/src/gcode/calibrate/G28.cpp @@ -330,21 +330,29 @@ void GcodeSuite::G28() { #else // !DELTA && !AXEL_TPARA - #define _UNSAFE(A) (homeZ && TERN0(Z_SAFE_HOMING, axes_should_home(_BV(A##_AXIS)))) + #define _UNSAFE(A) (homeZZ && TERN0(Z_SAFE_HOMING, axes_should_home(_BV(A##_AXIS)))) - const bool homeZ = TERN0(HAS_Z_AXIS, parser.seen_test('Z')), + const bool homeZZ = TERN0(HAS_Z_AXIS, parser.seen_test('Z')), NUM_AXIS_LIST_( // Other axes should be homed before Z safe-homing needX = _UNSAFE(X), needY = _UNSAFE(Y), needZ = false, // UNUSED needI = _UNSAFE(I), needJ = _UNSAFE(J), needK = _UNSAFE(K), needU = _UNSAFE(U), needV = _UNSAFE(V), needW = _UNSAFE(W) ) NUM_AXIS_LIST_( // Home each axis if needed or flagged - homeX = needX || parser.seen_test('X'), - homeY = needY || parser.seen_test('Y'), - homeZZ = homeZ, - homeI = needI || parser.seen_test(AXIS4_NAME), homeJ = needJ || parser.seen_test(AXIS5_NAME), - homeK = needK || parser.seen_test(AXIS6_NAME), homeU = needU || parser.seen_test(AXIS7_NAME), - homeV = needV || parser.seen_test(AXIS8_NAME), homeW = needW || parser.seen_test(AXIS9_NAME) + seenX = parser.seen_test('X'), + seenY = parser.seen_test('Y'), + seenZ = homeZZ, + seenI = parser.seen_test(AXIS4_NAME), seenJ = parser.seen_test(AXIS5_NAME), + seenK = parser.seen_test(AXIS6_NAME), seenU = parser.seen_test(AXIS7_NAME), + seenV = parser.seen_test(AXIS8_NAME), seenW = parser.seen_test(AXIS9_NAME) + ) + NUM_AXIS_LIST_( // Home each axis if needed or flagged + homeX = needX || seenX, + homeY = needY || seenY, + homeZ = homeZZ, + homeI = needI || seenI, homeJ = needJ || seenJ, + homeK = needK || seenK, homeU = needU || seenU, + homeV = needV || seenV, homeW = needW || seenW ) home_all = NUM_AXIS_GANG_( // Home-all if all or none are flagged homeX == homeX, && homeY == homeX, && homeZ == homeX, @@ -361,7 +369,7 @@ void GcodeSuite::G28() { constexpr bool doY = false; #endif - #define OVERRIDE_AXIS_FR(A) if (override_fr_units_min && do##A) SET_AXIS_FR(A); + #define OVERRIDE_AXIS_FR(A) if (override_fr_units_min && seen##A) SET_AXIS_FR(A); TERN_(HAS_X_AXIS, OVERRIDE_AXIS_FR(X)); TERN_(HAS_Y_AXIS, OVERRIDE_AXIS_FR(Y)); @@ -369,7 +377,7 @@ void GcodeSuite::G28() { #if HAS_Z_AXIS - UNUSED(needZ); UNUSED(homeZZ); + UNUSED(needZ); UNUSED(homeZ); // Z may home first, e.g., when homing away from the bed. // This is also permitted when homing with a Z endstop. From 6c9e7dbd97a6589a1e5357c4daa4ae34d39af100 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 4 Oct 2024 18:12:08 -0500 Subject: [PATCH 19/21] wrap --- Marlin/src/gcode/calibrate/G28.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/src/gcode/calibrate/G28.cpp b/Marlin/src/gcode/calibrate/G28.cpp index f27778e46f..edeb410040 100644 --- a/Marlin/src/gcode/calibrate/G28.cpp +++ b/Marlin/src/gcode/calibrate/G28.cpp @@ -319,7 +319,7 @@ void GcodeSuite::G28() { #if ENABLED(DELTA) - if (override_fr_units_min) MAP(SET_AXIS_FR, X, Y, Z); + if (override_fr_units_min) { MAP(SET_AXIS_FR, X, Y, Z); } constexpr bool doZ = true; // for NANODLP_Z_SYNC if your DLP is on a DELTA @@ -329,7 +329,7 @@ void GcodeSuite::G28() { #elif ENABLED(AXEL_TPARA) - if (override_fr_units_min) MAP(SET_AXIS_FR, X, Y, Z); + if (override_fr_units_min) { MAP(SET_AXIS_FR, X, Y, Z); } constexpr bool doZ = true; // for NANODLP_Z_SYNC if your DLP is on a TPARA From f8d577b28c4c3f9d5137e9c8ebf5d4d01c01564b Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 4 Oct 2024 18:29:01 -0500 Subject: [PATCH 20/21] G28 F special case for X and Y --- Marlin/src/gcode/calibrate/G28.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Marlin/src/gcode/calibrate/G28.cpp b/Marlin/src/gcode/calibrate/G28.cpp index edeb410040..292f0c5c01 100644 --- a/Marlin/src/gcode/calibrate/G28.cpp +++ b/Marlin/src/gcode/calibrate/G28.cpp @@ -376,7 +376,11 @@ void GcodeSuite::G28() { constexpr bool doY = false; #endif - #define OVERRIDE_AXIS_FR(A) if (override_fr_units_min && seen##A) SET_AXIS_FR(A); + // Override any specified axes, or just XY for "home all" + #define OVERRIDE_AXIS_FR(A) \ + if (override_fr_units_min && (seen##A || \ + (home_all && TERN1(HAS_X_AXIS, _AXIS(A) == X_AXIS) && TERN1(HAS_Y_AXIS, _AXIS(A) == Y_AXIS)) \ + )) SET_AXIS_FR(A); TERN_(HAS_X_AXIS, OVERRIDE_AXIS_FR(X)); TERN_(HAS_Y_AXIS, OVERRIDE_AXIS_FR(Y)); From 61c09dd75a15efeb34e09c386ffa58af2dbc3d72 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 11 Oct 2024 15:57:50 -0500 Subject: [PATCH 21/21] merge followup --- Marlin/src/lcd/menu/menu_configuration.cpp | 27 ---------------------- 1 file changed, 27 deletions(-) diff --git a/Marlin/src/lcd/menu/menu_configuration.cpp b/Marlin/src/lcd/menu/menu_configuration.cpp index 532bf74d10..d7eeab3cb3 100644 --- a/Marlin/src/lcd/menu/menu_configuration.cpp +++ b/Marlin/src/lcd/menu/menu_configuration.cpp @@ -430,33 +430,6 @@ void menu_advanced_settings(); #endif // EDITABLE_HOMING_FEEDRATE -#if ENABLED(EDITABLE_HOMING_FEEDRATE) - - #include "../../module/motion.h" - #include "../../module/planner.h" - #include "../../gcode/parser.h" - - // Edit homing feedrates in inches- or degrees- or mm-per-minute - void menu_homing_feedrate() { - START_MENU(); - BACK_ITEM(MSG_HOMING_FEEDRATE); - - #define _EDIT_HOMING_FR(A) do{ \ - const float maxfr = MMS_TO_MMM(planner.settings.max_feedrate_mm_s[_AXIS(A)]); \ - editable.decimal = A##_AXIS_UNIT(homing_feedrate_mm_m.A); \ - EDIT_ITEM(float61, MSG_HOMING_FEEDRATE_N, &editable.decimal, \ - A##_AXIS_UNIT(10), A##_AXIS_UNIT(maxfr), []{ \ - homing_feedrate_mm_m.A = parser.axis_value_to_mm(_AXIS(A), editable.decimal); \ - }); \ - }while(0); - - MAIN_AXIS_MAP(_EDIT_HOMING_FR); - - END_MENU(); - } - -#endif - #if HAS_PREHEAT && DISABLED(SLIM_LCD_MENUS) void _menu_configuration_preheat_settings() {