Procházet zdrojové kódy

Reduce all stepper_indirection init code with macros

Scott Lahteine před 8 roky
rodič
revize
644fac5d34
1 změnil soubory, kde provedl 114 přidání a 147 odebrání
  1. 114
    147
      Marlin/stepper_indirection.cpp

+ 114
- 147
Marlin/stepper_indirection.cpp Zobrazit soubor

@@ -45,88 +45,88 @@
45 45
 
46 46
 #include "MarlinConfig.h"
47 47
 
48
+//
49
+// TMC26X Driver objects and inits
50
+//
48 51
 #if ENABLED(HAVE_TMCDRIVER)
52
+
49 53
   #include <SPI.h>
50 54
   #include <TMC26XStepper.h>
51
-#endif
52
-
53
-// Stepper objects of TMC steppers used
54
-#if ENABLED(X_IS_TMC)
55
-  TMC26XStepper stepperX(200, X_ENABLE_PIN, X_STEP_PIN, X_DIR_PIN, X_MAX_CURRENT, X_SENSE_RESISTOR);
56
-#endif
57
-#if ENABLED(X2_IS_TMC)
58
-  TMC26XStepper stepperX2(200, X2_ENABLE_PIN, X2_STEP_PIN, X2_DIR_PIN, X2_MAX_CURRENT, X2_SENSE_RESISTOR);
59
-#endif
60
-#if ENABLED(Y_IS_TMC)
61
-  TMC26XStepper stepperY(200, Y_ENABLE_PIN, Y_STEP_PIN, Y_DIR_PIN, Y_MAX_CURRENT, Y_SENSE_RESISTOR);
62
-#endif
63
-#if ENABLED(Y2_IS_TMC)
64
-  TMC26XStepper stepperY2(200, Y2_ENABLE_PIN, Y2_STEP_PIN, Y2_DIR_PIN, Y2_MAX_CURRENT, Y2_SENSE_RESISTOR);
65
-#endif
66
-#if ENABLED(Z_IS_TMC)
67
-  TMC26XStepper stepperZ(200, Z_ENABLE_PIN, Z_STEP_PIN, Z_DIR_PIN, Z_MAX_CURRENT, Z_SENSE_RESISTOR);
68
-#endif
69
-#if ENABLED(Z2_IS_TMC)
70
-  TMC26XStepper stepperZ2(200, Z2_ENABLE_PIN, Z2_STEP_PIN, Z2_DIR_PIN, Z2_MAX_CURRENT, Z2_SENSE_RESISTOR);
71
-#endif
72
-#if ENABLED(E0_IS_TMC)
73
-  TMC26XStepper stepperE0(200, E0_ENABLE_PIN, E0_STEP_PIN, E0_DIR_PIN, E0_MAX_CURRENT, E0_SENSE_RESISTOR);
74
-#endif
75
-#if ENABLED(E1_IS_TMC)
76
-  TMC26XStepper stepperE1(200, E1_ENABLE_PIN, E1_STEP_PIN, E1_DIR_PIN, E1_MAX_CURRENT, E1_SENSE_RESISTOR);
77
-#endif
78
-#if ENABLED(E2_IS_TMC)
79
-  TMC26XStepper stepperE2(200, E2_ENABLE_PIN, E2_STEP_PIN, E2_DIR_PIN, E2_MAX_CURRENT, E2_SENSE_RESISTOR);
80
-#endif
81
-#if ENABLED(E3_IS_TMC)
82
-  TMC26XStepper stepperE3(200, E3_ENABLE_PIN, E3_STEP_PIN, E3_DIR_PIN, E3_MAX_CURRENT, E3_SENSE_RESISTOR);
83
-#endif
84 55
 
85
-#if ENABLED(HAVE_TMCDRIVER)
86
-void tmc_init() {
87 56
   #if ENABLED(X_IS_TMC)
88
-    stepperX.setMicrosteps(X_MICROSTEPS);
89
-    stepperX.start();
57
+    TMC26XStepper stepperX(200, X_ENABLE_PIN, X_STEP_PIN, X_DIR_PIN, X_MAX_CURRENT, X_SENSE_RESISTOR);
90 58
   #endif
91 59
   #if ENABLED(X2_IS_TMC)
92
-    stepperX2.setMicrosteps(X2_MICROSTEPS);
93
-    stepperX2.start();
60
+    TMC26XStepper stepperX2(200, X2_ENABLE_PIN, X2_STEP_PIN, X2_DIR_PIN, X2_MAX_CURRENT, X2_SENSE_RESISTOR);
94 61
   #endif
95 62
   #if ENABLED(Y_IS_TMC)
96
-    stepperY.setMicrosteps(Y_MICROSTEPS);
97
-    stepperY.start();
63
+    TMC26XStepper stepperY(200, Y_ENABLE_PIN, Y_STEP_PIN, Y_DIR_PIN, Y_MAX_CURRENT, Y_SENSE_RESISTOR);
98 64
   #endif
99 65
   #if ENABLED(Y2_IS_TMC)
100
-    stepperY2.setMicrosteps(Y2_MICROSTEPS);
101
-    stepperY2.start();
66
+    TMC26XStepper stepperY2(200, Y2_ENABLE_PIN, Y2_STEP_PIN, Y2_DIR_PIN, Y2_MAX_CURRENT, Y2_SENSE_RESISTOR);
102 67
   #endif
103 68
   #if ENABLED(Z_IS_TMC)
104
-    stepperZ.setMicrosteps(Z_MICROSTEPS);
105
-    stepperZ.start();
69
+    TMC26XStepper stepperZ(200, Z_ENABLE_PIN, Z_STEP_PIN, Z_DIR_PIN, Z_MAX_CURRENT, Z_SENSE_RESISTOR);
106 70
   #endif
107 71
   #if ENABLED(Z2_IS_TMC)
108
-    stepperZ2.setMicrosteps(Z2_MICROSTEPS);
109
-    stepperZ2.start();
72
+    TMC26XStepper stepperZ2(200, Z2_ENABLE_PIN, Z2_STEP_PIN, Z2_DIR_PIN, Z2_MAX_CURRENT, Z2_SENSE_RESISTOR);
110 73
   #endif
111 74
   #if ENABLED(E0_IS_TMC)
112
-    stepperE0.setMicrosteps(E0_MICROSTEPS);
113
-    stepperE0.start();
75
+    TMC26XStepper stepperE0(200, E0_ENABLE_PIN, E0_STEP_PIN, E0_DIR_PIN, E0_MAX_CURRENT, E0_SENSE_RESISTOR);
114 76
   #endif
115 77
   #if ENABLED(E1_IS_TMC)
116
-    stepperE1.setMicrosteps(E1_MICROSTEPS);
117
-    stepperE1.start();
78
+    TMC26XStepper stepperE1(200, E1_ENABLE_PIN, E1_STEP_PIN, E1_DIR_PIN, E1_MAX_CURRENT, E1_SENSE_RESISTOR);
118 79
   #endif
119 80
   #if ENABLED(E2_IS_TMC)
120
-    stepperE2.setMicrosteps(E2_MICROSTEPS);
121
-    stepperE2.start();
81
+    TMC26XStepper stepperE2(200, E2_ENABLE_PIN, E2_STEP_PIN, E2_DIR_PIN, E2_MAX_CURRENT, E2_SENSE_RESISTOR);
122 82
   #endif
123 83
   #if ENABLED(E3_IS_TMC)
124
-    stepperE3.setMicrosteps(E3_MICROSTEPS);
125
-    stepperE3.start();
84
+    TMC26XStepper stepperE3(200, E3_ENABLE_PIN, E3_STEP_PIN, E3_DIR_PIN, E3_MAX_CURRENT, E3_SENSE_RESISTOR);
126 85
   #endif
127
-}
128
-#endif
129 86
 
87
+  #define _TMC_INIT(A) do{ \
88
+    stepper##A.setMicrosteps(A##_MICROSTEPS);
89
+    stepper##A.start();
90
+  } while(0)
91
+
92
+  void tmc_init() {
93
+    #if ENABLED(X_IS_TMC)
94
+      _TMC_INIT(X);
95
+    #endif
96
+    #if ENABLED(X2_IS_TMC)
97
+      _TMC_INIT(X2);
98
+    #endif
99
+    #if ENABLED(Y_IS_TMC)
100
+      _TMC_INIT(Y);
101
+    #endif
102
+    #if ENABLED(Y2_IS_TMC)
103
+      _TMC_INIT(Y2);
104
+    #endif
105
+    #if ENABLED(Z_IS_TMC)
106
+      _TMC_INIT(Z);
107
+    #endif
108
+    #if ENABLED(Z2_IS_TMC)
109
+      _TMC_INIT(Z2);
110
+    #endif
111
+    #if ENABLED(E0_IS_TMC)
112
+      _TMC_INIT(E0);
113
+    #endif
114
+    #if ENABLED(E1_IS_TMC)
115
+      _TMC_INIT(E1);
116
+    #endif
117
+    #if ENABLED(E2_IS_TMC)
118
+      _TMC_INIT(E2);
119
+    #endif
120
+    #if ENABLED(E3_IS_TMC)
121
+      _TMC_INIT(E3);
122
+    #endif
123
+  }
124
+
125
+#endif // HAVE_TMCDRIVER
126
+
127
+//
128
+// TMC2130 Driver objects and inits
129
+//
130 130
 #if ENABLED(HAVE_TMC2130DRIVER)
131 131
 
132 132
   #include <SPI.h>
@@ -549,119 +549,86 @@ void tmc_init() {
549 549
 
550 550
 #endif // HAVE_TMC2130DRIVER
551 551
 
552
+//
552 553
 // L6470 Driver objects and inits
553
-
554
+//
554 555
 #if ENABLED(HAVE_L6470DRIVER)
556
+
555 557
   #include <SPI.h>
556 558
   #include <L6470.h>
557
-#endif
558
-
559
-// L6470 Stepper objects
560
-#if ENABLED(X_IS_L6470)
561
-  L6470 stepperX(X_ENABLE_PIN);
562
-#endif
563
-#if ENABLED(X2_IS_L6470)
564
-  L6470 stepperX2(X2_ENABLE_PIN);
565
-#endif
566
-#if ENABLED(Y_IS_L6470)
567
-  L6470 stepperY(Y_ENABLE_PIN);
568
-#endif
569
-#if ENABLED(Y2_IS_L6470)
570
-  L6470 stepperY2(Y2_ENABLE_PIN);
571
-#endif
572
-#if ENABLED(Z_IS_L6470)
573
-  L6470 stepperZ(Z_ENABLE_PIN);
574
-#endif
575
-#if ENABLED(Z2_IS_L6470)
576
-  L6470 stepperZ2(Z2_ENABLE_PIN);
577
-#endif
578
-#if ENABLED(E0_IS_L6470)
579
-  L6470 stepperE0(E0_ENABLE_PIN);
580
-#endif
581
-#if ENABLED(E1_IS_L6470)
582
-  L6470 stepperE1(E1_ENABLE_PIN);
583
-#endif
584
-#if ENABLED(E2_IS_L6470)
585
-  L6470 stepperE2(E2_ENABLE_PIN);
586
-#endif
587
-#if ENABLED(E3_IS_L6470)
588
-  L6470 stepperE3(E3_ENABLE_PIN);
589
-#endif
590
-
591 559
 
592
-// init routine
593
-#if ENABLED(HAVE_L6470DRIVER)
594
-void L6470_init() {
560
+  // L6470 Stepper objects
595 561
   #if ENABLED(X_IS_L6470)
596
-    stepperX.init(X_K_VAL);
597
-    stepperX.softFree();
598
-    stepperX.setMicroSteps(X_MICROSTEPS);
599
-    stepperX.setOverCurrent(X_OVERCURRENT); //set overcurrent protection
600
-    stepperX.setStallCurrent(X_STALLCURRENT);
562
+    L6470 stepperX(X_ENABLE_PIN);
601 563
   #endif
602 564
   #if ENABLED(X2_IS_L6470)
603
-    stepperX2.init(X2_K_VAL);
604
-    stepperX2.softFree();
605
-    stepperX2.setMicroSteps(X2_MICROSTEPS);
606
-    stepperX2.setOverCurrent(X2_OVERCURRENT); //set overcurrent protection
607
-    stepperX2.setStallCurrent(X2_STALLCURRENT);
565
+    L6470 stepperX2(X2_ENABLE_PIN);
608 566
   #endif
609 567
   #if ENABLED(Y_IS_L6470)
610
-    stepperY.init(Y_K_VAL);
611
-    stepperY.softFree();
612
-    stepperY.setMicroSteps(Y_MICROSTEPS);
613
-    stepperY.setOverCurrent(Y_OVERCURRENT); //set overcurrent protection
614
-    stepperY.setStallCurrent(Y_STALLCURRENT);
568
+    L6470 stepperY(Y_ENABLE_PIN);
615 569
   #endif
616 570
   #if ENABLED(Y2_IS_L6470)
617
-    stepperY2.init(Y2_K_VAL);
618
-    stepperY2.softFree();
619
-    stepperY2.setMicroSteps(Y2_MICROSTEPS);
620
-    stepperY2.setOverCurrent(Y2_OVERCURRENT); //set overcurrent protection
621
-    stepperY2.setStallCurrent(Y2_STALLCURRENT);
571
+    L6470 stepperY2(Y2_ENABLE_PIN);
622 572
   #endif
623 573
   #if ENABLED(Z_IS_L6470)
624
-    stepperZ.init(Z_K_VAL);
625
-    stepperZ.softFree();
626
-    stepperZ.setMicroSteps(Z_MICROSTEPS);
627
-    stepperZ.setOverCurrent(Z_OVERCURRENT); //set overcurrent protection
628
-    stepperZ.setStallCurrent(Z_STALLCURRENT);
574
+    L6470 stepperZ(Z_ENABLE_PIN);
629 575
   #endif
630 576
   #if ENABLED(Z2_IS_L6470)
631
-    stepperZ2.init(Z2_K_VAL);
632
-    stepperZ2.softFree();
633
-    stepperZ2.setMicroSteps(Z2_MICROSTEPS);
634
-    stepperZ2.setOverCurrent(Z2_OVERCURRENT); //set overcurrent protection
635
-    stepperZ2.setStallCurrent(Z2_STALLCURRENT);
577
+    L6470 stepperZ2(Z2_ENABLE_PIN);
636 578
   #endif
637 579
   #if ENABLED(E0_IS_L6470)
638
-    stepperE0.init(E0_K_VAL);
639
-    stepperE0.softFree();
640
-    stepperE0.setMicroSteps(E0_MICROSTEPS);
641
-    stepperE0.setOverCurrent(E0_OVERCURRENT); //set overcurrent protection
642
-    stepperE0.setStallCurrent(E0_STALLCURRENT);
580
+    L6470 stepperE0(E0_ENABLE_PIN);
643 581
   #endif
644 582
   #if ENABLED(E1_IS_L6470)
645
-    stepperE1.init(E1_K_VAL);
646
-    stepperE1.softFree();
647
-    stepperE1.setMicroSteps(E1_MICROSTEPS);
648
-    stepperE1.setOverCurrent(E1_OVERCURRENT); //set overcurrent protection
649
-    stepperE1.setStallCurrent(E1_STALLCURRENT);
583
+    L6470 stepperE1(E1_ENABLE_PIN);
650 584
   #endif
651 585
   #if ENABLED(E2_IS_L6470)
652
-    stepperE2.init(E2_K_VAL);
653
-    stepperE2.softFree();
654
-    stepperE2.setMicroSteps(E2_MICROSTEPS);
655
-    stepperE2.setOverCurrent(E2_OVERCURRENT); //set overcurrent protection
656
-    stepperE2.setStallCurrent(E2_STALLCURRENT);
586
+    L6470 stepperE2(E2_ENABLE_PIN);
657 587
   #endif
658 588
   #if ENABLED(E3_IS_L6470)
659
-    stepperE3.init(E3_K_VAL);
660
-    stepperE3.softFree();
661
-    stepperE3.setMicroSteps(E3_MICROSTEPS);
662
-    stepperE3.setOverCurrent(E3_OVERCURRENT); //set overcurrent protection
663
-    stepperE3.setStallCurrent(E3_STALLCURRENT);
589
+    L6470 stepperE3(E3_ENABLE_PIN);
664 590
   #endif
665
-}
666
-#endif
591
+
592
+  #define _L6470_INIT(A) do{ \
593
+    stepper##A.init(A##_K_VAL); \
594
+    stepper##A.softFree(); \
595
+    stepper##A.setMicroSteps(A##_MICROSTEPS); \
596
+    stepper##A.setOverCurrent(A##_OVERCURRENT); \
597
+    stepper##A.setStallCurrent(A##_STALLCURRENT); \
598
+  } while(0)
599
+
600
+  void L6470_init() {
601
+    #if ENABLED(X_IS_L6470)
602
+      _L6470_INIT(X);
603
+    #endif
604
+    #if ENABLED(X2_IS_L6470)
605
+      _L6470_INIT(X2);
606
+    #endif
607
+    #if ENABLED(Y_IS_L6470)
608
+      _L6470_INIT(Y);
609
+    #endif
610
+    #if ENABLED(Y2_IS_L6470)
611
+      _L6470_INIT(Y2);
612
+    #endif
613
+    #if ENABLED(Z_IS_L6470)
614
+      _L6470_INIT(Z);
615
+    #endif
616
+    #if ENABLED(Z2_IS_L6470)
617
+      _L6470_INIT(Z2);
618
+    #endif
619
+    #if ENABLED(E0_IS_L6470)
620
+      _L6470_INIT(E0);
621
+    #endif
622
+    #if ENABLED(E1_IS_L6470)
623
+      _L6470_INIT(E1);
624
+    #endif
625
+    #if ENABLED(E2_IS_L6470)
626
+      _L6470_INIT(E2);
627
+    #endif
628
+    #if ENABLED(E3_IS_L6470)
629
+      _L6470_INIT(E3);
630
+    #endif
631
+  }
632
+
633
+#endif // HAVE_L6470DRIVER
667 634
 

Loading…
Zrušit
Uložit