Configurable Max Accel, Max Feedrate, Max Jerk edit limits (#13929)
This commit is contained in:
committed by
Scott Lahteine
parent
f9400b6a3c
commit
438835f6a5
@ -115,12 +115,12 @@ bool DLCache::store(uint32_t num_bytes /* = 0*/) {
|
||||
// If we are allocating new space...
|
||||
dl_addr = CLCD::mem_read_32(DL_FREE_ADDR);
|
||||
free_space = MAP::RAM_G_SIZE - dl_addr;
|
||||
dl_alloc = num_bytes ? num_bytes : new_dl_size;
|
||||
dl_alloc = num_bytes ?: new_dl_size;
|
||||
dl_size = new_dl_size;
|
||||
} else {
|
||||
// Otherwise, we can only store as much space
|
||||
// as was previously allocated.
|
||||
free_space = num_bytes ? num_bytes : dl_size;
|
||||
free_space = num_bytes ?: dl_size;
|
||||
dl_alloc = 0;
|
||||
dl_size = new_dl_size;
|
||||
}
|
||||
|
@ -577,12 +577,11 @@ namespace ExtUI {
|
||||
}
|
||||
|
||||
void setAxisMaxFeedrate_mm_s(const feedRate_t value, const axis_t axis) {
|
||||
planner.settings.max_feedrate_mm_s[axis] = value;
|
||||
planner.set_max_feedrate(axis, value);
|
||||
}
|
||||
|
||||
void setAxisMaxFeedrate_mm_s(const feedRate_t value, const extruder_t extruder) {
|
||||
UNUSED_E(extruder);
|
||||
planner.settings.max_feedrate_mm_s[E_AXIS_N(axis - E0)] = value;
|
||||
planner.set_max_feedrate(E_AXIS_N(extruder - E0), value);
|
||||
}
|
||||
|
||||
float getAxisMaxAcceleration_mm_s2(const axis_t axis) {
|
||||
@ -595,12 +594,11 @@ namespace ExtUI {
|
||||
}
|
||||
|
||||
void setAxisMaxAcceleration_mm_s2(const float value, const axis_t axis) {
|
||||
planner.settings.max_acceleration_mm_per_s2[axis] = value;
|
||||
planner.set_max_acceleration(axis, value);
|
||||
}
|
||||
|
||||
void setAxisMaxAcceleration_mm_s2(const float value, const extruder_t extruder) {
|
||||
UNUSED_E(extruder);
|
||||
planner.settings.max_acceleration_mm_per_s2[E_AXIS_N(extruder - E0)] = value;
|
||||
planner.set_max_acceleration(E_AXIS_N(extruder - E0), value);
|
||||
}
|
||||
|
||||
#if HAS_FILAMENT_SENSOR
|
||||
@ -648,11 +646,11 @@ namespace ExtUI {
|
||||
}
|
||||
|
||||
void setAxisMaxJerk_mm_s(const float value, const axis_t axis) {
|
||||
planner.max_jerk[axis] = value;
|
||||
planner.set_max_jerk((AxisEnum)axis, value);
|
||||
}
|
||||
|
||||
void setAxisMaxJerk_mm_s(const float value, const extruder_t) {
|
||||
planner.max_jerk.e = value;
|
||||
planner.set_max_jerk(E_AXIS, value);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
Reference in New Issue
Block a user