PavelSindler 7 年之前
父节点
当前提交
6eeea402e4
共有 3 个文件被更改,包括 18 次插入7 次删除
  1. 9 4
      Firmware/Marlin_main.cpp
  2. 2 0
      Firmware/pins.h
  3. 7 3
      Firmware/ultralcd.cpp

+ 9 - 4
Firmware/Marlin_main.cpp

@@ -4775,8 +4775,12 @@ Sigma_Exit:
     {
       if(code_seen('S'))
       {
+		saved_feedmultiply = feedmultiply;
         feedmultiply = code_value() ;
       }
+	  if (code_seen('R')) { //restore
+		  feedmultiply = saved_feedmultiply;
+	  }
     }
     break;
     case 221: // M221 S<factor in percent>- set extrude factor override percentage
@@ -5659,6 +5663,7 @@ case 404:  //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp
 
 		  pinMode(E_MUX0_PIN, OUTPUT);
 		  pinMode(E_MUX1_PIN, OUTPUT);
+		  pinMode(E_MUX2_PIN, OUTPUT);
 
 		  delay(100);
 		  SERIAL_ECHO_START;
@@ -5668,22 +5673,22 @@ case 404:  //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp
 		  case 1:
 			  WRITE(E_MUX0_PIN, HIGH);
 			  WRITE(E_MUX1_PIN, LOW);
-
+			  WRITE(E_MUX2_PIN, LOW);
 			  break;
 		  case 2:
 			  WRITE(E_MUX0_PIN, LOW);
 			  WRITE(E_MUX1_PIN, HIGH);
-
+			  WRITE(E_MUX2_PIN, LOW);
 			  break;
 		  case 3:
 			  WRITE(E_MUX0_PIN, HIGH);
 			  WRITE(E_MUX1_PIN, HIGH);
-
+			  WRITE(E_MUX2_PIN, LOW);
 			  break;
 		  default:
 			  WRITE(E_MUX0_PIN, LOW);
 			  WRITE(E_MUX1_PIN, LOW);
-
+			  WRITE(E_MUX2_PIN, LOW);
 			  break;
 		  }
 		  delay(100);

+ 2 - 0
Firmware/pins.h

@@ -67,6 +67,7 @@
 
 #define E_MUX0_PIN 17
 #define E_MUX1_PIN 16
+#define E_MUX2_PIN 84
 
 
 #endif
@@ -228,6 +229,7 @@
 
 #define E_MUX0_PIN 17
 #define E_MUX1_PIN 16
+#define E_MUX2_PIN 84
 
 
 #endif

+ 7 - 3
Firmware/ultralcd.cpp

@@ -3264,26 +3264,29 @@ void change_extr(int extr) { //switches multiplexer for extruders
 
 	pinMode(E_MUX0_PIN, OUTPUT);
 	pinMode(E_MUX1_PIN, OUTPUT);
+	pinMode(E_MUX2_PIN, OUTPUT);
 
 	switch (extr) {
 	case 1:
 		WRITE(E_MUX0_PIN, HIGH);
 		WRITE(E_MUX1_PIN, LOW);
-		
+		WRITE(E_MUX2_PIN, LOW);
 		break;
 	case 2:
 		WRITE(E_MUX0_PIN, LOW);
 		WRITE(E_MUX1_PIN, HIGH);
-		
+		WRITE(E_MUX2_PIN, LOW);
 		break;
 	case 3:
 		WRITE(E_MUX0_PIN, HIGH);
 		WRITE(E_MUX1_PIN, HIGH);
+		WRITE(E_MUX2_PIN, LOW);
 		
 		break;
 	default:
 		WRITE(E_MUX0_PIN, LOW);
 		WRITE(E_MUX1_PIN, LOW);
+		WRITE(E_MUX2_PIN, LOW);
 		
 		break;
 	}
@@ -3291,7 +3294,8 @@ void change_extr(int extr) { //switches multiplexer for extruders
 }
 
 static int get_ext_nr() { //reads multiplexer input pins and return current extruder number (counted from 0)
-	return(2 * READ(E_MUX1_PIN) + READ(E_MUX0_PIN));
+	return(4 * READ(E_MUX2_PIN) + 2 * READ(E_MUX1_PIN) + READ(E_MUX0_PIN));
+	//return(2 * READ(E_MUX1_PIN) + READ(E_MUX0_PIN));
 }