|
@@ -36,19 +36,7 @@
|
36
|
36
|
#include <SPI.h>
|
37
|
37
|
|
38
|
38
|
enum StealthIndex : uint8_t { STEALTH_AXIS_XY, STEALTH_AXIS_Z, STEALTH_AXIS_E };
|
39
|
|
-#define _TMC_INIT_1(ST, STEALTH_INDEX) tmc_init(stepper##ST, ST##_CURRENT, ST##_MICROSTEPS)
|
40
|
|
-#define _TMC_INIT_2(ST, STEALTH_INDEX) tmc_init(stepper##ST, ST##_CURRENT, ST##_MICROSTEPS, stealthchop_by_axis[STEALTH_INDEX], ST##_HYBRID_THRESHOLD)
|
41
|
|
-#define _TMC_INIT_3(ST, STEALTH_INDEX) tmc_init(stepper##ST, ST##_CURRENT, ST##_MICROSTEPS, stealthchop_by_axis[STEALTH_INDEX], ST##_HYBRID_THRESHOLD, ST##_COOLSTEP_SPEED_THRESHOLD, ST##_COOLSTEP_LOWER_LOAD_THRESHOLD, ST##_COOLSTEP_UPPER_LOAD_THRESHOLD, ST##_COOLSTEP_SEUP, ST##_COOLSTEP_SEDN, ST##_COOLSTEP_SEIMIN)
|
42
|
|
-#define _TMC_INIT_TMC2660(ST, STEALTH_INDEX) _TMC_INIT_1(ST, STEALTH_INDEX)
|
43
|
|
-#define _TMC_INIT_TMC2160(ST, STEALTH_INDEX) _TMC_INIT_2(ST, STEALTH_INDEX)
|
44
|
|
-#define _TMC_INIT_TMC2208(ST, STEALTH_INDEX) _TMC_INIT_2(ST, STEALTH_INDEX)
|
45
|
|
-#define _TMC_INIT_TMC5130(ST, STEALTH_INDEX) _TMC_INIT_3(ST, STEALTH_INDEX)
|
46
|
|
-#define _TMC_INIT_TMC5160(ST, STEALTH_INDEX) _TMC_INIT_3(ST, STEALTH_INDEX)
|
47
|
|
-#define _TMC_INIT_TMC2130(ST, STEALTH_INDEX) _TMC_INIT_3(ST, STEALTH_INDEX)
|
48
|
|
-#define _TMC_INIT_TMC2209(ST, STEALTH_INDEX) _TMC_INIT_3(ST, STEALTH_INDEX)
|
49
|
|
-#define __TMC_INIT(DRV, ST, STEALTH_INDEX) _TMC_INIT_##DRV(ST, STEALTH_INDEX)
|
50
|
|
-#define _TMC_INIT(DRV, ST, STEALTH_INDEX) __TMC_INIT(DRV, ST, STEALTH_INDEX)
|
51
|
|
-#define TMC_INIT(ST, STEALTH_INDEX) _TMC_INIT(ST##_DRIVER_TYPE, ST, STEALTH_INDEX)
|
|
39
|
+#define TMC_INIT(ST, STEALTH_INDEX) tmc_init(stepper##ST, ST##_CURRENT, ST##_MICROSTEPS, ST##_HYBRID_THRESHOLD, stealthchop_by_axis[STEALTH_INDEX])
|
52
|
40
|
|
53
|
41
|
// IC = TMC model number
|
54
|
42
|
// ST = Stepper object letter
|
|
@@ -134,19 +122,7 @@ enum StealthIndex : uint8_t { STEALTH_AXIS_XY, STEALTH_AXIS_Z, STEALTH_AXIS_E };
|
134
|
122
|
|
135
|
123
|
#if HAS_DRIVER(TMC2130)
|
136
|
124
|
template<char AXIS_LETTER, char DRIVER_ID, AxisEnum AXIS_ID>
|
137
|
|
- void tmc_init(
|
138
|
|
- TMCMarlin<TMC2130Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID> &st,
|
139
|
|
- const uint16_t mA,
|
140
|
|
- const uint16_t microsteps,
|
141
|
|
- const bool stealth,
|
142
|
|
- const uint32_t hyb_thrs,
|
143
|
|
- const uint32_t cool_thrs,
|
144
|
|
- const uint8_t cool_semin,
|
145
|
|
- const uint8_t cool_semax,
|
146
|
|
- const uint8_t cool_seup,
|
147
|
|
- const uint8_t cool_sedn,
|
148
|
|
- const bool cool_seimin
|
149
|
|
- ) {
|
|
125
|
+ void tmc_init(TMCMarlin<TMC2130Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID> &st, const uint16_t mA, const uint16_t microsteps, const uint32_t hyb_thrs, const bool stealth) {
|
150
|
126
|
st.begin();
|
151
|
127
|
|
152
|
128
|
CHOPCONF_t chopconf{0};
|
|
@@ -181,28 +157,13 @@ enum StealthIndex : uint8_t { STEALTH_AXIS_XY, STEALTH_AXIS_Z, STEALTH_AXIS_E };
|
181
|
157
|
UNUSED(hyb_thrs);
|
182
|
158
|
#endif
|
183
|
159
|
|
184
|
|
- st.set_cool_thrs(cool_thrs); // (mm/s)
|
185
|
|
- COOLCONF_t coolconf{0};
|
186
|
|
- coolconf.semin = cool_semin;
|
187
|
|
- coolconf.semax = cool_semax;
|
188
|
|
- coolconf.seup = cool_seup;
|
189
|
|
- coolconf.sedn = cool_sedn;
|
190
|
|
- coolconf.seimin = cool_seimin;
|
191
|
|
- st.COOLCONF(coolconf.sr);
|
192
|
|
-
|
193
|
160
|
st.GSTAT(); // Clear GSTAT
|
194
|
161
|
}
|
195
|
162
|
#endif // TMC2130
|
196
|
163
|
|
197
|
164
|
#if HAS_DRIVER(TMC2160)
|
198
|
165
|
template<char AXIS_LETTER, char DRIVER_ID, AxisEnum AXIS_ID>
|
199
|
|
- void tmc_init(
|
200
|
|
- TMCMarlin<TMC2160Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID> &st,
|
201
|
|
- const uint16_t mA,
|
202
|
|
- const uint16_t microsteps,
|
203
|
|
- const bool stealth,
|
204
|
|
- const uint32_t hyb_thrs
|
205
|
|
- ) {
|
|
166
|
+ void tmc_init(TMCMarlin<TMC2160Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID> &st, const uint16_t mA, const uint16_t microsteps, const uint32_t hyb_thrs, const bool stealth) {
|
206
|
167
|
st.begin();
|
207
|
168
|
|
208
|
169
|
CHOPCONF_t chopconf{0};
|
|
@@ -479,13 +440,7 @@ enum StealthIndex : uint8_t { STEALTH_AXIS_XY, STEALTH_AXIS_Z, STEALTH_AXIS_E };
|
479
|
440
|
|
480
|
441
|
#if HAS_DRIVER(TMC2208)
|
481
|
442
|
template<char AXIS_LETTER, char DRIVER_ID, AxisEnum AXIS_ID>
|
482
|
|
- void tmc_init(
|
483
|
|
- TMCMarlin<TMC2208Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID> &st,
|
484
|
|
- const uint16_t mA,
|
485
|
|
- const uint16_t microsteps,
|
486
|
|
- const bool stealth,
|
487
|
|
- const uint32_t hyb_thrs
|
488
|
|
- ) {
|
|
443
|
+ void tmc_init(TMCMarlin<TMC2208Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID> &st, const uint16_t mA, const uint16_t microsteps, const uint32_t hyb_thrs, const bool stealth) {
|
489
|
444
|
TMC2208_n::GCONF_t gconf{0};
|
490
|
445
|
gconf.pdn_disable = true; // Use UART
|
491
|
446
|
gconf.mstep_reg_select = true; // Select microsteps with UART
|
|
@@ -533,19 +488,7 @@ enum StealthIndex : uint8_t { STEALTH_AXIS_XY, STEALTH_AXIS_Z, STEALTH_AXIS_E };
|
533
|
488
|
|
534
|
489
|
#if HAS_DRIVER(TMC2209)
|
535
|
490
|
template<char AXIS_LETTER, char DRIVER_ID, AxisEnum AXIS_ID>
|
536
|
|
- void tmc_init(
|
537
|
|
- TMCMarlin<TMC2209Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID> &st,
|
538
|
|
- const uint16_t mA,
|
539
|
|
- const uint16_t microsteps,
|
540
|
|
- const bool stealth,
|
541
|
|
- const uint32_t hyb_thrs,
|
542
|
|
- const uint32_t cool_thrs,
|
543
|
|
- const uint8_t cool_semin,
|
544
|
|
- const uint8_t cool_semax,
|
545
|
|
- const uint8_t cool_seup,
|
546
|
|
- const uint8_t cool_sedn,
|
547
|
|
- const bool cool_seimin
|
548
|
|
- ) {
|
|
491
|
+ void tmc_init(TMCMarlin<TMC2209Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID> &st, const uint16_t mA, const uint16_t microsteps, const uint32_t hyb_thrs, const bool stealth) {
|
549
|
492
|
TMC2208_n::GCONF_t gconf{0};
|
550
|
493
|
gconf.pdn_disable = true; // Use UART
|
551
|
494
|
gconf.mstep_reg_select = true; // Select microsteps with UART
|
|
@@ -586,15 +529,6 @@ enum StealthIndex : uint8_t { STEALTH_AXIS_XY, STEALTH_AXIS_Z, STEALTH_AXIS_E };
|
586
|
529
|
UNUSED(hyb_thrs);
|
587
|
530
|
#endif
|
588
|
531
|
|
589
|
|
- st.set_cool_thrs(cool_thrs); // (mm/s)
|
590
|
|
- COOLCONF_t coolconf{0};
|
591
|
|
- coolconf.semin = cool_semin;
|
592
|
|
- coolconf.semax = cool_semax;
|
593
|
|
- coolconf.seup = cool_seup;
|
594
|
|
- coolconf.sedn = cool_sedn;
|
595
|
|
- coolconf.seimin = cool_seimin;
|
596
|
|
- st.COOLCONF(coolconf.sr);
|
597
|
|
-
|
598
|
532
|
st.GSTAT(0b111); // Clear
|
599
|
533
|
delay(200);
|
600
|
534
|
}
|
|
@@ -602,11 +536,7 @@ enum StealthIndex : uint8_t { STEALTH_AXIS_XY, STEALTH_AXIS_Z, STEALTH_AXIS_E };
|
602
|
536
|
|
603
|
537
|
#if HAS_DRIVER(TMC2660)
|
604
|
538
|
template<char AXIS_LETTER, char DRIVER_ID, AxisEnum AXIS_ID>
|
605
|
|
- void tmc_init(
|
606
|
|
- TMCMarlin<TMC2660Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID> &st,
|
607
|
|
- const uint16_t mA,
|
608
|
|
- const uint16_t microsteps
|
609
|
|
- ) {
|
|
539
|
+ void tmc_init(TMCMarlin<TMC2660Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID> &st, const uint16_t mA, const uint16_t microsteps, const uint32_t, const bool) {
|
610
|
540
|
st.begin();
|
611
|
541
|
|
612
|
542
|
TMC2660_n::CHOPCONF_t chopconf{0};
|
|
@@ -633,19 +563,7 @@ enum StealthIndex : uint8_t { STEALTH_AXIS_XY, STEALTH_AXIS_Z, STEALTH_AXIS_E };
|
633
|
563
|
|
634
|
564
|
#if HAS_DRIVER(TMC5130)
|
635
|
565
|
template<char AXIS_LETTER, char DRIVER_ID, AxisEnum AXIS_ID>
|
636
|
|
- void tmc_init(
|
637
|
|
- TMCMarlin<TMC5130Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID> &st,
|
638
|
|
- const uint16_t mA,
|
639
|
|
- const uint16_t microsteps,
|
640
|
|
- const bool stealth,
|
641
|
|
- const uint32_t hyb_thrs,
|
642
|
|
- const uint32_t cool_thrs,
|
643
|
|
- const uint8_t cool_semin,
|
644
|
|
- const uint8_t cool_semax,
|
645
|
|
- const uint8_t cool_seup,
|
646
|
|
- const uint8_t cool_sedn,
|
647
|
|
- const bool cool_seimin
|
648
|
|
- ) {
|
|
566
|
+ void tmc_init(TMCMarlin<TMC5130Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID> &st, const uint16_t mA, const uint16_t microsteps, const uint32_t hyb_thrs, const bool stealth) {
|
649
|
567
|
st.begin();
|
650
|
568
|
|
651
|
569
|
CHOPCONF_t chopconf{0};
|
|
@@ -680,34 +598,13 @@ enum StealthIndex : uint8_t { STEALTH_AXIS_XY, STEALTH_AXIS_Z, STEALTH_AXIS_E };
|
680
|
598
|
UNUSED(hyb_thrs);
|
681
|
599
|
#endif
|
682
|
600
|
|
683
|
|
- st.set_cool_thrs(cool_thrs); // (mm/s)
|
684
|
|
- COOLCONF_t coolconf{0};
|
685
|
|
- coolconf.semin = cool_semin;
|
686
|
|
- coolconf.semax = cool_semax;
|
687
|
|
- coolconf.seup = cool_seup;
|
688
|
|
- coolconf.sedn = cool_sedn;
|
689
|
|
- coolconf.seimin = cool_seimin;
|
690
|
|
- st.COOLCONF(coolconf.sr);
|
691
|
|
-
|
692
|
601
|
st.GSTAT(); // Clear GSTAT
|
693
|
602
|
}
|
694
|
603
|
#endif // TMC5130
|
695
|
604
|
|
696
|
605
|
#if HAS_DRIVER(TMC5160)
|
697
|
606
|
template<char AXIS_LETTER, char DRIVER_ID, AxisEnum AXIS_ID>
|
698
|
|
- void tmc_init(
|
699
|
|
- TMCMarlin<TMC5160Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID> &st,
|
700
|
|
- const uint16_t mA,
|
701
|
|
- const uint16_t microsteps,
|
702
|
|
- const bool stealth,
|
703
|
|
- const uint32_t hyb_thrs,
|
704
|
|
- const uint32_t cool_thrs,
|
705
|
|
- const uint8_t cool_semin,
|
706
|
|
- const uint8_t cool_semax,
|
707
|
|
- const uint8_t cool_seup,
|
708
|
|
- const uint8_t cool_sedn,
|
709
|
|
- const bool cool_seimin
|
710
|
|
- ) {
|
|
607
|
+ void tmc_init(TMCMarlin<TMC5160Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID> &st, const uint16_t mA, const uint16_t microsteps, const uint32_t hyb_thrs, const bool stealth) {
|
711
|
608
|
st.begin();
|
712
|
609
|
|
713
|
610
|
CHOPCONF_t chopconf{0};
|
|
@@ -744,16 +641,6 @@ enum StealthIndex : uint8_t { STEALTH_AXIS_XY, STEALTH_AXIS_Z, STEALTH_AXIS_E };
|
744
|
641
|
#else
|
745
|
642
|
UNUSED(hyb_thrs);
|
746
|
643
|
#endif
|
747
|
|
-
|
748
|
|
- st.set_cool_thrs(cool_thrs); // (mm/s)
|
749
|
|
- COOLCONF_t coolconf{0};
|
750
|
|
- coolconf.semin = cool_semin;
|
751
|
|
- coolconf.semax = cool_semax;
|
752
|
|
- coolconf.seup = cool_seup;
|
753
|
|
- coolconf.sedn = cool_sedn;
|
754
|
|
- coolconf.seimin = cool_seimin;
|
755
|
|
- st.COOLCONF(coolconf.sr);
|
756
|
|
-
|
757
|
644
|
st.GSTAT(); // Clear GSTAT
|
758
|
645
|
}
|
759
|
646
|
#endif // TMC5160
|