Configurable Max Accel, Max Feedrate, Max Jerk edit limits (#13929)

This commit is contained in:
InsanityAutomation
2019-10-01 20:59:48 -04:00
committed by Scott Lahteine
parent f9400b6a3c
commit 438835f6a5
130 changed files with 1912 additions and 51 deletions

View File

@ -62,11 +62,9 @@ void GcodeSuite::M201() {
LOOP_XYZE(i) {
if (parser.seen(axis_codes[i])) {
const uint8_t a = (i == E_AXIS ? uint8_t(E_AXIS_N(target_extruder)) : i);
planner.settings.max_acceleration_mm_per_s2[a] = parser.value_axis_units((AxisEnum)a);
planner.set_max_acceleration(a, parser.value_axis_units((AxisEnum)a));
}
}
planner.reset_acceleration_rates();
}
/**
@ -82,7 +80,7 @@ void GcodeSuite::M203() {
LOOP_XYZE(i)
if (parser.seen(axis_codes[i])) {
const uint8_t a = (i == E_AXIS ? uint8_t(E_AXIS_N(target_extruder)) : i);
planner.settings.max_feedrate_mm_s[a] = parser.value_axis_units((AxisEnum)a);
planner.set_max_feedrate(a, parser.value_axis_units((AxisEnum)a));
}
}
@ -152,17 +150,17 @@ void GcodeSuite::M205() {
}
#endif
#if HAS_CLASSIC_JERK
if (parser.seen('X')) planner.max_jerk.x = parser.value_linear_units();
if (parser.seen('Y')) planner.max_jerk.y = parser.value_linear_units();
if (parser.seen('X')) planner.set_max_jerk(X_AXIS, parser.value_linear_units());
if (parser.seen('Y')) planner.set_max_jerk(Y_AXIS, parser.value_linear_units());
if (parser.seen('Z')) {
planner.max_jerk.z = parser.value_linear_units();
#if HAS_MESH
planner.set_max_jerk(Z_AXIS, parser.value_linear_units());
#if HAS_MESH && DISABLED(LIMITED_JERK_EDITING)
if (planner.max_jerk.z <= 0.1f)
SERIAL_ECHOLNPGM("WARNING! Low Z Jerk may lead to unwanted pauses.");
#endif
}
#if !BOTH(JUNCTION_DEVIATION, LIN_ADVANCE)
if (parser.seen('E')) planner.max_jerk.e = parser.value_linear_units();
if (parser.seen('E')) planner.set_max_jerk(E_AXIS, parser.value_linear_units());
#endif
#endif
}

View File

@ -98,7 +98,7 @@ void GcodeSuite::M92() {
const float wanted = parser.floatval('L');
if (parser.seen('H') || wanted) {
const uint16_t argH = parser.ushortval('H'),
micro_steps = argH ? argH : Z_MICROSTEPS;
micro_steps = argH ?: Z_MICROSTEPS;
const float z_full_step_mm = micro_steps * planner.steps_to_mm[Z_AXIS];
SERIAL_ECHO_START();
SERIAL_ECHOPAIR("{ micro_steps:", micro_steps, ", z_full_step_mm:", z_full_step_mm);

View File

@ -222,8 +222,7 @@ void GCodeParser::parse(char *p) {
// Only use string_arg for these M codes
if (letter == 'M') switch (codenum) {
#if ENABLED(GCODE_MACROS)
case 810: case 811: case 812: case 813: case 814:
case 815: case 816: case 817: case 818: case 819:
case 810 ... 819:
#endif
#if ENABLED(EXPECTED_PRINTER_CHECK)
case 16: