diff --git a/Marlin/Conditionals_LCD.h b/Marlin/Conditionals_LCD.h
index 28937590d5d4becc0628e407e8d55ad2870464f9..791a41d28c362eae5ea249aaa89b4581d330cfbe 100644
--- a/Marlin/Conditionals_LCD.h
+++ b/Marlin/Conditionals_LCD.h
@@ -307,6 +307,11 @@
#define HAS_DEBUG_MENU ENABLED(LCD_PROGRESS_BAR_TEST)
+ // MK2 Multiplexer forces SINGLENOZZLE to be enabled
+ #if ENABLED(MK2_MULTIPLEXER)
+ #define SINGLENOZZLE
+ #endif
+
/**
* Extruders have some combination of stepper motors and hotends
* so we separate these concepts into the defines:
@@ -314,6 +319,7 @@
* EXTRUDERS - Number of Selectable Tools
* HOTENDS - Number of hotends, whether connected or separate
* E_STEPPERS - Number of actual E stepper motors
+ * E_MANUAL - Number of E steppers for LCD move options
* TOOL_E_INDEX - Index to use when getting/setting the tool state
*
*/
diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h
index ece9499328b8779d65a177c75125d4c4c8c0fcb5..9295d6774be782cdb74b5f36e61731bd56d572e0 100644
--- a/Marlin/Configuration.h
+++ b/Marlin/Configuration.h
@@ -138,6 +138,25 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+/**
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
+ *
+ * This device allows one stepper driver on a control board to drive
+ * two to eight stepper motors, one at a time, in a manner suitable
+ * for extruders.
+ *
+ * This option only allows the multiplexer to switch on tool-change.
+ * Additional options to configure custom E moves are pending.
+ */
+//#define MK2_MULTIPLEXER
+#if ENABLED(MK2_MULTIPLEXER)
+ // Override the default DIO selector pins here, if needed.
+ // Some pins files may provide defaults for these pins.
+ //#define E_MUX0_PIN 40 // Always Required
+ //#define E_MUX1_PIN 42 // Needed for 3 to 8 steppers
+ //#define E_MUX2_PIN 44 // Needed for 5 to 8 steppers
+#endif
+
// A dual extruder that uses a single stepper motor
//#define SWITCHING_EXTRUDER
#if ENABLED(SWITCHING_EXTRUDER)
diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h
index 76ad8bec4161ff7f1fda2a1112f7119a4dde2248..4c772ec2d7da4f42b37b51819af373ba1cf6d83c 100644
--- a/Marlin/Configuration_adv.h
+++ b/Marlin/Configuration_adv.h
@@ -648,7 +648,7 @@
*
* Set to 0 to auto-detect the ratio based on given Gcode G1 print moves.
*
- * Slic3r (including Prusa Slic3r) produces Gcode compatible with the automatic mode.
+ * Slic3r (including Průša Slic3r) produces Gcode compatible with the automatic mode.
* Cura (as of this writing) may produce Gcode incompatible with the automatic mode.
*/
#define LIN_ADVANCE_E_D_RATIO 0 // The calculated ratio (or 0) according to the formula W * H / ((D / 2) ^ 2 * PI)
diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp
index 48cf72cc022ffa0b202fbf7087d5193ab76d17e0..030a9dc7bbe852cebfe7189055af8da5399e6d44 100644
--- a/Marlin/Marlin_main.cpp
+++ b/Marlin/Marlin_main.cpp
@@ -9436,6 +9436,39 @@ inline void gcode_M503() {
#endif // ADVANCED_PAUSE_FEATURE
+#if ENABLED(MK2_MULTIPLEXER)
+
+ inline void select_multiplexed_stepper(const uint8_t e) {
+ stepper.synchronize();
+ disable_e_steppers();
+ WRITE(E_MUX0_PIN, TEST(e, 0) ? HIGH : LOW);
+ WRITE(E_MUX1_PIN, TEST(e, 1) ? HIGH : LOW);
+ WRITE(E_MUX2_PIN, TEST(e, 2) ? HIGH : LOW);
+ safe_delay(100);
+ }
+
+ /**
+ * M702: Unload all extruders
+ */
+ inline void gcode_M702() {
+ for (uint8_t s = 0; s < E_STEPPERS; s++) {
+ select_multiplexed_stepper(e);
+ // TODO: standard unload filament function
+ // MK2 firmware behavior:
+ // - Make sure temperature is high enough
+ // - Raise Z to at least 15 to make room
+ // - Extrude 1cm of filament in 1 second
+ // - Under 230C quickly purge ~12mm, over 230C purge ~10mm
+ // - Change E max feedrate to 80, eject the filament from the tube. Sync.
+ // - Restore E max feedrate to 50
+ }
+ // Go back to the last active extruder
+ select_multiplexed_stepper(active_extruder);
+ disable_e_steppers();
+ }
+
+#endif // MK2_MULTIPLEXER
+
#if ENABLED(DUAL_X_CARRIAGE)
/**
@@ -10257,14 +10290,23 @@ void tool_change(const uint8_t tmp_extruder, const float fr_mm_s/*=0.0*/, bool n
UNUSED(fr_mm_s);
UNUSED(no_move);
- // Set the new active extruder
- active_extruder = tmp_extruder;
+ #if ENABLED(SWITCHING_EXTRUDER) && !DONT_SWITCH
+
+ stepper.synchronize();
+ move_extruder_servo(tmp_extruder);
+
+ #elif ENABLED(MK2_MULTIPLEXER)
+
+ if (tmp_extruder >= E_STEPPERS)
+ return invalid_extruder_error(tmp_extruder);
+
+ select_multiplexed_stepper(tmp_extruder);
+
+ #endif
#endif // HOTENDS <= 1
- #if ENABLED(SWITCHING_EXTRUDER) && !DONT_SWITCH
- move_extruder_servo(active_extruder);
- #endif
+ active_extruder = tmp_extruder;
SERIAL_ECHO_START();
SERIAL_ECHOLNPAIR(MSG_ACTIVE_EXTRUDER, (int)active_extruder);
@@ -11001,6 +11043,12 @@ void process_next_command() {
break;
#endif // DUAL_X_CARRIAGE
+ #if ENABLED(MK2_MULTIPLEXER)
+ case 702: // M702: Unload all extruders
+ gcode_M702();
+ break;
+ #endif
+
#if ENABLED(LIN_ADVANCE)
case 900: // M900: Set advance K factor.
gcode_M900();
@@ -12968,6 +13016,12 @@ void setup() {
#endif
#endif
+ #if ENABLED(MK2_MULTIPLEXER)
+ SET_OUTPUT(E_MUX0_PIN);
+ SET_OUTPUT(E_MUX1_PIN);
+ SET_OUTPUT(E_MUX2_PIN);
+ #endif
+
lcd_init();
#if ENABLED(SHOW_BOOTSCREEN)
#if ENABLED(DOGLCD)
diff --git a/Marlin/SanityCheck.h b/Marlin/SanityCheck.h
index f12d37b4401b3f8ef26fc1346a7a90213b9c3a50..d2bcda6580c1146835fbab8055db2bd09ed7498f 100644
--- a/Marlin/SanityCheck.h
+++ b/Marlin/SanityCheck.h
@@ -352,10 +352,21 @@
#error "EXTRUDERS must be 1 with HEATERS_PARALLEL."
#endif
+#elif ENABLED(MK2_MULTIPLEXER)
+ #error "MK2_MULTIPLEXER requires 2 or more EXTRUDERS."
#elif ENABLED(SINGLENOZZLE)
#error "SINGLENOZZLE requires 2 or more EXTRUDERS."
#endif
+/**
+ * Sanity checking for the Průša MK2 Multiplexer
+ */
+#ifdef SNMM
+ #error "SNMM is now MK2_MULTIPLEXER. Please update your configuration."
+#elif ENABLED(MK2_MULTIPLEXER) && DISABLED(ADVANCED_PAUSE_FEATURE)
+ #error "ADVANCED_PAUSE_FEATURE is required with MK2_MULTIPLEXER."
+#endif
+
/**
* A Dual Nozzle carriage with switching servo
*/
diff --git a/Marlin/example_configurations/Anet/Configuration.h b/Marlin/example_configurations/Anet/Configuration.h
index ac16115306a3a65c60d239a25ec081f6e5ab39d3..042ab73395a0714e71a09e79b91257a7b494a127 100644
--- a/Marlin/example_configurations/Anet/Configuration.h
+++ b/Marlin/example_configurations/Anet/Configuration.h
@@ -138,6 +138,25 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+/**
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
+ *
+ * This device allows one stepper driver on a control board to drive
+ * two to eight stepper motors, one at a time, in a manner suitable
+ * for extruders.
+ *
+ * This option only allows the multiplexer to switch on tool-change.
+ * Additional options to configure custom E moves are pending.
+ */
+//#define MK2_MULTIPLEXER
+#if ENABLED(MK2_MULTIPLEXER)
+ // Override the default DIO selector pins here, if needed.
+ // Some pins files may provide defaults for these pins.
+ //#define E_MUX0_PIN 40 // Always Required
+ //#define E_MUX1_PIN 42 // Needed for 3 to 8 steppers
+ //#define E_MUX2_PIN 44 // Needed for 5 to 8 steppers
+#endif
+
// A dual extruder that uses a single stepper motor
//#define SWITCHING_EXTRUDER
#if ENABLED(SWITCHING_EXTRUDER)
diff --git a/Marlin/example_configurations/CL-260/Configuration.h b/Marlin/example_configurations/CL-260/Configuration.h
index 90da7b05f8ae99941bb4d5e45ba86f9607cd715f..545220f80eba72e29e9019dda72b1be797601304 100644
--- a/Marlin/example_configurations/CL-260/Configuration.h
+++ b/Marlin/example_configurations/CL-260/Configuration.h
@@ -138,6 +138,25 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+/**
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
+ *
+ * This device allows one stepper driver on a control board to drive
+ * two to eight stepper motors, one at a time, in a manner suitable
+ * for extruders.
+ *
+ * This option only allows the multiplexer to switch on tool-change.
+ * Additional options to configure custom E moves are pending.
+ */
+//#define MK2_MULTIPLEXER
+#if ENABLED(MK2_MULTIPLEXER)
+ // Override the default DIO selector pins here, if needed.
+ // Some pins files may provide defaults for these pins.
+ //#define E_MUX0_PIN 40 // Always Required
+ //#define E_MUX1_PIN 42 // Needed for 3 to 8 steppers
+ //#define E_MUX2_PIN 44 // Needed for 5 to 8 steppers
+#endif
+
// A dual extruder that uses a single stepper motor
//#define SWITCHING_EXTRUDER
#if ENABLED(SWITCHING_EXTRUDER)
diff --git a/Marlin/example_configurations/Cartesio/Configuration.h b/Marlin/example_configurations/Cartesio/Configuration.h
index 0d84d53bfc82b05f67364d51e558980f138c2996..10d1f84ea603f0ac94db575f1b8898f71f7f92f4 100644
--- a/Marlin/example_configurations/Cartesio/Configuration.h
+++ b/Marlin/example_configurations/Cartesio/Configuration.h
@@ -139,6 +139,25 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+/**
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
+ *
+ * This device allows one stepper driver on a control board to drive
+ * two to eight stepper motors, one at a time, in a manner suitable
+ * for extruders.
+ *
+ * This option only allows the multiplexer to switch on tool-change.
+ * Additional options to configure custom E moves are pending.
+ */
+//#define MK2_MULTIPLEXER
+#if ENABLED(MK2_MULTIPLEXER)
+ // Override the default DIO selector pins here, if needed.
+ // Some pins files may provide defaults for these pins.
+ //#define E_MUX0_PIN 40 // Always Required
+ //#define E_MUX1_PIN 42 // Needed for 3 to 8 steppers
+ //#define E_MUX2_PIN 44 // Needed for 5 to 8 steppers
+#endif
+
// A dual extruder that uses a single stepper motor
//#define SWITCHING_EXTRUDER
#if ENABLED(SWITCHING_EXTRUDER)
diff --git a/Marlin/example_configurations/Cartesio/Configuration_adv.h b/Marlin/example_configurations/Cartesio/Configuration_adv.h
index c9a1a4fcaa4c4914feb40774c3f7e7026b159eca..1de847b7f654b63230a81c7f29afbed54540ad84 100644
--- a/Marlin/example_configurations/Cartesio/Configuration_adv.h
+++ b/Marlin/example_configurations/Cartesio/Configuration_adv.h
@@ -645,7 +645,7 @@
*
* Set to 0 to auto-detect the ratio based on given Gcode G1 print moves.
*
- * Slic3r (including Prusa Slic3r) produces Gcode compatible with the automatic mode.
+ * Slic3r (including Průša Slic3r) produces Gcode compatible with the automatic mode.
* Cura (as of this writing) may produce Gcode incompatible with the automatic mode.
*/
#define LIN_ADVANCE_E_D_RATIO 0 // The calculated ratio (or 0) according to the formula W * H / ((D / 2) ^ 2 * PI)
diff --git a/Marlin/example_configurations/Felix/Configuration.h b/Marlin/example_configurations/Felix/Configuration.h
index d3e288c0545cbc82f88f107230677cdf9469315d..7ca6e17f33b5157542c978caad12eb8a022cd0e0 100644
--- a/Marlin/example_configurations/Felix/Configuration.h
+++ b/Marlin/example_configurations/Felix/Configuration.h
@@ -138,6 +138,25 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+/**
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
+ *
+ * This device allows one stepper driver on a control board to drive
+ * two to eight stepper motors, one at a time, in a manner suitable
+ * for extruders.
+ *
+ * This option only allows the multiplexer to switch on tool-change.
+ * Additional options to configure custom E moves are pending.
+ */
+//#define MK2_MULTIPLEXER
+#if ENABLED(MK2_MULTIPLEXER)
+ // Override the default DIO selector pins here, if needed.
+ // Some pins files may provide defaults for these pins.
+ //#define E_MUX0_PIN 40 // Always Required
+ //#define E_MUX1_PIN 42 // Needed for 3 to 8 steppers
+ //#define E_MUX2_PIN 44 // Needed for 5 to 8 steppers
+#endif
+
// A dual extruder that uses a single stepper motor
//#define SWITCHING_EXTRUDER
#if ENABLED(SWITCHING_EXTRUDER)
diff --git a/Marlin/example_configurations/Felix/Configuration_adv.h b/Marlin/example_configurations/Felix/Configuration_adv.h
index c5ccf0e291aa9b8667fe2951d621cc5d1b19c909..8e5e5fab00bed2feb0a6c50df19a5438bf4cdb9d 100644
--- a/Marlin/example_configurations/Felix/Configuration_adv.h
+++ b/Marlin/example_configurations/Felix/Configuration_adv.h
@@ -645,7 +645,7 @@
*
* Set to 0 to auto-detect the ratio based on given Gcode G1 print moves.
*
- * Slic3r (including Prusa Slic3r) produces Gcode compatible with the automatic mode.
+ * Slic3r (including Průša Slic3r) produces Gcode compatible with the automatic mode.
* Cura (as of this writing) may produce Gcode incompatible with the automatic mode.
*/
#define LIN_ADVANCE_E_D_RATIO 0 // The calculated ratio (or 0) according to the formula W * H / ((D / 2) ^ 2 * PI)
diff --git a/Marlin/example_configurations/Felix/DUAL/Configuration.h b/Marlin/example_configurations/Felix/DUAL/Configuration.h
index ad8553a945859bf99c3a2ab17049f816418689fb..af9b9aa4962f094809190898bc1915ddad156e60 100644
--- a/Marlin/example_configurations/Felix/DUAL/Configuration.h
+++ b/Marlin/example_configurations/Felix/DUAL/Configuration.h
@@ -138,6 +138,25 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+/**
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
+ *
+ * This device allows one stepper driver on a control board to drive
+ * two to eight stepper motors, one at a time, in a manner suitable
+ * for extruders.
+ *
+ * This option only allows the multiplexer to switch on tool-change.
+ * Additional options to configure custom E moves are pending.
+ */
+//#define MK2_MULTIPLEXER
+#if ENABLED(MK2_MULTIPLEXER)
+ // Override the default DIO selector pins here, if needed.
+ // Some pins files may provide defaults for these pins.
+ //#define E_MUX0_PIN 40 // Always Required
+ //#define E_MUX1_PIN 42 // Needed for 3 to 8 steppers
+ //#define E_MUX2_PIN 44 // Needed for 5 to 8 steppers
+#endif
+
// A dual extruder that uses a single stepper motor
//#define SWITCHING_EXTRUDER
#if ENABLED(SWITCHING_EXTRUDER)
diff --git a/Marlin/example_configurations/FolgerTech-i3-2020/Configuration.h b/Marlin/example_configurations/FolgerTech-i3-2020/Configuration.h
index 13892b2771075cd0fbc3321c4534b9cae5f46a6d..a7db519e0168ccdc00245149479b6fd44e35f465 100644
--- a/Marlin/example_configurations/FolgerTech-i3-2020/Configuration.h
+++ b/Marlin/example_configurations/FolgerTech-i3-2020/Configuration.h
@@ -138,6 +138,25 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+/**
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
+ *
+ * This device allows one stepper driver on a control board to drive
+ * two to eight stepper motors, one at a time, in a manner suitable
+ * for extruders.
+ *
+ * This option only allows the multiplexer to switch on tool-change.
+ * Additional options to configure custom E moves are pending.
+ */
+//#define MK2_MULTIPLEXER
+#if ENABLED(MK2_MULTIPLEXER)
+ // Override the default DIO selector pins here, if needed.
+ // Some pins files may provide defaults for these pins.
+ //#define E_MUX0_PIN 40 // Always Required
+ //#define E_MUX1_PIN 42 // Needed for 3 to 8 steppers
+ //#define E_MUX2_PIN 44 // Needed for 5 to 8 steppers
+#endif
+
// A dual extruder that uses a single stepper motor
//#define SWITCHING_EXTRUDER
#if ENABLED(SWITCHING_EXTRUDER)
diff --git a/Marlin/example_configurations/FolgerTech-i3-2020/Configuration_adv.h b/Marlin/example_configurations/FolgerTech-i3-2020/Configuration_adv.h
index 9cd215dc9b67625d84cbde15330b9da468da6688..5031cfb2d746e26d0c6f4f58cc0585b37437994f 100644
--- a/Marlin/example_configurations/FolgerTech-i3-2020/Configuration_adv.h
+++ b/Marlin/example_configurations/FolgerTech-i3-2020/Configuration_adv.h
@@ -648,7 +648,7 @@
*
* Set to 0 to auto-detect the ratio based on given Gcode G1 print moves.
*
- * Slic3r (including Prusa Slic3r) produces Gcode compatible with the automatic mode.
+ * Slic3r (including Průša Slic3r) produces Gcode compatible with the automatic mode.
* Cura (as of this writing) may produce Gcode incompatible with the automatic mode.
*/
#define LIN_ADVANCE_E_D_RATIO 0 // The calculated ratio (or 0) according to the formula W * H / ((D / 2) ^ 2 * PI)
diff --git a/Marlin/example_configurations/Hephestos/Configuration.h b/Marlin/example_configurations/Hephestos/Configuration.h
index 153e6028db7d2bcdc6b15dd25b411567a8f6765a..cd2cf20c29ecd50034b6d73628bfa02e1bb679fe 100644
--- a/Marlin/example_configurations/Hephestos/Configuration.h
+++ b/Marlin/example_configurations/Hephestos/Configuration.h
@@ -141,6 +141,25 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+/**
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
+ *
+ * This device allows one stepper driver on a control board to drive
+ * two to eight stepper motors, one at a time, in a manner suitable
+ * for extruders.
+ *
+ * This option only allows the multiplexer to switch on tool-change.
+ * Additional options to configure custom E moves are pending.
+ */
+//#define MK2_MULTIPLEXER
+#if ENABLED(MK2_MULTIPLEXER)
+ // Override the default DIO selector pins here, if needed.
+ // Some pins files may provide defaults for these pins.
+ //#define E_MUX0_PIN 40 // Always Required
+ //#define E_MUX1_PIN 42 // Needed for 3 to 8 steppers
+ //#define E_MUX2_PIN 44 // Needed for 5 to 8 steppers
+#endif
+
// A dual extruder that uses a single stepper motor
//#define SWITCHING_EXTRUDER
#if ENABLED(SWITCHING_EXTRUDER)
diff --git a/Marlin/example_configurations/Hephestos/Configuration_adv.h b/Marlin/example_configurations/Hephestos/Configuration_adv.h
index 61d381eada0f0dddd2055aa40893ae4d25703557..bf39fff886971afbea4f21e8bc7119931b25e889 100644
--- a/Marlin/example_configurations/Hephestos/Configuration_adv.h
+++ b/Marlin/example_configurations/Hephestos/Configuration_adv.h
@@ -645,7 +645,7 @@
*
* Set to 0 to auto-detect the ratio based on given Gcode G1 print moves.
*
- * Slic3r (including Prusa Slic3r) produces Gcode compatible with the automatic mode.
+ * Slic3r (including Průša Slic3r) produces Gcode compatible with the automatic mode.
* Cura (as of this writing) may produce Gcode incompatible with the automatic mode.
*/
#define LIN_ADVANCE_E_D_RATIO 0 // The calculated ratio (or 0) according to the formula W * H / ((D / 2) ^ 2 * PI)
diff --git a/Marlin/example_configurations/Hephestos_2/Configuration.h b/Marlin/example_configurations/Hephestos_2/Configuration.h
index 2864c04b0c92cd18f79dcd66a6549419d32b00b5..de69aeb068f3fe2b634b5bb81e3602f250e0f552 100644
--- a/Marlin/example_configurations/Hephestos_2/Configuration.h
+++ b/Marlin/example_configurations/Hephestos_2/Configuration.h
@@ -138,6 +138,25 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+/**
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
+ *
+ * This device allows one stepper driver on a control board to drive
+ * two to eight stepper motors, one at a time, in a manner suitable
+ * for extruders.
+ *
+ * This option only allows the multiplexer to switch on tool-change.
+ * Additional options to configure custom E moves are pending.
+ */
+//#define MK2_MULTIPLEXER
+#if ENABLED(MK2_MULTIPLEXER)
+ // Override the default DIO selector pins here, if needed.
+ // Some pins files may provide defaults for these pins.
+ //#define E_MUX0_PIN 40 // Always Required
+ //#define E_MUX1_PIN 42 // Needed for 3 to 8 steppers
+ //#define E_MUX2_PIN 44 // Needed for 5 to 8 steppers
+#endif
+
// A dual extruder that uses a single stepper motor
//#define SWITCHING_EXTRUDER
#if ENABLED(SWITCHING_EXTRUDER)
diff --git a/Marlin/example_configurations/Hephestos_2/Configuration_adv.h b/Marlin/example_configurations/Hephestos_2/Configuration_adv.h
index 22948c672e1cea9c880115b2b1ef9e980aadb867..4be6605e34efa409e16f1d5cb58b4a3626d06580 100644
--- a/Marlin/example_configurations/Hephestos_2/Configuration_adv.h
+++ b/Marlin/example_configurations/Hephestos_2/Configuration_adv.h
@@ -628,7 +628,7 @@
*
* Set to 0 to auto-detect the ratio based on given Gcode G1 print moves.
*
- * Slic3r (including Prusa Slic3r) produces Gcode compatible with the automatic mode.
+ * Slic3r (including Průša Slic3r) produces Gcode compatible with the automatic mode.
* Cura (as of this writing) may produce Gcode incompatible with the automatic mode.
*/
#define LIN_ADVANCE_E_D_RATIO 0 // The calculated ratio (or 0) according to the formula W * H / ((D / 2) ^ 2 * PI)
diff --git a/Marlin/example_configurations/K8200/Configuration.h b/Marlin/example_configurations/K8200/Configuration.h
index 05a6c11a89d7bd3587e24269944473dfb8971ea4..c6b5521f90c0b705c64b362db6037fd2de41663d 100644
--- a/Marlin/example_configurations/K8200/Configuration.h
+++ b/Marlin/example_configurations/K8200/Configuration.h
@@ -158,6 +158,25 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+/**
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
+ *
+ * This device allows one stepper driver on a control board to drive
+ * two to eight stepper motors, one at a time, in a manner suitable
+ * for extruders.
+ *
+ * This option only allows the multiplexer to switch on tool-change.
+ * Additional options to configure custom E moves are pending.
+ */
+//#define MK2_MULTIPLEXER
+#if ENABLED(MK2_MULTIPLEXER)
+ // Override the default DIO selector pins here, if needed.
+ // Some pins files may provide defaults for these pins.
+ //#define E_MUX0_PIN 40 // Always Required
+ //#define E_MUX1_PIN 42 // Needed for 3 to 8 steppers
+ //#define E_MUX2_PIN 44 // Needed for 5 to 8 steppers
+#endif
+
// A dual extruder that uses a single stepper motor
//#define SWITCHING_EXTRUDER
#if ENABLED(SWITCHING_EXTRUDER)
diff --git a/Marlin/example_configurations/K8200/Configuration_adv.h b/Marlin/example_configurations/K8200/Configuration_adv.h
index a30c0a62d26a9c1033e5a97cccaf4ba7e770aeef..d931ab26ce332bfa955c59ca58c22be5ec89f1bf 100644
--- a/Marlin/example_configurations/K8200/Configuration_adv.h
+++ b/Marlin/example_configurations/K8200/Configuration_adv.h
@@ -658,7 +658,7 @@
*
* Set to 0 to auto-detect the ratio based on given Gcode G1 print moves.
*
- * Slic3r (including Prusa Slic3r) produces Gcode compatible with the automatic mode.
+ * Slic3r (including Průša Slic3r) produces Gcode compatible with the automatic mode.
* Cura (as of this writing) may produce Gcode incompatible with the automatic mode.
*/
#define LIN_ADVANCE_E_D_RATIO 0 // The calculated ratio (or 0) according to the formula W * H / ((D / 2) ^ 2 * PI)
diff --git a/Marlin/example_configurations/K8400/Configuration.h b/Marlin/example_configurations/K8400/Configuration.h
index ec265fcc95186ac6b3e5be4b73ceb9f0ba9684d4..53624af67f8703243dbaeaf6c8a0abaf559397af 100644
--- a/Marlin/example_configurations/K8400/Configuration.h
+++ b/Marlin/example_configurations/K8400/Configuration.h
@@ -138,6 +138,25 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+/**
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
+ *
+ * This device allows one stepper driver on a control board to drive
+ * two to eight stepper motors, one at a time, in a manner suitable
+ * for extruders.
+ *
+ * This option only allows the multiplexer to switch on tool-change.
+ * Additional options to configure custom E moves are pending.
+ */
+//#define MK2_MULTIPLEXER
+#if ENABLED(MK2_MULTIPLEXER)
+ // Override the default DIO selector pins here, if needed.
+ // Some pins files may provide defaults for these pins.
+ //#define E_MUX0_PIN 40 // Always Required
+ //#define E_MUX1_PIN 42 // Needed for 3 to 8 steppers
+ //#define E_MUX2_PIN 44 // Needed for 5 to 8 steppers
+#endif
+
// A dual extruder that uses a single stepper motor
//#define SWITCHING_EXTRUDER
#if ENABLED(SWITCHING_EXTRUDER)
diff --git a/Marlin/example_configurations/K8400/Configuration_adv.h b/Marlin/example_configurations/K8400/Configuration_adv.h
index 2c46112f83d58403b60a1967fbc2f6880ba4a96f..0f650aa95264ba65bd789a5960ac2b292e08a834 100644
--- a/Marlin/example_configurations/K8400/Configuration_adv.h
+++ b/Marlin/example_configurations/K8400/Configuration_adv.h
@@ -645,7 +645,7 @@
*
* Set to 0 to auto-detect the ratio based on given Gcode G1 print moves.
*
- * Slic3r (including Prusa Slic3r) produces Gcode compatible with the automatic mode.
+ * Slic3r (including Průša Slic3r) produces Gcode compatible with the automatic mode.
* Cura (as of this writing) may produce Gcode incompatible with the automatic mode.
*/
#define LIN_ADVANCE_E_D_RATIO 0 // The calculated ratio (or 0) according to the formula W * H / ((D / 2) ^ 2 * PI)
diff --git a/Marlin/example_configurations/K8400/Dual-head/Configuration.h b/Marlin/example_configurations/K8400/Dual-head/Configuration.h
index 9b60e17404e21eff8536bdd715808ecdaec5ab0d..975997a77f218b89ddff772691ed40d57899e895 100644
--- a/Marlin/example_configurations/K8400/Dual-head/Configuration.h
+++ b/Marlin/example_configurations/K8400/Dual-head/Configuration.h
@@ -138,6 +138,25 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+/**
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
+ *
+ * This device allows one stepper driver on a control board to drive
+ * two to eight stepper motors, one at a time, in a manner suitable
+ * for extruders.
+ *
+ * This option only allows the multiplexer to switch on tool-change.
+ * Additional options to configure custom E moves are pending.
+ */
+//#define MK2_MULTIPLEXER
+#if ENABLED(MK2_MULTIPLEXER)
+ // Override the default DIO selector pins here, if needed.
+ // Some pins files may provide defaults for these pins.
+ //#define E_MUX0_PIN 40 // Always Required
+ //#define E_MUX1_PIN 42 // Needed for 3 to 8 steppers
+ //#define E_MUX2_PIN 44 // Needed for 5 to 8 steppers
+#endif
+
// A dual extruder that uses a single stepper motor
//#define SWITCHING_EXTRUDER
#if ENABLED(SWITCHING_EXTRUDER)
diff --git a/Marlin/example_configurations/M150/Configuration.h b/Marlin/example_configurations/M150/Configuration.h
index d47a8526a7d7293d78f3b7d79ccbfd649c93bb41..d73fd6c40f1f801923b2dab41296e2b7aad72bec 100644
--- a/Marlin/example_configurations/M150/Configuration.h
+++ b/Marlin/example_configurations/M150/Configuration.h
@@ -143,6 +143,25 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+/**
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
+ *
+ * This device allows one stepper driver on a control board to drive
+ * two to eight stepper motors, one at a time, in a manner suitable
+ * for extruders.
+ *
+ * This option only allows the multiplexer to switch on tool-change.
+ * Additional options to configure custom E moves are pending.
+ */
+//#define MK2_MULTIPLEXER
+#if ENABLED(MK2_MULTIPLEXER)
+ // Override the default DIO selector pins here, if needed.
+ // Some pins files may provide defaults for these pins.
+ //#define E_MUX0_PIN 40 // Always Required
+ //#define E_MUX1_PIN 42 // Needed for 3 to 8 steppers
+ //#define E_MUX2_PIN 44 // Needed for 5 to 8 steppers
+#endif
+
// A dual extruder that uses a single stepper motor
//#define SWITCHING_EXTRUDER
#if ENABLED(SWITCHING_EXTRUDER)
diff --git a/Marlin/example_configurations/M150/Configuration_adv.h b/Marlin/example_configurations/M150/Configuration_adv.h
index e55f604d6ed4e15d0148c383f3f732e80c855265..49bcfcf586c75d17fc1bd43317b093a657d8eef5 100644
--- a/Marlin/example_configurations/M150/Configuration_adv.h
+++ b/Marlin/example_configurations/M150/Configuration_adv.h
@@ -648,7 +648,7 @@
*
* Set to 0 to auto-detect the ratio based on given Gcode G1 print moves.
*
- * Slic3r (including Prusa Slic3r) produces Gcode compatible with the automatic mode.
+ * Slic3r (including Průša Slic3r) produces Gcode compatible with the automatic mode.
* Cura (as of this writing) may produce Gcode incompatible with the automatic mode.
*/
#define LIN_ADVANCE_E_D_RATIO 0 // The calculated ratio (or 0) according to the formula W * H / ((D / 2) ^ 2 * PI)
diff --git a/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h b/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h
index b008062b3082fd554ee7282e1a2eaca659e54745..201a3d2e479ac4c56b1fe8fa4b34b43815cde782 100644
--- a/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h
+++ b/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h
@@ -138,6 +138,25 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+/**
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
+ *
+ * This device allows one stepper driver on a control board to drive
+ * two to eight stepper motors, one at a time, in a manner suitable
+ * for extruders.
+ *
+ * This option only allows the multiplexer to switch on tool-change.
+ * Additional options to configure custom E moves are pending.
+ */
+//#define MK2_MULTIPLEXER
+#if ENABLED(MK2_MULTIPLEXER)
+ // Override the default DIO selector pins here, if needed.
+ // Some pins files may provide defaults for these pins.
+ //#define E_MUX0_PIN 40 // Always Required
+ //#define E_MUX1_PIN 42 // Needed for 3 to 8 steppers
+ //#define E_MUX2_PIN 44 // Needed for 5 to 8 steppers
+#endif
+
// A dual extruder that uses a single stepper motor
//#define SWITCHING_EXTRUDER
#if ENABLED(SWITCHING_EXTRUDER)
diff --git a/Marlin/example_configurations/RigidBot/Configuration.h b/Marlin/example_configurations/RigidBot/Configuration.h
index b05d00937f0099bb897ef15714e8ef662709db0c..158d42fbd35430f8f01db87452ba78341213808e 100644
--- a/Marlin/example_configurations/RigidBot/Configuration.h
+++ b/Marlin/example_configurations/RigidBot/Configuration.h
@@ -141,6 +141,25 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+/**
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
+ *
+ * This device allows one stepper driver on a control board to drive
+ * two to eight stepper motors, one at a time, in a manner suitable
+ * for extruders.
+ *
+ * This option only allows the multiplexer to switch on tool-change.
+ * Additional options to configure custom E moves are pending.
+ */
+//#define MK2_MULTIPLEXER
+#if ENABLED(MK2_MULTIPLEXER)
+ // Override the default DIO selector pins here, if needed.
+ // Some pins files may provide defaults for these pins.
+ //#define E_MUX0_PIN 40 // Always Required
+ //#define E_MUX1_PIN 42 // Needed for 3 to 8 steppers
+ //#define E_MUX2_PIN 44 // Needed for 5 to 8 steppers
+#endif
+
// A dual extruder that uses a single stepper motor
//#define SWITCHING_EXTRUDER
#if ENABLED(SWITCHING_EXTRUDER)
diff --git a/Marlin/example_configurations/RigidBot/Configuration_adv.h b/Marlin/example_configurations/RigidBot/Configuration_adv.h
index 046ff52d6a54558f54111bc8445dc15d78bb7b3c..84921f22503353b867104d60a3f940f543f19c26 100644
--- a/Marlin/example_configurations/RigidBot/Configuration_adv.h
+++ b/Marlin/example_configurations/RigidBot/Configuration_adv.h
@@ -645,7 +645,7 @@
*
* Set to 0 to auto-detect the ratio based on given Gcode G1 print moves.
*
- * Slic3r (including Prusa Slic3r) produces Gcode compatible with the automatic mode.
+ * Slic3r (including Průša Slic3r) produces Gcode compatible with the automatic mode.
* Cura (as of this writing) may produce Gcode incompatible with the automatic mode.
*/
#define LIN_ADVANCE_E_D_RATIO 0 // The calculated ratio (or 0) according to the formula W * H / ((D / 2) ^ 2 * PI)
diff --git a/Marlin/example_configurations/SCARA/Configuration.h b/Marlin/example_configurations/SCARA/Configuration.h
index 06c2a32300d19e232e6f6d93dcd277775d67a1b3..3a32e80fcea203af08bd86b17b99f25560677f31 100644
--- a/Marlin/example_configurations/SCARA/Configuration.h
+++ b/Marlin/example_configurations/SCARA/Configuration.h
@@ -168,6 +168,25 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+/**
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
+ *
+ * This device allows one stepper driver on a control board to drive
+ * two to eight stepper motors, one at a time, in a manner suitable
+ * for extruders.
+ *
+ * This option only allows the multiplexer to switch on tool-change.
+ * Additional options to configure custom E moves are pending.
+ */
+//#define MK2_MULTIPLEXER
+#if ENABLED(MK2_MULTIPLEXER)
+ // Override the default DIO selector pins here, if needed.
+ // Some pins files may provide defaults for these pins.
+ //#define E_MUX0_PIN 40 // Always Required
+ //#define E_MUX1_PIN 42 // Needed for 3 to 8 steppers
+ //#define E_MUX2_PIN 44 // Needed for 5 to 8 steppers
+#endif
+
// A dual extruder that uses a single stepper motor
//#define SWITCHING_EXTRUDER
#if ENABLED(SWITCHING_EXTRUDER)
diff --git a/Marlin/example_configurations/SCARA/Configuration_adv.h b/Marlin/example_configurations/SCARA/Configuration_adv.h
index 601dead50710f4a5308795ed0f4218d0c98783f2..59304ae0c4bbe26d132bbcf32eb3cae12e457bd3 100644
--- a/Marlin/example_configurations/SCARA/Configuration_adv.h
+++ b/Marlin/example_configurations/SCARA/Configuration_adv.h
@@ -645,7 +645,7 @@
*
* Set to 0 to auto-detect the ratio based on given Gcode G1 print moves.
*
- * Slic3r (including Prusa Slic3r) produces Gcode compatible with the automatic mode.
+ * Slic3r (including Průša Slic3r) produces Gcode compatible with the automatic mode.
* Cura (as of this writing) may produce Gcode incompatible with the automatic mode.
*/
#define LIN_ADVANCE_E_D_RATIO 0 // The calculated ratio (or 0) according to the formula W * H / ((D / 2) ^ 2 * PI)
diff --git a/Marlin/example_configurations/TAZ4/Configuration.h b/Marlin/example_configurations/TAZ4/Configuration.h
index 86d9c1bd8791bc7d6f4dd66932dd4f9fcf79ca3d..1414d0ccaaf3eae79b79a57f12faa2b06fd9fdc8 100644
--- a/Marlin/example_configurations/TAZ4/Configuration.h
+++ b/Marlin/example_configurations/TAZ4/Configuration.h
@@ -138,6 +138,25 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+/**
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
+ *
+ * This device allows one stepper driver on a control board to drive
+ * two to eight stepper motors, one at a time, in a manner suitable
+ * for extruders.
+ *
+ * This option only allows the multiplexer to switch on tool-change.
+ * Additional options to configure custom E moves are pending.
+ */
+//#define MK2_MULTIPLEXER
+#if ENABLED(MK2_MULTIPLEXER)
+ // Override the default DIO selector pins here, if needed.
+ // Some pins files may provide defaults for these pins.
+ //#define E_MUX0_PIN 40 // Always Required
+ //#define E_MUX1_PIN 42 // Needed for 3 to 8 steppers
+ //#define E_MUX2_PIN 44 // Needed for 5 to 8 steppers
+#endif
+
// A dual extruder that uses a single stepper motor
//#define SWITCHING_EXTRUDER
#if ENABLED(SWITCHING_EXTRUDER)
diff --git a/Marlin/example_configurations/TAZ4/Configuration_adv.h b/Marlin/example_configurations/TAZ4/Configuration_adv.h
index 50f67b98e2c94eac26065b4fb817e22f5a94c6e7..f7184724f690c5cc792e62f3e51ba491b41bc42b 100644
--- a/Marlin/example_configurations/TAZ4/Configuration_adv.h
+++ b/Marlin/example_configurations/TAZ4/Configuration_adv.h
@@ -645,7 +645,7 @@
*
* Set to 0 to auto-detect the ratio based on given Gcode G1 print moves.
*
- * Slic3r (including Prusa Slic3r) produces Gcode compatible with the automatic mode.
+ * Slic3r (including Průša Slic3r) produces Gcode compatible with the automatic mode.
* Cura (as of this writing) may produce Gcode incompatible with the automatic mode.
*/
#define LIN_ADVANCE_E_D_RATIO 0 // The calculated ratio (or 0) according to the formula W * H / ((D / 2) ^ 2 * PI)
diff --git a/Marlin/example_configurations/TinyBoy2/Configuration.h b/Marlin/example_configurations/TinyBoy2/Configuration.h
index 4ecc19dc7ffcb0928f4462eb080dffbae0f22ef1..5ded991e54281352eaa7f21df25bed728b7e48f7 100644
--- a/Marlin/example_configurations/TinyBoy2/Configuration.h
+++ b/Marlin/example_configurations/TinyBoy2/Configuration.h
@@ -160,6 +160,25 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+/**
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
+ *
+ * This device allows one stepper driver on a control board to drive
+ * two to eight stepper motors, one at a time, in a manner suitable
+ * for extruders.
+ *
+ * This option only allows the multiplexer to switch on tool-change.
+ * Additional options to configure custom E moves are pending.
+ */
+//#define MK2_MULTIPLEXER
+#if ENABLED(MK2_MULTIPLEXER)
+ // Override the default DIO selector pins here, if needed.
+ // Some pins files may provide defaults for these pins.
+ //#define E_MUX0_PIN 40 // Always Required
+ //#define E_MUX1_PIN 42 // Needed for 3 to 8 steppers
+ //#define E_MUX2_PIN 44 // Needed for 5 to 8 steppers
+#endif
+
// A dual extruder that uses a single stepper motor
//#define SWITCHING_EXTRUDER
#if ENABLED(SWITCHING_EXTRUDER)
diff --git a/Marlin/example_configurations/TinyBoy2/Configuration_adv.h b/Marlin/example_configurations/TinyBoy2/Configuration_adv.h
index d60392bad2208d1bf5f149581765ce6e97e51d1f..494d58ca0741c7abb1a63b4f33feb811896bf203 100644
--- a/Marlin/example_configurations/TinyBoy2/Configuration_adv.h
+++ b/Marlin/example_configurations/TinyBoy2/Configuration_adv.h
@@ -648,7 +648,7 @@
*
* Set to 0 to auto-detect the ratio based on given Gcode G1 print moves.
*
- * Slic3r (including Prusa Slic3r) produces Gcode compatible with the automatic mode.
+ * Slic3r (including Průša Slic3r) produces Gcode compatible with the automatic mode.
* Cura (as of this writing) may produce Gcode incompatible with the automatic mode.
*/
#define LIN_ADVANCE_E_D_RATIO 0 // The calculated ratio (or 0) according to the formula W * H / ((D / 2) ^ 2 * PI)
diff --git a/Marlin/example_configurations/WITBOX/Configuration.h b/Marlin/example_configurations/WITBOX/Configuration.h
index cd4df35ecba3545e3b74fa815bfe7d2b25dec3c8..53b2506ebd62ccfa34356caa6c8752c843298f68 100644
--- a/Marlin/example_configurations/WITBOX/Configuration.h
+++ b/Marlin/example_configurations/WITBOX/Configuration.h
@@ -141,6 +141,25 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+/**
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
+ *
+ * This device allows one stepper driver on a control board to drive
+ * two to eight stepper motors, one at a time, in a manner suitable
+ * for extruders.
+ *
+ * This option only allows the multiplexer to switch on tool-change.
+ * Additional options to configure custom E moves are pending.
+ */
+//#define MK2_MULTIPLEXER
+#if ENABLED(MK2_MULTIPLEXER)
+ // Override the default DIO selector pins here, if needed.
+ // Some pins files may provide defaults for these pins.
+ //#define E_MUX0_PIN 40 // Always Required
+ //#define E_MUX1_PIN 42 // Needed for 3 to 8 steppers
+ //#define E_MUX2_PIN 44 // Needed for 5 to 8 steppers
+#endif
+
// A dual extruder that uses a single stepper motor
//#define SWITCHING_EXTRUDER
#if ENABLED(SWITCHING_EXTRUDER)
diff --git a/Marlin/example_configurations/WITBOX/Configuration_adv.h b/Marlin/example_configurations/WITBOX/Configuration_adv.h
index 61d381eada0f0dddd2055aa40893ae4d25703557..bf39fff886971afbea4f21e8bc7119931b25e889 100644
--- a/Marlin/example_configurations/WITBOX/Configuration_adv.h
+++ b/Marlin/example_configurations/WITBOX/Configuration_adv.h
@@ -645,7 +645,7 @@
*
* Set to 0 to auto-detect the ratio based on given Gcode G1 print moves.
*
- * Slic3r (including Prusa Slic3r) produces Gcode compatible with the automatic mode.
+ * Slic3r (including Průša Slic3r) produces Gcode compatible with the automatic mode.
* Cura (as of this writing) may produce Gcode incompatible with the automatic mode.
*/
#define LIN_ADVANCE_E_D_RATIO 0 // The calculated ratio (or 0) according to the formula W * H / ((D / 2) ^ 2 * PI)
diff --git a/Marlin/example_configurations/adafruit/ST7565/Configuration.h b/Marlin/example_configurations/adafruit/ST7565/Configuration.h
index dd458267d95b4393d9327664f8b1e48646cb4072..245675fbaf4a4eb8e2b728a7f8f08a3faf44015b 100644
--- a/Marlin/example_configurations/adafruit/ST7565/Configuration.h
+++ b/Marlin/example_configurations/adafruit/ST7565/Configuration.h
@@ -138,6 +138,25 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+/**
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
+ *
+ * This device allows one stepper driver on a control board to drive
+ * two to eight stepper motors, one at a time, in a manner suitable
+ * for extruders.
+ *
+ * This option only allows the multiplexer to switch on tool-change.
+ * Additional options to configure custom E moves are pending.
+ */
+//#define MK2_MULTIPLEXER
+#if ENABLED(MK2_MULTIPLEXER)
+ // Override the default DIO selector pins here, if needed.
+ // Some pins files may provide defaults for these pins.
+ //#define E_MUX0_PIN 40 // Always Required
+ //#define E_MUX1_PIN 42 // Needed for 3 to 8 steppers
+ //#define E_MUX2_PIN 44 // Needed for 5 to 8 steppers
+#endif
+
// A dual extruder that uses a single stepper motor
//#define SWITCHING_EXTRUDER
#if ENABLED(SWITCHING_EXTRUDER)
diff --git a/Marlin/example_configurations/delta/FLSUN/auto_calibrate/Configuration.h b/Marlin/example_configurations/delta/FLSUN/auto_calibrate/Configuration.h
index 66bd78c4c8e35b4ff026e3b6fb50ac7e2c903361..18bdac87285e139b3172e8bb16e532d23ed1f9e1 100644
--- a/Marlin/example_configurations/delta/FLSUN/auto_calibrate/Configuration.h
+++ b/Marlin/example_configurations/delta/FLSUN/auto_calibrate/Configuration.h
@@ -138,6 +138,25 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+/**
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
+ *
+ * This device allows one stepper driver on a control board to drive
+ * two to eight stepper motors, one at a time, in a manner suitable
+ * for extruders.
+ *
+ * This option only allows the multiplexer to switch on tool-change.
+ * Additional options to configure custom E moves are pending.
+ */
+//#define MK2_MULTIPLEXER
+#if ENABLED(MK2_MULTIPLEXER)
+ // Override the default DIO selector pins here, if needed.
+ // Some pins files may provide defaults for these pins.
+ //#define E_MUX0_PIN 40 // Always Required
+ //#define E_MUX1_PIN 42 // Needed for 3 to 8 steppers
+ //#define E_MUX2_PIN 44 // Needed for 5 to 8 steppers
+#endif
+
// A dual extruder that uses a single stepper motor
//#define SWITCHING_EXTRUDER
#if ENABLED(SWITCHING_EXTRUDER)
diff --git a/Marlin/example_configurations/delta/FLSUN/auto_calibrate/Configuration_adv.h b/Marlin/example_configurations/delta/FLSUN/auto_calibrate/Configuration_adv.h
index fd23ac779d84aded90822c0b287a3c926e68afca..51019d22872b149850af3bdfe0920b8205047390 100644
--- a/Marlin/example_configurations/delta/FLSUN/auto_calibrate/Configuration_adv.h
+++ b/Marlin/example_configurations/delta/FLSUN/auto_calibrate/Configuration_adv.h
@@ -650,7 +650,7 @@
*
* Set to 0 to auto-detect the ratio based on given Gcode G1 print moves.
*
- * Slic3r (including Prusa Slic3r) produces Gcode compatible with the automatic mode.
+ * Slic3r (including Průša Slic3r) produces Gcode compatible with the automatic mode.
* Cura (as of this writing) may produce Gcode incompatible with the automatic mode.
*/
#define LIN_ADVANCE_E_D_RATIO 0 // The calculated ratio (or 0) according to the formula W * H / ((D / 2) ^ 2 * PI)
diff --git a/Marlin/example_configurations/delta/FLSUN/kossel_mini/Configuration.h b/Marlin/example_configurations/delta/FLSUN/kossel_mini/Configuration.h
index f3d95861b7dce96f7e7b79ac33ac6bb2055ffb82..5dde5f487168ef2fdad2bcb1a84ffe9197ec3f3f 100644
--- a/Marlin/example_configurations/delta/FLSUN/kossel_mini/Configuration.h
+++ b/Marlin/example_configurations/delta/FLSUN/kossel_mini/Configuration.h
@@ -138,6 +138,25 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+/**
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
+ *
+ * This device allows one stepper driver on a control board to drive
+ * two to eight stepper motors, one at a time, in a manner suitable
+ * for extruders.
+ *
+ * This option only allows the multiplexer to switch on tool-change.
+ * Additional options to configure custom E moves are pending.
+ */
+//#define MK2_MULTIPLEXER
+#if ENABLED(MK2_MULTIPLEXER)
+ // Override the default DIO selector pins here, if needed.
+ // Some pins files may provide defaults for these pins.
+ //#define E_MUX0_PIN 40 // Always Required
+ //#define E_MUX1_PIN 42 // Needed for 3 to 8 steppers
+ //#define E_MUX2_PIN 44 // Needed for 5 to 8 steppers
+#endif
+
// A dual extruder that uses a single stepper motor
//#define SWITCHING_EXTRUDER
#if ENABLED(SWITCHING_EXTRUDER)
diff --git a/Marlin/example_configurations/delta/FLSUN/kossel_mini/Configuration_adv.h b/Marlin/example_configurations/delta/FLSUN/kossel_mini/Configuration_adv.h
index 6900bc812f7a7f938f204568c9c6f570864c28c0..d00185a6a6bb44f32b260c9e2f993951ce048eb5 100644
--- a/Marlin/example_configurations/delta/FLSUN/kossel_mini/Configuration_adv.h
+++ b/Marlin/example_configurations/delta/FLSUN/kossel_mini/Configuration_adv.h
@@ -650,7 +650,7 @@
*
* Set to 0 to auto-detect the ratio based on given Gcode G1 print moves.
*
- * Slic3r (including Prusa Slic3r) produces Gcode compatible with the automatic mode.
+ * Slic3r (including Průša Slic3r) produces Gcode compatible with the automatic mode.
* Cura (as of this writing) may produce Gcode incompatible with the automatic mode.
*/
#define LIN_ADVANCE_E_D_RATIO 0 // The calculated ratio (or 0) according to the formula W * H / ((D / 2) ^ 2 * PI)
diff --git a/Marlin/example_configurations/delta/generic/Configuration.h b/Marlin/example_configurations/delta/generic/Configuration.h
index 009e879192897e76791d2b256c35807495c066c0..f13de9116c9ae396ef91ea89eb0f9a5c03d59ef0 100644
--- a/Marlin/example_configurations/delta/generic/Configuration.h
+++ b/Marlin/example_configurations/delta/generic/Configuration.h
@@ -138,6 +138,25 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+/**
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
+ *
+ * This device allows one stepper driver on a control board to drive
+ * two to eight stepper motors, one at a time, in a manner suitable
+ * for extruders.
+ *
+ * This option only allows the multiplexer to switch on tool-change.
+ * Additional options to configure custom E moves are pending.
+ */
+//#define MK2_MULTIPLEXER
+#if ENABLED(MK2_MULTIPLEXER)
+ // Override the default DIO selector pins here, if needed.
+ // Some pins files may provide defaults for these pins.
+ //#define E_MUX0_PIN 40 // Always Required
+ //#define E_MUX1_PIN 42 // Needed for 3 to 8 steppers
+ //#define E_MUX2_PIN 44 // Needed for 5 to 8 steppers
+#endif
+
// A dual extruder that uses a single stepper motor
//#define SWITCHING_EXTRUDER
#if ENABLED(SWITCHING_EXTRUDER)
diff --git a/Marlin/example_configurations/delta/generic/Configuration_adv.h b/Marlin/example_configurations/delta/generic/Configuration_adv.h
index 497ae824638a8fa0ed5afa4a884cd3ba91f7a3d0..6fd092e0bb6fd9d99409edc277e7be11e45aed92 100644
--- a/Marlin/example_configurations/delta/generic/Configuration_adv.h
+++ b/Marlin/example_configurations/delta/generic/Configuration_adv.h
@@ -647,7 +647,7 @@
*
* Set to 0 to auto-detect the ratio based on given Gcode G1 print moves.
*
- * Slic3r (including Prusa Slic3r) produces Gcode compatible with the automatic mode.
+ * Slic3r (including Průša Slic3r) produces Gcode compatible with the automatic mode.
* Cura (as of this writing) may produce Gcode incompatible with the automatic mode.
*/
#define LIN_ADVANCE_E_D_RATIO 0 // The calculated ratio (or 0) according to the formula W * H / ((D / 2) ^ 2 * PI)
diff --git a/Marlin/example_configurations/delta/kossel_mini/Configuration.h b/Marlin/example_configurations/delta/kossel_mini/Configuration.h
index 840f03f9d686f2eff96478bba477847bf2070228..c4ed97e7c9622da504736a75de0420a0a1cd1eaa 100644
--- a/Marlin/example_configurations/delta/kossel_mini/Configuration.h
+++ b/Marlin/example_configurations/delta/kossel_mini/Configuration.h
@@ -138,6 +138,25 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+/**
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
+ *
+ * This device allows one stepper driver on a control board to drive
+ * two to eight stepper motors, one at a time, in a manner suitable
+ * for extruders.
+ *
+ * This option only allows the multiplexer to switch on tool-change.
+ * Additional options to configure custom E moves are pending.
+ */
+//#define MK2_MULTIPLEXER
+#if ENABLED(MK2_MULTIPLEXER)
+ // Override the default DIO selector pins here, if needed.
+ // Some pins files may provide defaults for these pins.
+ //#define E_MUX0_PIN 40 // Always Required
+ //#define E_MUX1_PIN 42 // Needed for 3 to 8 steppers
+ //#define E_MUX2_PIN 44 // Needed for 5 to 8 steppers
+#endif
+
// A dual extruder that uses a single stepper motor
//#define SWITCHING_EXTRUDER
#if ENABLED(SWITCHING_EXTRUDER)
diff --git a/Marlin/example_configurations/delta/kossel_mini/Configuration_adv.h b/Marlin/example_configurations/delta/kossel_mini/Configuration_adv.h
index 497ae824638a8fa0ed5afa4a884cd3ba91f7a3d0..6fd092e0bb6fd9d99409edc277e7be11e45aed92 100644
--- a/Marlin/example_configurations/delta/kossel_mini/Configuration_adv.h
+++ b/Marlin/example_configurations/delta/kossel_mini/Configuration_adv.h
@@ -647,7 +647,7 @@
*
* Set to 0 to auto-detect the ratio based on given Gcode G1 print moves.
*
- * Slic3r (including Prusa Slic3r) produces Gcode compatible with the automatic mode.
+ * Slic3r (including Průša Slic3r) produces Gcode compatible with the automatic mode.
* Cura (as of this writing) may produce Gcode incompatible with the automatic mode.
*/
#define LIN_ADVANCE_E_D_RATIO 0 // The calculated ratio (or 0) according to the formula W * H / ((D / 2) ^ 2 * PI)
diff --git a/Marlin/example_configurations/delta/kossel_pro/Configuration.h b/Marlin/example_configurations/delta/kossel_pro/Configuration.h
index 84ba273231b65f1ef5cc2df68d6bbac7786bd7e3..d53d1aa230885e7f7dc7a020f1c2b2985ce9c40f 100644
--- a/Marlin/example_configurations/delta/kossel_pro/Configuration.h
+++ b/Marlin/example_configurations/delta/kossel_pro/Configuration.h
@@ -142,6 +142,25 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+/**
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
+ *
+ * This device allows one stepper driver on a control board to drive
+ * two to eight stepper motors, one at a time, in a manner suitable
+ * for extruders.
+ *
+ * This option only allows the multiplexer to switch on tool-change.
+ * Additional options to configure custom E moves are pending.
+ */
+//#define MK2_MULTIPLEXER
+#if ENABLED(MK2_MULTIPLEXER)
+ // Override the default DIO selector pins here, if needed.
+ // Some pins files may provide defaults for these pins.
+ //#define E_MUX0_PIN 40 // Always Required
+ //#define E_MUX1_PIN 42 // Needed for 3 to 8 steppers
+ //#define E_MUX2_PIN 44 // Needed for 5 to 8 steppers
+#endif
+
// A dual extruder that uses a single stepper motor
//#define SWITCHING_EXTRUDER
#if ENABLED(SWITCHING_EXTRUDER)
diff --git a/Marlin/example_configurations/delta/kossel_pro/Configuration_adv.h b/Marlin/example_configurations/delta/kossel_pro/Configuration_adv.h
index 20ee8ed5a3c702ac18216915bacba0da51b092c4..f2a74f2910f08a73529088fa13ee8013c535c078 100644
--- a/Marlin/example_configurations/delta/kossel_pro/Configuration_adv.h
+++ b/Marlin/example_configurations/delta/kossel_pro/Configuration_adv.h
@@ -652,7 +652,7 @@
*
* Set to 0 to auto-detect the ratio based on given Gcode G1 print moves.
*
- * Slic3r (including Prusa Slic3r) produces Gcode compatible with the automatic mode.
+ * Slic3r (including Průša Slic3r) produces Gcode compatible with the automatic mode.
* Cura (as of this writing) may produce Gcode incompatible with the automatic mode.
*/
#define LIN_ADVANCE_E_D_RATIO 0 // The calculated ratio (or 0) according to the formula W * H / ((D / 2) ^ 2 * PI)
diff --git a/Marlin/example_configurations/delta/kossel_xl/Configuration.h b/Marlin/example_configurations/delta/kossel_xl/Configuration.h
index 76ffbbcd6c642dbe14614c0960f9e3b04b04632f..9fbd10b94e022a24b55284115d0eafa8c0d13582 100644
--- a/Marlin/example_configurations/delta/kossel_xl/Configuration.h
+++ b/Marlin/example_configurations/delta/kossel_xl/Configuration.h
@@ -138,6 +138,25 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+/**
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
+ *
+ * This device allows one stepper driver on a control board to drive
+ * two to eight stepper motors, one at a time, in a manner suitable
+ * for extruders.
+ *
+ * This option only allows the multiplexer to switch on tool-change.
+ * Additional options to configure custom E moves are pending.
+ */
+//#define MK2_MULTIPLEXER
+#if ENABLED(MK2_MULTIPLEXER)
+ // Override the default DIO selector pins here, if needed.
+ // Some pins files may provide defaults for these pins.
+ //#define E_MUX0_PIN 40 // Always Required
+ //#define E_MUX1_PIN 42 // Needed for 3 to 8 steppers
+ //#define E_MUX2_PIN 44 // Needed for 5 to 8 steppers
+#endif
+
// A dual extruder that uses a single stepper motor
//#define SWITCHING_EXTRUDER
#if ENABLED(SWITCHING_EXTRUDER)
diff --git a/Marlin/example_configurations/delta/kossel_xl/Configuration_adv.h b/Marlin/example_configurations/delta/kossel_xl/Configuration_adv.h
index 5b7c5df69603c108fb40108a6e19b7380a23de13..00a02b39b2a0379af02f7fc138bb65ae377251e6 100644
--- a/Marlin/example_configurations/delta/kossel_xl/Configuration_adv.h
+++ b/Marlin/example_configurations/delta/kossel_xl/Configuration_adv.h
@@ -647,7 +647,7 @@
*
* Set to 0 to auto-detect the ratio based on given Gcode G1 print moves.
*
- * Slic3r (including Prusa Slic3r) produces Gcode compatible with the automatic mode.
+ * Slic3r (including Průša Slic3r) produces Gcode compatible with the automatic mode.
* Cura (as of this writing) may produce Gcode incompatible with the automatic mode.
*/
#define LIN_ADVANCE_E_D_RATIO 0 // The calculated ratio (or 0) according to the formula W * H / ((D / 2) ^ 2 * PI)
diff --git a/Marlin/example_configurations/gCreate_gMax1.5+/Configuration.h b/Marlin/example_configurations/gCreate_gMax1.5+/Configuration.h
index 97348c17921ffe46acbdb63e0353d49bf7ec802c..03b4f2440b2b5fa7280e2b3cc5264e40e966f485 100644
--- a/Marlin/example_configurations/gCreate_gMax1.5+/Configuration.h
+++ b/Marlin/example_configurations/gCreate_gMax1.5+/Configuration.h
@@ -143,6 +143,25 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+/**
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
+ *
+ * This device allows one stepper driver on a control board to drive
+ * two to eight stepper motors, one at a time, in a manner suitable
+ * for extruders.
+ *
+ * This option only allows the multiplexer to switch on tool-change.
+ * Additional options to configure custom E moves are pending.
+ */
+//#define MK2_MULTIPLEXER
+#if ENABLED(MK2_MULTIPLEXER)
+ // Override the default DIO selector pins here, if needed.
+ // Some pins files may provide defaults for these pins.
+ //#define E_MUX0_PIN 40 // Always Required
+ //#define E_MUX1_PIN 42 // Needed for 3 to 8 steppers
+ //#define E_MUX2_PIN 44 // Needed for 5 to 8 steppers
+#endif
+
// A dual extruder that uses a single stepper motor
//#define SWITCHING_EXTRUDER
#if ENABLED(SWITCHING_EXTRUDER)
diff --git a/Marlin/example_configurations/gCreate_gMax1.5+/Configuration_adv.h b/Marlin/example_configurations/gCreate_gMax1.5+/Configuration_adv.h
index 18f63570d555aee6a110b347ccbfa45bc33432e5..cf0cc38efb47d23b6f245605ffedab94d605e9ef 100644
--- a/Marlin/example_configurations/gCreate_gMax1.5+/Configuration_adv.h
+++ b/Marlin/example_configurations/gCreate_gMax1.5+/Configuration_adv.h
@@ -648,7 +648,7 @@
*
* Set to 0 to auto-detect the ratio based on given Gcode G1 print moves.
*
- * Slic3r (including Prusa Slic3r) produces Gcode compatible with the automatic mode.
+ * Slic3r (including Průša Slic3r) produces Gcode compatible with the automatic mode.
* Cura (as of this writing) may produce Gcode incompatible with the automatic mode.
*/
#define LIN_ADVANCE_E_D_RATIO 0 // The calculated ratio (or 0) according to the formula W * H / ((D / 2) ^ 2 * PI)
diff --git a/Marlin/example_configurations/makibox/Configuration.h b/Marlin/example_configurations/makibox/Configuration.h
index dfe778b3b4419433f4022594b11f2821ac7f41e4..6fe07aa24f24c2290ed217a0cb42e70b28c81cd2 100644
--- a/Marlin/example_configurations/makibox/Configuration.h
+++ b/Marlin/example_configurations/makibox/Configuration.h
@@ -138,6 +138,25 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+/**
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
+ *
+ * This device allows one stepper driver on a control board to drive
+ * two to eight stepper motors, one at a time, in a manner suitable
+ * for extruders.
+ *
+ * This option only allows the multiplexer to switch on tool-change.
+ * Additional options to configure custom E moves are pending.
+ */
+//#define MK2_MULTIPLEXER
+#if ENABLED(MK2_MULTIPLEXER)
+ // Override the default DIO selector pins here, if needed.
+ // Some pins files may provide defaults for these pins.
+ //#define E_MUX0_PIN 40 // Always Required
+ //#define E_MUX1_PIN 42 // Needed for 3 to 8 steppers
+ //#define E_MUX2_PIN 44 // Needed for 5 to 8 steppers
+#endif
+
// A dual extruder that uses a single stepper motor
//#define SWITCHING_EXTRUDER
#if ENABLED(SWITCHING_EXTRUDER)
diff --git a/Marlin/example_configurations/makibox/Configuration_adv.h b/Marlin/example_configurations/makibox/Configuration_adv.h
index f1a18f02f1887e84a4453c0be31ccf2cbf7f7b60..8a7a61da4abe238fd2f76393452928440323059a 100644
--- a/Marlin/example_configurations/makibox/Configuration_adv.h
+++ b/Marlin/example_configurations/makibox/Configuration_adv.h
@@ -645,7 +645,7 @@
*
* Set to 0 to auto-detect the ratio based on given Gcode G1 print moves.
*
- * Slic3r (including Prusa Slic3r) produces Gcode compatible with the automatic mode.
+ * Slic3r (including Průša Slic3r) produces Gcode compatible with the automatic mode.
* Cura (as of this writing) may produce Gcode incompatible with the automatic mode.
*/
#define LIN_ADVANCE_E_D_RATIO 0 // The calculated ratio (or 0) according to the formula W * H / ((D / 2) ^ 2 * PI)
diff --git a/Marlin/example_configurations/tvrrug/Round2/Configuration.h b/Marlin/example_configurations/tvrrug/Round2/Configuration.h
index ab56d7eb03a428a93c6067d42a62ca99bbc925fe..015a0d327c6250b6f91f9267457a90f56a5e4a71 100644
--- a/Marlin/example_configurations/tvrrug/Round2/Configuration.h
+++ b/Marlin/example_configurations/tvrrug/Round2/Configuration.h
@@ -138,6 +138,25 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+/**
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
+ *
+ * This device allows one stepper driver on a control board to drive
+ * two to eight stepper motors, one at a time, in a manner suitable
+ * for extruders.
+ *
+ * This option only allows the multiplexer to switch on tool-change.
+ * Additional options to configure custom E moves are pending.
+ */
+//#define MK2_MULTIPLEXER
+#if ENABLED(MK2_MULTIPLEXER)
+ // Override the default DIO selector pins here, if needed.
+ // Some pins files may provide defaults for these pins.
+ //#define E_MUX0_PIN 40 // Always Required
+ //#define E_MUX1_PIN 42 // Needed for 3 to 8 steppers
+ //#define E_MUX2_PIN 44 // Needed for 5 to 8 steppers
+#endif
+
// A dual extruder that uses a single stepper motor
//#define SWITCHING_EXTRUDER
#if ENABLED(SWITCHING_EXTRUDER)
diff --git a/Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h b/Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h
index dd9573c3bf1e8a3c841446cf9e7d2d3b8bcaa4f7..5de0a43bb8bef74c41f62dfe363cf6f3b464eb4e 100644
--- a/Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h
+++ b/Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h
@@ -645,7 +645,7 @@
*
* Set to 0 to auto-detect the ratio based on given Gcode G1 print moves.
*
- * Slic3r (including Prusa Slic3r) produces Gcode compatible with the automatic mode.
+ * Slic3r (including Průša Slic3r) produces Gcode compatible with the automatic mode.
* Cura (as of this writing) may produce Gcode incompatible with the automatic mode.
*/
#define LIN_ADVANCE_E_D_RATIO 0 // The calculated ratio (or 0) according to the formula W * H / ((D / 2) ^ 2 * PI)
diff --git a/Marlin/example_configurations/wt150/Configuration.h b/Marlin/example_configurations/wt150/Configuration.h
index a023c3f16931554acce310bc7550524a899bb1eb..717b0b20557d92d10845b083d3bc7c1097ed9914 100644
--- a/Marlin/example_configurations/wt150/Configuration.h
+++ b/Marlin/example_configurations/wt150/Configuration.h
@@ -138,6 +138,25 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+/**
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
+ *
+ * This device allows one stepper driver on a control board to drive
+ * two to eight stepper motors, one at a time, in a manner suitable
+ * for extruders.
+ *
+ * This option only allows the multiplexer to switch on tool-change.
+ * Additional options to configure custom E moves are pending.
+ */
+//#define MK2_MULTIPLEXER
+#if ENABLED(MK2_MULTIPLEXER)
+ // Override the default DIO selector pins here, if needed.
+ // Some pins files may provide defaults for these pins.
+ //#define E_MUX0_PIN 40 // Always Required
+ //#define E_MUX1_PIN 42 // Needed for 3 to 8 steppers
+ //#define E_MUX2_PIN 44 // Needed for 5 to 8 steppers
+#endif
+
// A dual extruder that uses a single stepper motor
//#define SWITCHING_EXTRUDER
#if ENABLED(SWITCHING_EXTRUDER)
diff --git a/Marlin/example_configurations/wt150/Configuration_adv.h b/Marlin/example_configurations/wt150/Configuration_adv.h
index 4c3d4d02b8b0848938eda896ee14c07deabcae68..97f73b2e8297371db0eef447839cabfcc2971ee0 100644
--- a/Marlin/example_configurations/wt150/Configuration_adv.h
+++ b/Marlin/example_configurations/wt150/Configuration_adv.h
@@ -648,7 +648,7 @@
*
* Set to 0 to auto-detect the ratio based on given Gcode G1 print moves.
*
- * Slic3r (including Prusa Slic3r) produces Gcode compatible with the automatic mode.
+ * Slic3r (including Průša Slic3r) produces Gcode compatible with the automatic mode.
* Cura (as of this writing) may produce Gcode incompatible with the automatic mode.
*/
#define LIN_ADVANCE_E_D_RATIO 0 // The calculated ratio (or 0) according to the formula W * H / ((D / 2) ^ 2 * PI)
diff --git a/Marlin/gcode.cpp b/Marlin/gcode.cpp
index 02aaf68a3aee9fe6d6c0474eaf875282809db5a1..a2f5dcfb1053ad01d5f305ae75c443d547de8dcf 100644
--- a/Marlin/gcode.cpp
+++ b/Marlin/gcode.cpp
@@ -184,7 +184,7 @@ void GCodeParser::parse(char *p) {
if (PARAM_TEST) {
- while (*p == ' ') p++; // skip spaces vetween parameters & values
+ while (*p == ' ') p++; // Skip spaces between parameters & values
const bool has_num = DECIMAL_SIGNED(*p); // The parameter has a number [-+0-9.]
#if ENABLED(DEBUG_GCODE_PARSER)
@@ -222,8 +222,8 @@ void GCodeParser::parse(char *p) {
}
if (!WITHIN(*p, 'A', 'Z')) {
- while (*p && NUMERIC(*p)) p++; // Skip over the value section of a parameter
- while (*p == ' ') p++; // Skip over all spaces
+ while (*p && NUMERIC(*p)) p++; // Skip over the value section of a parameter
+ while (*p == ' ') p++; // Skip over all spaces
}
}
}
diff --git a/Marlin/pins_MINIRAMBO.h b/Marlin/pins_MINIRAMBO.h
index 6a95a3c4b1cf05688644da8cfd00832bb90e1e64..9ff32207f98ce80ebf78501bc62bf5ee564983db 100644
--- a/Marlin/pins_MINIRAMBO.h
+++ b/Marlin/pins_MINIRAMBO.h
@@ -115,6 +115,21 @@
#define LED_PIN 13
#define CASE_LIGHT_PIN 9
+//
+// M3/M4/M5 - Spindle/Laser Control
+//
+// use P1 connector for spindle pins
+#define SPINDLE_LASER_PWM_PIN 9 // MUST BE HARDWARE PWM
+#define SPINDLE_LASER_ENABLE_PIN 18 // Pin should have a pullup!
+#define SPINDLE_DIR_PIN 19
+
+//
+// Průša i3 MK2 Multiplexer Support
+//
+#define E_MUX0_PIN 17
+#define E_MUX1_PIN 16
+#define E_MUX2_PIN 78 // 84 in MK2 Firmware, with BEEPER as 78
+
//
// LCD / Controller
//
@@ -143,12 +158,3 @@
#endif // NEWPANEL
#endif // ULTRA_LCD
-
-//
-// M3/M4/M5 - Spindle/Laser Control
-//
-
-// use P1 connector for spindle pins
-#define SPINDLE_LASER_PWM_PIN 9 // MUST BE HARDWARE PWM
-#define SPINDLE_LASER_ENABLE_PIN 18 // Pin should have a pullup!
-#define SPINDLE_DIR_PIN 19
diff --git a/Marlin/pins_RAMBO.h b/Marlin/pins_RAMBO.h
index 268ebfefcb4fa71f0d9fa545396e76387f7e715b..6ddd305eaeec81fcaa00b384719c652f28701a05 100644
--- a/Marlin/pins_RAMBO.h
+++ b/Marlin/pins_RAMBO.h
@@ -142,6 +142,20 @@
#define FILWIDTH_PIN 3 // Analog Input
#endif
+//
+// M3/M4/M5 - Spindle/Laser Control
+//
+#define SPINDLE_LASER_PWM_PIN 45 // MUST BE HARDWARE PWM
+#define SPINDLE_LASER_ENABLE_PIN 31 // Pin should have a pullup!
+#define SPINDLE_DIR_PIN 32
+
+//
+// Průša i3 MK2 Multiplexer Support
+//
+#define E_MUX0_PIN 17
+#define E_MUX1_PIN 16
+#define E_MUX2_PIN 84 // 84 in MK2 Firmware
+
//
// LCD / Controller
//
@@ -212,10 +226,3 @@
#endif // !NEWPANEL
#endif // ULTRA_LCD
-
-//
-// M3/M4/M5 - Spindle/Laser Control
-//
-#define SPINDLE_LASER_PWM_PIN 45 // MUST BE HARDWARE PWM
-#define SPINDLE_LASER_ENABLE_PIN 31 // Pin should have a pullup!
-#define SPINDLE_DIR_PIN 32
diff --git a/Marlin/pins_RAMPS.h b/Marlin/pins_RAMPS.h
index 411e0f47cabe357ee611eb9929eb7ae87cdc8968..91d435afb279d66f40bd16561ceb3ff22073afec 100644
--- a/Marlin/pins_RAMPS.h
+++ b/Marlin/pins_RAMPS.h
@@ -214,6 +214,29 @@
#endif
#endif
+//
+// M3/M4/M5 - Spindle/Laser Control
+//
+#if ENABLED(SPINDLE_LASER_ENABLE) && !PIN_EXISTS(SPINDLE_LASER_ENABLE)
+ #if !defined(NUM_SERVOS) || NUM_SERVOS == 0 // try to use servo connector first
+ #define SPINDLE_LASER_ENABLE_PIN 4 // Pin should have a pullup/pulldown!
+ #define SPINDLE_LASER_PWM_PIN 6 // MUST BE HARDWARE PWM
+ #define SPINDLE_DIR_PIN 5
+ #elif !(ENABLED(ULTRA_LCD) && ENABLED(NEWPANEL) \
+ && (ENABLED(PANEL_ONE) || ENABLED(VIKI2) || ENABLED(miniVIKI) || ENABLED(MINIPANEL) || ENABLED(REPRAPWORLD_KEYPAD))) // try to use AUX 2
+ #define SPINDLE_LASER_ENABLE_PIN 40 // Pin should have a pullup/pulldown!
+ #define SPINDLE_LASER_PWM_PIN 44 // MUST BE HARDWARE PWM
+ #define SPINDLE_DIR_PIN 65
+ #endif
+#endif
+
+//
+// Průša i3 MK2 Multiplexer Support
+//
+#define E_MUX0_PIN 40 // Z_CS_PIN
+#define E_MUX1_PIN 42 // E0_CS_PIN
+#define E_MUX2_PIN 44 // E1_CS_PIN
+
//
// LCD / Controller
//
@@ -378,19 +401,3 @@
#endif // NEWPANEL
#endif // ULTRA_LCD
-
-//
-// M3/M4/M5 - Spindle/Laser Control
-//
-#if ENABLED(SPINDLE_LASER_ENABLE) && !PIN_EXISTS(SPINDLE_LASER_ENABLE)
- #if !defined(NUM_SERVOS) || NUM_SERVOS == 0 // try to use servo connector first
- #define SPINDLE_LASER_ENABLE_PIN 4 // Pin should have a pullup/pulldown!
- #define SPINDLE_LASER_PWM_PIN 6 // MUST BE HARDWARE PWM
- #define SPINDLE_DIR_PIN 5
- #elif !(ENABLED(ULTRA_LCD) && ENABLED(NEWPANEL) \
- && (ENABLED(PANEL_ONE) || ENABLED(VIKI2) || ENABLED(miniVIKI) || ENABLED(MINIPANEL) || ENABLED(REPRAPWORLD_KEYPAD))) // try to use AUX 2
- #define SPINDLE_LASER_ENABLE_PIN 40 // Pin should have a pullup/pulldown!
- #define SPINDLE_LASER_PWM_PIN 44 // MUST BE HARDWARE PWM
- #define SPINDLE_DIR_PIN 65
- #endif
-#endif
diff --git a/Marlin/planner.cpp b/Marlin/planner.cpp
index 8cac74f1467f25927fecd572f65ffa58ee37ccf4..1e84ae2085af75338ecd2aa408232048ec9729d6 100644
--- a/Marlin/planner.cpp
+++ b/Marlin/planner.cpp
@@ -1275,7 +1275,8 @@ void Planner::_buffer_line(const float &a, const float &b, const float &c, const
#endif
/**
- * Adapted from Prusa MKS firmware
+ * Adapted from Průša MKS firmware
+ * https://github.com/prusa3d/Prusa-Firmware
*
* Start with a safe speed (from which the machine may halt to stop immediately).
*/
diff --git a/Marlin/stepper.cpp b/Marlin/stepper.cpp
index c7ea4ba15c38534bee15e4c201ba081c99511929..717213c50b8f0664622eb40660b3b0480da61df7 100644
--- a/Marlin/stepper.cpp
+++ b/Marlin/stepper.cpp
@@ -860,8 +860,14 @@ void Stepper::isr() {
nextAdvanceISR = eISR_Rate;
- #define SET_E_STEP_DIR(INDEX) \
- if (e_steps[INDEX]) E## INDEX ##_DIR_WRITE(e_steps[INDEX] < 0 ? INVERT_E## INDEX ##_DIR : !INVERT_E## INDEX ##_DIR)
+ #if ENABLED(MK2_MULTIPLEXER)
+ // Even-numbered steppers are reversed
+ #define SET_E_STEP_DIR(INDEX) \
+ if (e_steps[INDEX]) E## INDEX ##_DIR_WRITE(e_steps[INDEX] < 0 ? !INVERT_E## INDEX ##_DIR ^ TEST(INDEX, 0) : INVERT_E## INDEX ##_DIR ^ TEST(INDEX, 0))
+ #else
+ #define SET_E_STEP_DIR(INDEX) \
+ if (e_steps[INDEX]) E## INDEX ##_DIR_WRITE(e_steps[INDEX] < 0 ? INVERT_E## INDEX ##_DIR : !INVERT_E## INDEX ##_DIR)
+ #endif
#define START_E_PULSE(INDEX) \
if (e_steps[INDEX]) E## INDEX ##_STEP_WRITE(!INVERT_E_STEP_PIN)
diff --git a/Marlin/stepper_indirection.h b/Marlin/stepper_indirection.h
index e9af6e43fd3237e42243a254b0772a8b09755821..8b86246412077443e41ed8039bf9efacba13ca6b 100644
--- a/Marlin/stepper_indirection.h
+++ b/Marlin/stepper_indirection.h
@@ -472,8 +472,14 @@
#endif
#else
#define E_STEP_WRITE(v) E0_STEP_WRITE(v)
- #define NORM_E_DIR() E0_DIR_WRITE(!INVERT_E0_DIR)
- #define REV_E_DIR() E0_DIR_WRITE(INVERT_E0_DIR)
+ #if ENABLED(MK2_MULTIPLEXER)
+ // Even-numbered steppers are reversed
+ #define NORM_E_DIR() E0_DIR_WRITE(TEST(current_block->active_extruder, 0) ? !INVERT_E0_DIR: INVERT_E0_DIR)
+ #define REV_E_DIR() E0_DIR_WRITE(TEST(current_block->active_extruder, 0) ? INVERT_E0_DIR: !INVERT_E0_DIR)
+ #else
+ #define NORM_E_DIR() E0_DIR_WRITE(!INVERT_E0_DIR)
+ #define REV_E_DIR() E0_DIR_WRITE(INVERT_E0_DIR)
+ #endif
#endif
#endif // STEPPER_INDIRECTION_H