From d494666b349525c32abd40754660a58670c8e0f4 Mon Sep 17 00:00:00 2001 From: Bo Herrmannsen Date: Sun, 21 Mar 2021 17:44:41 +0100 Subject: [PATCH 01/11] Update Configuration_adv.h --- Marlin/Configuration_adv.h | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index fb1f79b230a1..6bf54fa28562 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -608,6 +608,25 @@ * in X2. Dual endstop offsets can be set at runtime with 'M666 X Y Z'. */ +/** +* Dual Extruder Stepper Driver +* +* EXPERIMENTAL code to drive a second extruder (E1) identically to the first (E0) +* For setups with push-pull extruder motors and similar. +* Thanks to Bo Herrmannsen & Marlin Discord +* +* Pasted in by Alex Gibson (Edumaker) 20210321 +*/ + +//#define E_DUAL_STEPPER_DRIVERS +#if ENABLED(E_DUAL_STEPPER_DRIVERS) + #define E_APPLY_DIR(v,Q) do{ E_DIR_WRITE(v); E2_DIR_WRITE((v) != INVERT_E2_VS_E_DIR); }while(0) + #if ENABLED(E_DUAL_ENDSTOPS) + #define E_APPLY_STEP(v,Q) DUAL_ENDSTOP_APPLY_STEP(E,v) + #else + #define E_APPLY_STEP(v,Q) do{ E_STEP_WRITE(v); E2_STEP_WRITE(v); }while(0) + #endif + //#define X_DUAL_STEPPER_DRIVERS #if ENABLED(X_DUAL_STEPPER_DRIVERS) //#define INVERT_X2_VS_X_DIR // Enable if X2 direction signal is opposite to X From 6b21885fbd674c08b5ff1ad92be2154b54435bdb Mon Sep 17 00:00:00 2001 From: Bo Herrmannsen Date: Sun, 21 Mar 2021 17:45:35 +0100 Subject: [PATCH 02/11] Update stepper.cpp --- Marlin/src/module/stepper.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index 466f4f333afe..d312ad9fb601 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -346,6 +346,25 @@ xyze_int8_t Stepper::count_direction{0}; A##4_STEP_WRITE(V); \ } +/** +* Dual Extruder Stepper Driver +* +* EXPERIMENTAL code to drive a second extruder (E1) identically to the first (E0) +* For setups with push-pull extruder motors and similar. +* Thanks to Bo Herrmannsen & Marlin Discord +* +* Pasted in by Alex Gibson (Edumaker) 20210321 +*/ + +#if ENABLED(E_DUAL_STEPPER_DRIVERS) + #define INVERT_E2_VS_E_DIR true // Set 'true' if E motors should rotate in opposite directions + //#define E_DUAL_ENDSTOPS + #if ENABLED(E_DUAL_ENDSTOPS) + #define E2_USE_ENDSTOP _XMAX_ + #define E2_ENDSTOP_ADJUSTMENT 0 + #endif +#endif + #if ENABLED(X_DUAL_STEPPER_DRIVERS) #define X_APPLY_DIR(v,Q) do{ X_DIR_WRITE(v); X2_DIR_WRITE((v) ^ ENABLED(INVERT_X2_VS_X_DIR)); }while(0) #if ENABLED(X_DUAL_ENDSTOPS) From bfbccde62ca249b9bf3e781678cfdb6d91d4d295 Mon Sep 17 00:00:00 2001 From: Bo Herrmannsen Date: Sun, 21 Mar 2021 20:03:41 +0100 Subject: [PATCH 03/11] Update pins_postprocess.h --- Marlin/src/pins/pins_postprocess.h | 40 ++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/Marlin/src/pins/pins_postprocess.h b/Marlin/src/pins/pins_postprocess.h index d37dd4352ab0..d263a081b887 100644 --- a/Marlin/src/pins/pins_postprocess.h +++ b/Marlin/src/pins/pins_postprocess.h @@ -516,6 +516,46 @@ // The X2 axis, if any, should be the next open extruder port #define X2_E_INDEX E_STEPPERS +/** +* Dual Extruder Stepper Driver +* +* EXPERIMENTAL code to drive a second extruder (E1) identically to the first (E0) +* For setups with push-pull extruder motors and similar. +* Thanks to Bo Herrmannsen & Marlin Discord +* +* Pasted in by Alex Gibson (Edumaker) 20210321 +*/ + +#if ENABLED(E_DUAL_STEPPER_DRIVERS) + #ifndef E2_STEP_PIN + #define E2_STEP_PIN _EPIN(E2_E_INDEX, STEP) + #define E2_DIR_PIN _EPIN(E2_E_INDEX, DIR) + #define E2_ENABLE_PIN _EPIN(E2_E_INDEX, ENABLE) + #if E2_E_INDEX >= MAX_EXTRUDERS || !PIN_EXISTS(E2_STEP) + #error "No E stepper plug left for E2!" + #endif + #endif + #ifndef E2_MS1_PIN + #define E2_MS1_PIN _EPIN(E2_E_INDEX, MS1) + #endif + #ifndef E2_MS2_PIN + #define E2_MS2_PIN _EPIN(E2_E_INDEX, MS2) + #endif + #ifndef E2_MS3_PIN + #define E2_MS3_PIN _EPIN(E2_E_INDEX, MS3) + #endif + #if AXIS_HAS_SPI(E2) && !defined(E2_CS_PIN) + #define E2_CS_PIN _EPIN(E2_E_INDEX, CS) + #endif + #if AXIS_HAS_UART(E2) + #ifndef E2_SERIAL_TX_PIN + #define E2_SERIAL_TX_PIN _EPIN(E2_E_INDEX, SERIAL_TX) + #endif + #ifndef E2_SERIAL_RX_PIN + #define E2_SERIAL_RX_PIN _EPIN(E2_E_INDEX, SERIAL_RX) + #endif + #endif + #if EITHER(DUAL_X_CARRIAGE, X_DUAL_STEPPER_DRIVERS) #ifndef X2_STEP_PIN #define X2_STEP_PIN _EPIN(X2_E_INDEX, STEP) From e71f5468ae6a5d48c3b6d342aa6d5f51e18b76b1 Mon Sep 17 00:00:00 2001 From: Bo Herrmannsen Date: Sun, 21 Mar 2021 20:29:07 +0100 Subject: [PATCH 04/11] Update pins_postprocess.h --- Marlin/src/pins/pins_postprocess.h | 1 + 1 file changed, 1 insertion(+) diff --git a/Marlin/src/pins/pins_postprocess.h b/Marlin/src/pins/pins_postprocess.h index d263a081b887..1f69e4ebbab5 100644 --- a/Marlin/src/pins/pins_postprocess.h +++ b/Marlin/src/pins/pins_postprocess.h @@ -555,6 +555,7 @@ #define E2_SERIAL_RX_PIN _EPIN(E2_E_INDEX, SERIAL_RX) #endif #endif +#endif #if EITHER(DUAL_X_CARRIAGE, X_DUAL_STEPPER_DRIVERS) #ifndef X2_STEP_PIN From fa6bfb5e94668533c566c2e18a5603103389970f Mon Sep 17 00:00:00 2001 From: Bo Herrmannsen Date: Sun, 21 Mar 2021 20:34:07 +0100 Subject: [PATCH 05/11] Update Configuration_adv.h --- Marlin/Configuration_adv.h | 1 + 1 file changed, 1 insertion(+) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 6bf54fa28562..95552ff927ca 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -626,6 +626,7 @@ #else #define E_APPLY_STEP(v,Q) do{ E_STEP_WRITE(v); E2_STEP_WRITE(v); }while(0) #endif +#endif //#define X_DUAL_STEPPER_DRIVERS #if ENABLED(X_DUAL_STEPPER_DRIVERS) From 11bf131168fba013eec0dd1f97af727d0cdaa911 Mon Sep 17 00:00:00 2001 From: Bo Herrmannsen Date: Tue, 23 Mar 2021 14:55:50 +0100 Subject: [PATCH 06/11] Update Configuration_adv.h --- Marlin/Configuration_adv.h | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 95552ff927ca..accc77a2055b 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -608,16 +608,6 @@ * in X2. Dual endstop offsets can be set at runtime with 'M666 X Y Z'. */ -/** -* Dual Extruder Stepper Driver -* -* EXPERIMENTAL code to drive a second extruder (E1) identically to the first (E0) -* For setups with push-pull extruder motors and similar. -* Thanks to Bo Herrmannsen & Marlin Discord -* -* Pasted in by Alex Gibson (Edumaker) 20210321 -*/ - //#define E_DUAL_STEPPER_DRIVERS #if ENABLED(E_DUAL_STEPPER_DRIVERS) #define E_APPLY_DIR(v,Q) do{ E_DIR_WRITE(v); E2_DIR_WRITE((v) != INVERT_E2_VS_E_DIR); }while(0) From 7c6f366d887b5845c1eb4e2aa7c3e1561b0f0701 Mon Sep 17 00:00:00 2001 From: Bo Herrmannsen Date: Tue, 23 Mar 2021 14:56:40 +0100 Subject: [PATCH 07/11] Update stepper.cpp --- Marlin/src/module/stepper.cpp | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index d312ad9fb601..b7a98100af23 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -346,16 +346,6 @@ xyze_int8_t Stepper::count_direction{0}; A##4_STEP_WRITE(V); \ } -/** -* Dual Extruder Stepper Driver -* -* EXPERIMENTAL code to drive a second extruder (E1) identically to the first (E0) -* For setups with push-pull extruder motors and similar. -* Thanks to Bo Herrmannsen & Marlin Discord -* -* Pasted in by Alex Gibson (Edumaker) 20210321 -*/ - #if ENABLED(E_DUAL_STEPPER_DRIVERS) #define INVERT_E2_VS_E_DIR true // Set 'true' if E motors should rotate in opposite directions //#define E_DUAL_ENDSTOPS From 182c8786c7b0a72ce1b800a5c71069ebc4e37f0f Mon Sep 17 00:00:00 2001 From: Bo Herrmannsen Date: Tue, 23 Mar 2021 14:57:33 +0100 Subject: [PATCH 08/11] Update pins_postprocess.h --- Marlin/src/pins/pins_postprocess.h | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/Marlin/src/pins/pins_postprocess.h b/Marlin/src/pins/pins_postprocess.h index 1f69e4ebbab5..bc0b9829936c 100644 --- a/Marlin/src/pins/pins_postprocess.h +++ b/Marlin/src/pins/pins_postprocess.h @@ -516,16 +516,6 @@ // The X2 axis, if any, should be the next open extruder port #define X2_E_INDEX E_STEPPERS -/** -* Dual Extruder Stepper Driver -* -* EXPERIMENTAL code to drive a second extruder (E1) identically to the first (E0) -* For setups with push-pull extruder motors and similar. -* Thanks to Bo Herrmannsen & Marlin Discord -* -* Pasted in by Alex Gibson (Edumaker) 20210321 -*/ - #if ENABLED(E_DUAL_STEPPER_DRIVERS) #ifndef E2_STEP_PIN #define E2_STEP_PIN _EPIN(E2_E_INDEX, STEP) From 4a9592fb9f34391778aa7738ab5dba1bd95b92f3 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 29 Mar 2021 02:43:06 -0500 Subject: [PATCH 09/11] Clean up, implement, add test --- Marlin/Configuration_adv.h | 16 ++++------ Marlin/src/inc/Conditionals_LCD.h | 4 +++ Marlin/src/inc/SanityCheck.h | 13 +++++++++ Marlin/src/module/stepper.cpp | 9 ------ Marlin/src/module/stepper/indirection.h | 12 ++++++++ Marlin/src/pins/pins_postprocess.h | 39 +++++-------------------- buildroot/tests/LPC1768 | 2 +- 7 files changed, 44 insertions(+), 51 deletions(-) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 403a6b5506ca..cd8152b79c59 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -622,16 +622,6 @@ * in X2. Dual endstop offsets can be set at runtime with 'M666 X Y Z'. */ -//#define E_DUAL_STEPPER_DRIVERS -#if ENABLED(E_DUAL_STEPPER_DRIVERS) - #define E_APPLY_DIR(v,Q) do{ E_DIR_WRITE(v); E2_DIR_WRITE((v) != INVERT_E2_VS_E_DIR); }while(0) - #if ENABLED(E_DUAL_ENDSTOPS) - #define E_APPLY_STEP(v,Q) DUAL_ENDSTOP_APPLY_STEP(E,v) - #else - #define E_APPLY_STEP(v,Q) do{ E_STEP_WRITE(v); E2_STEP_WRITE(v); }while(0) - #endif -#endif - //#define X_DUAL_STEPPER_DRIVERS #if ENABLED(X_DUAL_STEPPER_DRIVERS) //#define INVERT_X2_VS_X_DIR // Enable if X2 direction signal is opposite to X @@ -678,6 +668,12 @@ #endif #endif +// Drive the E axis with two synchronized steppers +//#define E_DUAL_STEPPER_DRIVERS +#if ENABLED(E_DUAL_STEPPER_DRIVERS) + //#define INVERT_E1_VS_E0_DIR // Enable if the E motors need opposite DIR states +#endif + /** * Dual X Carriage * diff --git a/Marlin/src/inc/Conditionals_LCD.h b/Marlin/src/inc/Conditionals_LCD.h index af902481f3d2..0cb3c5e51928 100644 --- a/Marlin/src/inc/Conditionals_LCD.h +++ b/Marlin/src/inc/Conditionals_LCD.h @@ -550,6 +550,10 @@ #define HAS_MULTI_EXTRUDER 1 #endif +#if ENABLED(E_DUAL_STEPPER_DRIVERS) + #define E_STEPPERS 2 +#endif + #if ENABLED(SWITCHING_EXTRUDER) // One stepper for every two EXTRUDERS #if EXTRUDERS > 4 #define E_STEPPERS 3 diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 6ed0f53245f0..b92f7d96d020 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -1080,6 +1080,19 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS #endif #endif +/** + * Dual E Steppers requirements + */ +#if ENABLED(E_DUAL_STEPPER_DRIVERS) + #if EXTRUDERS > 1 + #error "E_DUAL_STEPPER_DRIVERS can only be used with EXTRUDERS set to 1." + #elif ENABLED(MIXING_EXTRUDER) + #error "E_DUAL_STEPPER_DRIVERS is incompatible with MIXING_EXTRUDER." + #elif ENABLED(SWITCHING_EXTRUDER) + #error "E_DUAL_STEPPER_DRIVERS is incompatible with SWITCHING_EXTRUDER." + #endif +#endif + /** * Linear Advance 1.5 - Check K value range */ diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index 13cb4f70210e..49eca7047cdc 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -346,15 +346,6 @@ xyze_int8_t Stepper::count_direction{0}; A##4_STEP_WRITE(V); \ } -#if ENABLED(E_DUAL_STEPPER_DRIVERS) - #define INVERT_E2_VS_E_DIR true // Set 'true' if E motors should rotate in opposite directions - //#define E_DUAL_ENDSTOPS - #if ENABLED(E_DUAL_ENDSTOPS) - #define E2_USE_ENDSTOP _XMAX_ - #define E2_ENDSTOP_ADJUSTMENT 0 - #endif -#endif - #if ENABLED(X_DUAL_STEPPER_DRIVERS) #define X_APPLY_DIR(v,Q) do{ X_DIR_WRITE(v); X2_DIR_WRITE((v) ^ ENABLED(INVERT_X2_VS_X_DIR)); }while(0) #if ENABLED(X_DUAL_ENDSTOPS) diff --git a/Marlin/src/module/stepper/indirection.h b/Marlin/src/module/stepper/indirection.h index e72d793ca6bc..0da70016174e 100644 --- a/Marlin/src/module/stepper/indirection.h +++ b/Marlin/src/module/stepper/indirection.h @@ -584,6 +584,11 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #endif +#elif ENABLED(E_DUAL_STEPPER_DRIVERS) + #define E_STEP_WRITE(E,V) do{ E0_STEP_WRITE(V); E1_STEP_WRITE(V); }while(0) + #define NORM_E_DIR(E) do{ E0_DIR_WRITE(!INVERT_E0_DIR); E1_DIR_WRITE(!INVERT_E0_DIR ^ ENABLED(INVERT_E1_VS_E0_DIR)); }while(0) + #define REV_E_DIR(E) do{ E0_DIR_WRITE( INVERT_E0_DIR); E1_DIR_WRITE( INVERT_E0_DIR ^ ENABLED(INVERT_E1_VS_E0_DIR)); }while(0) + #elif E_STEPPERS #define E_STEP_WRITE(E,V) E0_STEP_WRITE(V) #define NORM_E_DIR(E) E0_DIR_WRITE(!INVERT_E0_DIR) @@ -873,6 +878,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset // #if ENABLED(MIXING_EXTRUDER) + /** * Mixing steppers keep all their enable (and direction) states synchronized */ @@ -880,6 +886,12 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset #define _CALL_DIS_E(N) DISABLE_STEPPER_E##N () ; #define ENABLE_AXIS_E0() { RREPEAT(MIXING_STEPPERS, _CALL_ENA_E) } #define DISABLE_AXIS_E0() { RREPEAT(MIXING_STEPPERS, _CALL_DIS_E) } + +#elif ENABLED(E_DUAL_STEPPER_DRIVERS) + + #define ENABLE_AXIS_E0() do{ ENABLE_STEPPER_E0(); ENABLE_STEPPER_E1(); }while(0) + #define DISABLE_AXIS_E0() do{ DISABLE_STEPPER_E0(); DISABLE_STEPPER_E1(); }while(0) + #endif #ifndef ENABLE_AXIS_E0 diff --git a/Marlin/src/pins/pins_postprocess.h b/Marlin/src/pins/pins_postprocess.h index bc0b9829936c..c3cd2886e56e 100644 --- a/Marlin/src/pins/pins_postprocess.h +++ b/Marlin/src/pins/pins_postprocess.h @@ -513,40 +513,17 @@ #define _EPIN(p,q) __EPIN(p,q) #define DIAG_REMAPPED(p,q) (PIN_EXISTS(q) && _EPIN(p##_E_INDEX, DIAG) == q##_PIN) -// The X2 axis, if any, should be the next open extruder port -#define X2_E_INDEX E_STEPPERS - -#if ENABLED(E_DUAL_STEPPER_DRIVERS) - #ifndef E2_STEP_PIN - #define E2_STEP_PIN _EPIN(E2_E_INDEX, STEP) - #define E2_DIR_PIN _EPIN(E2_E_INDEX, DIR) - #define E2_ENABLE_PIN _EPIN(E2_E_INDEX, ENABLE) - #if E2_E_INDEX >= MAX_EXTRUDERS || !PIN_EXISTS(E2_STEP) - #error "No E stepper plug left for E2!" - #endif - #endif - #ifndef E2_MS1_PIN - #define E2_MS1_PIN _EPIN(E2_E_INDEX, MS1) - #endif - #ifndef E2_MS2_PIN - #define E2_MS2_PIN _EPIN(E2_E_INDEX, MS2) - #endif - #ifndef E2_MS3_PIN - #define E2_MS3_PIN _EPIN(E2_E_INDEX, MS3) - #endif - #if AXIS_HAS_SPI(E2) && !defined(E2_CS_PIN) - #define E2_CS_PIN _EPIN(E2_E_INDEX, CS) - #endif - #if AXIS_HAS_UART(E2) - #ifndef E2_SERIAL_TX_PIN - #define E2_SERIAL_TX_PIN _EPIN(E2_E_INDEX, SERIAL_TX) - #endif - #ifndef E2_SERIAL_RX_PIN - #define E2_SERIAL_RX_PIN _EPIN(E2_E_INDEX, SERIAL_RX) - #endif +// The E0/E1 steppers are always used for Dual E +#if ENABLED(E_DUAL_STEPPER_DRIVERS) + #ifndef E1_STEP_PIN + #error "No E1 stepper available for E_DUAL_STEPPER_DRIVERS!" #endif + #define X2_E_INDEX INCREMENT(E_STEPPERS) +#else + #define X2_E_INDEX E_STEPPERS #endif +// The X2 axis, if any, should be the next open extruder port #if EITHER(DUAL_X_CARRIAGE, X_DUAL_STEPPER_DRIVERS) #ifndef X2_STEP_PIN #define X2_STEP_PIN _EPIN(X2_E_INDEX, STEP) diff --git a/buildroot/tests/LPC1768 b/buildroot/tests/LPC1768 index eef0857dac8e..56c739b79a75 100755 --- a/buildroot/tests/LPC1768 +++ b/buildroot/tests/LPC1768 @@ -15,7 +15,7 @@ set -e restore_configs opt_set MOTHERBOARD BOARD_RAMPS_14_RE_ARM_EFB NEOPIXEL_PIN P1_16 -opt_enable VIKI2 SDSUPPORT SDCARD_READONLY SERIAL_PORT_2 NEOPIXEL_LED +opt_enable VIKI2 SDSUPPORT SDCARD_READONLY SERIAL_PORT_2 NEOPIXEL_LED E_DUAL_STEPPER_DRIVERS exec_test $1 $2 "ReARM EFB VIKI2, SDSUPPORT, 2 Serial ports (USB CDC + UART0), NeoPixel" "$3" #restore_configs From d50a3086a432b10c4292bed3f33eaf98db0e52e5 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sun, 13 Jun 2021 23:30:15 -0500 Subject: [PATCH 10/11] tweaks --- Marlin/src/inc/Conditionals_LCD.h | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/Marlin/src/inc/Conditionals_LCD.h b/Marlin/src/inc/Conditionals_LCD.h index 1aab104a3dbf..833fe0d2277e 100644 --- a/Marlin/src/inc/Conditionals_LCD.h +++ b/Marlin/src/inc/Conditionals_LCD.h @@ -558,11 +558,12 @@ #undef DISABLE_E #endif -#if ENABLED(E_DUAL_STEPPER_DRIVERS) - #define E_STEPPERS 2 -#endif +#if ENABLED(E_DUAL_STEPPER_DRIVERS) // E0/E1 steppers act in tandem as E0 + + #define E_STEPPERS 2 + +#elif ENABLED(SWITCHING_EXTRUDER) // One stepper for every two EXTRUDERS -#if ENABLED(SWITCHING_EXTRUDER) // One stepper for every two EXTRUDERS #if EXTRUDERS > 4 #define E_STEPPERS 3 #elif EXTRUDERS > 2 @@ -573,17 +574,24 @@ #if DISABLED(SWITCHING_NOZZLE) #define HOTENDS E_STEPPERS #endif -#elif ENABLED(MIXING_EXTRUDER) + +#elif ENABLED(MIXING_EXTRUDER) // Multiple feeds are mixed proportionally + #define E_STEPPERS MIXING_STEPPERS #define E_MANUAL 1 #if MIXING_STEPPERS == 2 #define HAS_DUAL_MIXING 1 #endif -#elif ENABLED(SWITCHING_TOOLHEAD) + +#elif ENABLED(SWITCHING_TOOLHEAD) // Toolchanger + #define E_STEPPERS EXTRUDERS #define E_MANUAL EXTRUDERS -#elif HAS_PRUSA_MMU2 + +#elif HAS_PRUSA_MMU2 // Průša Multi-Material Unit v2 + #define E_STEPPERS 1 + #endif // No inactive extruders with SWITCHING_NOZZLE or Průša MMU1 From bbc313baeb7cf57f34effd78d3a10d81bbbc0a0e Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 14 Jun 2021 02:21:21 -0500 Subject: [PATCH 11/11] Add a test --- buildroot/tests/DUE | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/buildroot/tests/DUE b/buildroot/tests/DUE index 9931776e0046..9eb2157428e4 100755 --- a/buildroot/tests/DUE +++ b/buildroot/tests/DUE @@ -24,7 +24,7 @@ opt_enable S_CURVE_ACCELERATION EEPROM_SETTINGS GCODE_MACROS \ SKEW_CORRECTION SKEW_CORRECTION_FOR_Z SKEW_CORRECTION_GCODE CALIBRATION_GCODE \ BACKLASH_COMPENSATION BACKLASH_GCODE BAUD_RATE_GCODE BEZIER_CURVE_SUPPORT \ FWRETRACT ARC_SUPPORT ARC_P_CIRCLES CNC_WORKSPACE_PLANES CNC_COORDINATE_SYSTEMS \ - PSU_CONTROL AUTO_POWER_CONTROL \ + PSU_CONTROL AUTO_POWER_CONTROL E_DUAL_STEPPER_DRIVERS \ PIDTEMPBED SLOW_PWM_HEATERS THERMAL_PROTECTION_CHAMBER \ PINS_DEBUGGING MAX7219_DEBUG M114_DETAIL \ EXTENSIBLE_UI @@ -38,10 +38,9 @@ restore_configs opt_set MOTHERBOARD BOARD_RADDS NUM_Z_STEPPER_DRIVERS 3 opt_enable USE_XMAX_PLUG USE_YMAX_PLUG ENDSTOPPULLUPS BLTOUCH AUTO_BED_LEVELING_BILINEAR \ Z_STEPPER_AUTO_ALIGN Z_STEPPER_ALIGN_KNOWN_STEPPER_POSITIONS Z_SAFE_HOMING - #TOUCH_UI_FTDI_EVE LCD_ALEPHOBJECTS_CLCD_UI OTHER_PIN_LAYOUT pins_set ramps/RAMPS X_MAX_PIN -1 pins_set ramps/RAMPS Y_MAX_PIN -1 -exec_test $1 $2 "RADDS with ABL (Bilinear), Triple Z Axis, Z_STEPPER_AUTO_ALIGN" "$3" +exec_test $1 $2 "RADDS with ABL (Bilinear), Triple Z Axis, Z_STEPPER_AUTO_ALIGN, E_DUAL_STEPPER_DRIVERS" "$3" # # Test SWITCHING_EXTRUDER