|
|
@ -453,14 +453,28 @@ void menu_backlash(); |
|
|
|
MENU_BACK(MSG_ADVANCED_SETTINGS); |
|
|
|
|
|
|
|
// M203 Max Feedrate
|
|
|
|
#define EDIT_VMAX(N) MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_VMAX MSG_##N, &planner.settings.max_feedrate_mm_s[_AXIS(N)], 1, 999) |
|
|
|
constexpr xyze_feedrate_t max_fr_edit = |
|
|
|
#ifdef MAX_FEEDRATE_EDIT_VALUES |
|
|
|
MAX_FEEDRATE_EDIT_VALUES |
|
|
|
#elif ENABLED(LIMITED_MAX_FR_EDITING) |
|
|
|
DEFAULT_MAX_FEEDRATE |
|
|
|
#else |
|
|
|
{ 999, 999, 999, 999 } |
|
|
|
#endif |
|
|
|
; |
|
|
|
#if ENABLED(LIMITED_MAX_FR_EDITING) && !defined(MAX_FEEDRATE_EDIT_VALUES) |
|
|
|
const xyze_feedrate_t max_fr_edit_scaled = max_fr_edit * 2; |
|
|
|
#else |
|
|
|
const xyze_feedrate_t &max_fr_edit_scaled = max_fr_edit; |
|
|
|
#endif |
|
|
|
#define EDIT_VMAX(N) MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_VMAX MSG_##N, &planner.settings.max_feedrate_mm_s[_AXIS(N)], 1, max_fr_edit_scaled[_AXIS(N)]) |
|
|
|
EDIT_VMAX(A); |
|
|
|
EDIT_VMAX(B); |
|
|
|
EDIT_VMAX(C); |
|
|
|
|
|
|
|
#if ENABLED(DISTINCT_E_FACTORS) |
|
|
|
#define EDIT_VMAX_E(N) MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_VMAX MSG_E##N, &planner.settings.max_feedrate_mm_s[E_AXIS_N(N-1)], 1, 999) |
|
|
|
MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_VMAX MSG_E, &planner.settings.max_feedrate_mm_s[E_AXIS_N(active_extruder)], 1, 999); |
|
|
|
#define EDIT_VMAX_E(N) MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_VMAX MSG_E##N, &planner.settings.max_feedrate_mm_s[E_AXIS_N(N-1)], 1, max_fr_edit_scaled.e) |
|
|
|
MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_VMAX MSG_E, &planner.settings.max_feedrate_mm_s[E_AXIS_N(active_extruder)], 1, max_fr_edit_scaled.e); |
|
|
|
EDIT_VMAX_E(1); |
|
|
|
EDIT_VMAX_E(2); |
|
|
|
#if E_STEPPERS > 2 |
|
|
@ -476,7 +490,7 @@ void menu_backlash(); |
|
|
|
#endif // E_STEPPERS > 3
|
|
|
|
#endif // E_STEPPERS > 2
|
|
|
|
#elif E_STEPPERS |
|
|
|
MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_VMAX MSG_E, &planner.settings.max_feedrate_mm_s[E_AXIS], 1, 999); |
|
|
|
MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_VMAX MSG_E, &planner.settings.max_feedrate_mm_s[E_AXIS], 1, max_fr_edit_scaled.e); |
|
|
|
#endif |
|
|
|
|
|
|
|
// M205 S Min Feedrate
|
|
|
@ -493,25 +507,41 @@ void menu_backlash(); |
|
|
|
START_MENU(); |
|
|
|
MENU_BACK(MSG_ADVANCED_SETTINGS); |
|
|
|
|
|
|
|
static float max_accel = _MAX(planner.settings.max_acceleration_mm_per_s2[A_AXIS], planner.settings.max_acceleration_mm_per_s2[B_AXIS], planner.settings.max_acceleration_mm_per_s2[C_AXIS]); |
|
|
|
// M204 P Acceleration
|
|
|
|
MENU_MULTIPLIER_ITEM_EDIT(float5_25, MSG_ACC, &planner.settings.acceleration, 25, 99000); |
|
|
|
MENU_MULTIPLIER_ITEM_EDIT(float5_25, MSG_ACC, &planner.settings.acceleration, 25, max_accel); |
|
|
|
|
|
|
|
// M204 R Retract Acceleration
|
|
|
|
MENU_MULTIPLIER_ITEM_EDIT(float5, MSG_A_RETRACT, &planner.settings.retract_acceleration, 100, 99000); |
|
|
|
MENU_MULTIPLIER_ITEM_EDIT(float5, MSG_A_RETRACT, &planner.settings.retract_acceleration, 100, max_accel); |
|
|
|
|
|
|
|
// M204 T Travel Acceleration
|
|
|
|
MENU_MULTIPLIER_ITEM_EDIT(float5_25, MSG_A_TRAVEL, &planner.settings.travel_acceleration, 25, 99000); |
|
|
|
MENU_MULTIPLIER_ITEM_EDIT(float5_25, MSG_A_TRAVEL, &planner.settings.travel_acceleration, 25, max_accel); |
|
|
|
|
|
|
|
// M201 settings
|
|
|
|
#define EDIT_AMAX(Q,L) MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(long5_25, MSG_AMAX MSG_##Q, &planner.settings.max_acceleration_mm_per_s2[_AXIS(Q)], L, 99000, _reset_acceleration_rates) |
|
|
|
constexpr xyze_ulong_t max_accel_edit = |
|
|
|
#ifdef MAX_ACCEL_EDIT_VALUES |
|
|
|
MAX_ACCEL_EDIT_VALUES |
|
|
|
#elif ENABLED(LIMITED_MAX_ACCEL_EDITING) |
|
|
|
DEFAULT_MAX_ACCELERATION |
|
|
|
#else |
|
|
|
{ 99000, 99000, 99000, 99000 } |
|
|
|
#endif |
|
|
|
; |
|
|
|
#if ENABLED(LIMITED_MAX_ACCEL_EDITING) && !defined(MAX_ACCEL_EDIT_VALUES) |
|
|
|
const xyze_ulong_t max_accel_edit_scaled = max_accel_edit * 2; |
|
|
|
#else |
|
|
|
const xyze_ulong_t &max_accel_edit_scaled = max_accel_edit; |
|
|
|
#endif |
|
|
|
|
|
|
|
#define EDIT_AMAX(Q,L) MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(long5_25, MSG_AMAX MSG_##Q, &planner.settings.max_acceleration_mm_per_s2[_AXIS(Q)], L, max_accel_edit_scaled[_AXIS(Q)], _reset_acceleration_rates) |
|
|
|
|
|
|
|
EDIT_AMAX(A,100); |
|
|
|
EDIT_AMAX(B,100); |
|
|
|
EDIT_AMAX(C, 10); |
|
|
|
|
|
|
|
#if ENABLED(DISTINCT_E_FACTORS) |
|
|
|
#define EDIT_AMAX_E(N,E) MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(long5, MSG_AMAX MSG_E##N, &planner.settings.max_acceleration_mm_per_s2[E_AXIS_N(E)], 100, 99000, _reset_e##E##_acceleration_rate) |
|
|
|
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(long5, MSG_AMAX MSG_E, &planner.settings.max_acceleration_mm_per_s2[E_AXIS_N(active_extruder)], 100, 99000, _reset_acceleration_rates); |
|
|
|
#define EDIT_AMAX_E(N,E) MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(long5_25, MSG_AMAX MSG_E##N, &planner.settings.max_acceleration_mm_per_s2[E_AXIS_N(E)], 100, max_accel_edit_scaled.e, _reset_e##E##_acceleration_rate) |
|
|
|
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(long5_25, MSG_AMAX MSG_E, &planner.settings.max_acceleration_mm_per_s2[E_AXIS_N(active_extruder)], 100, max_accel_edit_scaled.e, _reset_acceleration_rates); |
|
|
|
EDIT_AMAX_E(1,0); |
|
|
|
EDIT_AMAX_E(2,1); |
|
|
|
#if E_STEPPERS > 2 |
|
|
@ -527,7 +557,7 @@ void menu_backlash(); |
|
|
|
#endif // E_STEPPERS > 3
|
|
|
|
#endif // E_STEPPERS > 2
|
|
|
|
#elif E_STEPPERS |
|
|
|
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(long5, MSG_AMAX MSG_E, &planner.settings.max_acceleration_mm_per_s2[E_AXIS], 100, 99000, _reset_acceleration_rates); |
|
|
|
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(long5_25, MSG_AMAX MSG_E, &planner.settings.max_acceleration_mm_per_s2[E_AXIS], 100, max_accel_edit_scaled.e, _reset_acceleration_rates); |
|
|
|
#endif |
|
|
|
|
|
|
|
END_MENU(); |
|
|
@ -546,16 +576,25 @@ void menu_backlash(); |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
#if HAS_CLASSIC_JERK |
|
|
|
#define EDIT_JERK(N) MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_V##N##_JERK, &planner.max_jerk[_AXIS(N)], 1, 990) |
|
|
|
constexpr xyze_float_t max_jerk_edit = |
|
|
|
#ifdef MAX_ACCEL_EDIT_VALUES |
|
|
|
MAX_JERK_EDIT_VALUES |
|
|
|
#elif ENABLED(LIMITED_JERK_EDITING) |
|
|
|
{ (DEFAULT_XJERK) * 2, (DEFAULT_YJERK) * 2, (DEFAULT_ZJERK) * 2, (DEFAULT_EJERK) * 2 } |
|
|
|
#else |
|
|
|
{ 990, 990, 990, 990 } |
|
|
|
#endif |
|
|
|
; |
|
|
|
#define EDIT_JERK(N) MENU_MULTIPLIER_ITEM_EDIT(float3, MSG_V##N##_JERK, &planner.max_jerk[_AXIS(N)], 1, max_jerk_edit[_AXIS(N)]) |
|
|
|
EDIT_JERK(A); |
|
|
|
EDIT_JERK(B); |
|
|
|
#if ENABLED(DELTA) |
|
|
|
EDIT_JERK(C); |
|
|
|
#else |
|
|
|
MENU_MULTIPLIER_ITEM_EDIT(float52sign, MSG_VC_JERK, &planner.max_jerk.c, 0.1f, 990); |
|
|
|
MENU_MULTIPLIER_ITEM_EDIT(float52sign, MSG_VC_JERK, &planner.max_jerk.c, 0.1f, max_jerk_edit.c); |
|
|
|
#endif |
|
|
|
#if !BOTH(JUNCTION_DEVIATION, LIN_ADVANCE) |
|
|
|
EDIT_JERK(E); |
|
|
|
MENU_MULTIPLIER_ITEM_EDIT(float52sign, MSG_VE_JERK, &planner.max_jerk.e, 0.1f, max_jerk_edit.e); |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
|
|
|
|