Merge pull request #4362 from thinkyhead/rc_duplication_mode
DUAL_NOZZLE_DUPLICATION_MODE
This commit is contained in:
		
						commit
						652fd8a826
					
				| @ -329,7 +329,10 @@ | ||||
| 
 | ||||
| #define AXIS_RELATIVE_MODES {false, false, false, false} | ||||
| 
 | ||||
| //By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
 | ||||
| // Allow duplication mode with a basic dual-nozzle extruder
 | ||||
| //#define DUAL_NOZZLE_DUPLICATION_MODE
 | ||||
| 
 | ||||
| // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
 | ||||
| #define INVERT_X_STEP_PIN false | ||||
| #define INVERT_Y_STEP_PIN false | ||||
| #define INVERT_Z_STEP_PIN false | ||||
|  | ||||
| @ -134,7 +134,7 @@ void idle( | ||||
| 
 | ||||
| void manage_inactivity(bool ignore_stepper_queue = false); | ||||
| 
 | ||||
| #if ENABLED(DUAL_X_CARRIAGE) | ||||
| #if ENABLED(DUAL_X_CARRIAGE) || ENABLED(DUAL_NOZZLE_DUPLICATION_MODE) | ||||
|   extern bool extruder_duplication_enabled; | ||||
| #endif | ||||
| 
 | ||||
|  | ||||
| @ -1394,6 +1394,10 @@ XYZ_CONSTS_FROM_CONFIG(float, max_length,     MAX_LENGTH); | ||||
| XYZ_CONSTS_FROM_CONFIG(float, home_bump_mm,   HOME_BUMP_MM); | ||||
| XYZ_CONSTS_FROM_CONFIG(signed char, home_dir, HOME_DIR); | ||||
| 
 | ||||
| #if ENABLED(DUAL_X_CARRIAGE) || ENABLED(DUAL_NOZZLE_DUPLICATION_MODE) | ||||
|   bool extruder_duplication_enabled = false; // Used in Dual X mode 2
 | ||||
| #endif | ||||
| 
 | ||||
| #if ENABLED(DUAL_X_CARRIAGE) | ||||
| 
 | ||||
|   #define DXC_FULL_CONTROL_MODE 0 | ||||
| @ -1425,7 +1429,6 @@ XYZ_CONSTS_FROM_CONFIG(signed char, home_dir, HOME_DIR); | ||||
|   static millis_t delayed_move_time = 0; // used in mode 1
 | ||||
|   static float duplicate_extruder_x_offset = DEFAULT_DUPLICATION_X_OFFSET; // used in mode 2
 | ||||
|   static float duplicate_extruder_temp_offset = 0; // used in mode 2
 | ||||
|   bool extruder_duplication_enabled = false; // used in mode 2
 | ||||
| 
 | ||||
| #endif //DUAL_X_CARRIAGE
 | ||||
| 
 | ||||
| @ -2812,12 +2815,13 @@ inline void gcode_G4() { | ||||
|     current_position[X_AXIS] = current_position[Y_AXIS] = 0.0; | ||||
|     sync_plan_position(); | ||||
| 
 | ||||
|     #if ENABLED(DUAL_X_CARRIAGE) | ||||
|       int x_axis_home_dir = x_home_dir(active_extruder); | ||||
|       extruder_duplication_enabled = false; | ||||
|     #else | ||||
|       int x_axis_home_dir = home_dir(X_AXIS); | ||||
|     #endif | ||||
|     int x_axis_home_dir = | ||||
|       #if ENABLED(DUAL_X_CARRIAGE) | ||||
|         x_home_dir(active_extruder) | ||||
|       #else | ||||
|         home_dir(X_AXIS) | ||||
|       #endif | ||||
|     ; | ||||
| 
 | ||||
|     float mlx = max_length(X_AXIS), | ||||
|           mly = max_length(Y_AXIS), | ||||
| @ -2870,6 +2874,10 @@ inline void gcode_G28() { | ||||
|     tool_change(0, 0, true); | ||||
|   #endif | ||||
| 
 | ||||
|   #if ENABLED(DUAL_X_CARRIAGE) || ENABLED(DUAL_NOZZLE_DUPLICATION_MODE) | ||||
|     extruder_duplication_enabled = false; | ||||
|   #endif | ||||
| 
 | ||||
|   /**
 | ||||
|    * For mesh bed leveling deactivate the mesh calculations, will be turned | ||||
|    * on again when homing all axis | ||||
| @ -2988,7 +2996,6 @@ inline void gcode_G28() { | ||||
|     if (home_all_axis || homeX) { | ||||
|       #if ENABLED(DUAL_X_CARRIAGE) | ||||
|         int tmp_extruder = active_extruder; | ||||
|         extruder_duplication_enabled = false; | ||||
|         active_extruder = !active_extruder; | ||||
|         HOMEAXIS(X); | ||||
|         inactive_extruder_x_pos = current_position[X_AXIS]; | ||||
| @ -6449,7 +6456,17 @@ inline void gcode_M503() { | ||||
|     delayed_move_time = 0; | ||||
|   } | ||||
| 
 | ||||
| #endif // DUAL_X_CARRIAGE
 | ||||
| #elif ENABLED(DUAL_NOZZLE_DUPLICATION_MODE) | ||||
| 
 | ||||
|   inline void gcode_M605() { | ||||
|     stepper.synchronize(); | ||||
|     extruder_duplication_enabled = code_seen('S') && code_value_int() == 2; | ||||
|     SERIAL_ECHO_START; | ||||
|     SERIAL_ECHOPAIR(MSG_DUPLICATION_MODE, extruder_duplication_enabled ? MSG_ON : MSG_OFF); | ||||
|     SERIAL_EOL; | ||||
|   } | ||||
| 
 | ||||
| #endif // M605
 | ||||
| 
 | ||||
| #if ENABLED(LIN_ADVANCE) | ||||
|   /**
 | ||||
|  | ||||
| @ -175,7 +175,7 @@ | ||||
|  */ | ||||
| #if ENABLED(SWITCHING_EXTRUDER) | ||||
|   #if ENABLED(DUAL_X_CARRIAGE) | ||||
|     #error "SINGLENOZZLE and DUAL_X_CARRIAGE are incompatible." | ||||
|     #error "SWITCHING_EXTRUDER and DUAL_X_CARRIAGE are incompatible." | ||||
|   #elif EXTRUDERS != 2 | ||||
|     #error "SWITCHING_EXTRUDER requires exactly 2 EXTRUDERS." | ||||
|   #elif NUM_SERVOS < 1 | ||||
| @ -572,6 +572,23 @@ | ||||
|   #error "TEMP_SENSOR_1 is required with TEMP_SENSOR_1_AS_REDUNDANT." | ||||
| #endif | ||||
| 
 | ||||
| /**
 | ||||
|  * Basic 2-nozzle duplication mode | ||||
|  */ | ||||
| #if ENABLED(DUAL_NOZZLE_DUPLICATION_MODE) | ||||
|   #if HOTENDS != 2 | ||||
|     #error "DUAL_NOZZLE_DUPLICATION_MODE requires exactly 2 hotends." | ||||
|   #elif ENABLED(DUAL_X_CARRIAGE) | ||||
|     #error "DUAL_NOZZLE_DUPLICATION_MODE is incompatible with DUAL_X_CARRIAGE." | ||||
|   #elif ENABLED(SINGLENOZZLE) | ||||
|     #error "DUAL_NOZZLE_DUPLICATION_MODE is incompatible with SINGLENOZZLE." | ||||
|   #elif ENABLED(MIXING_EXTRUDER) | ||||
|     #error "DUAL_NOZZLE_DUPLICATION_MODE is incompatible with MIXING_EXTRUDER." | ||||
|   #elif ENABLED(SWITCHING_EXTRUDER) | ||||
|     #error "DUAL_NOZZLE_DUPLICATION_MODE is incompatible with SWITCHING_EXTRUDER." | ||||
|   #endif | ||||
| #endif | ||||
| 
 | ||||
| /**
 | ||||
|  * Test Extruder Pins | ||||
|  */ | ||||
|  | ||||
| @ -329,7 +329,10 @@ | ||||
| 
 | ||||
| #define AXIS_RELATIVE_MODES {false, false, false, false} | ||||
| 
 | ||||
| //By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
 | ||||
| // Allow duplication mode with a basic dual-nozzle extruder
 | ||||
| //#define DUAL_NOZZLE_DUPLICATION_MODE
 | ||||
| 
 | ||||
| // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
 | ||||
| #define INVERT_X_STEP_PIN false | ||||
| #define INVERT_Y_STEP_PIN false | ||||
| #define INVERT_Z_STEP_PIN false | ||||
|  | ||||
| @ -329,7 +329,10 @@ | ||||
| 
 | ||||
| #define AXIS_RELATIVE_MODES {false, false, false, false} | ||||
| 
 | ||||
| //By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
 | ||||
| // Allow duplication mode with a basic dual-nozzle extruder
 | ||||
| //#define DUAL_NOZZLE_DUPLICATION_MODE
 | ||||
| 
 | ||||
| // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
 | ||||
| #define INVERT_X_STEP_PIN false | ||||
| #define INVERT_Y_STEP_PIN false | ||||
| #define INVERT_Z_STEP_PIN false | ||||
|  | ||||
| @ -329,7 +329,10 @@ | ||||
| 
 | ||||
| #define AXIS_RELATIVE_MODES {false, false, false, false} | ||||
| 
 | ||||
| //By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
 | ||||
| // Allow duplication mode with a basic dual-nozzle extruder
 | ||||
| //#define DUAL_NOZZLE_DUPLICATION_MODE
 | ||||
| 
 | ||||
| // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
 | ||||
| #define INVERT_X_STEP_PIN false | ||||
| #define INVERT_Y_STEP_PIN false | ||||
| #define INVERT_Z_STEP_PIN false | ||||
|  | ||||
| @ -329,7 +329,10 @@ | ||||
| 
 | ||||
| #define AXIS_RELATIVE_MODES {false, false, false, false} | ||||
| 
 | ||||
| //By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
 | ||||
| // Allow duplication mode with a basic dual-nozzle extruder
 | ||||
| //#define DUAL_NOZZLE_DUPLICATION_MODE
 | ||||
| 
 | ||||
| // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
 | ||||
| #define INVERT_X_STEP_PIN false | ||||
| #define INVERT_Y_STEP_PIN false | ||||
| #define INVERT_Z_STEP_PIN false | ||||
|  | ||||
| @ -335,7 +335,10 @@ | ||||
| 
 | ||||
| #define AXIS_RELATIVE_MODES {false, false, false, false} | ||||
| 
 | ||||
| //By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
 | ||||
| // Allow duplication mode with a basic dual-nozzle extruder
 | ||||
| //#define DUAL_NOZZLE_DUPLICATION_MODE
 | ||||
| 
 | ||||
| // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
 | ||||
| #define INVERT_X_STEP_PIN false | ||||
| #define INVERT_Y_STEP_PIN false | ||||
| #define INVERT_Z_STEP_PIN false | ||||
|  | ||||
| @ -329,7 +329,10 @@ | ||||
| 
 | ||||
| #define AXIS_RELATIVE_MODES {false, false, false, false} | ||||
| 
 | ||||
| //By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
 | ||||
| // Allow duplication mode with a basic dual-nozzle extruder
 | ||||
| //#define DUAL_NOZZLE_DUPLICATION_MODE
 | ||||
| 
 | ||||
| // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
 | ||||
| #define INVERT_X_STEP_PIN false | ||||
| #define INVERT_Y_STEP_PIN false | ||||
| #define INVERT_Z_STEP_PIN false | ||||
|  | ||||
| @ -329,7 +329,10 @@ | ||||
| 
 | ||||
| #define AXIS_RELATIVE_MODES {false, false, false, false} | ||||
| 
 | ||||
| //By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
 | ||||
| // Allow duplication mode with a basic dual-nozzle extruder
 | ||||
| //#define DUAL_NOZZLE_DUPLICATION_MODE
 | ||||
| 
 | ||||
| // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
 | ||||
| #define INVERT_X_STEP_PIN false | ||||
| #define INVERT_Y_STEP_PIN false | ||||
| #define INVERT_Z_STEP_PIN false | ||||
|  | ||||
| @ -329,7 +329,10 @@ | ||||
| 
 | ||||
| #define AXIS_RELATIVE_MODES {false, false, false, false} | ||||
| 
 | ||||
| //By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
 | ||||
| // Allow duplication mode with a basic dual-nozzle extruder
 | ||||
| //#define DUAL_NOZZLE_DUPLICATION_MODE
 | ||||
| 
 | ||||
| // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
 | ||||
| #define INVERT_X_STEP_PIN false | ||||
| #define INVERT_Y_STEP_PIN false | ||||
| #define INVERT_Z_STEP_PIN false | ||||
|  | ||||
| @ -337,7 +337,10 @@ | ||||
| 
 | ||||
| #define AXIS_RELATIVE_MODES {false, false, false, false} | ||||
| 
 | ||||
| //By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
 | ||||
| // Allow duplication mode with a basic dual-nozzle extruder
 | ||||
| //#define DUAL_NOZZLE_DUPLICATION_MODE
 | ||||
| 
 | ||||
| // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
 | ||||
| #define INVERT_X_STEP_PIN false | ||||
| #define INVERT_Y_STEP_PIN false | ||||
| #define INVERT_Z_STEP_PIN false | ||||
|  | ||||
| @ -329,7 +329,10 @@ | ||||
| 
 | ||||
| #define AXIS_RELATIVE_MODES {false, false, false, false} | ||||
| 
 | ||||
| //By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
 | ||||
| // Allow duplication mode with a basic dual-nozzle extruder
 | ||||
| //#define DUAL_NOZZLE_DUPLICATION_MODE
 | ||||
| 
 | ||||
| // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
 | ||||
| #define INVERT_X_STEP_PIN false | ||||
| #define INVERT_Y_STEP_PIN false | ||||
| #define INVERT_Z_STEP_PIN false | ||||
|  | ||||
| @ -329,7 +329,10 @@ | ||||
| 
 | ||||
| #define AXIS_RELATIVE_MODES {false, false, false, false} | ||||
| 
 | ||||
| //By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
 | ||||
| // Allow duplication mode with a basic dual-nozzle extruder
 | ||||
| //#define DUAL_NOZZLE_DUPLICATION_MODE
 | ||||
| 
 | ||||
| // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
 | ||||
| #define INVERT_X_STEP_PIN false | ||||
| #define INVERT_Y_STEP_PIN false | ||||
| #define INVERT_Z_STEP_PIN false | ||||
|  | ||||
| @ -329,7 +329,10 @@ | ||||
| 
 | ||||
| #define AXIS_RELATIVE_MODES {false, false, false, false} | ||||
| 
 | ||||
| //By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
 | ||||
| // Allow duplication mode with a basic dual-nozzle extruder
 | ||||
| //#define DUAL_NOZZLE_DUPLICATION_MODE
 | ||||
| 
 | ||||
| // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
 | ||||
| #define INVERT_X_STEP_PIN false | ||||
| #define INVERT_Y_STEP_PIN false | ||||
| #define INVERT_Z_STEP_PIN false | ||||
|  | ||||
| @ -329,7 +329,10 @@ | ||||
| 
 | ||||
| #define AXIS_RELATIVE_MODES {false, false, false, false} | ||||
| 
 | ||||
| //By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
 | ||||
| // Allow duplication mode with a basic dual-nozzle extruder
 | ||||
| //#define DUAL_NOZZLE_DUPLICATION_MODE
 | ||||
| 
 | ||||
| // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
 | ||||
| #define INVERT_X_STEP_PIN false | ||||
| #define INVERT_Y_STEP_PIN false | ||||
| #define INVERT_Z_STEP_PIN false | ||||
|  | ||||
| @ -334,7 +334,10 @@ | ||||
| 
 | ||||
| #define AXIS_RELATIVE_MODES {false, false, false, false} | ||||
| 
 | ||||
| //By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
 | ||||
| // Allow duplication mode with a basic dual-nozzle extruder
 | ||||
| //#define DUAL_NOZZLE_DUPLICATION_MODE
 | ||||
| 
 | ||||
| // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
 | ||||
| #define INVERT_X_STEP_PIN false | ||||
| #define INVERT_Y_STEP_PIN false | ||||
| #define INVERT_Z_STEP_PIN false | ||||
|  | ||||
| @ -329,7 +329,10 @@ | ||||
| 
 | ||||
| #define AXIS_RELATIVE_MODES {false, false, false, false} | ||||
| 
 | ||||
| //By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
 | ||||
| // Allow duplication mode with a basic dual-nozzle extruder
 | ||||
| //#define DUAL_NOZZLE_DUPLICATION_MODE
 | ||||
| 
 | ||||
| // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
 | ||||
| #define INVERT_X_STEP_PIN false | ||||
| #define INVERT_Y_STEP_PIN false | ||||
| #define INVERT_Z_STEP_PIN false | ||||
|  | ||||
| @ -329,7 +329,10 @@ | ||||
| 
 | ||||
| #define AXIS_RELATIVE_MODES {false, false, false, false} | ||||
| 
 | ||||
| //By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
 | ||||
| // Allow duplication mode with a basic dual-nozzle extruder
 | ||||
| //#define DUAL_NOZZLE_DUPLICATION_MODE
 | ||||
| 
 | ||||
| // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
 | ||||
| #define INVERT_X_STEP_PIN false | ||||
| #define INVERT_Y_STEP_PIN false | ||||
| #define INVERT_Z_STEP_PIN false | ||||
|  | ||||
| @ -329,7 +329,10 @@ | ||||
| 
 | ||||
| #define AXIS_RELATIVE_MODES {false, false, false, false} | ||||
| 
 | ||||
| //By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
 | ||||
| // Allow duplication mode with a basic dual-nozzle extruder
 | ||||
| //#define DUAL_NOZZLE_DUPLICATION_MODE
 | ||||
| 
 | ||||
| // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
 | ||||
| #define INVERT_X_STEP_PIN false | ||||
| #define INVERT_Y_STEP_PIN false | ||||
| #define INVERT_Z_STEP_PIN false | ||||
|  | ||||
| @ -159,6 +159,7 @@ | ||||
| #define MSG_ENDSTOP_HIT                     "TRIGGERED" | ||||
| #define MSG_ENDSTOP_OPEN                    "open" | ||||
| #define MSG_HOTEND_OFFSET                   "Hotend offsets:" | ||||
| #define MSG_DUPLICATION_MODE                "Duplication mode: " | ||||
| 
 | ||||
| #define MSG_SD_CANT_OPEN_SUBDIR             "Cannot open subdir " | ||||
| #define MSG_SD_INIT_FAIL                    "SD init fail" | ||||
|  | ||||
| @ -72,7 +72,7 @@ | ||||
|   #define X2_ENABLE_INIT SET_OUTPUT(X2_ENABLE_PIN) | ||||
|   #define X2_ENABLE_WRITE(STATE) WRITE(X2_ENABLE_PIN,STATE) | ||||
|   #define X2_ENABLE_READ READ(X_ENABLE_PIN) | ||||
| #endif // DUAL_X_CARRIAGE
 | ||||
| #endif | ||||
| 
 | ||||
| // Y motor
 | ||||
| #define Y_STEP_INIT SET_OUTPUT(Y_STEP_PIN) | ||||
| @ -195,14 +195,14 @@ | ||||
|   #define NORM_E_DIR() { switch (current_block->active_extruder) { case 0: E0_DIR_WRITE(!INVERT_E0_DIR); break; case 1: E1_DIR_WRITE(!INVERT_E1_DIR); break; case 2: E2_DIR_WRITE(!INVERT_E2_DIR); } } | ||||
|   #define REV_E_DIR() { switch (current_block->active_extruder) { case 0: E0_DIR_WRITE(INVERT_E0_DIR); break; case 1: E1_DIR_WRITE(INVERT_E1_DIR); break; case 2: E2_DIR_WRITE(INVERT_E2_DIR); } } | ||||
| #elif EXTRUDERS > 1 | ||||
|   #if DISABLED(DUAL_X_CARRIAGE) | ||||
|     #define E_STEP_WRITE(v) { if (current_block->active_extruder == 0) { E0_STEP_WRITE(v); } else { E1_STEP_WRITE(v); } } | ||||
|     #define NORM_E_DIR() { if (current_block->active_extruder == 0) { E0_DIR_WRITE(!INVERT_E0_DIR); } else { E1_DIR_WRITE(!INVERT_E1_DIR); } } | ||||
|     #define REV_E_DIR() { if (current_block->active_extruder == 0) { E0_DIR_WRITE(INVERT_E0_DIR); } else { E1_DIR_WRITE(INVERT_E1_DIR); } } | ||||
|   #else | ||||
|   #if ENABLED(DUAL_X_CARRIAGE) || ENABLED(DUAL_NOZZLE_DUPLICATION_MODE) | ||||
|     #define E_STEP_WRITE(v) { if (extruder_duplication_enabled) { E0_STEP_WRITE(v); E1_STEP_WRITE(v); } else if (current_block->active_extruder == 0) { E0_STEP_WRITE(v); } else { E1_STEP_WRITE(v); } } | ||||
|     #define NORM_E_DIR() { if (extruder_duplication_enabled) { E0_DIR_WRITE(!INVERT_E0_DIR); E1_DIR_WRITE(!INVERT_E1_DIR); } else if (current_block->active_extruder == 0) { E0_DIR_WRITE(!INVERT_E0_DIR); } else { E1_DIR_WRITE(!INVERT_E1_DIR); } } | ||||
|     #define REV_E_DIR() { if (extruder_duplication_enabled) { E0_DIR_WRITE(INVERT_E0_DIR); E1_DIR_WRITE(INVERT_E1_DIR); } else if (current_block->active_extruder == 0) { E0_DIR_WRITE(INVERT_E0_DIR); } else { E1_DIR_WRITE(INVERT_E1_DIR); } } | ||||
|   #else | ||||
|     #define E_STEP_WRITE(v) { if (current_block->active_extruder == 0) { E0_STEP_WRITE(v); } else { E1_STEP_WRITE(v); } } | ||||
|     #define NORM_E_DIR() { if (current_block->active_extruder == 0) { E0_DIR_WRITE(!INVERT_E0_DIR); } else { E1_DIR_WRITE(!INVERT_E1_DIR); } } | ||||
|     #define REV_E_DIR() { if (current_block->active_extruder == 0) { E0_DIR_WRITE(INVERT_E0_DIR); } else { E1_DIR_WRITE(INVERT_E1_DIR); } } | ||||
|   #endif | ||||
| #elif ENABLED(MIXING_EXTRUDER) | ||||
|   #define E_STEP_WRITE(v) NOOP /* not used for mixing extruders! */ | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user