From e4bc675fbf57272f41603d434efee27e3b826bdb Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Tue, 21 Oct 2025 19:24:25 -0500 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=B8=20Exit=20M122=20S/P=20without=20re?= =?UTF-8?q?port?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/gcode/feature/trinamic/M122.cpp | 25 ++++++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/Marlin/src/gcode/feature/trinamic/M122.cpp b/Marlin/src/gcode/feature/trinamic/M122.cpp index b3ad144f14..fe87e485bc 100644 --- a/Marlin/src/gcode/feature/trinamic/M122.cpp +++ b/Marlin/src/gcode/feature/trinamic/M122.cpp @@ -28,11 +28,18 @@ #include "../../../feature/tmc_util.h" #include "../../../module/stepper/indirection.h" // for restore_stepper_drivers +#if AXIS_COLLISION('I') + #warning "M122 parameter 'I' collision with axis name." +#endif +#if AXIS_COLLISION('V') + #warning "M122 parameter 'V' collision with axis name." +#endif + /** * M122: Debug TMC drivers * - * I - Flag to re-initialize stepper drivers with current settings. - * X, Y, Z, E - Flags to only report the specified axes. + * I - Flag to re-initialize stepper drivers with current settings. + * X, Y, Z ... E - Flags to only report the specified axes. * * With TMC_DEBUG: * V - Report raw register data. Refer to the datasheet to decipher the report. @@ -45,20 +52,24 @@ void GcodeSuite::M122() { bool print_all = true; LOOP_LOGICAL_AXES(i) if (parser.seen_test(AXIS_CHAR(i))) { print_axis[i] = true; print_all = false; } - if (print_all) LOOP_LOGICAL_AXES(i) print_axis[i] = true; if (parser.boolval('I')) restore_stepper_drivers(); #if ENABLED(TMC_DEBUG) #if ENABLED(MONITOR_DRIVER_STATUS) - const bool sflag = parser.seen('S'), sval = sflag && parser.value_bool(); - if (sflag && !sval) // "S0" + if (parser.seenval('S') && !parser.value_bool()) { // "S0" tmc_set_report_interval(0); - else if (parser.seenval('P')) // "P" + return; + } + else if (parser.seenval('P')) { // "P" tmc_set_report_interval(_MAX(uint16_t(250), parser.value_ushort())); - else if (sval) // "S" or "S1" + return; + } + else if (parser.boolval('S')) { // "S" or "S1" tmc_set_report_interval(MONITOR_DRIVER_STATUS_INTERVAL_MS); + return; + } #endif if (parser.seen_test('V'))