|
@@ -126,7 +126,11 @@ float Planner::max_feedrate_mm_s[XYZE_N], // (mm/s) M203 XYZE - Max speeds
|
126
|
126
|
#if ENABLED(JUNCTION_DEVIATION)
|
127
|
127
|
float Planner::junction_deviation_mm; // (mm) M205 J
|
128
|
128
|
#if ENABLED(LIN_ADVANCE)
|
129
|
|
- float Planner::max_e_jerk_factor; // Calculated from junction_deviation_mm
|
|
129
|
+ #if ENABLED(DISTINCT_E_FACTORS)
|
|
130
|
+ float Planner::max_e_jerk[EXTRUDERS]; // Calculated from junction_deviation_mm
|
|
131
|
+ #else
|
|
132
|
+ float Planner::max_e_jerk;
|
|
133
|
+ #endif
|
130
|
134
|
#endif
|
131
|
135
|
#else
|
132
|
136
|
float Planner::max_jerk[XYZE]; // (mm/s^2) M205 XYZE - The largest speed change requiring no acceleration.
|
|
@@ -2056,7 +2060,11 @@ bool Planner::_populate_block(block_t * const block, bool split_move,
|
2056
|
2060
|
#if ENABLED(LIN_ADVANCE)
|
2057
|
2061
|
|
2058
|
2062
|
#if ENABLED(JUNCTION_DEVIATION)
|
2059
|
|
- #define MAX_E_JERK (max_e_jerk_factor * max_acceleration_mm_per_s2[_EINDEX])
|
|
2063
|
+ #if ENABLED(DISTINCT_E_FACTORS)
|
|
2064
|
+ #define MAX_E_JERK max_e_jerk[extruder]
|
|
2065
|
+ #else
|
|
2066
|
+ #define MAX_E_JERK max_e_jerk
|
|
2067
|
+ #endif
|
2060
|
2068
|
#else
|
2061
|
2069
|
#define MAX_E_JERK max_jerk[E_AXIS]
|
2062
|
2070
|
#endif
|
|
@@ -2569,6 +2577,9 @@ void Planner::reset_acceleration_rates() {
|
2569
|
2577
|
if (AXIS_CONDITION) NOLESS(highest_rate, max_acceleration_steps_per_s2[i]);
|
2570
|
2578
|
}
|
2571
|
2579
|
cutoff_long = 4294967295UL / highest_rate; // 0xFFFFFFFFUL
|
|
2580
|
+ #if ENABLED(JUNCTION_DEVIATION) && ENABLED(LIN_ADVANCE)
|
|
2581
|
+ recalculate_max_e_jerk();
|
|
2582
|
+ #endif
|
2572
|
2583
|
}
|
2573
|
2584
|
|
2574
|
2585
|
// Recalculate position, steps_to_mm if axis_steps_per_mm changes!
|