Define max_e_jerk as array always
This commit is contained in:
parent
97e47b4494
commit
90e1035e9b
|
@ -136,7 +136,7 @@ float Planner::steps_to_mm[XYZE_N]; // (mm) Millimeters per step
|
||||||
float Planner::junction_deviation_mm; // (mm) M205 J
|
float Planner::junction_deviation_mm; // (mm) M205 J
|
||||||
#if ENABLED(LIN_ADVANCE)
|
#if ENABLED(LIN_ADVANCE)
|
||||||
float Planner::max_e_jerk // Calculated from junction_deviation_mm
|
float Planner::max_e_jerk // Calculated from junction_deviation_mm
|
||||||
TERN_(DISTINCT_E_FACTORS, [EXTRUDERS]);
|
[TERN(DISTINCT_E_FACTORS, EXTRUDERS, 1)];
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -2139,15 +2139,7 @@ bool Planner::_populate_block(block_t * const block, bool split_move,
|
||||||
|
|
||||||
#if ENABLED(LIN_ADVANCE)
|
#if ENABLED(LIN_ADVANCE)
|
||||||
|
|
||||||
#if HAS_JUNCTION_DEVIATION
|
#define MAX_E_JERK(N) TERN(HAS_JUNCTION_DEVIATION, max_e_jerk[E_AXIS_N(N)], max_jerk.e)
|
||||||
#if ENABLED(DISTINCT_E_FACTORS)
|
|
||||||
#define MAX_E_JERK max_e_jerk[extruder]
|
|
||||||
#else
|
|
||||||
#define MAX_E_JERK max_e_jerk
|
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
#define MAX_E_JERK max_jerk.e
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -2179,7 +2171,7 @@ bool Planner::_populate_block(block_t * const block, bool split_move,
|
||||||
if (block->e_D_ratio > 3.0f)
|
if (block->e_D_ratio > 3.0f)
|
||||||
block->use_advance_lead = false;
|
block->use_advance_lead = false;
|
||||||
else {
|
else {
|
||||||
const uint32_t max_accel_steps_per_s2 = MAX_E_JERK / (extruder_advance_K[active_extruder] * block->e_D_ratio) * steps_per_mm;
|
const uint32_t max_accel_steps_per_s2 = MAX_E_JERK(extruder) / (extruder_advance_K[active_extruder] * block->e_D_ratio) * steps_per_mm;
|
||||||
if (TERN0(LA_DEBUG, accel > max_accel_steps_per_s2))
|
if (TERN0(LA_DEBUG, accel > max_accel_steps_per_s2))
|
||||||
SERIAL_ECHOLNPGM("Acceleration limited.");
|
SERIAL_ECHOLNPGM("Acceleration limited.");
|
||||||
NOMORE(accel, max_accel_steps_per_s2);
|
NOMORE(accel, max_accel_steps_per_s2);
|
||||||
|
|
|
@ -317,7 +317,7 @@ class Planner {
|
||||||
static float junction_deviation_mm; // (mm) M205 J
|
static float junction_deviation_mm; // (mm) M205 J
|
||||||
#if ENABLED(LIN_ADVANCE)
|
#if ENABLED(LIN_ADVANCE)
|
||||||
static float max_e_jerk // Calculated from junction_deviation_mm
|
static float max_e_jerk // Calculated from junction_deviation_mm
|
||||||
TERN_(DISTINCT_E_FACTORS, [EXTRUDERS]);
|
[TERN(DISTINCT_E_FACTORS, EXTRUDERS, 1)];
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -840,13 +840,9 @@ class Planner {
|
||||||
|
|
||||||
#if HAS_LINEAR_E_JERK
|
#if HAS_LINEAR_E_JERK
|
||||||
FORCE_INLINE static void recalculate_max_e_jerk() {
|
FORCE_INLINE static void recalculate_max_e_jerk() {
|
||||||
#define GET_MAX_E_JERK(N) SQRT(junction_deviation_mm * (N) * SQRT(0.5) / (1.0f - SQRT(0.5)))
|
const float prop = junction_deviation_mm * SQRT(0.5) / (1.0f - SQRT(0.5));
|
||||||
#if ENABLED(DISTINCT_E_FACTORS)
|
|
||||||
LOOP_L_N(i, EXTRUDERS)
|
LOOP_L_N(i, EXTRUDERS)
|
||||||
max_e_jerk[i] = GET_MAX_E_JERK(settings.max_acceleration_mm_per_s2[E_AXIS_N(i)]);
|
max_e_jerk[E_AXIS_N(i)] = SQRT(prop * settings.max_acceleration_mm_per_s2[E_AXIS_N(i)]);
|
||||||
#else
|
|
||||||
max_e_jerk = GET_MAX_E_JERK(settings.max_acceleration_mm_per_s2[E_AXIS]);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue