Browse Source

Correct HOTENDS for SWITCHING_EXTRUDER

Scott Lahteine 7 years ago
parent
commit
0ca9db7051

+ 0
- 2
.travis.yml View File

167
   - opt_set EXTRUDERS 2
167
   - opt_set EXTRUDERS 2
168
   - opt_enable NUM_SERVOS
168
   - opt_enable NUM_SERVOS
169
   - opt_set NUM_SERVOS 1
169
   - opt_set NUM_SERVOS 1
170
-  - opt_set TEMP_SENSOR_1 1
171
   - opt_enable SWITCHING_EXTRUDER ULTIMAKERCONTROLLER
170
   - opt_enable SWITCHING_EXTRUDER ULTIMAKERCONTROLLER
172
   - build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
171
   - build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
173
   #
172
   #
421
   - opt_set EXTRUDERS 2
420
   - opt_set EXTRUDERS 2
422
   - opt_enable NUM_SERVOS
421
   - opt_enable NUM_SERVOS
423
   - opt_set NUM_SERVOS 1
422
   - opt_set NUM_SERVOS 1
424
-  - opt_set TEMP_SENSOR_1 1
425
   - opt_enable SWITCHING_EXTRUDER ULTIMAKERCONTROLLER
423
   - opt_enable SWITCHING_EXTRUDER ULTIMAKERCONTROLLER
426
   - build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
424
   - build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
427
   #
425
   #

+ 21
- 4
Marlin/src/Marlin.cpp View File

427
       && !planner.has_blocks_queued()
427
       && !planner.has_blocks_queued()
428
     ) {
428
     ) {
429
       #if ENABLED(SWITCHING_EXTRUDER)
429
       #if ENABLED(SWITCHING_EXTRUDER)
430
-        const bool oldstatus = E0_ENABLE_READ;
431
-        enable_E0();
430
+        bool oldstatus;
431
+        switch (active_extruder) {
432
+          default: oldstatus = E0_ENABLE_READ; enable_E0(); break;
433
+          #if E_STEPPERS > 1
434
+            case 2: case 3: oldstatus = E1_ENABLE_READ; enable_E1(); break;
435
+            #if E_STEPPERS > 2
436
+              case 4: oldstatus = E2_ENABLE_READ; enable_E2(); break;
437
+            #endif // E_STEPPERS > 2
438
+          #endif // E_STEPPERS > 1
439
+        }
432
       #else // !SWITCHING_EXTRUDER
440
       #else // !SWITCHING_EXTRUDER
433
         bool oldstatus;
441
         bool oldstatus;
434
         switch (active_extruder) {
442
         switch (active_extruder) {
454
       current_position[E_AXIS] = olde;
462
       current_position[E_AXIS] = olde;
455
       planner.set_e_position_mm(olde);
463
       planner.set_e_position_mm(olde);
456
       planner.synchronize();
464
       planner.synchronize();
465
+
457
       #if ENABLED(SWITCHING_EXTRUDER)
466
       #if ENABLED(SWITCHING_EXTRUDER)
458
-        E0_ENABLE_WRITE(oldstatus);
459
-      #else
467
+        switch (active_extruder) {
468
+          default: oldstatus = E0_ENABLE_WRITE(oldstatus); break;
469
+          #if E_STEPPERS > 1
470
+            case 2: case 3: oldstatus = E1_ENABLE_WRITE(oldstatus); break;
471
+            #if E_STEPPERS > 2
472
+              case 4: oldstatus = E2_ENABLE_WRITE(oldstatus); break;
473
+            #endif // E_STEPPERS > 2
474
+          #endif // E_STEPPERS > 1
475
+        }
476
+      #else // !SWITCHING_EXTRUDER
460
         switch (active_extruder) {
477
         switch (active_extruder) {
461
           case 0: E0_ENABLE_WRITE(oldstatus); break;
478
           case 0: E0_ENABLE_WRITE(oldstatus); break;
462
           #if E_STEPPERS > 1
479
           #if E_STEPPERS > 1

+ 13
- 15
Marlin/src/inc/Conditionals_LCD.h View File

406
  *  E_MANUAL     - Number of E steppers for LCD move options
406
  *  E_MANUAL     - Number of E steppers for LCD move options
407
  *
407
  *
408
  */
408
  */
409
-#if ENABLED(SINGLENOZZLE) || ENABLED(MIXING_EXTRUDER)         // One hotend, one thermistor, no XY offset
410
-  #define HOTENDS       1
411
-  #undef TEMP_SENSOR_1_AS_REDUNDANT
412
-  #undef HOTEND_OFFSET_X
413
-  #undef HOTEND_OFFSET_Y
414
-#else                                                         // Two hotends
415
-  #define HOTENDS       EXTRUDERS
416
-#endif
417
-
418
 #define HOTEND_LOOP() for (int8_t e = 0; e < HOTENDS; e++)
409
 #define HOTEND_LOOP() for (int8_t e = 0; e < HOTENDS; e++)
419
 
410
 
420
-#if HOTENDS == 1
421
-  #define HOTEND_INDEX  0
422
-#else
423
-  #define HOTEND_INDEX  e
424
-#endif
425
-
426
 #if ENABLED(SWITCHING_EXTRUDER)                               // One stepper for every two EXTRUDERS
411
 #if ENABLED(SWITCHING_EXTRUDER)                               // One stepper for every two EXTRUDERS
427
   #if EXTRUDERS > 4
412
   #if EXTRUDERS > 4
428
     #define E_STEPPERS    3
413
     #define E_STEPPERS    3
431
   #else
416
   #else
432
     #define E_STEPPERS    1
417
     #define E_STEPPERS    1
433
   #endif
418
   #endif
419
+  #define HOTENDS         E_STEPPERS
434
   #define E_MANUAL        EXTRUDERS
420
   #define E_MANUAL        EXTRUDERS
435
 #elif ENABLED(MIXING_EXTRUDER)
421
 #elif ENABLED(MIXING_EXTRUDER)
436
   #define E_STEPPERS      MIXING_STEPPERS
422
   #define E_STEPPERS      MIXING_STEPPERS
440
   #define E_MANUAL        EXTRUDERS
426
   #define E_MANUAL        EXTRUDERS
441
 #endif
427
 #endif
442
 
428
 
429
+#if ENABLED(SINGLENOZZLE) || ENABLED(MIXING_EXTRUDER)         // One hotend, one thermistor, no XY offset
430
+  #undef HOTENDS
431
+  #define HOTENDS       1
432
+  #undef TEMP_SENSOR_1_AS_REDUNDANT
433
+  #undef HOTEND_OFFSET_X
434
+  #undef HOTEND_OFFSET_Y
435
+#endif
436
+
437
+#ifndef HOTENDS
438
+  #define HOTENDS EXTRUDERS
439
+#endif
440
+
443
 #define DO_SWITCH_EXTRUDER (ENABLED(SWITCHING_EXTRUDER) && (DISABLED(SWITCHING_NOZZLE) || SWITCHING_EXTRUDER_SERVO_NR != SWITCHING_NOZZLE_SERVO_NR))
441
 #define DO_SWITCH_EXTRUDER (ENABLED(SWITCHING_EXTRUDER) && (DISABLED(SWITCHING_NOZZLE) || SWITCHING_EXTRUDER_SERVO_NR != SWITCHING_NOZZLE_SERVO_NR))
444
 
442
 
445
 /**
443
 /**

+ 2
- 6
Marlin/src/inc/SanityCheck.h View File

582
 /**
582
 /**
583
  * Single Stepper Dual Extruder with switching servo
583
  * Single Stepper Dual Extruder with switching servo
584
  */
584
  */
585
-#if ENABLED(SWITCHING_EXTRUDER)
586
-  #if ENABLED(SINGLENOZZLE)
587
-    #error "SWITCHING_EXTRUDER and SINGLENOZZLE are incompatible."
588
-  #elif NUM_SERVOS < 1
589
-    #error "SWITCHING_EXTRUDER requires NUM_SERVOS >= 1."
590
-  #endif
585
+#if ENABLED(SWITCHING_EXTRUDER) && NUM_SERVOS < 1
586
+  #error "SWITCHING_EXTRUDER requires NUM_SERVOS >= 1."
591
 #endif
587
 #endif
592
 
588
 
593
 /**
589
 /**

+ 2
- 4
Marlin/src/module/stepper.cpp View File

1841
         current_adv_steps++;
1841
         current_adv_steps++;
1842
         interval = eISR_Rate;
1842
         interval = eISR_Rate;
1843
       }
1843
       }
1844
-      else {
1845
-        interval = ADV_NEVER;
1846
-        eISR_Rate = ADV_NEVER;
1847
-      }
1844
+      else
1845
+        interval = eISR_Rate = ADV_NEVER;
1848
     }
1846
     }
1849
     else
1847
     else
1850
       interval = ADV_NEVER;
1848
       interval = ADV_NEVER;

+ 6
- 0
Marlin/src/module/temperature.h View File

42
   #define SOFT_PWM_SCALE 0
42
   #define SOFT_PWM_SCALE 0
43
 #endif
43
 #endif
44
 
44
 
45
+#if HOTENDS == 1
46
+  #define HOTEND_INDEX  0
47
+#else
48
+  #define HOTEND_INDEX  e
49
+#endif
50
+
45
 /**
51
 /**
46
  * States for ADC reading in the ISR
52
  * States for ADC reading in the ISR
47
  */
53
  */

Loading…
Cancel
Save