|
@@ -213,7 +213,7 @@ xyze_float_t Planner::previous_speed;
|
213
|
213
|
float Planner::previous_nominal_speed_sqr;
|
214
|
214
|
|
215
|
215
|
#if ENABLED(DISABLE_INACTIVE_EXTRUDER)
|
216
|
|
- uint8_t Planner::g_uc_extruder_last_move[EXTRUDERS] = { 0 };
|
|
216
|
+ last_move_t Planner::g_uc_extruder_last_move[EXTRUDERS] = { 0 };
|
217
|
217
|
#endif
|
218
|
218
|
|
219
|
219
|
#ifdef XY_FREQUENCY_LIMIT
|
|
@@ -2037,22 +2037,20 @@ bool Planner::_populate_block(block_t * const block, bool split_move,
|
2037
|
2037
|
#if ENABLED(DISABLE_INACTIVE_EXTRUDER) // Enable only the selected extruder
|
2038
|
2038
|
|
2039
|
2039
|
LOOP_L_N(i, EXTRUDERS)
|
2040
|
|
- if (g_uc_extruder_last_move[i] > 0) g_uc_extruder_last_move[i]--;
|
2041
|
|
-
|
2042
|
|
- #if HAS_DUPLICATION_MODE
|
2043
|
|
- if (extruder_duplication_enabled && extruder == 0) {
|
2044
|
|
- ENABLE_AXIS_E1();
|
2045
|
|
- g_uc_extruder_last_move[1] = (BLOCK_BUFFER_SIZE) * 2;
|
2046
|
|
- }
|
2047
|
|
- #endif
|
|
2040
|
+ if (g_uc_extruder_last_move[i]) g_uc_extruder_last_move[i]--;
|
2048
|
2041
|
|
2049
|
2042
|
#define ENABLE_ONE_E(N) do{ \
|
2050
|
2043
|
if (extruder == N) { \
|
2051
|
2044
|
ENABLE_AXIS_E##N(); \
|
2052
|
2045
|
g_uc_extruder_last_move[N] = (BLOCK_BUFFER_SIZE) * 2; \
|
|
2046
|
+ if ((N) == 0 && TERN0(HAS_DUPLICATION_MODE, extruder_duplication_enabled)) \
|
|
2047
|
+ ENABLE_AXIS_E1(); \
|
2053
|
2048
|
} \
|
2054
|
|
- else if (!g_uc_extruder_last_move[N]) \
|
|
2049
|
+ else if (!g_uc_extruder_last_move[N]) { \
|
2055
|
2050
|
DISABLE_AXIS_E##N(); \
|
|
2051
|
+ if ((N) == 0 && TERN0(HAS_DUPLICATION_MODE, extruder_duplication_enabled)) \
|
|
2052
|
+ DISABLE_AXIS_E1(); \
|
|
2053
|
+ } \
|
2056
|
2054
|
}while(0);
|
2057
|
2055
|
|
2058
|
2056
|
#else
|