|
@@ -96,6 +96,8 @@ float autotemp_factor=0.1;
|
96
|
96
|
bool autotemp_enabled=false;
|
97
|
97
|
#endif
|
98
|
98
|
|
|
99
|
+unsigned char g_uc_extruder_last_move[3] = {0,0,0};
|
|
100
|
+
|
99
|
101
|
//===========================================================================
|
100
|
102
|
//=================semi-private variables, used in inline functions =====
|
101
|
103
|
//===========================================================================
|
|
@@ -662,11 +664,34 @@ block->steps_y = labs((target[X_AXIS]-position[X_AXIS]) - (target[Y_AXIS]-positi
|
662
|
664
|
{
|
663
|
665
|
if (DISABLE_INACTIVE_EXTRUDER) //enable only selected extruder
|
664
|
666
|
{
|
|
667
|
+
|
|
668
|
+ if(g_uc_extruder_last_move[0] > 0) g_uc_extruder_last_move[0]--;
|
|
669
|
+ if(g_uc_extruder_last_move[1] > 0) g_uc_extruder_last_move[1]--;
|
|
670
|
+ if(g_uc_extruder_last_move[2] > 0) g_uc_extruder_last_move[2]--;
|
|
671
|
+
|
665
|
672
|
switch(extruder)
|
666
|
673
|
{
|
667
|
|
- case 0: enable_e0(); disable_e1(); disable_e2(); break;
|
668
|
|
- case 1: disable_e0(); enable_e1(); disable_e2(); break;
|
669
|
|
- case 2: disable_e0(); disable_e1(); enable_e2(); break;
|
|
674
|
+ case 0:
|
|
675
|
+ enable_e0();
|
|
676
|
+ g_uc_extruder_last_move[0] = BLOCK_BUFFER_SIZE*2;
|
|
677
|
+
|
|
678
|
+ if(g_uc_extruder_last_move[1] == 0) disable_e1();
|
|
679
|
+ if(g_uc_extruder_last_move[2] == 0) disable_e2();
|
|
680
|
+ break;
|
|
681
|
+ case 1:
|
|
682
|
+ enable_e1();
|
|
683
|
+ g_uc_extruder_last_move[1] = BLOCK_BUFFER_SIZE*2;
|
|
684
|
+
|
|
685
|
+ if(g_uc_extruder_last_move[0] == 0) disable_e0();
|
|
686
|
+ if(g_uc_extruder_last_move[2] == 0) disable_e2();
|
|
687
|
+ break;
|
|
688
|
+ case 2:
|
|
689
|
+ enable_e2();
|
|
690
|
+ g_uc_extruder_last_move[2] = BLOCK_BUFFER_SIZE*2;
|
|
691
|
+
|
|
692
|
+ if(g_uc_extruder_last_move[0] == 0) disable_e0();
|
|
693
|
+ if(g_uc_extruder_last_move[1] == 0) disable_e1();
|
|
694
|
+ break;
|
670
|
695
|
}
|
671
|
696
|
}
|
672
|
697
|
else //enable all
|