Browse Source

Add support for Průša MK2 Multiplexer

Scott Lahteine 7 years ago
parent
commit
5b11b33854
38 changed files with 714 additions and 41 deletions
  1. 6
    0
      Marlin/Conditionals_LCD.h
  2. 19
    0
      Marlin/Configuration.h
  3. 59
    5
      Marlin/Marlin_main.cpp
  4. 11
    0
      Marlin/SanityCheck.h
  5. 19
    0
      Marlin/example_configurations/Anet/Configuration.h
  6. 19
    0
      Marlin/example_configurations/CL-260/Configuration.h
  7. 19
    0
      Marlin/example_configurations/Cartesio/Configuration.h
  8. 19
    0
      Marlin/example_configurations/Felix/Configuration.h
  9. 19
    0
      Marlin/example_configurations/Felix/DUAL/Configuration.h
  10. 19
    0
      Marlin/example_configurations/FolgerTech-i3-2020/Configuration.h
  11. 19
    0
      Marlin/example_configurations/Hephestos/Configuration.h
  12. 19
    0
      Marlin/example_configurations/Hephestos_2/Configuration.h
  13. 19
    0
      Marlin/example_configurations/K8200/Configuration.h
  14. 19
    0
      Marlin/example_configurations/K8400/Configuration.h
  15. 19
    0
      Marlin/example_configurations/K8400/Dual-head/Configuration.h
  16. 19
    0
      Marlin/example_configurations/M150/Configuration.h
  17. 19
    0
      Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h
  18. 19
    0
      Marlin/example_configurations/RigidBot/Configuration.h
  19. 19
    0
      Marlin/example_configurations/SCARA/Configuration.h
  20. 19
    0
      Marlin/example_configurations/TAZ4/Configuration.h
  21. 19
    0
      Marlin/example_configurations/TinyBoy2/Configuration.h
  22. 19
    0
      Marlin/example_configurations/WITBOX/Configuration.h
  23. 19
    0
      Marlin/example_configurations/adafruit/ST7565/Configuration.h
  24. 19
    0
      Marlin/example_configurations/delta/FLSUN/auto_calibrate/Configuration.h
  25. 19
    0
      Marlin/example_configurations/delta/FLSUN/kossel_mini/Configuration.h
  26. 19
    0
      Marlin/example_configurations/delta/generic/Configuration.h
  27. 19
    0
      Marlin/example_configurations/delta/kossel_mini/Configuration.h
  28. 19
    0
      Marlin/example_configurations/delta/kossel_pro/Configuration.h
  29. 19
    0
      Marlin/example_configurations/delta/kossel_xl/Configuration.h
  30. 19
    0
      Marlin/example_configurations/gCreate_gMax1.5+/Configuration.h
  31. 19
    0
      Marlin/example_configurations/makibox/Configuration.h
  32. 19
    0
      Marlin/example_configurations/tvrrug/Round2/Configuration.h
  33. 19
    0
      Marlin/example_configurations/wt150/Configuration.h
  34. 15
    9
      Marlin/pins_MINIRAMBO.h
  35. 14
    7
      Marlin/pins_RAMBO.h
  36. 23
    16
      Marlin/pins_RAMPS.h
  37. 8
    2
      Marlin/stepper.cpp
  38. 8
    2
      Marlin/stepper_indirection.h

+ 6
- 0
Marlin/Conditionals_LCD.h View File

@@ -307,6 +307,11 @@
307 307
 
308 308
   #define HAS_DEBUG_MENU ENABLED(LCD_PROGRESS_BAR_TEST)
309 309
 
310
+  // MK2 Multiplexer forces SINGLENOZZLE to be enabled
311
+  #if ENABLED(MK2_MULTIPLEXER)
312
+    #define SINGLENOZZLE
313
+  #endif
314
+
310 315
   /**
311 316
    * Extruders have some combination of stepper motors and hotends
312 317
    * so we separate these concepts into the defines:
@@ -314,6 +319,7 @@
314 319
    *  EXTRUDERS    - Number of Selectable Tools
315 320
    *  HOTENDS      - Number of hotends, whether connected or separate
316 321
    *  E_STEPPERS   - Number of actual E stepper motors
322
+   *  E_MANUAL     - Number of E steppers for LCD move options
317 323
    *  TOOL_E_INDEX - Index to use when getting/setting the tool state
318 324
    *
319 325
    */

+ 19
- 0
Marlin/Configuration.h View File

@@ -138,6 +138,25 @@
138 138
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
139 139
 //#define SINGLENOZZLE
140 140
 
141
+/**
142
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
143
+ *
144
+ * This device allows one stepper driver on a control board to drive
145
+ * two to eight stepper motors, one at a time, in a manner suitable
146
+ * for extruders.
147
+ *
148
+ * This option only allows the multiplexer to switch on tool-change.
149
+ * Additional options to configure custom E moves are pending.
150
+ */
151
+//#define MK2_MULTIPLEXER
152
+#if ENABLED(MK2_MULTIPLEXER)
153
+  // Override the default DIO selector pins here, if needed.
154
+  // Some pins files may provide defaults for these pins.
155
+  //#define E_MUX0_PIN 40  // Always Required
156
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
157
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
158
+#endif
159
+
141 160
 // A dual extruder that uses a single stepper motor
142 161
 //#define SWITCHING_EXTRUDER
143 162
 #if ENABLED(SWITCHING_EXTRUDER)

+ 59
- 5
Marlin/Marlin_main.cpp View File

@@ -9436,6 +9436,39 @@ inline void gcode_M503() {
9436 9436
 
9437 9437
 #endif // ADVANCED_PAUSE_FEATURE
9438 9438
 
9439
+#if ENABLED(MK2_MULTIPLEXER)
9440
+
9441
+  inline void select_multiplexed_stepper(const uint8_t e) {
9442
+    stepper.synchronize();
9443
+    disable_e_steppers();
9444
+    WRITE(E_MUX0_PIN, TEST(e, 0) ? HIGH : LOW);
9445
+    WRITE(E_MUX1_PIN, TEST(e, 1) ? HIGH : LOW);
9446
+    WRITE(E_MUX2_PIN, TEST(e, 2) ? HIGH : LOW);
9447
+    safe_delay(100);
9448
+  }
9449
+
9450
+  /**
9451
+   * M702: Unload all extruders
9452
+   */
9453
+  inline void gcode_M702() {
9454
+    for (uint8_t s = 0; s < E_STEPPERS; s++) {
9455
+      select_multiplexed_stepper(e);
9456
+      // TODO: standard unload filament function
9457
+      // MK2 firmware behavior:
9458
+      //  - Make sure temperature is high enough
9459
+      //  - Raise Z to at least 15 to make room
9460
+      //  - Extrude 1cm of filament in 1 second
9461
+      //  - Under 230C quickly purge ~12mm, over 230C purge ~10mm
9462
+      //  - Change E max feedrate to 80, eject the filament from the tube. Sync.
9463
+      //  - Restore E max feedrate to 50
9464
+    }
9465
+    // Go back to the last active extruder
9466
+    select_multiplexed_stepper(active_extruder);
9467
+    disable_e_steppers();
9468
+  }
9469
+
9470
+#endif // MK2_MULTIPLEXER
9471
+
9439 9472
 #if ENABLED(DUAL_X_CARRIAGE)
9440 9473
 
9441 9474
   /**
@@ -10257,14 +10290,23 @@ void tool_change(const uint8_t tmp_extruder, const float fr_mm_s/*=0.0*/, bool n
10257 10290
       UNUSED(fr_mm_s);
10258 10291
       UNUSED(no_move);
10259 10292
 
10260
-      // Set the new active extruder
10261
-      active_extruder = tmp_extruder;
10293
+      #if ENABLED(SWITCHING_EXTRUDER) && !DONT_SWITCH
10294
+
10295
+        stepper.synchronize();
10296
+        move_extruder_servo(tmp_extruder);
10297
+
10298
+      #elif ENABLED(MK2_MULTIPLEXER)
10299
+
10300
+        if (tmp_extruder >= E_STEPPERS)
10301
+          return invalid_extruder_error(tmp_extruder);
10302
+
10303
+        select_multiplexed_stepper(tmp_extruder);
10304
+
10305
+      #endif
10262 10306
 
10263 10307
     #endif // HOTENDS <= 1
10264 10308
 
10265
-    #if ENABLED(SWITCHING_EXTRUDER) && !DONT_SWITCH
10266
-      move_extruder_servo(active_extruder);
10267
-    #endif
10309
+    active_extruder = tmp_extruder;
10268 10310
 
10269 10311
     SERIAL_ECHO_START();
10270 10312
     SERIAL_ECHOLNPAIR(MSG_ACTIVE_EXTRUDER, (int)active_extruder);
@@ -11001,6 +11043,12 @@ void process_next_command() {
11001 11043
           break;
11002 11044
       #endif // DUAL_X_CARRIAGE
11003 11045
 
11046
+      #if ENABLED(MK2_MULTIPLEXER)
11047
+        case 702: // M702: Unload all extruders
11048
+          gcode_M702();
11049
+          break;
11050
+      #endif
11051
+
11004 11052
       #if ENABLED(LIN_ADVANCE)
11005 11053
         case 900: // M900: Set advance K factor.
11006 11054
           gcode_M900();
@@ -12968,6 +13016,12 @@ void setup() {
12968 13016
     #endif
12969 13017
   #endif
12970 13018
 
13019
+  #if ENABLED(MK2_MULTIPLEXER)
13020
+    SET_OUTPUT(E_MUX0_PIN);
13021
+    SET_OUTPUT(E_MUX1_PIN);
13022
+    SET_OUTPUT(E_MUX2_PIN);
13023
+  #endif
13024
+
12971 13025
   lcd_init();
12972 13026
   #if ENABLED(SHOW_BOOTSCREEN)
12973 13027
     #if ENABLED(DOGLCD)

+ 11
- 0
Marlin/SanityCheck.h View File

@@ -352,11 +352,22 @@
352 352
     #error "EXTRUDERS must be 1 with HEATERS_PARALLEL."
353 353
   #endif
354 354
 
355
+#elif ENABLED(MK2_MULTIPLEXER)
356
+  #error "MK2_MULTIPLEXER requires 2 or more EXTRUDERS."
355 357
 #elif ENABLED(SINGLENOZZLE)
356 358
   #error "SINGLENOZZLE requires 2 or more EXTRUDERS."
357 359
 #endif
358 360
 
359 361
 /**
362
+ * Sanity checking for the Průša MK2 Multiplexer
363
+ */
364
+#ifdef SNMM
365
+  #error "SNMM is now MK2_MULTIPLEXER. Please update your configuration."
366
+#elif ENABLED(MK2_MULTIPLEXER) && DISABLED(ADVANCED_PAUSE_FEATURE)
367
+  #error "ADVANCED_PAUSE_FEATURE is required with MK2_MULTIPLEXER."
368
+#endif
369
+
370
+/**
360 371
  * A Dual Nozzle carriage with switching servo
361 372
  */
362 373
 #if ENABLED(SWITCHING_NOZZLE)

+ 19
- 0
Marlin/example_configurations/Anet/Configuration.h View File

@@ -138,6 +138,25 @@
138 138
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
139 139
 //#define SINGLENOZZLE
140 140
 
141
+/**
142
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
143
+ *
144
+ * This device allows one stepper driver on a control board to drive
145
+ * two to eight stepper motors, one at a time, in a manner suitable
146
+ * for extruders.
147
+ *
148
+ * This option only allows the multiplexer to switch on tool-change.
149
+ * Additional options to configure custom E moves are pending.
150
+ */
151
+//#define MK2_MULTIPLEXER
152
+#if ENABLED(MK2_MULTIPLEXER)
153
+  // Override the default DIO selector pins here, if needed.
154
+  // Some pins files may provide defaults for these pins.
155
+  //#define E_MUX0_PIN 40  // Always Required
156
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
157
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
158
+#endif
159
+
141 160
 // A dual extruder that uses a single stepper motor
142 161
 //#define SWITCHING_EXTRUDER
143 162
 #if ENABLED(SWITCHING_EXTRUDER)

+ 19
- 0
Marlin/example_configurations/CL-260/Configuration.h View File

@@ -138,6 +138,25 @@
138 138
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
139 139
 //#define SINGLENOZZLE
140 140
 
141
+/**
142
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
143
+ *
144
+ * This device allows one stepper driver on a control board to drive
145
+ * two to eight stepper motors, one at a time, in a manner suitable
146
+ * for extruders.
147
+ *
148
+ * This option only allows the multiplexer to switch on tool-change.
149
+ * Additional options to configure custom E moves are pending.
150
+ */
151
+//#define MK2_MULTIPLEXER
152
+#if ENABLED(MK2_MULTIPLEXER)
153
+  // Override the default DIO selector pins here, if needed.
154
+  // Some pins files may provide defaults for these pins.
155
+  //#define E_MUX0_PIN 40  // Always Required
156
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
157
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
158
+#endif
159
+
141 160
 // A dual extruder that uses a single stepper motor
142 161
 //#define SWITCHING_EXTRUDER
143 162
 #if ENABLED(SWITCHING_EXTRUDER)

+ 19
- 0
Marlin/example_configurations/Cartesio/Configuration.h View File

@@ -139,6 +139,25 @@
139 139
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
140 140
 //#define SINGLENOZZLE
141 141
 
142
+/**
143
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
144
+ *
145
+ * This device allows one stepper driver on a control board to drive
146
+ * two to eight stepper motors, one at a time, in a manner suitable
147
+ * for extruders.
148
+ *
149
+ * This option only allows the multiplexer to switch on tool-change.
150
+ * Additional options to configure custom E moves are pending.
151
+ */
152
+//#define MK2_MULTIPLEXER
153
+#if ENABLED(MK2_MULTIPLEXER)
154
+  // Override the default DIO selector pins here, if needed.
155
+  // Some pins files may provide defaults for these pins.
156
+  //#define E_MUX0_PIN 40  // Always Required
157
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
158
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
159
+#endif
160
+
142 161
 // A dual extruder that uses a single stepper motor
143 162
 //#define SWITCHING_EXTRUDER
144 163
 #if ENABLED(SWITCHING_EXTRUDER)

+ 19
- 0
Marlin/example_configurations/Felix/Configuration.h View File

@@ -138,6 +138,25 @@
138 138
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
139 139
 //#define SINGLENOZZLE
140 140
 
141
+/**
142
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
143
+ *
144
+ * This device allows one stepper driver on a control board to drive
145
+ * two to eight stepper motors, one at a time, in a manner suitable
146
+ * for extruders.
147
+ *
148
+ * This option only allows the multiplexer to switch on tool-change.
149
+ * Additional options to configure custom E moves are pending.
150
+ */
151
+//#define MK2_MULTIPLEXER
152
+#if ENABLED(MK2_MULTIPLEXER)
153
+  // Override the default DIO selector pins here, if needed.
154
+  // Some pins files may provide defaults for these pins.
155
+  //#define E_MUX0_PIN 40  // Always Required
156
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
157
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
158
+#endif
159
+
141 160
 // A dual extruder that uses a single stepper motor
142 161
 //#define SWITCHING_EXTRUDER
143 162
 #if ENABLED(SWITCHING_EXTRUDER)

+ 19
- 0
Marlin/example_configurations/Felix/DUAL/Configuration.h View File

@@ -138,6 +138,25 @@
138 138
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
139 139
 //#define SINGLENOZZLE
140 140
 
141
+/**
142
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
143
+ *
144
+ * This device allows one stepper driver on a control board to drive
145
+ * two to eight stepper motors, one at a time, in a manner suitable
146
+ * for extruders.
147
+ *
148
+ * This option only allows the multiplexer to switch on tool-change.
149
+ * Additional options to configure custom E moves are pending.
150
+ */
151
+//#define MK2_MULTIPLEXER
152
+#if ENABLED(MK2_MULTIPLEXER)
153
+  // Override the default DIO selector pins here, if needed.
154
+  // Some pins files may provide defaults for these pins.
155
+  //#define E_MUX0_PIN 40  // Always Required
156
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
157
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
158
+#endif
159
+
141 160
 // A dual extruder that uses a single stepper motor
142 161
 //#define SWITCHING_EXTRUDER
143 162
 #if ENABLED(SWITCHING_EXTRUDER)

+ 19
- 0
Marlin/example_configurations/FolgerTech-i3-2020/Configuration.h View File

@@ -138,6 +138,25 @@
138 138
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
139 139
 //#define SINGLENOZZLE
140 140
 
141
+/**
142
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
143
+ *
144
+ * This device allows one stepper driver on a control board to drive
145
+ * two to eight stepper motors, one at a time, in a manner suitable
146
+ * for extruders.
147
+ *
148
+ * This option only allows the multiplexer to switch on tool-change.
149
+ * Additional options to configure custom E moves are pending.
150
+ */
151
+//#define MK2_MULTIPLEXER
152
+#if ENABLED(MK2_MULTIPLEXER)
153
+  // Override the default DIO selector pins here, if needed.
154
+  // Some pins files may provide defaults for these pins.
155
+  //#define E_MUX0_PIN 40  // Always Required
156
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
157
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
158
+#endif
159
+
141 160
 // A dual extruder that uses a single stepper motor
142 161
 //#define SWITCHING_EXTRUDER
143 162
 #if ENABLED(SWITCHING_EXTRUDER)

+ 19
- 0
Marlin/example_configurations/Hephestos/Configuration.h View File

@@ -141,6 +141,25 @@
141 141
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
142 142
 //#define SINGLENOZZLE
143 143
 
144
+/**
145
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
146
+ *
147
+ * This device allows one stepper driver on a control board to drive
148
+ * two to eight stepper motors, one at a time, in a manner suitable
149
+ * for extruders.
150
+ *
151
+ * This option only allows the multiplexer to switch on tool-change.
152
+ * Additional options to configure custom E moves are pending.
153
+ */
154
+//#define MK2_MULTIPLEXER
155
+#if ENABLED(MK2_MULTIPLEXER)
156
+  // Override the default DIO selector pins here, if needed.
157
+  // Some pins files may provide defaults for these pins.
158
+  //#define E_MUX0_PIN 40  // Always Required
159
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
160
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
161
+#endif
162
+
144 163
 // A dual extruder that uses a single stepper motor
145 164
 //#define SWITCHING_EXTRUDER
146 165
 #if ENABLED(SWITCHING_EXTRUDER)

+ 19
- 0
Marlin/example_configurations/Hephestos_2/Configuration.h View File

@@ -138,6 +138,25 @@
138 138
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
139 139
 //#define SINGLENOZZLE
140 140
 
141
+/**
142
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
143
+ *
144
+ * This device allows one stepper driver on a control board to drive
145
+ * two to eight stepper motors, one at a time, in a manner suitable
146
+ * for extruders.
147
+ *
148
+ * This option only allows the multiplexer to switch on tool-change.
149
+ * Additional options to configure custom E moves are pending.
150
+ */
151
+//#define MK2_MULTIPLEXER
152
+#if ENABLED(MK2_MULTIPLEXER)
153
+  // Override the default DIO selector pins here, if needed.
154
+  // Some pins files may provide defaults for these pins.
155
+  //#define E_MUX0_PIN 40  // Always Required
156
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
157
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
158
+#endif
159
+
141 160
 // A dual extruder that uses a single stepper motor
142 161
 //#define SWITCHING_EXTRUDER
143 162
 #if ENABLED(SWITCHING_EXTRUDER)

+ 19
- 0
Marlin/example_configurations/K8200/Configuration.h View File

@@ -158,6 +158,25 @@
158 158
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
159 159
 //#define SINGLENOZZLE
160 160
 
161
+/**
162
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
163
+ *
164
+ * This device allows one stepper driver on a control board to drive
165
+ * two to eight stepper motors, one at a time, in a manner suitable
166
+ * for extruders.
167
+ *
168
+ * This option only allows the multiplexer to switch on tool-change.
169
+ * Additional options to configure custom E moves are pending.
170
+ */
171
+//#define MK2_MULTIPLEXER
172
+#if ENABLED(MK2_MULTIPLEXER)
173
+  // Override the default DIO selector pins here, if needed.
174
+  // Some pins files may provide defaults for these pins.
175
+  //#define E_MUX0_PIN 40  // Always Required
176
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
177
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
178
+#endif
179
+
161 180
 // A dual extruder that uses a single stepper motor
162 181
 //#define SWITCHING_EXTRUDER
163 182
 #if ENABLED(SWITCHING_EXTRUDER)

+ 19
- 0
Marlin/example_configurations/K8400/Configuration.h View File

@@ -138,6 +138,25 @@
138 138
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
139 139
 //#define SINGLENOZZLE
140 140
 
141
+/**
142
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
143
+ *
144
+ * This device allows one stepper driver on a control board to drive
145
+ * two to eight stepper motors, one at a time, in a manner suitable
146
+ * for extruders.
147
+ *
148
+ * This option only allows the multiplexer to switch on tool-change.
149
+ * Additional options to configure custom E moves are pending.
150
+ */
151
+//#define MK2_MULTIPLEXER
152
+#if ENABLED(MK2_MULTIPLEXER)
153
+  // Override the default DIO selector pins here, if needed.
154
+  // Some pins files may provide defaults for these pins.
155
+  //#define E_MUX0_PIN 40  // Always Required
156
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
157
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
158
+#endif
159
+
141 160
 // A dual extruder that uses a single stepper motor
142 161
 //#define SWITCHING_EXTRUDER
143 162
 #if ENABLED(SWITCHING_EXTRUDER)

+ 19
- 0
Marlin/example_configurations/K8400/Dual-head/Configuration.h View File

@@ -138,6 +138,25 @@
138 138
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
139 139
 //#define SINGLENOZZLE
140 140
 
141
+/**
142
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
143
+ *
144
+ * This device allows one stepper driver on a control board to drive
145
+ * two to eight stepper motors, one at a time, in a manner suitable
146
+ * for extruders.
147
+ *
148
+ * This option only allows the multiplexer to switch on tool-change.
149
+ * Additional options to configure custom E moves are pending.
150
+ */
151
+//#define MK2_MULTIPLEXER
152
+#if ENABLED(MK2_MULTIPLEXER)
153
+  // Override the default DIO selector pins here, if needed.
154
+  // Some pins files may provide defaults for these pins.
155
+  //#define E_MUX0_PIN 40  // Always Required
156
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
157
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
158
+#endif
159
+
141 160
 // A dual extruder that uses a single stepper motor
142 161
 //#define SWITCHING_EXTRUDER
143 162
 #if ENABLED(SWITCHING_EXTRUDER)

+ 19
- 0
Marlin/example_configurations/M150/Configuration.h View File

@@ -143,6 +143,25 @@
143 143
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
144 144
 //#define SINGLENOZZLE
145 145
 
146
+/**
147
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
148
+ *
149
+ * This device allows one stepper driver on a control board to drive
150
+ * two to eight stepper motors, one at a time, in a manner suitable
151
+ * for extruders.
152
+ *
153
+ * This option only allows the multiplexer to switch on tool-change.
154
+ * Additional options to configure custom E moves are pending.
155
+ */
156
+//#define MK2_MULTIPLEXER
157
+#if ENABLED(MK2_MULTIPLEXER)
158
+  // Override the default DIO selector pins here, if needed.
159
+  // Some pins files may provide defaults for these pins.
160
+  //#define E_MUX0_PIN 40  // Always Required
161
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
162
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
163
+#endif
164
+
146 165
 // A dual extruder that uses a single stepper motor
147 166
 //#define SWITCHING_EXTRUDER
148 167
 #if ENABLED(SWITCHING_EXTRUDER)

+ 19
- 0
Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h View File

@@ -138,6 +138,25 @@
138 138
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
139 139
 //#define SINGLENOZZLE
140 140
 
141
+/**
142
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
143
+ *
144
+ * This device allows one stepper driver on a control board to drive
145
+ * two to eight stepper motors, one at a time, in a manner suitable
146
+ * for extruders.
147
+ *
148
+ * This option only allows the multiplexer to switch on tool-change.
149
+ * Additional options to configure custom E moves are pending.
150
+ */
151
+//#define MK2_MULTIPLEXER
152
+#if ENABLED(MK2_MULTIPLEXER)
153
+  // Override the default DIO selector pins here, if needed.
154
+  // Some pins files may provide defaults for these pins.
155
+  //#define E_MUX0_PIN 40  // Always Required
156
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
157
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
158
+#endif
159
+
141 160
 // A dual extruder that uses a single stepper motor
142 161
 //#define SWITCHING_EXTRUDER
143 162
 #if ENABLED(SWITCHING_EXTRUDER)

+ 19
- 0
Marlin/example_configurations/RigidBot/Configuration.h View File

@@ -141,6 +141,25 @@
141 141
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
142 142
 //#define SINGLENOZZLE
143 143
 
144
+/**
145
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
146
+ *
147
+ * This device allows one stepper driver on a control board to drive
148
+ * two to eight stepper motors, one at a time, in a manner suitable
149
+ * for extruders.
150
+ *
151
+ * This option only allows the multiplexer to switch on tool-change.
152
+ * Additional options to configure custom E moves are pending.
153
+ */
154
+//#define MK2_MULTIPLEXER
155
+#if ENABLED(MK2_MULTIPLEXER)
156
+  // Override the default DIO selector pins here, if needed.
157
+  // Some pins files may provide defaults for these pins.
158
+  //#define E_MUX0_PIN 40  // Always Required
159
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
160
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
161
+#endif
162
+
144 163
 // A dual extruder that uses a single stepper motor
145 164
 //#define SWITCHING_EXTRUDER
146 165
 #if ENABLED(SWITCHING_EXTRUDER)

+ 19
- 0
Marlin/example_configurations/SCARA/Configuration.h View File

@@ -168,6 +168,25 @@
168 168
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
169 169
 //#define SINGLENOZZLE
170 170
 
171
+/**
172
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
173
+ *
174
+ * This device allows one stepper driver on a control board to drive
175
+ * two to eight stepper motors, one at a time, in a manner suitable
176
+ * for extruders.
177
+ *
178
+ * This option only allows the multiplexer to switch on tool-change.
179
+ * Additional options to configure custom E moves are pending.
180
+ */
181
+//#define MK2_MULTIPLEXER
182
+#if ENABLED(MK2_MULTIPLEXER)
183
+  // Override the default DIO selector pins here, if needed.
184
+  // Some pins files may provide defaults for these pins.
185
+  //#define E_MUX0_PIN 40  // Always Required
186
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
187
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
188
+#endif
189
+
171 190
 // A dual extruder that uses a single stepper motor
172 191
 //#define SWITCHING_EXTRUDER
173 192
 #if ENABLED(SWITCHING_EXTRUDER)

+ 19
- 0
Marlin/example_configurations/TAZ4/Configuration.h View File

@@ -138,6 +138,25 @@
138 138
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
139 139
 //#define SINGLENOZZLE
140 140
 
141
+/**
142
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
143
+ *
144
+ * This device allows one stepper driver on a control board to drive
145
+ * two to eight stepper motors, one at a time, in a manner suitable
146
+ * for extruders.
147
+ *
148
+ * This option only allows the multiplexer to switch on tool-change.
149
+ * Additional options to configure custom E moves are pending.
150
+ */
151
+//#define MK2_MULTIPLEXER
152
+#if ENABLED(MK2_MULTIPLEXER)
153
+  // Override the default DIO selector pins here, if needed.
154
+  // Some pins files may provide defaults for these pins.
155
+  //#define E_MUX0_PIN 40  // Always Required
156
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
157
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
158
+#endif
159
+
141 160
 // A dual extruder that uses a single stepper motor
142 161
 //#define SWITCHING_EXTRUDER
143 162
 #if ENABLED(SWITCHING_EXTRUDER)

+ 19
- 0
Marlin/example_configurations/TinyBoy2/Configuration.h View File

@@ -160,6 +160,25 @@
160 160
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
161 161
 //#define SINGLENOZZLE
162 162
 
163
+/**
164
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
165
+ *
166
+ * This device allows one stepper driver on a control board to drive
167
+ * two to eight stepper motors, one at a time, in a manner suitable
168
+ * for extruders.
169
+ *
170
+ * This option only allows the multiplexer to switch on tool-change.
171
+ * Additional options to configure custom E moves are pending.
172
+ */
173
+//#define MK2_MULTIPLEXER
174
+#if ENABLED(MK2_MULTIPLEXER)
175
+  // Override the default DIO selector pins here, if needed.
176
+  // Some pins files may provide defaults for these pins.
177
+  //#define E_MUX0_PIN 40  // Always Required
178
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
179
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
180
+#endif
181
+
163 182
 // A dual extruder that uses a single stepper motor
164 183
 //#define SWITCHING_EXTRUDER
165 184
 #if ENABLED(SWITCHING_EXTRUDER)

+ 19
- 0
Marlin/example_configurations/WITBOX/Configuration.h View File

@@ -141,6 +141,25 @@
141 141
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
142 142
 //#define SINGLENOZZLE
143 143
 
144
+/**
145
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
146
+ *
147
+ * This device allows one stepper driver on a control board to drive
148
+ * two to eight stepper motors, one at a time, in a manner suitable
149
+ * for extruders.
150
+ *
151
+ * This option only allows the multiplexer to switch on tool-change.
152
+ * Additional options to configure custom E moves are pending.
153
+ */
154
+//#define MK2_MULTIPLEXER
155
+#if ENABLED(MK2_MULTIPLEXER)
156
+  // Override the default DIO selector pins here, if needed.
157
+  // Some pins files may provide defaults for these pins.
158
+  //#define E_MUX0_PIN 40  // Always Required
159
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
160
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
161
+#endif
162
+
144 163
 // A dual extruder that uses a single stepper motor
145 164
 //#define SWITCHING_EXTRUDER
146 165
 #if ENABLED(SWITCHING_EXTRUDER)

+ 19
- 0
Marlin/example_configurations/adafruit/ST7565/Configuration.h View File

@@ -138,6 +138,25 @@
138 138
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
139 139
 //#define SINGLENOZZLE
140 140
 
141
+/**
142
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
143
+ *
144
+ * This device allows one stepper driver on a control board to drive
145
+ * two to eight stepper motors, one at a time, in a manner suitable
146
+ * for extruders.
147
+ *
148
+ * This option only allows the multiplexer to switch on tool-change.
149
+ * Additional options to configure custom E moves are pending.
150
+ */
151
+//#define MK2_MULTIPLEXER
152
+#if ENABLED(MK2_MULTIPLEXER)
153
+  // Override the default DIO selector pins here, if needed.
154
+  // Some pins files may provide defaults for these pins.
155
+  //#define E_MUX0_PIN 40  // Always Required
156
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
157
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
158
+#endif
159
+
141 160
 // A dual extruder that uses a single stepper motor
142 161
 //#define SWITCHING_EXTRUDER
143 162
 #if ENABLED(SWITCHING_EXTRUDER)

+ 19
- 0
Marlin/example_configurations/delta/FLSUN/auto_calibrate/Configuration.h View File

@@ -138,6 +138,25 @@
138 138
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
139 139
 //#define SINGLENOZZLE
140 140
 
141
+/**
142
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
143
+ *
144
+ * This device allows one stepper driver on a control board to drive
145
+ * two to eight stepper motors, one at a time, in a manner suitable
146
+ * for extruders.
147
+ *
148
+ * This option only allows the multiplexer to switch on tool-change.
149
+ * Additional options to configure custom E moves are pending.
150
+ */
151
+//#define MK2_MULTIPLEXER
152
+#if ENABLED(MK2_MULTIPLEXER)
153
+  // Override the default DIO selector pins here, if needed.
154
+  // Some pins files may provide defaults for these pins.
155
+  //#define E_MUX0_PIN 40  // Always Required
156
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
157
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
158
+#endif
159
+
141 160
 // A dual extruder that uses a single stepper motor
142 161
 //#define SWITCHING_EXTRUDER
143 162
 #if ENABLED(SWITCHING_EXTRUDER)

+ 19
- 0
Marlin/example_configurations/delta/FLSUN/kossel_mini/Configuration.h View File

@@ -138,6 +138,25 @@
138 138
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
139 139
 //#define SINGLENOZZLE
140 140
 
141
+/**
142
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
143
+ *
144
+ * This device allows one stepper driver on a control board to drive
145
+ * two to eight stepper motors, one at a time, in a manner suitable
146
+ * for extruders.
147
+ *
148
+ * This option only allows the multiplexer to switch on tool-change.
149
+ * Additional options to configure custom E moves are pending.
150
+ */
151
+//#define MK2_MULTIPLEXER
152
+#if ENABLED(MK2_MULTIPLEXER)
153
+  // Override the default DIO selector pins here, if needed.
154
+  // Some pins files may provide defaults for these pins.
155
+  //#define E_MUX0_PIN 40  // Always Required
156
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
157
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
158
+#endif
159
+
141 160
 // A dual extruder that uses a single stepper motor
142 161
 //#define SWITCHING_EXTRUDER
143 162
 #if ENABLED(SWITCHING_EXTRUDER)

+ 19
- 0
Marlin/example_configurations/delta/generic/Configuration.h View File

@@ -138,6 +138,25 @@
138 138
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
139 139
 //#define SINGLENOZZLE
140 140
 
141
+/**
142
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
143
+ *
144
+ * This device allows one stepper driver on a control board to drive
145
+ * two to eight stepper motors, one at a time, in a manner suitable
146
+ * for extruders.
147
+ *
148
+ * This option only allows the multiplexer to switch on tool-change.
149
+ * Additional options to configure custom E moves are pending.
150
+ */
151
+//#define MK2_MULTIPLEXER
152
+#if ENABLED(MK2_MULTIPLEXER)
153
+  // Override the default DIO selector pins here, if needed.
154
+  // Some pins files may provide defaults for these pins.
155
+  //#define E_MUX0_PIN 40  // Always Required
156
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
157
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
158
+#endif
159
+
141 160
 // A dual extruder that uses a single stepper motor
142 161
 //#define SWITCHING_EXTRUDER
143 162
 #if ENABLED(SWITCHING_EXTRUDER)

+ 19
- 0
Marlin/example_configurations/delta/kossel_mini/Configuration.h View File

@@ -138,6 +138,25 @@
138 138
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
139 139
 //#define SINGLENOZZLE
140 140
 
141
+/**
142
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
143
+ *
144
+ * This device allows one stepper driver on a control board to drive
145
+ * two to eight stepper motors, one at a time, in a manner suitable
146
+ * for extruders.
147
+ *
148
+ * This option only allows the multiplexer to switch on tool-change.
149
+ * Additional options to configure custom E moves are pending.
150
+ */
151
+//#define MK2_MULTIPLEXER
152
+#if ENABLED(MK2_MULTIPLEXER)
153
+  // Override the default DIO selector pins here, if needed.
154
+  // Some pins files may provide defaults for these pins.
155
+  //#define E_MUX0_PIN 40  // Always Required
156
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
157
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
158
+#endif
159
+
141 160
 // A dual extruder that uses a single stepper motor
142 161
 //#define SWITCHING_EXTRUDER
143 162
 #if ENABLED(SWITCHING_EXTRUDER)

+ 19
- 0
Marlin/example_configurations/delta/kossel_pro/Configuration.h View File

@@ -142,6 +142,25 @@
142 142
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
143 143
 //#define SINGLENOZZLE
144 144
 
145
+/**
146
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
147
+ *
148
+ * This device allows one stepper driver on a control board to drive
149
+ * two to eight stepper motors, one at a time, in a manner suitable
150
+ * for extruders.
151
+ *
152
+ * This option only allows the multiplexer to switch on tool-change.
153
+ * Additional options to configure custom E moves are pending.
154
+ */
155
+//#define MK2_MULTIPLEXER
156
+#if ENABLED(MK2_MULTIPLEXER)
157
+  // Override the default DIO selector pins here, if needed.
158
+  // Some pins files may provide defaults for these pins.
159
+  //#define E_MUX0_PIN 40  // Always Required
160
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
161
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
162
+#endif
163
+
145 164
 // A dual extruder that uses a single stepper motor
146 165
 //#define SWITCHING_EXTRUDER
147 166
 #if ENABLED(SWITCHING_EXTRUDER)

+ 19
- 0
Marlin/example_configurations/delta/kossel_xl/Configuration.h View File

@@ -138,6 +138,25 @@
138 138
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
139 139
 //#define SINGLENOZZLE
140 140
 
141
+/**
142
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
143
+ *
144
+ * This device allows one stepper driver on a control board to drive
145
+ * two to eight stepper motors, one at a time, in a manner suitable
146
+ * for extruders.
147
+ *
148
+ * This option only allows the multiplexer to switch on tool-change.
149
+ * Additional options to configure custom E moves are pending.
150
+ */
151
+//#define MK2_MULTIPLEXER
152
+#if ENABLED(MK2_MULTIPLEXER)
153
+  // Override the default DIO selector pins here, if needed.
154
+  // Some pins files may provide defaults for these pins.
155
+  //#define E_MUX0_PIN 40  // Always Required
156
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
157
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
158
+#endif
159
+
141 160
 // A dual extruder that uses a single stepper motor
142 161
 //#define SWITCHING_EXTRUDER
143 162
 #if ENABLED(SWITCHING_EXTRUDER)

+ 19
- 0
Marlin/example_configurations/gCreate_gMax1.5+/Configuration.h View File

@@ -143,6 +143,25 @@
143 143
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
144 144
 //#define SINGLENOZZLE
145 145
 
146
+/**
147
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
148
+ *
149
+ * This device allows one stepper driver on a control board to drive
150
+ * two to eight stepper motors, one at a time, in a manner suitable
151
+ * for extruders.
152
+ *
153
+ * This option only allows the multiplexer to switch on tool-change.
154
+ * Additional options to configure custom E moves are pending.
155
+ */
156
+//#define MK2_MULTIPLEXER
157
+#if ENABLED(MK2_MULTIPLEXER)
158
+  // Override the default DIO selector pins here, if needed.
159
+  // Some pins files may provide defaults for these pins.
160
+  //#define E_MUX0_PIN 40  // Always Required
161
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
162
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
163
+#endif
164
+
146 165
 // A dual extruder that uses a single stepper motor
147 166
 //#define SWITCHING_EXTRUDER
148 167
 #if ENABLED(SWITCHING_EXTRUDER)

+ 19
- 0
Marlin/example_configurations/makibox/Configuration.h View File

@@ -138,6 +138,25 @@
138 138
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
139 139
 //#define SINGLENOZZLE
140 140
 
141
+/**
142
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
143
+ *
144
+ * This device allows one stepper driver on a control board to drive
145
+ * two to eight stepper motors, one at a time, in a manner suitable
146
+ * for extruders.
147
+ *
148
+ * This option only allows the multiplexer to switch on tool-change.
149
+ * Additional options to configure custom E moves are pending.
150
+ */
151
+//#define MK2_MULTIPLEXER
152
+#if ENABLED(MK2_MULTIPLEXER)
153
+  // Override the default DIO selector pins here, if needed.
154
+  // Some pins files may provide defaults for these pins.
155
+  //#define E_MUX0_PIN 40  // Always Required
156
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
157
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
158
+#endif
159
+
141 160
 // A dual extruder that uses a single stepper motor
142 161
 //#define SWITCHING_EXTRUDER
143 162
 #if ENABLED(SWITCHING_EXTRUDER)

+ 19
- 0
Marlin/example_configurations/tvrrug/Round2/Configuration.h View File

@@ -138,6 +138,25 @@
138 138
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
139 139
 //#define SINGLENOZZLE
140 140
 
141
+/**
142
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
143
+ *
144
+ * This device allows one stepper driver on a control board to drive
145
+ * two to eight stepper motors, one at a time, in a manner suitable
146
+ * for extruders.
147
+ *
148
+ * This option only allows the multiplexer to switch on tool-change.
149
+ * Additional options to configure custom E moves are pending.
150
+ */
151
+//#define MK2_MULTIPLEXER
152
+#if ENABLED(MK2_MULTIPLEXER)
153
+  // Override the default DIO selector pins here, if needed.
154
+  // Some pins files may provide defaults for these pins.
155
+  //#define E_MUX0_PIN 40  // Always Required
156
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
157
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
158
+#endif
159
+
141 160
 // A dual extruder that uses a single stepper motor
142 161
 //#define SWITCHING_EXTRUDER
143 162
 #if ENABLED(SWITCHING_EXTRUDER)

+ 19
- 0
Marlin/example_configurations/wt150/Configuration.h View File

@@ -138,6 +138,25 @@
138 138
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
139 139
 //#define SINGLENOZZLE
140 140
 
141
+/**
142
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
143
+ *
144
+ * This device allows one stepper driver on a control board to drive
145
+ * two to eight stepper motors, one at a time, in a manner suitable
146
+ * for extruders.
147
+ *
148
+ * This option only allows the multiplexer to switch on tool-change.
149
+ * Additional options to configure custom E moves are pending.
150
+ */
151
+//#define MK2_MULTIPLEXER
152
+#if ENABLED(MK2_MULTIPLEXER)
153
+  // Override the default DIO selector pins here, if needed.
154
+  // Some pins files may provide defaults for these pins.
155
+  //#define E_MUX0_PIN 40  // Always Required
156
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
157
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
158
+#endif
159
+
141 160
 // A dual extruder that uses a single stepper motor
142 161
 //#define SWITCHING_EXTRUDER
143 162
 #if ENABLED(SWITCHING_EXTRUDER)

+ 15
- 9
Marlin/pins_MINIRAMBO.h View File

@@ -116,6 +116,21 @@
116 116
 #define CASE_LIGHT_PIN      9
117 117
 
118 118
 //
119
+// M3/M4/M5 - Spindle/Laser Control
120
+//
121
+// use P1 connector for spindle pins
122
+#define SPINDLE_LASER_PWM_PIN     9  // MUST BE HARDWARE PWM
123
+#define SPINDLE_LASER_ENABLE_PIN 18  // Pin should have a pullup!
124
+#define SPINDLE_DIR_PIN          19
125
+
126
+//
127
+// Průša i3 MK2 Multiplexer Support
128
+//
129
+#define E_MUX0_PIN         17
130
+#define E_MUX1_PIN         16
131
+#define E_MUX2_PIN         78 // 84 in MK2 Firmware, with BEEPER as 78
132
+
133
+//
119 134
 // LCD / Controller
120 135
 //
121 136
 #if ENABLED(ULTRA_LCD)
@@ -143,12 +158,3 @@
143 158
 
144 159
   #endif // NEWPANEL
145 160
 #endif // ULTRA_LCD
146
-
147
-//
148
-// M3/M4/M5 - Spindle/Laser Control
149
-//
150
-
151
-// use P1 connector for spindle pins
152
-#define SPINDLE_LASER_PWM_PIN     9  // MUST BE HARDWARE PWM
153
-#define SPINDLE_LASER_ENABLE_PIN 18  // Pin should have a pullup!
154
-#define SPINDLE_DIR_PIN          19

+ 14
- 7
Marlin/pins_RAMBO.h View File

@@ -143,6 +143,20 @@
143 143
 #endif
144 144
 
145 145
 //
146
+// M3/M4/M5 - Spindle/Laser Control
147
+//
148
+#define SPINDLE_LASER_PWM_PIN    45  // MUST BE HARDWARE PWM
149
+#define SPINDLE_LASER_ENABLE_PIN 31  // Pin should have a pullup!
150
+#define SPINDLE_DIR_PIN          32
151
+
152
+//
153
+// Průša i3 MK2 Multiplexer Support
154
+//
155
+#define E_MUX0_PIN         17
156
+#define E_MUX1_PIN         16
157
+#define E_MUX2_PIN         84 // 84 in MK2 Firmware
158
+
159
+//
146 160
 // LCD / Controller
147 161
 //
148 162
 #if ENABLED(ULTRA_LCD)
@@ -212,10 +226,3 @@
212 226
   #endif // !NEWPANEL
213 227
 
214 228
 #endif // ULTRA_LCD
215
-
216
-//
217
-// M3/M4/M5 - Spindle/Laser Control
218
-//
219
-#define SPINDLE_LASER_PWM_PIN    45  // MUST BE HARDWARE PWM
220
-#define SPINDLE_LASER_ENABLE_PIN 31  // Pin should have a pullup!
221
-#define SPINDLE_DIR_PIN          32

+ 23
- 16
Marlin/pins_RAMPS.h View File

@@ -215,6 +215,29 @@
215 215
 #endif
216 216
 
217 217
 //
218
+// M3/M4/M5 - Spindle/Laser Control
219
+//
220
+#if ENABLED(SPINDLE_LASER_ENABLE) && !PIN_EXISTS(SPINDLE_LASER_ENABLE)
221
+  #if !defined(NUM_SERVOS) || NUM_SERVOS == 0 // try to use servo connector first
222
+    #define SPINDLE_LASER_ENABLE_PIN  4  // Pin should have a pullup/pulldown!
223
+    #define SPINDLE_LASER_PWM_PIN     6  // MUST BE HARDWARE PWM
224
+    #define SPINDLE_DIR_PIN           5
225
+  #elif !(ENABLED(ULTRA_LCD) && ENABLED(NEWPANEL) \
226
+      && (ENABLED(PANEL_ONE) || ENABLED(VIKI2) || ENABLED(miniVIKI) || ENABLED(MINIPANEL) || ENABLED(REPRAPWORLD_KEYPAD)))  // try to use AUX 2
227
+    #define SPINDLE_LASER_ENABLE_PIN 40  // Pin should have a pullup/pulldown!
228
+    #define SPINDLE_LASER_PWM_PIN    44  // MUST BE HARDWARE PWM
229
+    #define SPINDLE_DIR_PIN          65
230
+  #endif
231
+#endif
232
+
233
+//
234
+// Průša i3 MK2 Multiplexer Support
235
+//
236
+#define E_MUX0_PIN         40   // Z_CS_PIN
237
+#define E_MUX1_PIN         42   // E0_CS_PIN
238
+#define E_MUX2_PIN         44   // E1_CS_PIN
239
+
240
+//
218 241
 // LCD / Controller
219 242
 //
220 243
 #if ENABLED(ULTRA_LCD)
@@ -378,19 +401,3 @@
378 401
   #endif // NEWPANEL
379 402
 
380 403
 #endif // ULTRA_LCD
381
-
382
-//
383
-// M3/M4/M5 - Spindle/Laser Control
384
-//
385
-#if ENABLED(SPINDLE_LASER_ENABLE) && !PIN_EXISTS(SPINDLE_LASER_ENABLE)
386
-  #if !defined(NUM_SERVOS) || NUM_SERVOS == 0 // try to use servo connector first
387
-    #define SPINDLE_LASER_ENABLE_PIN  4  // Pin should have a pullup/pulldown!
388
-    #define SPINDLE_LASER_PWM_PIN     6  // MUST BE HARDWARE PWM
389
-    #define SPINDLE_DIR_PIN           5
390
-  #elif !(ENABLED(ULTRA_LCD) && ENABLED(NEWPANEL) \
391
-      && (ENABLED(PANEL_ONE) || ENABLED(VIKI2) || ENABLED(miniVIKI) || ENABLED(MINIPANEL) || ENABLED(REPRAPWORLD_KEYPAD)))  // try to use AUX 2
392
-    #define SPINDLE_LASER_ENABLE_PIN 40  // Pin should have a pullup/pulldown!
393
-    #define SPINDLE_LASER_PWM_PIN    44  // MUST BE HARDWARE PWM
394
-    #define SPINDLE_DIR_PIN          65
395
-  #endif
396
-#endif

+ 8
- 2
Marlin/stepper.cpp View File

@@ -860,8 +860,14 @@ void Stepper::isr() {
860 860
 
861 861
     nextAdvanceISR = eISR_Rate;
862 862
 
863
-    #define SET_E_STEP_DIR(INDEX) \
864
-      if (e_steps[INDEX]) E## INDEX ##_DIR_WRITE(e_steps[INDEX] < 0 ? INVERT_E## INDEX ##_DIR : !INVERT_E## INDEX ##_DIR)
863
+    #if ENABLED(MK2_MULTIPLEXER)
864
+      // Even-numbered steppers are reversed
865
+      #define SET_E_STEP_DIR(INDEX) \
866
+        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))
867
+    #else
868
+      #define SET_E_STEP_DIR(INDEX) \
869
+        if (e_steps[INDEX]) E## INDEX ##_DIR_WRITE(e_steps[INDEX] < 0 ? INVERT_E## INDEX ##_DIR : !INVERT_E## INDEX ##_DIR)
870
+    #endif
865 871
 
866 872
     #define START_E_PULSE(INDEX) \
867 873
       if (e_steps[INDEX]) E## INDEX ##_STEP_WRITE(!INVERT_E_STEP_PIN)

+ 8
- 2
Marlin/stepper_indirection.h View File

@@ -472,8 +472,14 @@
472 472
   #endif
473 473
 #else
474 474
   #define E_STEP_WRITE(v) E0_STEP_WRITE(v)
475
-  #define NORM_E_DIR() E0_DIR_WRITE(!INVERT_E0_DIR)
476
-  #define REV_E_DIR() E0_DIR_WRITE(INVERT_E0_DIR)
475
+  #if ENABLED(MK2_MULTIPLEXER)
476
+    // Even-numbered steppers are reversed
477
+    #define NORM_E_DIR() E0_DIR_WRITE(TEST(current_block->active_extruder, 0) ? !INVERT_E0_DIR: INVERT_E0_DIR)
478
+    #define REV_E_DIR() E0_DIR_WRITE(TEST(current_block->active_extruder, 0) ? INVERT_E0_DIR: !INVERT_E0_DIR)
479
+  #else
480
+    #define NORM_E_DIR() E0_DIR_WRITE(!INVERT_E0_DIR)
481
+    #define REV_E_DIR() E0_DIR_WRITE(INVERT_E0_DIR)
482
+  #endif
477 483
 #endif
478 484
 
479 485
 #endif // STEPPER_INDIRECTION_H

Loading…
Cancel
Save