瀏覽代碼

Merge pull request #1005 from midopple/Marlin_v1

With option DISABLE_INACTIVE_EXTRUDER the extruder is disable to early
Erik van der Zalm 10 年之前
父節點
當前提交
105571ec68
共有 1 個檔案被更改,包括 28 行新增3 行删除
  1. 28
    3
      Marlin/planner.cpp

+ 28
- 3
Marlin/planner.cpp 查看文件

@@ -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

Loading…
取消
儲存