Browse Source

Support duplication mode in LIN_ADVANCE

Scott Lahteine 7 years ago
parent
commit
8291ae34f2
1 changed files with 15 additions and 17 deletions
  1. 15
    17
      Marlin/src/module/stepper.cpp

+ 15
- 17
Marlin/src/module/stepper.cpp View File

755
 
755
 
756
   void Stepper::advance_isr() {
756
   void Stepper::advance_isr() {
757
 
757
 
758
-    #if ENABLED(MK2_MULTIPLEXER)
759
-      // Even-numbered steppers are reversed
760
-      #define SET_E_STEP_DIR(INDEX) \
761
-        if (e_steps) E## INDEX ##_DIR_WRITE(e_steps < 0 ? !INVERT_E## INDEX ##_DIR ^ TEST(INDEX, 0) : INVERT_E## INDEX ##_DIR ^ TEST(INDEX, 0))
758
+    #if ENABLED(MK2_MULTIPLEXER) // For SNMM even-numbered steppers are reversed
759
+      #define SET_E_STEP_DIR(INDEX) do{ if (e_steps) E## INDEX ##_DIR_WRITE(e_steps < 0 ? !INVERT_E## INDEX ##_DIR ^ TEST(INDEX, 0) : INVERT_E## INDEX ##_DIR ^ TEST(INDEX, 0)); }while(0)
760
+    #elif ENABLED(DUAL_X_CARRIAGE) || ENABLED(DUAL_NOZZLE_DUPLICATION_MODE)
761
+      #define SET_E_STEP_DIR(INDEX) do{ if (e_steps) { e_steps < 0 ? REV_E_DIR() : NORM_E_DIR(); } }while(0)
762
     #else
762
     #else
763
-      #define SET_E_STEP_DIR(INDEX) \
764
-        if (e_steps) E## INDEX ##_DIR_WRITE(e_steps < 0 ? INVERT_E## INDEX ##_DIR : !INVERT_E## INDEX ##_DIR)
763
+      #define SET_E_STEP_DIR(INDEX) do{ if (e_steps) E## INDEX ##_DIR_WRITE(e_steps < 0 ? INVERT_E## INDEX ##_DIR : !INVERT_E## INDEX ##_DIR); }while(0)
765
     #endif
764
     #endif
766
 
765
 
767
-    #define START_E_PULSE(INDEX) \
768
-      if (e_steps) E## INDEX ##_STEP_WRITE(!INVERT_E_STEP_PIN)
769
-
770
-    #define STOP_E_PULSE(INDEX) \
771
-      if (e_steps) { \
772
-        e_steps < 0 ? ++e_steps : --e_steps; \
773
-        E## INDEX ##_STEP_WRITE(INVERT_E_STEP_PIN); \
774
-      }
766
+    #if ENABLED(DUAL_X_CARRIAGE) || ENABLED(DUAL_NOZZLE_DUPLICATION_MODE)
767
+      #define START_E_PULSE(INDEX) do{ if (e_steps) E_STEP_WRITE(!INVERT_E_STEP_PIN); }while(0)
768
+      #define STOP_E_PULSE(INDEX) do{ if (e_steps) { E_STEP_WRITE(INVERT_E_STEP_PIN); e_steps < 0 ? ++e_steps : --e_steps; } }while(0)
769
+    #else
770
+      #define START_E_PULSE(INDEX) do{ if (e_steps) E## INDEX ##_STEP_WRITE(!INVERT_E_STEP_PIN); }while(0)
771
+      #define STOP_E_PULSE(INDEX) do { if (e_steps) { E## INDEX ##_STEP_WRITE(INVERT_E_STEP_PIN); e_steps < 0 ? ++e_steps : --e_steps; } }while(0)
772
+    #endif
775
 
773
 
776
     if (current_block->use_advance_lead) {
774
     if (current_block->use_advance_lead) {
777
       if (step_events_completed > LA_decelerate_after && current_adv_steps > final_adv_steps) {
775
       if (step_events_completed > LA_decelerate_after && current_adv_steps > final_adv_steps) {
793
     else
791
     else
794
       nextAdvanceISR = ADV_NEVER;
792
       nextAdvanceISR = ADV_NEVER;
795
 
793
 
796
-    switch(LA_active_extruder) {
794
+    switch (LA_active_extruder) {
797
       case 0: SET_E_STEP_DIR(0); break;
795
       case 0: SET_E_STEP_DIR(0); break;
798
       #if EXTRUDERS > 1
796
       #if EXTRUDERS > 1
799
         case 1: SET_E_STEP_DIR(1); break;
797
         case 1: SET_E_STEP_DIR(1); break;
816
         hal_timer_t pulse_start = HAL_timer_get_count(PULSE_TIMER_NUM);
814
         hal_timer_t pulse_start = HAL_timer_get_count(PULSE_TIMER_NUM);
817
       #endif
815
       #endif
818
 
816
 
819
-      switch(LA_active_extruder) {
817
+      switch (LA_active_extruder) {
820
         case 0: START_E_PULSE(0); break;
818
         case 0: START_E_PULSE(0); break;
821
         #if EXTRUDERS > 1
819
         #if EXTRUDERS > 1
822
           case 1: START_E_PULSE(1); break;
820
           case 1: START_E_PULSE(1); break;
840
         DELAY_NOPS(EXTRA_CYCLES_E);
838
         DELAY_NOPS(EXTRA_CYCLES_E);
841
       #endif
839
       #endif
842
 
840
 
843
-      switch(LA_active_extruder) {
841
+      switch (LA_active_extruder) {
844
         case 0: STOP_E_PULSE(0); break;
842
         case 0: STOP_E_PULSE(0); break;
845
         #if EXTRUDERS > 1
843
         #if EXTRUDERS > 1
846
           case 1: STOP_E_PULSE(1); break;
844
           case 1: STOP_E_PULSE(1); break;

Loading…
Cancel
Save