|
@@ -130,13 +130,13 @@ planner_settings_t Planner::settings; // Initialized by settings.load(
|
130
|
130
|
|
131
|
131
|
uint32_t Planner::max_acceleration_steps_per_s2[XYZE_N]; // (steps/s^2) Derived from mm_per_s2
|
132
|
132
|
|
133
|
|
-float Planner::steps_to_mm[XYZE_N]; // (mm) Millimeters per step
|
|
133
|
+float Planner::steps_to_mm[XYZE_N]; // (mm) Millimeters per step
|
134
|
134
|
|
135
|
135
|
#if HAS_JUNCTION_DEVIATION
|
136
|
|
- float Planner::junction_deviation_mm; // (mm) M205 J
|
|
136
|
+ float Planner::junction_deviation_mm; // (mm) M205 J
|
137
|
137
|
#if ENABLED(LIN_ADVANCE)
|
138
|
|
- float Planner::max_e_jerk // Calculated from junction_deviation_mm
|
139
|
|
- TERN_(DISTINCT_E_FACTORS, [EXTRUDERS]);
|
|
138
|
+ float Planner::max_e_jerk // Calculated from junction_deviation_mm
|
|
139
|
+ [TERN(DISTINCT_E_FACTORS, EXTRUDERS, 1)];
|
140
|
140
|
#endif
|
141
|
141
|
#endif
|
142
|
142
|
|
|
@@ -2139,15 +2139,7 @@ bool Planner::_populate_block(block_t * const block, bool split_move,
|
2139
|
2139
|
|
2140
|
2140
|
#if ENABLED(LIN_ADVANCE)
|
2141
|
2141
|
|
2142
|
|
- #if HAS_JUNCTION_DEVIATION
|
2143
|
|
- #if ENABLED(DISTINCT_E_FACTORS)
|
2144
|
|
- #define MAX_E_JERK max_e_jerk[extruder]
|
2145
|
|
- #else
|
2146
|
|
- #define MAX_E_JERK max_e_jerk
|
2147
|
|
- #endif
|
2148
|
|
- #else
|
2149
|
|
- #define MAX_E_JERK max_jerk.e
|
2150
|
|
- #endif
|
|
2142
|
+ #define MAX_E_JERK(N) TERN(HAS_JUNCTION_DEVIATION, max_e_jerk[E_AXIS_N(N)], max_jerk.e)
|
2151
|
2143
|
|
2152
|
2144
|
/**
|
2153
|
2145
|
*
|
|
@@ -2179,7 +2171,7 @@ bool Planner::_populate_block(block_t * const block, bool split_move,
|
2179
|
2171
|
if (block->e_D_ratio > 3.0f)
|
2180
|
2172
|
block->use_advance_lead = false;
|
2181
|
2173
|
else {
|
2182
|
|
- const uint32_t max_accel_steps_per_s2 = MAX_E_JERK / (extruder_advance_K[active_extruder] * block->e_D_ratio) * steps_per_mm;
|
|
2174
|
+ const uint32_t max_accel_steps_per_s2 = MAX_E_JERK(extruder) / (extruder_advance_K[active_extruder] * block->e_D_ratio) * steps_per_mm;
|
2183
|
2175
|
if (TERN0(LA_DEBUG, accel > max_accel_steps_per_s2))
|
2184
|
2176
|
SERIAL_ECHOLNPGM("Acceleration limited.");
|
2185
|
2177
|
NOMORE(accel, max_accel_steps_per_s2);
|