diff --git a/Marlin/src/gcode/feature/ft_motion/M493.cpp b/Marlin/src/gcode/feature/ft_motion/M493.cpp index 272c3d7ab31d..13c924bb7207 100644 --- a/Marlin/src/gcode/feature/ft_motion/M493.cpp +++ b/Marlin/src/gcode/feature/ft_motion/M493.cpp @@ -34,6 +34,7 @@ void say_shaper_type(const AxisEnum a, bool &sep, const char axis_name) { SERIAL_CHAR(axis_name, '='); switch (ftMotion.cfg.shaper[a]) { default: break; + case ftMotionShaper_NONE: SERIAL_ECHOPGM("None"); break; TERN_(FTM_SHAPER_ZV, case ftMotionShaper_ZV: SERIAL_ECHOPGM("ZV"); break); TERN_(FTM_SHAPER_ZVD, case ftMotionShaper_ZVD: SERIAL_ECHOPGM("ZVD"); break); TERN_(FTM_SHAPER_ZVDD, case ftMotionShaper_ZVDD: SERIAL_ECHOPGM("ZVDD"); break); @@ -57,7 +58,7 @@ void say_shaping() { bool sep = false; if (is_shaping) { #define STEPPER_E_NAME 'E' - #define _SAY_SHAPER(A) if (AXIS_IS_SHAPING(A)) say_shaper_type(_AXIS(A), sep, STEPPER_##A##_NAME); + #define _SAY_SHAPER(A) say_shaper_type(_AXIS(A), sep, STEPPER_##A##_NAME); SERIAL_ECHOPGM(" ("); SHAPED_CODE(_SAY_SHAPER(A), _SAY_SHAPER(B), _SAY_SHAPER(C), _SAY_SHAPER(E)); SERIAL_CHAR(')'); @@ -86,43 +87,51 @@ void say_shaping() { #endif #if HAS_X_AXIS - SERIAL_CHAR(STEPPER_A_NAME); - SERIAL_ECHO_TERNARY(dynamic, " ", "base dynamic", "static", " shaper frequency: "); - SERIAL_ECHO(p_float_t(c.baseFreq.x, 2), F(" Hz")); - #if HAS_DYNAMIC_FREQ - if (dynamic) SERIAL_ECHO(F(" scaling: "), p_float_t(c.dynFreqK.x, 2), F("Hz/"), z_based ? F("mm") : F("g")); - #endif - SERIAL_EOL(); + if (ftMotion.cfg.shaper[X_AXIS]) { + SERIAL_CHAR(STEPPER_A_NAME); + SERIAL_ECHO_TERNARY(dynamic, " ", "base dynamic", "static", " shaper frequency: "); + SERIAL_ECHO(p_float_t(c.baseFreq.x, 2), F(" Hz")); + #if HAS_DYNAMIC_FREQ + if (dynamic) SERIAL_ECHO(F(" scaling: "), p_float_t(c.dynFreqK.x, 2), F("Hz/"), z_based ? F("mm") : F("g")); + #endif + SERIAL_EOL(); + } #endif #if HAS_Y_AXIS - SERIAL_CHAR(STEPPER_B_NAME); - SERIAL_ECHO_TERNARY(dynamic, " ", "base dynamic", "static", " shaper frequency: "); - SERIAL_ECHO(p_float_t(c.baseFreq.y, 2), F(" Hz")); - #if HAS_DYNAMIC_FREQ - if (dynamic) SERIAL_ECHO(F(" scaling: "), p_float_t(c.dynFreqK.y, 2), F("Hz/"), z_based ? F("mm") : F("g")); - #endif - SERIAL_EOL(); + if (ftMotion.cfg.shaper[Y_AXIS]) { + SERIAL_CHAR(STEPPER_B_NAME); + SERIAL_ECHO_TERNARY(dynamic, " ", "base dynamic", "static", " shaper frequency: "); + SERIAL_ECHO(p_float_t(c.baseFreq.y, 2), F(" Hz")); + #if HAS_DYNAMIC_FREQ + if (dynamic) SERIAL_ECHO(F(" scaling: "), p_float_t(c.dynFreqK.y, 2), F("Hz/"), z_based ? F("mm") : F("g")); + #endif + SERIAL_EOL(); + } #endif #if ENABLED(FTM_SHAPER_Z) - SERIAL_CHAR(STEPPER_C_NAME); - SERIAL_ECHO_TERNARY(dynamic, " ", "base dynamic", "static", " shaper frequency: "); - SERIAL_ECHO(p_float_t(c.baseFreq.z, 2), F(" Hz")); - #if HAS_DYNAMIC_FREQ - if (dynamic) SERIAL_ECHO(F(" scaling: "), p_float_t(c.dynFreqK.z, 2), F("Hz/"), z_based ? F("mm") : F("g")); - #endif - SERIAL_EOL(); + if (ftMotion.cfg.shaper[Z_AXIS]) { + SERIAL_CHAR(STEPPER_C_NAME); + SERIAL_ECHO_TERNARY(dynamic, " ", "base dynamic", "static", " shaper frequency: "); + SERIAL_ECHO(p_float_t(c.baseFreq.z, 2), F(" Hz")); + #if HAS_DYNAMIC_FREQ + if (dynamic) SERIAL_ECHO(F(" scaling: "), p_float_t(c.dynFreqK.z, 2), F("Hz/"), z_based ? F("mm") : F("g")); + # endif + SERIAL_EOL(); + } #endif #if ENABLED(FTM_SHAPER_E) - SERIAL_CHAR('E'); - SERIAL_ECHO_TERNARY(dynamic, " ", "base dynamic", "static", " shaper frequency: "); - SERIAL_ECHO(p_float_t(c.baseFreq.e, 2), F(" Hz")); - #if HAS_DYNAMIC_FREQ - if (dynamic) SERIAL_ECHO(F(" scaling: "), p_float_t(c.dynFreqK.e, 2), F("Hz/"), z_based ? F("mm") : F("g")); - #endif - SERIAL_EOL(); + if (ftMotion.cfg.shaper[E_AXIS]) { + SERIAL_CHAR('E'); + SERIAL_ECHO_TERNARY(dynamic, " ", "base dynamic", "static", " shaper frequency: "); + SERIAL_ECHO(p_float_t(c.baseFreq.e, 2), F(" Hz")); + #if HAS_DYNAMIC_FREQ + if (dynamic) SERIAL_ECHO(F(" scaling: "), p_float_t(c.dynFreqK.e, 2), F("Hz/"), z_based ? F("mm") : F("g")); + #endif + SERIAL_EOL(); + } #endif } } @@ -250,10 +259,6 @@ void GcodeSuite::M493() { if (c.setShaper(axis, newsh)) flag.update = flag.report = true; }; - if (seenC) { - #define _SET_SHAPER(A) set_shaper(_AXIS(A), shaperVal); - SHAPED_MAP(_SET_SHAPER); - } #endif // NUM_AXES_SHAPED > 0 @@ -317,6 +322,9 @@ void GcodeSuite::M493() { if (apply_xy || parser.seen_test('X')) { + // Set shaper if given + if (seenC) set_shaper(X_AXIS, shaperVal); + // Parse X frequency parameter if (seenA) { if (AXIS_IS_SHAPING(X)) { @@ -363,6 +371,9 @@ void GcodeSuite::M493() { if (apply_xy || parser.seen_test('Y')) { + // Set shaper if given + if (seenC) set_shaper(Y_AXIS, shaperVal); + // Parse Y frequency parameter if (seenA) { if (AXIS_IS_SHAPING(Y)) { @@ -408,6 +419,9 @@ void GcodeSuite::M493() { if (parser.seen_test('Z')) { + // Set shaper if given + if (seenC) set_shaper(Z_AXIS, shaperVal); + // Parse Z frequency parameter if (seenA) { if (AXIS_IS_SHAPING(Z)) { @@ -453,6 +467,9 @@ void GcodeSuite::M493() { if (parser.seen_test('E')) { + // Set shaper if given + if (seenC) set_shaper(E_AXIS, shaperVal); + // Parse E frequency parameter if (seenA) { if (AXIS_IS_SHAPING(E)) { diff --git a/Marlin/src/module/ft_motion/trajectory_trapezoidal.h b/Marlin/src/module/ft_motion/trajectory_trapezoidal.h index 6d2d30cfb0c2..f5b4903e0122 100644 --- a/Marlin/src/module/ft_motion/trajectory_trapezoidal.h +++ b/Marlin/src/module/ft_motion/trajectory_trapezoidal.h @@ -34,7 +34,7 @@ class TrapezoidalTrajectoryGenerator : public TrajectoryGenerator { TrapezoidalTrajectoryGenerator() = default; void plan(const float initial_speed_in, const float final_speed_in, const float acceleration_in, const float nominal_speed_in, const float distance_in) override { - + initial_speed = initial_speed_in; acceleration = acceleration_in; nominal_speed = nominal_speed_in;