|  |  | @ -131,7 +131,7 @@ float Planner::previous_speed[NUM_AXIS], | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | #if ENABLED(DISABLE_INACTIVE_EXTRUDER) |  |  |  | #if ENABLED(DISABLE_INACTIVE_EXTRUDER) | 
			
		
	
		
		
			
				
					
					|  |  |  |   uint8_t Planner::g_uc_extruder_last_move[EXTRUDERS] = { 0 }; |  |  |  |   uint8_t Planner::g_uc_extruder_last_move[EXTRUDERS] = { 0 }; | 
			
		
	
		
		
			
				
					
					|  |  |  | #endif // DISABLE_INACTIVE_EXTRUDER
 |  |  |  | #endif | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | #ifdef XY_FREQUENCY_LIMIT |  |  |  | #ifdef XY_FREQUENCY_LIMIT | 
			
		
	
		
		
			
				
					
					|  |  |  |   // Old direction bits. Used for speed calculations
 |  |  |  |   // Old direction bits. Used for speed calculations
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -863,27 +863,29 @@ void Planner::_buffer_line(const float &a, const float &b, const float &c, const | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     #if ENABLED(DISABLE_INACTIVE_EXTRUDER) // Enable only the selected extruder
 |  |  |  |     #if ENABLED(DISABLE_INACTIVE_EXTRUDER) // Enable only the selected extruder
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       #define DISABLE_IDLE_E(N) if (!g_uc_extruder_last_move[N]) disable_E##N(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |       for (uint8_t i = 0; i < EXTRUDERS; i++) |  |  |  |       for (uint8_t i = 0; i < EXTRUDERS; i++) | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (g_uc_extruder_last_move[i] > 0) g_uc_extruder_last_move[i]--; |  |  |  |         if (g_uc_extruder_last_move[i] > 0) g_uc_extruder_last_move[i]--; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |       switch(extruder) { |  |  |  |       switch(extruder) { | 
			
		
	
		
		
			
				
					
					|  |  |  |         case 0: |  |  |  |         case 0: | 
			
		
	
		
		
			
				
					
					|  |  |  |           enable_E0(); |  |  |  |           enable_E0(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |           g_uc_extruder_last_move[0] = (BLOCK_BUFFER_SIZE) * 2; | 
			
		
	
		
		
			
				
					
					|  |  |  |           #if ENABLED(DUAL_X_CARRIAGE) || ENABLED(DUAL_NOZZLE_DUPLICATION_MODE) |  |  |  |           #if ENABLED(DUAL_X_CARRIAGE) || ENABLED(DUAL_NOZZLE_DUPLICATION_MODE) | 
			
		
	
		
		
			
				
					
					|  |  |  |             if (extruder_duplication_enabled) { |  |  |  |             if (extruder_duplication_enabled) { | 
			
		
	
		
		
			
				
					
					|  |  |  |               enable_E1(); |  |  |  |               enable_E1(); | 
			
		
	
		
		
			
				
					
					|  |  |  |               g_uc_extruder_last_move[1] = (BLOCK_BUFFER_SIZE) * 2; |  |  |  |               g_uc_extruder_last_move[1] = (BLOCK_BUFFER_SIZE) * 2; | 
			
		
	
		
		
			
				
					
					|  |  |  |             } |  |  |  |             } | 
			
		
	
		
		
			
				
					
					|  |  |  |           #endif |  |  |  |           #endif | 
			
		
	
		
		
			
				
					
					|  |  |  |           g_uc_extruder_last_move[0] = (BLOCK_BUFFER_SIZE) * 2; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |           #if EXTRUDERS > 1 |  |  |  |           #if EXTRUDERS > 1 | 
			
		
	
		
		
			
				
					
					|  |  |  |             if (g_uc_extruder_last_move[1] == 0) disable_E1(); |  |  |  |             DISABLE_IDLE_E(1); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |             #if EXTRUDERS > 2 |  |  |  |             #if EXTRUDERS > 2 | 
			
		
	
		
		
			
				
					
					|  |  |  |               if (g_uc_extruder_last_move[2] == 0) disable_E2(); |  |  |  |               DISABLE_IDLE_E(2); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |               #if EXTRUDERS > 3 |  |  |  |               #if EXTRUDERS > 3 | 
			
		
	
		
		
			
				
					
					|  |  |  |                 if (g_uc_extruder_last_move[3] == 0) disable_E3(); |  |  |  |                 DISABLE_IDLE_E(3); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |                 #if EXTRUDERS > 4 |  |  |  |                 #if EXTRUDERS > 4 | 
			
		
	
		
		
			
				
					
					|  |  |  |                   if (g_uc_extruder_last_move[4] == 0) disable_E4(); |  |  |  |                   DISABLE_IDLE_E(4); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |                 #endif // EXTRUDERS > 4
 |  |  |  |                 #endif // EXTRUDERS > 4
 | 
			
		
	
		
		
			
				
					
					|  |  |  |               #endif // EXTRUDERS > 3
 |  |  |  |               #endif // EXTRUDERS > 3
 | 
			
		
	
		
		
			
				
					
					|  |  |  |             #endif // EXTRUDERS > 2
 |  |  |  |             #endif // EXTRUDERS > 2
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -893,13 +895,13 @@ void Planner::_buffer_line(const float &a, const float &b, const float &c, const | 
			
		
	
		
		
			
				
					
					|  |  |  |           case 1: |  |  |  |           case 1: | 
			
		
	
		
		
			
				
					
					|  |  |  |             enable_E1(); |  |  |  |             enable_E1(); | 
			
		
	
		
		
			
				
					
					|  |  |  |             g_uc_extruder_last_move[1] = (BLOCK_BUFFER_SIZE) * 2; |  |  |  |             g_uc_extruder_last_move[1] = (BLOCK_BUFFER_SIZE) * 2; | 
			
		
	
		
		
			
				
					
					|  |  |  |             if (g_uc_extruder_last_move[0] == 0) disable_E0(); |  |  |  |             DISABLE_IDLE_E(0); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |             #if EXTRUDERS > 2 |  |  |  |             #if EXTRUDERS > 2 | 
			
		
	
		
		
			
				
					
					|  |  |  |               if (g_uc_extruder_last_move[2] == 0) disable_E2(); |  |  |  |               DISABLE_IDLE_E(2); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |               #if EXTRUDERS > 3 |  |  |  |               #if EXTRUDERS > 3 | 
			
		
	
		
		
			
				
					
					|  |  |  |                 if (g_uc_extruder_last_move[3] == 0) disable_E3(); |  |  |  |                 DISABLE_IDLE_E(3); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |                 #if EXTRUDERS > 4 |  |  |  |                 #if EXTRUDERS > 4 | 
			
		
	
		
		
			
				
					
					|  |  |  |                   if (g_uc_extruder_last_move[4] == 0) disable_E4(); |  |  |  |                   DISABLE_IDLE_E(4); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |                 #endif // EXTRUDERS > 4
 |  |  |  |                 #endif // EXTRUDERS > 4
 | 
			
		
	
		
		
			
				
					
					|  |  |  |               #endif // EXTRUDERS > 3
 |  |  |  |               #endif // EXTRUDERS > 3
 | 
			
		
	
		
		
			
				
					
					|  |  |  |             #endif // EXTRUDERS > 2
 |  |  |  |             #endif // EXTRUDERS > 2
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -908,12 +910,12 @@ void Planner::_buffer_line(const float &a, const float &b, const float &c, const | 
			
		
	
		
		
			
				
					
					|  |  |  |             case 2: |  |  |  |             case 2: | 
			
		
	
		
		
			
				
					
					|  |  |  |               enable_E2(); |  |  |  |               enable_E2(); | 
			
		
	
		
		
			
				
					
					|  |  |  |               g_uc_extruder_last_move[2] = (BLOCK_BUFFER_SIZE) * 2; |  |  |  |               g_uc_extruder_last_move[2] = (BLOCK_BUFFER_SIZE) * 2; | 
			
		
	
		
		
			
				
					
					|  |  |  |               if (g_uc_extruder_last_move[0] == 0) disable_E0(); |  |  |  |               DISABLE_IDLE_E(0); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |               if (g_uc_extruder_last_move[1] == 0) disable_E1(); |  |  |  |               DISABLE_IDLE_E(1); | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |               #if EXTRUDERS > 3 |  |  |  |               #if EXTRUDERS > 3 | 
			
		
	
		
		
			
				
					
					|  |  |  |                 if (g_uc_extruder_last_move[3] == 0) disable_E3(); |  |  |  |                 DISABLE_IDLE_E(3); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |                 #if EXTRUDERS > 4 |  |  |  |                 #if EXTRUDERS > 4 | 
			
		
	
		
		
			
				
					
					|  |  |  |                   if (g_uc_extruder_last_move[4] == 0) disable_E4(); |  |  |  |                   DISABLE_IDLE_E(4); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |                 #endif |  |  |  |                 #endif | 
			
		
	
		
		
			
				
					
					|  |  |  |               #endif |  |  |  |               #endif | 
			
		
	
		
		
			
				
					
					|  |  |  |             break; |  |  |  |             break; | 
			
		
	
	
		
		
			
				
					|  |  | @ -921,21 +923,21 @@ void Planner::_buffer_line(const float &a, const float &b, const float &c, const | 
			
		
	
		
		
			
				
					
					|  |  |  |               case 3: |  |  |  |               case 3: | 
			
		
	
		
		
			
				
					
					|  |  |  |                 enable_E3(); |  |  |  |                 enable_E3(); | 
			
		
	
		
		
			
				
					
					|  |  |  |                 g_uc_extruder_last_move[3] = (BLOCK_BUFFER_SIZE) * 2; |  |  |  |                 g_uc_extruder_last_move[3] = (BLOCK_BUFFER_SIZE) * 2; | 
			
		
	
		
		
			
				
					
					|  |  |  |                 if (g_uc_extruder_last_move[0] == 0) disable_E0(); |  |  |  |                 DISABLE_IDLE_E(0); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                 if (g_uc_extruder_last_move[1] == 0) disable_E1(); |  |  |  |                 DISABLE_IDLE_E(1); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                 if (g_uc_extruder_last_move[2] == 0) disable_E2(); |  |  |  |                 DISABLE_IDLE_E(2); | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |                 #if EXTRUDERS > 4 |  |  |  |                 #if EXTRUDERS > 4 | 
			
		
	
		
		
			
				
					
					|  |  |  |                   if (g_uc_extruder_last_move[4] == 0) disable_E4(); |  |  |  |                   DISABLE_IDLE_E(4); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |                 #endif |  |  |  |                 #endif | 
			
		
	
		
		
			
				
					
					|  |  |  |               break; |  |  |  |               break; | 
			
		
	
		
		
			
				
					
					|  |  |  |               #if EXTRUDERS > 4 |  |  |  |               #if EXTRUDERS > 4 | 
			
		
	
		
		
			
				
					
					|  |  |  |                 case 4: |  |  |  |                 case 4: | 
			
		
	
		
		
			
				
					
					|  |  |  |                   enable_E4(); |  |  |  |                   enable_E4(); | 
			
		
	
		
		
			
				
					
					|  |  |  |                   g_uc_extruder_last_move[4] = (BLOCK_BUFFER_SIZE) * 2; |  |  |  |                   g_uc_extruder_last_move[4] = (BLOCK_BUFFER_SIZE) * 2; | 
			
		
	
		
		
			
				
					
					|  |  |  |                   if (g_uc_extruder_last_move[0] == 0) disable_E0(); |  |  |  |                   DISABLE_IDLE_E(0); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                   if (g_uc_extruder_last_move[1] == 0) disable_E1(); |  |  |  |                   DISABLE_IDLE_E(1); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                   if (g_uc_extruder_last_move[2] == 0) disable_E2(); |  |  |  |                   DISABLE_IDLE_E(2); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                   if (g_uc_extruder_last_move[3] == 0) disable_E3(); |  |  |  |                   DISABLE_IDLE_E(3); | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |                 break; |  |  |  |                 break; | 
			
		
	
		
		
			
				
					
					|  |  |  |               #endif // EXTRUDERS > 4
 |  |  |  |               #endif // EXTRUDERS > 4
 | 
			
		
	
		
		
			
				
					
					|  |  |  |             #endif // EXTRUDERS > 3
 |  |  |  |             #endif // EXTRUDERS > 3
 | 
			
		
	
	
		
		
			
				
					|  |  | 
 |