🔧 Update CLASSIC_JERK conditionals

This commit is contained in:
Scott Lahteine 2023-12-14 10:03:11 -06:00
parent 8bce9dec90
commit 75da3555ee
21 changed files with 83 additions and 93 deletions

View file

@ -155,7 +155,7 @@
planner.settings.max_acceleration_mm_per_s2[X_AXIS] = 100;
planner.settings.max_acceleration_mm_per_s2[Y_AXIS] = 100;
TERN_(DELTA, planner.settings.max_acceleration_mm_per_s2[Z_AXIS] = 100);
#if HAS_CLASSIC_JERK
#if ENABLED(CLASSIC_JERK)
motion_state.jerk_state = planner.max_jerk;
planner.max_jerk.set(0, 0 OPTARG(DELTA, 0));
#endif
@ -167,7 +167,7 @@
planner.settings.max_acceleration_mm_per_s2[X_AXIS] = motion_state.acceleration.x;
planner.settings.max_acceleration_mm_per_s2[Y_AXIS] = motion_state.acceleration.y;
TERN_(DELTA, planner.settings.max_acceleration_mm_per_s2[Z_AXIS] = motion_state.acceleration.z);
TERN_(HAS_CLASSIC_JERK, planner.max_jerk = motion_state.jerk_state);
TERN_(CLASSIC_JERK, planner.max_jerk = motion_state.jerk_state);
planner.refresh_acceleration_rates();
}

View file

@ -297,7 +297,7 @@ void GcodeSuite::M205() {
if (parser.seenval('S')) planner.settings.min_feedrate_mm_s = parser.value_linear_units();
if (parser.seenval('T')) planner.settings.min_travel_feedrate_mm_s = parser.value_linear_units();
#if HAS_JUNCTION_DEVIATION
#if HAS_CLASSIC_JERK && AXIS_COLLISION('J')
#if ENABLED(CLASSIC_JERK) && AXIS_COLLISION('J')
#error "Can't set_max_jerk for 'J' axis because 'J' is used for Junction Deviation."
#endif
if (parser.seenval('J')) {
@ -310,7 +310,7 @@ void GcodeSuite::M205() {
SERIAL_ERROR_MSG("?J out of range (0.01 to 0.3)");
}
#endif
#if HAS_CLASSIC_JERK
#if ENABLED(CLASSIC_JERK)
bool seenZ = false;
LOGICAL_AXIS_CODE(
if (parser.seenval('E')) planner.set_max_jerk(E_AXIS, parser.value_linear_units()),
@ -328,14 +328,14 @@ void GcodeSuite::M205() {
if (seenZ && planner.max_jerk.z <= 0.1f)
SERIAL_ECHOLNPGM("WARNING! Low Z Jerk may lead to unwanted pauses.");
#endif
#endif // HAS_CLASSIC_JERK
#endif // CLASSIC_JERK
}
void GcodeSuite::M205_report(const bool forReplay/*=true*/) {
report_heading_etc(forReplay, F(
"Advanced (" M205_MIN_SEG_TIME_STR "<min_segment_time_us> S<min_feedrate> T<min_travel_feedrate>"
TERN_(HAS_JUNCTION_DEVIATION, " J<junc_dev>")
#if HAS_CLASSIC_JERK
#if ENABLED(CLASSIC_JERK)
NUM_AXIS_GANG(
" X<max_jerk>", " Y<max_jerk>", " Z<max_jerk>",
" " STR_I "<max_jerk>", " " STR_J "<max_jerk>", " " STR_K "<max_jerk>",
@ -352,7 +352,7 @@ void GcodeSuite::M205_report(const bool forReplay/*=true*/) {
#if HAS_JUNCTION_DEVIATION
, PSTR(" J"), LINEAR_UNIT(planner.junction_deviation_mm)
#endif
#if HAS_CLASSIC_JERK && NUM_AXES
#if ENABLED(CLASSIC_JERK) && NUM_AXES
, LIST_N(DOUBLE(NUM_AXES),
SP_X_STR, LINEAR_UNIT(planner.max_jerk.x),
SP_Y_STR, LINEAR_UNIT(planner.max_jerk.y),

View file

@ -55,7 +55,7 @@ void GcodeSuite::M92() {
const float value = parser.value_per_axis_units((AxisEnum)(E_AXIS_N(target_extruder)));
if (value < 20) {
float factor = planner.settings.axis_steps_per_mm[E_AXIS_N(target_extruder)] / value; // increase e constants if M92 E14 is given for netfab.
#if HAS_CLASSIC_JERK && HAS_CLASSIC_E_JERK
#if ALL(CLASSIC_JERK, HAS_CLASSIC_E_JERK)
planner.max_jerk.e *= factor;
#endif
planner.settings.max_feedrate_mm_s[E_AXIS_N(target_extruder)] *= factor;

View file

@ -91,7 +91,7 @@ void GcodeSuite::M360() {
//
// XYZ Axis Jerk
//
#if HAS_CLASSIC_JERK
#if ENABLED(CLASSIC_JERK)
if (planner.max_jerk.x == planner.max_jerk.y)
config_line(F("XY"), planner.max_jerk.x, FPSTR(JERK_STR));
else {
@ -182,7 +182,7 @@ void GcodeSuite::M360() {
config_line(F("NumExtruder"), EXTRUDERS);
#if HAS_EXTRUDERS
EXTRUDER_LOOP() {
config_line_e(e, JERK_STR, TERN(HAS_LINEAR_E_JERK, planner.max_e_jerk[E_INDEX_N(e)], TERN(HAS_CLASSIC_JERK, planner.max_jerk.e, DEFAULT_EJERK)));
config_line_e(e, JERK_STR, TERN(HAS_LINEAR_E_JERK, planner.max_e_jerk[E_INDEX_N(e)], TERN(CLASSIC_JERK, planner.max_jerk.e, DEFAULT_EJERK)));
config_line_e(e, F("MaxSpeed"), planner.settings.max_feedrate_mm_s[E_AXIS_N(e)]);
config_line_e(e, F("Acceleration"), planner.settings.max_acceleration_mm_per_s2[E_AXIS_N(e)]);
config_line_e(e, F("Diameter"), TERN(NO_VOLUMETRICS, DEFAULT_NOMINAL_FILAMENT_DIA, planner.filament_size[e]));

View file

@ -1615,20 +1615,6 @@
#undef DELTA_HOME_TO_SAFE_ZONE
#endif
// This flag indicates some kind of jerk storage is needed
#if ANY(CLASSIC_JERK, IS_KINEMATIC)
#define HAS_CLASSIC_JERK 1
#endif
#if DISABLED(CLASSIC_JERK)
#define HAS_JUNCTION_DEVIATION 1
#endif
// E jerk exists with JD disabled (of course) but also when Linear Advance is disabled on Delta/SCARA
#if HAS_EXTRUDERS && (ENABLED(CLASSIC_JERK) || (IS_KINEMATIC && DISABLED(LIN_ADVANCE)))
#define HAS_CLASSIC_E_JERK 1
#endif
//
// Serial Port Info
//

View file

@ -302,6 +302,21 @@
#endif
#endif
// Use Junction Deviation for motion if Jerk is disabled
#if DISABLED(CLASSIC_JERK)
#define HAS_JUNCTION_DEVIATION 1
#endif
// E jerk exists with JD disabled (of course) but also when Linear Advance is disabled on Delta/SCARA
#if HAS_EXTRUDERS && (ENABLED(CLASSIC_JERK) || (IS_KINEMATIC && DISABLED(LIN_ADVANCE)))
#define HAS_CLASSIC_E_JERK 1
#endif
// Linear advance uses Jerk since E is an isolated axis
#if ALL(HAS_JUNCTION_DEVIATION, LIN_ADVANCE)
#define HAS_LINEAR_E_JERK 1
#endif
/**
* Temperature Sensors; define what sensor(s) we have.
*/

View file

@ -37,11 +37,6 @@
#define ADC_VREF_MV HAL_ADC_VREF_MV
#endif
// Linear advance uses Jerk since E is an isolated axis
#if ALL(HAS_JUNCTION_DEVIATION, LIN_ADVANCE)
#define HAS_LINEAR_E_JERK 1
#endif
// Determine which type of 'EEPROM' is in use
#if ENABLED(EEPROM_SETTINGS)
// EEPROM type may be defined by compile flags, configs, HALs, or pins

View file

@ -1225,7 +1225,7 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L
* Junction deviation is incompatible with kinematic systems.
*/
#if HAS_JUNCTION_DEVIATION && IS_KINEMATIC
#error "CLASSIC_JERK is required for DELTA, SCARA, and POLAR."
#error "CLASSIC_JERK is required for the kinematics of DELTA, SCARA, POLAR, etc."
#endif
/**
@ -1583,7 +1583,7 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L
#error "Only enable RESTORE_LEVELING_AFTER_G28 or ENABLE_LEVELING_AFTER_G28, but not both."
#endif
#if HAS_MESH && HAS_CLASSIC_JERK
#if ALL(HAS_MESH, CLASSIC_JERK)
static_assert(DEFAULT_ZJERK > 0.1, "Low DEFAULT_ZJERK values are incompatible with mesh-based leveling.");
#endif
#if HAS_MESH && DGUS_LCD_UI_IA_CREALITY && GRID_MAX_POINTS > 25

View file

@ -67,7 +67,7 @@ constexpr xyze_float_t min_acceleration_edit_values = LOGICAL_AXIS_ARRAY_1(MIN_A
#define MIN_JERK_EDIT_VALUE 0.1
#define DEFAULT_MAX_JERK_MULTIPLIER 2
#if HAS_CLASSIC_JERK
#if ENABLED(CLASSIC_JERK)
constexpr xyze_float_t min_jerk_edit_values = LOGICAL_AXIS_ARRAY_1(MIN_JERK_EDIT_VALUE),
default_jerk = LOGICAL_AXIS_ARRAY(
DEFAULT_EJERK,

View file

@ -460,7 +460,7 @@ void drawBackFirst(const bool is_sel=true) {
#define MOTION_CASE_RATE 1
#define MOTION_CASE_ACCEL 2
#define MOTION_CASE_JERK (MOTION_CASE_ACCEL + ENABLED(HAS_CLASSIC_JERK))
#define MOTION_CASE_JERK (MOTION_CASE_ACCEL + ENABLED(CLASSIC_JERK))
#define MOTION_CASE_STEPS (MOTION_CASE_JERK + 1)
#define MOTION_CASE_TOTAL MOTION_CASE_STEPS
@ -1004,7 +1004,7 @@ void drawMotionMenu() {
itemAreaCopy(173, 133, 228, 147, MOTION_CASE_RATE); // Max speed
itemAreaCopy(173, 133, 200, 147, MOTION_CASE_ACCEL); // Max...
itemAreaCopy(28, 149, 69, 161, MOTION_CASE_ACCEL, 30, 1); // ...Acceleration
#if HAS_CLASSIC_JERK
#if ENABLED(CLASSIC_JERK)
itemAreaCopy(173, 133, 200, 147, MOTION_CASE_JERK); // Max...
itemAreaCopy(1, 180, 28, 192, MOTION_CASE_JERK, 30, 1); // ...
itemAreaCopy(202, 133, 228, 147, MOTION_CASE_JERK, 57); // ...Jerk
@ -1020,14 +1020,14 @@ void drawMotionMenu() {
#ifdef USE_STRING_TITLES
dwinDrawLabel(MOTION_CASE_RATE, F("Feedrate")); // "Feedrate"
dwinDrawLabel(MOTION_CASE_ACCEL, GET_TEXT_F(MSG_ACCELERATION)); // "Acceleration"
#if HAS_CLASSIC_JERK
#if ENABLED(CLASSIC_JERK)
dwinDrawLabel(MOTION_CASE_JERK, GET_TEXT_F(MSG_JERK)); // "Jerk"
#endif
dwinDrawLabel(MOTION_CASE_STEPS, GET_TEXT_F(MSG_STEPS_PER_MM)); // "Steps/mm"
#else
say_max_en(MOTION_CASE_RATE); say_speed_en(30, MOTION_CASE_RATE); // "Max Speed"
say_max_accel_en(MOTION_CASE_ACCEL); // "Max Acceleration"
#if HAS_CLASSIC_JERK
#if ENABLED(CLASSIC_JERK)
say_max_en(MOTION_CASE_JERK); say_jerk_en(MOTION_CASE_JERK); // "Max Jerk"
#endif
say_steps_per_mm_en(MOTION_CASE_STEPS); // "Steps-per-mm"
@ -1041,7 +1041,7 @@ void drawMotionMenu() {
#define _MOTION_ICON(N) drawMenuLine(++i, ICON_MaxSpeed + (N) - 1)
_MOTION_ICON(MOTION_CASE_RATE); drawMoreIcon(i);
_MOTION_ICON(MOTION_CASE_ACCEL); drawMoreIcon(i);
#if HAS_CLASSIC_JERK
#if ENABLED(CLASSIC_JERK)
_MOTION_ICON(MOTION_CASE_JERK); drawMoreIcon(i);
#endif
_MOTION_ICON(MOTION_CASE_STEPS); drawMoreIcon(i);
@ -1597,7 +1597,7 @@ void hmiMaxAccelerationXYZE() {
drawEditInteger4(select_acc.now, hmiValues.maxAcceleration, true);
}
#if HAS_CLASSIC_JERK
#if ENABLED(CLASSIC_JERK)
void hmiMaxJerkXYZE() {
EncoderState encoder_diffState = encoderReceiveAnalyze();
@ -1617,7 +1617,7 @@ void hmiMaxAccelerationXYZE() {
drawEditFloat3(select_jerk.now, hmiValues.maxJerkScaled, true);
}
#endif // HAS_CLASSIC_JERK
#endif // CLASSIC_JERK
void hmiStepXYZE() {
EncoderState encoder_diffState = encoderReceiveAnalyze();
@ -3349,7 +3349,7 @@ void drawMaxAccelMenu() {
#endif
}
#if HAS_CLASSIC_JERK
#if ENABLED(CLASSIC_JERK)
void drawMaxJerkMenu() {
clearMainWindow();
@ -3489,7 +3489,7 @@ void hmiMotion() {
select_acc.reset();
drawMaxAccelMenu();
break;
#if HAS_CLASSIC_JERK
#if ENABLED(CLASSIC_JERK)
case MOTION_CASE_JERK:
checkkey = ID_MaxJerk;
select_jerk.reset();
@ -3996,7 +3996,7 @@ void hmiMaxAcceleration() {
dwinUpdateLCD();
}
#if HAS_CLASSIC_JERK
#if ENABLED(CLASSIC_JERK)
// Max Jerk
void hmiMaxJerk() {
EncoderState encoder_diffState = get_encoder_state();
@ -4025,7 +4025,7 @@ void hmiMaxAcceleration() {
}
dwinUpdateLCD();
}
#endif // HAS_CLASSIC_JERK
#endif // CLASSIC_JERK
// Step
void hmiStep() {
@ -4251,7 +4251,7 @@ void dwinHandleScreen() {
#endif
case ID_MaxSpeed: hmiMaxSpeed(); break;
case ID_MaxAcceleration: hmiMaxAcceleration(); break;
#if HAS_CLASSIC_JERK
#if ENABLED(CLASSIC_JERK)
case ID_MaxJerk: hmiMaxJerk(); break;
#endif
case ID_Step: hmiStep(); break;
@ -4274,7 +4274,7 @@ void dwinHandleScreen() {
case ID_PrintSpeed: hmiPrintSpeed(); break;
case ID_MaxSpeedValue: hmiMaxFeedspeedXYZE(); break;
case ID_MaxAccelerationValue: hmiMaxAccelerationXYZE(); break;
#if HAS_CLASSIC_JERK
#if ENABLED(CLASSIC_JERK)
case ID_MaxJerkValue: hmiMaxJerkXYZE(); break;
#endif
case ID_StepValue: hmiStepXYZE(); break;

View file

@ -2333,7 +2333,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra
#define MOTION_HOMEOFFSETS (MOTION_BACK + 1)
#define MOTION_SPEED (MOTION_HOMEOFFSETS + 1)
#define MOTION_ACCEL (MOTION_SPEED + 1)
#define MOTION_JERK (MOTION_ACCEL + ENABLED(HAS_CLASSIC_JERK))
#define MOTION_JERK (MOTION_ACCEL + ENABLED(CLASSIC_JERK))
#define MOTION_STEPS (MOTION_JERK + 1)
#define MOTION_FLOW (MOTION_STEPS + ENABLED(HAS_HOTEND))
#define MOTION_LA (MOTION_FLOW + ENABLED(LIN_ADVANCE))
@ -2364,7 +2364,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra
else
drawMenu(ID_MaxAcceleration);
break;
#if HAS_CLASSIC_JERK
#if ENABLED(CLASSIC_JERK)
case MOTION_JERK:
if (draw)
drawMenuItem(row, ICON_MaxJerk, GET_TEXT_F(MSG_JERK), nullptr, true);
@ -2553,7 +2553,7 @@ void JyersDWIN::menuItemHandler(const uint8_t menu, const uint8_t item, bool dra
#endif
}
break;
#if HAS_CLASSIC_JERK
#if ENABLED(CLASSIC_JERK)
case ID_MaxJerk:
#define JERK_BACK 0
@ -4170,7 +4170,7 @@ FSTR_P JyersDWIN::getMenuTitle(const uint8_t menu) {
case ID_HomeOffsets: return GET_TEXT_F(MSG_SET_HOME_OFFSETS);
case ID_MaxSpeed: return GET_TEXT_F(MSG_MAX_SPEED);
case ID_MaxAcceleration: return F("Max Acceleration");
#if HAS_CLASSIC_JERK
#if ENABLED(CLASSIC_JERK)
case ID_MaxJerk: return F("Max Jerk");
#endif
case ID_Steps: return GET_TEXT_F(MSG_STEPS_PER_MM);
@ -4247,7 +4247,7 @@ uint8_t JyersDWIN::getMenuSize(const uint8_t menu) {
case ID_HomeOffsets: return HOMEOFFSETS_TOTAL;
case ID_MaxSpeed: return SPEED_TOTAL;
case ID_MaxAcceleration: return ACCEL_TOTAL;
#if HAS_CLASSIC_JERK
#if ENABLED(CLASSIC_JERK)
case ID_MaxJerk: return JERK_TOTAL;
#endif
case ID_Steps: return STEPS_TOTAL;

View file

@ -236,7 +236,7 @@ Menu *filamentMenu = nullptr;
Menu *temperatureMenu = nullptr;
Menu *maxSpeedMenu = nullptr;
Menu *maxAccelMenu = nullptr;
#if HAS_CLASSIC_JERK
#if ENABLED(CLASSIC_JERK)
Menu *maxJerkMenu = nullptr;
#endif
Menu *stepsMenu = nullptr;
@ -2545,7 +2545,7 @@ void applyMaxAccel() { planner.set_max_acceleration(hmiValue.axis, menuData.valu
void setMaxAccelE() { hmiValue.axis = E_AXIS; setIntOnClick(min_acceleration_edit_values.e, max_acceleration_edit_values.e, planner.settings.max_acceleration_mm_per_s2[E_AXIS], applyMaxAccel); }
#endif
#if HAS_CLASSIC_JERK
#if ENABLED(CLASSIC_JERK)
void applyMaxJerk() { planner.set_max_jerk(hmiValue.axis, menuData.value / MINUNITMULT); }
#if HAS_X_AXIS
void setMaxJerkX() { hmiValue.axis = X_AXIS, setFloatOnClick(min_jerk_edit_values.x, max_jerk_edit_values.x, UNITFDIGITS, planner.max_jerk.x, applyMaxJerk); }
@ -2880,7 +2880,7 @@ void onDrawAcc(MenuItem* menuitem, int8_t line) {
}
#endif
#if HAS_CLASSIC_JERK
#if ENABLED(CLASSIC_JERK)
void onDrawJerk(MenuItem* menuitem, int8_t line) {
if (hmiIsChinese()) {
@ -2941,7 +2941,7 @@ void onDrawAcc(MenuItem* menuitem, int8_t line) {
#endif
#endif // HAS_CLASSIC_JERK
#endif // CLASSIC_JERK
#if HAS_X_AXIS
void onDrawStepsX(MenuItem* menuitem, int8_t line) {
@ -3451,7 +3451,7 @@ void drawMotionMenu() {
BACK_ITEM(drawControlMenu);
MENU_ITEM(ICON_MaxSpeed, MSG_SPEED, onDrawSpeed, drawMaxSpeedMenu);
MENU_ITEM(ICON_MaxAccelerated, MSG_ACCELERATION, onDrawAcc, drawMaxAccelMenu);
#if HAS_CLASSIC_JERK
#if ENABLED(CLASSIC_JERK)
MENU_ITEM(ICON_MaxJerk, MSG_JERK, onDrawJerk, drawMaxJerkMenu);
#elif HAS_JUNCTION_DEVIATION
EDIT_ITEM(ICON_JDmm, MSG_JUNCTION_DEVIATION, onDrawPFloat3Menu, setJDmm, &planner.junction_deviation_mm);
@ -3616,7 +3616,7 @@ void drawMaxAccelMenu() {
updateMenu(maxAccelMenu);
}
#if HAS_CLASSIC_JERK
#if ENABLED(CLASSIC_JERK)
void drawMaxJerkMenu() {
checkkey = ID_Menu;
@ -3638,7 +3638,7 @@ void drawMaxAccelMenu() {
updateMenu(maxJerkMenu);
}
#endif // HAS_CLASSIC_JERK
#endif // CLASSIC_JERK
void drawStepsMenu() {
checkkey = ID_Menu;

View file

@ -341,7 +341,7 @@ void drawFilamentManMenu();
void drawTemperatureMenu();
void drawMaxSpeedMenu();
void drawMaxAccelMenu();
#if HAS_CLASSIC_JERK
#if ENABLED(CLASSIC_JERK)
void drawMaxJerkMenu();
#endif
void drawStepsMenu();

View file

@ -22,7 +22,7 @@
#include "../../../inc/MarlinConfigPre.h"
#if ALL(HAS_TFT_LVGL_UI, HAS_CLASSIC_JERK)
#if ALL(HAS_TFT_LVGL_UI, CLASSIC_JERK)
#include "draw_ui.h"
#include <lv_conf.h>
@ -96,4 +96,4 @@ void lv_clear_jerk_settings() {
lv_obj_del(scr);
}
#endif // HAS_TFT_LVGL_UI && HAS_CLASSIC_JERK
#endif // HAS_TFT_LVGL_UI && CLASSIC_JERK

View file

@ -46,7 +46,7 @@ static void event_handler(lv_obj_t *obj, lv_event_t event) {
case ID_MACHINE_RETURN: draw_return_ui(); break;
case ID_MACHINE_ACCELERATION: lv_draw_acceleration_settings(); break;
case ID_MACHINE_FEEDRATE: lv_draw_max_feedrate_settings(); break;
#if HAS_CLASSIC_JERK
#if ENABLED(CLASSIC_JERK)
case ID_MACHINE_JERK: lv_draw_jerk_settings(); break;
#endif
}
@ -58,7 +58,7 @@ void lv_draw_machine_settings() {
lv_screen_menu_item(scr, machine_menu.AccelerationConf, PARA_UI_POS_X, y, event_handler, ID_MACHINE_ACCELERATION, 0);
y += PARA_UI_POS_Y;
lv_screen_menu_item(scr, machine_menu.MaxFeedRateConf, PARA_UI_POS_X, y, event_handler, ID_MACHINE_FEEDRATE, 1);
#if HAS_CLASSIC_JERK
#if ENABLED(CLASSIC_JERK)
y += PARA_UI_POS_Y;
lv_screen_menu_item(scr, machine_menu.JerkConf, PARA_UI_POS_X, y, event_handler, ID_MACHINE_JERK, 2);
#endif

View file

@ -118,22 +118,22 @@ static void disp_key_value() {
break;
case XJerk:
#if HAS_CLASSIC_JERK
#if ENABLED(CLASSIC_JERK)
dtostrf(planner.max_jerk.x, 1, 1, public_buf_m);
#endif
break;
case YJerk:
#if HAS_CLASSIC_JERK
#if ENABLED(CLASSIC_JERK)
dtostrf(planner.max_jerk.y, 1, 1, public_buf_m);
#endif
break;
case ZJerk:
#if HAS_CLASSIC_JERK
#if ENABLED(CLASSIC_JERK)
dtostrf(planner.max_jerk.z, 1, 1, public_buf_m);
#endif
break;
case EJerk:
#if HAS_CLASSIC_JERK
#if ENABLED(CLASSIC_JERK)
dtostrf(planner.max_jerk.e, 1, 1, public_buf_m);
#endif
break;
@ -307,10 +307,10 @@ static void set_value_confirm() {
case ZMaxFeedRate: planner.settings.max_feedrate_mm_s[Z_AXIS] = atof(key_value); break;
case E0MaxFeedRate: planner.settings.max_feedrate_mm_s[E_AXIS] = atof(key_value); break;
case E1MaxFeedRate: planner.settings.max_feedrate_mm_s[E_AXIS_N(1)] = atof(key_value); break;
case XJerk: TERN_(HAS_CLASSIC_JERK, planner.max_jerk.x = atof(key_value)); break;
case YJerk: TERN_(HAS_CLASSIC_JERK, planner.max_jerk.y = atof(key_value)); break;
case ZJerk: TERN_(HAS_CLASSIC_JERK, planner.max_jerk.z = atof(key_value)); break;
case EJerk: TERN_(HAS_CLASSIC_JERK, planner.max_jerk.e = atof(key_value)); break;
case XJerk: TERN_(CLASSIC_JERK, planner.max_jerk.x = atof(key_value)); break;
case YJerk: TERN_(CLASSIC_JERK, planner.max_jerk.y = atof(key_value)); break;
case ZJerk: TERN_(CLASSIC_JERK, planner.max_jerk.z = atof(key_value)); break;
case EJerk: TERN_(CLASSIC_JERK, planner.max_jerk.e = atof(key_value)); break;
case Xstep: planner.settings.axis_steps_per_mm[X_AXIS] = atof(key_value); planner.refresh_positioning(); break;
case Ystep: planner.settings.axis_steps_per_mm[Y_AXIS] = atof(key_value); planner.refresh_positioning(); break;
case Zstep: planner.settings.axis_steps_per_mm[Z_AXIS] = atof(key_value); planner.refresh_positioning(); break;

View file

@ -951,7 +951,7 @@ void clear_cur_ui() {
case MAXFEEDRATE_UI: lv_clear_max_feedrate_settings(); break;
case STEPS_UI: lv_clear_step_settings(); break;
case ACCELERATION_UI: lv_clear_acceleration_settings(); break;
case JERK_UI: TERN_(HAS_CLASSIC_JERK, lv_clear_jerk_settings()); break;
case JERK_UI: TERN_(CLASSIC_JERK, lv_clear_jerk_settings()); break;
case MOTORDIR_UI: break;
case HOMESPEED_UI: break;
case NOZZLE_CONFIG_UI: break;
@ -1061,7 +1061,7 @@ void draw_return_ui() {
case MAXFEEDRATE_UI: lv_draw_max_feedrate_settings(); break;
case STEPS_UI: lv_draw_step_settings(); break;
case ACCELERATION_UI: lv_draw_acceleration_settings(); break;
#if HAS_CLASSIC_JERK
#if ENABLED(CLASSIC_JERK)
case JERK_UI: lv_draw_jerk_settings(); break;
#endif
case MOTORDIR_UI: break;

View file

@ -587,18 +587,12 @@ void menu_backlash();
#endif
#if HAS_CLASSIC_JERK
#if ENABLED(CLASSIC_JERK)
void menu_advanced_jerk() {
START_MENU();
BACK_ITEM(MSG_ADVANCED_SETTINGS);
#if HAS_JUNCTION_DEVIATION
EDIT_ITEM(float43, MSG_JUNCTION_DEVIATION, &planner.junction_deviation_mm, 0.001f, TERN(LIN_ADVANCE, 0.3f, 0.5f)
OPTARG(LIN_ADVANCE, planner.recalculate_max_e_jerk)
);
#endif
constexpr xyze_float_t max_jerk_edit =
#ifdef MAX_JERK_EDIT_VALUES
MAX_JERK_EDIT_VALUES
@ -711,12 +705,12 @@ void menu_advanced_settings() {
if (!is_busy) SUBMENU(MSG_INPUT_SHAPING, menu_advanced_input_shaping);
#endif
#if HAS_CLASSIC_JERK
#if ENABLED(CLASSIC_JERK)
// M205 - Max Jerk
SUBMENU(MSG_JERK, menu_advanced_jerk);
#elif HAS_JUNCTION_DEVIATION
EDIT_ITEM(float43, MSG_JUNCTION_DEVIATION, &planner.junction_deviation_mm, 0.001f, 0.3f
OPTARG(LIN_ADVANCE, planner.recalculate_max_e_jerk)
OPTARG(HAS_LINEAR_E_JERK, planner.recalculate_max_e_jerk)
);
#endif

View file

@ -155,7 +155,7 @@ float Planner::mm_per_step[DISTINCT_AXES]; // (mm) Millimeters per step
#endif
#endif
#if HAS_CLASSIC_JERK
#if ENABLED(CLASSIC_JERK)
TERN(HAS_LINEAR_E_JERK, xyz_pos_t, xyze_pos_t) Planner::max_jerk;
#endif
@ -1574,7 +1574,7 @@ void Planner::check_axes_activity() {
saved_motion_state.acceleration.z = settings.max_acceleration_mm_per_s2[Z_AXIS];
settings.max_acceleration_mm_per_s2[Z_AXIS] = 100;
#endif
#if HAS_CLASSIC_JERK
#if ENABLED(CLASSIC_JERK)
saved_motion_state.jerk_state = max_jerk;
max_jerk.set(0, 0 OPTARG(DELTA, 0));
#endif
@ -1583,7 +1583,7 @@ void Planner::check_axes_activity() {
settings.max_acceleration_mm_per_s2[X_AXIS] = saved_motion_state.acceleration.x;
settings.max_acceleration_mm_per_s2[Y_AXIS] = saved_motion_state.acceleration.y;
TERN_(DELTA, settings.max_acceleration_mm_per_s2[Z_AXIS] = saved_motion_state.acceleration.z);
TERN_(HAS_CLASSIC_JERK, max_jerk = saved_motion_state.jerk_state);
TERN_(CLASSIC_JERK, max_jerk = saved_motion_state.jerk_state);
}
refresh_acceleration_rates();
}
@ -2766,7 +2766,7 @@ bool Planner::_populate_block(
#endif
#if HAS_CLASSIC_JERK
#if ENABLED(CLASSIC_JERK)
/**
* Adapted from Průša MKS firmware
@ -2863,7 +2863,7 @@ bool Planner::_populate_block(
vmax_junction_sqr = sq(vmax_junction); // Go up or down to the new speed
#endif
#endif // Classic Jerk Limiting
#endif // CLASSIC_JERK
// Max entry speed of this block equals the max exit speed of the previous block.
block->max_entry_speed_sqr = vmax_junction_sqr;
@ -3398,7 +3398,7 @@ void Planner::set_max_feedrate(const AxisEnum axis, float inMaxFeedrateMMS) {
settings.max_feedrate_mm_s[axis] = inMaxFeedrateMMS;
}
#if HAS_CLASSIC_JERK
#if ENABLED(CLASSIC_JERK)
/**
* For the specified 'axis' set the Maximum Jerk (instant change) to the given value (mm/s)

View file

@ -355,7 +355,7 @@ typedef struct {
#if ENABLED(IMPROVE_HOMING_RELIABILITY)
struct motion_state_t {
TERN(DELTA, xyz_ulong_t, xy_ulong_t) acceleration;
#if HAS_CLASSIC_JERK
#if ENABLED(CLASSIC_JERK)
TERN(DELTA, xyz_float_t, xy_float_t) jerk_state;
#endif
};
@ -477,7 +477,7 @@ class Planner {
#endif
#endif
#if HAS_CLASSIC_JERK
#if ENABLED(CLASSIC_JERK)
// (mm/s^2) M205 XYZ(E) - The largest speed change requiring no acceleration.
static TERN(HAS_LINEAR_E_JERK, xyz_pos_t, xyze_pos_t) max_jerk;
#endif
@ -602,7 +602,7 @@ class Planner {
static void set_max_feedrate(const AxisEnum axis, float inMaxFeedrateMMS);
// For an axis set the Maximum Jerk (instant change) in mm/s
#if HAS_CLASSIC_JERK
#if ENABLED(CLASSIC_JERK)
static void set_max_jerk(const AxisEnum axis, float inMaxJerkMMS);
#else
static void set_max_jerk(const AxisEnum, const_float_t) {}

View file

@ -850,7 +850,7 @@ void MarlinSettings::postprocess() {
{
EEPROM_WRITE(planner.settings);
#if HAS_CLASSIC_JERK
#if ENABLED(CLASSIC_JERK)
EEPROM_WRITE(planner.max_jerk);
#if HAS_LINEAR_E_JERK
dummyf = float(DEFAULT_EJERK);
@ -1880,7 +1880,7 @@ void MarlinSettings::postprocess() {
EEPROM_READ(planner.settings.min_feedrate_mm_s);
EEPROM_READ(planner.settings.min_travel_feedrate_mm_s);
#if HAS_CLASSIC_JERK
#if ENABLED(CLASSIC_JERK)
EEPROM_READ(planner.max_jerk);
#if HAS_LINEAR_E_JERK
EEPROM_READ(dummyf);
@ -3094,7 +3094,7 @@ void MarlinSettings::reset() {
planner.settings.min_feedrate_mm_s = feedRate_t(DEFAULT_MINIMUMFEEDRATE);
planner.settings.min_travel_feedrate_mm_s = feedRate_t(DEFAULT_MINTRAVELFEEDRATE);
#if HAS_CLASSIC_JERK
#if ENABLED(CLASSIC_JERK)
#if HAS_X_AXIS && !defined(DEFAULT_XJERK)
#define DEFAULT_XJERK 0
#endif