mirror of
https://github.com/MarlinFirmware/Marlin.git
synced 2026-01-08 15:47:44 -07:00
📝 Motion comments
w/r/t https://github.com/MarlinFirmware/Marlin/issues/27918#issuecomment-3145339116
This commit is contained in:
parent
12ac094992
commit
d061e6dbd6
3 changed files with 7 additions and 3 deletions
|
|
@ -2542,6 +2542,8 @@ bool Planner::_populate_block(
|
|||
xyze_float_t junction_unit_vec = unit_vec - prev_unit_vec;
|
||||
normalize_junction_vector(junction_unit_vec);
|
||||
|
||||
// TODO: Don't limit acceleration on axes with very small distance relative to others
|
||||
// See https://github.com/MarlinFirmware/Marlin/issues/27918#issuecomment-3145339116
|
||||
const float junction_acceleration = limit_value_by_axis_maximum(block->acceleration, junction_unit_vec);
|
||||
|
||||
if (TERN0(HINTS_CURVE_RADIUS, hints.curve_radius)) {
|
||||
|
|
|
|||
|
|
@ -1157,12 +1157,14 @@ class Planner {
|
|||
vector *= RSQRT(magnitude_sq);
|
||||
}
|
||||
|
||||
// max_value is block->acceleration
|
||||
FORCE_INLINE static float limit_value_by_axis_maximum(const float max_value, xyze_float_t &unit_vec) {
|
||||
float limit_value = max_value;
|
||||
LOOP_LOGICAL_AXES(idx) {
|
||||
if (unit_vec[idx]) {
|
||||
if (limit_value * ABS(unit_vec[idx]) > settings.max_acceleration_mm_per_s2[idx])
|
||||
limit_value = ABS(settings.max_acceleration_mm_per_s2[idx] / unit_vec[idx]);
|
||||
const uint32_t abs_vec = ABS(unit_vec[idx]);
|
||||
if (limit_value * abs_vec > settings.max_acceleration_mm_per_s2[idx])
|
||||
limit_value = settings.max_acceleration_mm_per_s2[idx] / abs_vec;
|
||||
}
|
||||
}
|
||||
return limit_value;
|
||||
|
|
|
|||
|
|
@ -253,7 +253,7 @@ uint32_t Stepper::advance_divisor = 0,
|
|||
#endif
|
||||
|
||||
/**
|
||||
* Standard Motion Non-linear Exttrusion state
|
||||
* Standard Motion Non-linear Extrusion state
|
||||
*/
|
||||
#if ENABLED(NONLINEAR_EXTRUSION)
|
||||
nonlinear_t Stepper::ne; // Initialized by settings.load
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue