Kaynağa Gözat

Refactor TMC-related macros and sanity checks (#16384)

Jason Smith 4 yıl önce
ebeveyn
işleme
4e1f2f89f6

+ 4
- 0
Marlin/src/HAL/HAL_DUE/inc/SanityCheck.h Dosyayı Görüntüle

@@ -55,3 +55,7 @@
55 55
 #if ENABLED(FAST_PWM_FAN)
56 56
   #error "FAST_PWM_FAN is not yet implemented for this platform."
57 57
 #endif
58
+
59
+#if TMC_HAS_SW_SERIAL
60
+  #error "TMC220x Software Serial is not supported on this platform."
61
+#endif

+ 4
- 0
Marlin/src/HAL/HAL_ESP32/inc/SanityCheck.h Dosyayı Görüntüle

@@ -28,3 +28,7 @@
28 28
 #if ENABLED(FAST_PWM_FAN)
29 29
   #error "FAST_PWM_FAN is not yet implemented for this platform."
30 30
 #endif
31
+
32
+#if TMC_HAS_SW_SERIAL
33
+  #error "TMC220x Software Serial is not supported on this platform."
34
+#endif

+ 4
- 0
Marlin/src/HAL/HAL_LINUX/inc/SanityCheck.h Dosyayı Görüntüle

@@ -33,3 +33,7 @@
33 33
 #if ENABLED(FAST_PWM_FAN)
34 34
   #error "FAST_PWM_FAN is not yet implemented for this platform."
35 35
 #endif
36
+
37
+#if TMC_HAS_SW_SERIAL
38
+  #error "TMC220x Software Serial is not supported on this platform."
39
+#endif

+ 4
- 0
Marlin/src/HAL/HAL_SAMD51/inc/SanityCheck.h Dosyayı Görüntüle

@@ -46,3 +46,7 @@
46 46
 #if ENABLED(EEPROM_SETTINGS) && NONE(SPI_EEPROM, I2C_EEPROM)
47 47
   #warning "Did you activate the SmartEEPROM? See https://github.com/GMagician/SAMD51-SmartEEprom-Activator"
48 48
 #endif
49
+
50
+#if TMC_HAS_SW_SERIAL
51
+  #error "TMC220x Software Serial is not supported on this platform."
52
+#endif

+ 2
- 8
Marlin/src/HAL/HAL_STM32/HAL.cpp Dosyayı Görüntüle

@@ -28,13 +28,7 @@
28 28
 #include "../../inc/MarlinConfig.h"
29 29
 #include "../shared/Delay.h"
30 30
 
31
-#if (__cplusplus == 201703L) && defined(__has_include)
32
-  #define HAS_SWSERIAL __has_include(<SoftwareSerial.h>)
33
-#else
34
-  #define HAS_SWSERIAL HAS_TMC220x
35
-#endif
36
-
37
-#if HAS_SWSERIAL
31
+#if TMC_HAS_SW_SERIAL
38 32
   #include "SoftwareSerial.h"
39 33
 #endif
40 34
 
@@ -93,7 +87,7 @@ void HAL_init() {
93 87
   while (!LL_PWR_IsActiveFlag_BRR());
94 88
   #endif // EEPROM_EMULATED_SRAM
95 89
 
96
-  #if HAS_SWSERIAL
90
+  #if TMC_HAS_SW_SERIAL
97 91
     SoftwareSerial::setInterruptPriority(SWSERIAL_TIMER_IRQ_PRIO, 0);
98 92
   #endif
99 93
 }

+ 1
- 1
Marlin/src/HAL/HAL_STM32F1/inc/SanityCheck.h Dosyayı Görüntüle

@@ -37,7 +37,7 @@
37 37
   #error "FAST_PWM_FAN is not yet implemented for this platform."
38 38
 #endif
39 39
 
40
-#if !defined(HAVE_SW_SERIAL) && HAS_TMC220x
40
+#if !defined(HAVE_SW_SERIAL) && TMC_HAS_SW_SERIAL
41 41
   #warning "With TMC2208/9 consider using SoftwareSerialM with HAVE_SW_SERIAL and appropriate SS_TIMER."
42 42
   #error "Missing SoftwareSerial implementation."
43 43
 #endif

+ 4
- 0
Marlin/src/HAL/HAL_STM32_F4_F7/inc/SanityCheck.h Dosyayı Görüntüle

@@ -35,3 +35,7 @@
35 35
 #if ENABLED(FAST_PWM_FAN)
36 36
   #error "FAST_PWM_FAN is not yet implemented for this platform."
37 37
 #endif
38
+
39
+#if TMC_HAS_SW_SERIAL
40
+  #error "TMC220x Software Serial is not supported on this platform."
41
+#endif

+ 4
- 0
Marlin/src/HAL/HAL_TEENSY31_32/inc/SanityCheck.h Dosyayı Görüntüle

@@ -32,3 +32,7 @@
32 32
 #if ENABLED(FAST_PWM_FAN)
33 33
   #error "FAST_PWM_FAN is not yet implemented for this platform."
34 34
 #endif
35
+
36
+#if TMC_HAS_SW_SERIAL
37
+  #error "TMC220x Software Serial is not supported on this platform."
38
+#endif

+ 4
- 0
Marlin/src/HAL/HAL_TEENSY35_36/inc/SanityCheck.h Dosyayı Görüntüle

@@ -32,3 +32,7 @@
32 32
 #if ENABLED(FAST_PWM_FAN)
33 33
   #error "FAST_PWM_FAN is not yet implemented for this platform."
34 34
 #endif
35
+
36
+#if TMC_HAS_SW_SERIAL
37
+  #error "TMC220x Software Serial is not supported on this platform."
38
+#endif

+ 27
- 13
Marlin/src/core/drivers.h Dosyayı Görüntüle

@@ -86,6 +86,18 @@
86 86
                        || HAS_DRIVER(TMC5130) \
87 87
                        || HAS_DRIVER(TMC5160) )
88 88
 
89
+#define HAS_TRINAMIC_STANDALONE (    HAS_DRIVER(TMC2130_STANDALONE) \
90
+                                  || HAS_DRIVER(TMC2208_STANDALONE) \
91
+                                  || HAS_DRIVER(TMC2209_STANDALONE) \
92
+                                  || HAS_DRIVER(TMC26X_STANDALONE)  \
93
+                                  || HAS_DRIVER(TMC2660_STANDALONE) \
94
+                                  || HAS_DRIVER(TMC5130_STANDALONE) \
95
+                                  || HAS_DRIVER(TMC5160_STANDALONE) \
96
+                                  || HAS_DRIVER(TMC2160_STANDALONE) )
97
+
98
+#define HAS_TMCX1X0 (    HAS_DRIVER(TMC2130) || HAS_DRIVER(TMC2160) \
99
+                      || HAS_DRIVER(TMC5130) || HAS_DRIVER(TMC5160))
100
+
89 101
 #define HAS_TMC220x (HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209))
90 102
 
91 103
 #define AXIS_IS_TMC(A)   (    AXIS_DRIVER_TYPE(A,TMC2130) \
@@ -107,6 +119,8 @@
107 119
 #define AXIS_HAS_UART(A) (    AXIS_DRIVER_TYPE(A,TMC2208) \
108 120
                            || AXIS_DRIVER_TYPE(A,TMC2209) )
109 121
 
122
+#define AXIS_HAS_SW_SERIAL(A) ((AXIS_HAS_UART(A) && !defined(A##_HARDWARE_SERIAL)))
123
+
110 124
 #define AXIS_HAS_STALLGUARD(A)   (    AXIS_DRIVER_TYPE(A,TMC2130) \
111 125
                                    || AXIS_DRIVER_TYPE(A,TMC2160) \
112 126
                                    || AXIS_DRIVER_TYPE(A,TMC2209) \
@@ -121,19 +135,19 @@
121 135
                                    || AXIS_DRIVER_TYPE(A,TMC5130) \
122 136
                                    || AXIS_DRIVER_TYPE(A,TMC5160) )
123 137
 
124
-#define HAS_TMC_E_DRIVER (    HAS_E_DRIVER(TMC2130) \
125
-                           || HAS_E_DRIVER(TMC2160) \
126
-                           || HAS_E_DRIVER(TMC2660) \
127
-                           || HAS_E_DRIVER(TMC2209) \
128
-                           || HAS_E_DRIVER(TMC5130) \
129
-                           || HAS_E_DRIVER(TMC5160) )
130
-
131
-#define HAS_TMC_STANDALONE_E_DRIVER  (    HAS_E_DRIVER(TMC2130_STANDALONE) \
132
-                                       || HAS_E_DRIVER(TMC2160_STANDALONE) \
133
-                                       || HAS_E_DRIVER(TMC2660_STANDALONE) \
134
-                                       || HAS_E_DRIVER(TMC2209_STANDALONE) \
135
-                                       || HAS_E_DRIVER(TMC5130_STANDALONE) \
136
-                                       || HAS_E_DRIVER(TMC5160_STANDALONE) )
138
+#define ANY_AXIS_HAS(T) (    AXIS_HAS_##T(X)  || AXIS_HAS_##T(X2) \
139
+                          || AXIS_HAS_##T(Y)  || AXIS_HAS_##T(Y2) \
140
+                          || AXIS_HAS_##T(Z)  || AXIS_HAS_##T(Z2) \
141
+                          || AXIS_HAS_##T(Z3) \
142
+                          || AXIS_HAS_##T(E0) || AXIS_HAS_##T(E1) \
143
+                          || AXIS_HAS_##T(E2) || AXIS_HAS_##T(E3) \
144
+                          || AXIS_HAS_##T(E4) || AXIS_HAS_##T(E5) )
145
+
146
+#define HAS_STEALTHCHOP    ANY_AXIS_HAS(STEALTHCHOP)
147
+#define HAS_STALLGUARD     ANY_AXIS_HAS(STALLGUARD)
148
+#define TMC_HAS_SPI        ANY_AXIS_HAS(SPI)
149
+#define TMC_HAS_SW_SERIAL  ANY_AXIS_HAS(SW_SERIAL)
150
+
137 151
 //
138 152
 // Stretching 'drivers.h' to include LPC/SAMD51 SD options
139 153
 //

+ 1
- 8
Marlin/src/inc/Conditionals_post.h Dosyayı Görüntüle

@@ -556,8 +556,6 @@
556 556
  *       Preserve this ordering when adding new drivers.
557 557
  */
558 558
 
559
-#define TRINAMICS (HAS_TRINAMIC || HAS_DRIVER(TMC2130_STANDALONE) || HAS_DRIVER(TMC2208_STANDALONE) || HAS_DRIVER(TMC2209_STANDALONE) || HAS_DRIVER(TMC26X_STANDALONE) || HAS_DRIVER(TMC2660_STANDALONE) || HAS_DRIVER(TMC5130_STANDALONE) || HAS_DRIVER(TMC5160_STANDALONE) || HAS_DRIVER(TMC2160_STANDALONE))
560
-
561 559
 #ifndef MINIMUM_STEPPER_POST_DIR_DELAY
562 560
   #if HAS_DRIVER(TB6560)
563 561
     #define MINIMUM_STEPPER_POST_DIR_DELAY 15000
@@ -571,7 +569,7 @@
571 569
     #define MINIMUM_STEPPER_POST_DIR_DELAY 400
572 570
   #elif HAS_DRIVER(A4988)
573 571
     #define MINIMUM_STEPPER_POST_DIR_DELAY 200
574
-  #elif TRINAMICS
572
+  #elif HAS_TRINAMIC || HAS_TRINAMIC_STANDALONE
575 573
     #define MINIMUM_STEPPER_POST_DIR_DELAY 20
576 574
   #else
577 575
     #define MINIMUM_STEPPER_POST_DIR_DELAY 0   // Expect at least 10µS since one Stepper ISR must transpire
@@ -970,11 +968,6 @@
970 968
 
971 969
 // Trinamic Stepper Drivers
972 970
 #if HAS_TRINAMIC
973
-  #define HAS_TMCX1X0       (HAS_DRIVER(TMC2130) || HAS_DRIVER(TMC2160) || HAS_DRIVER(TMC5130) || HAS_DRIVER(TMC5160))
974
-  #define TMC_HAS_SPI       (HAS_TMCX1X0 || HAS_DRIVER(TMC2660))
975
-  #define HAS_STALLGUARD    (HAS_TMCX1X0 || HAS_DRIVER(TMC2209) || HAS_DRIVER(TMC2660))
976
-  #define HAS_STEALTHCHOP   (HAS_TMCX1X0 || HAS_TMC220x)
977
-
978 971
   #define STEALTHCHOP_ENABLED ANY(STEALTHCHOP_XY, STEALTHCHOP_Z, STEALTHCHOP_E)
979 972
   #define USE_SENSORLESS EITHER(SENSORLESS_HOMING, SENSORLESS_PROBING)
980 973
   // Disable Z axis sensorless homing if a probe is used to home the Z axis

+ 0
- 28
Marlin/src/inc/SanityCheck.h Dosyayı Görüntüle

@@ -2018,34 +2018,6 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
2018 2018
 #endif
2019 2019
 #undef INVALID_TMC_ADDRESS
2020 2020
 
2021
-/**
2022
- * TMC2208/2209 software UART and ENDSTOP_INTERRUPTS both use pin change interrupts (PCI)
2023
- */
2024
-#if HAS_TMC220x && !defined(TARGET_LPC1768) && ENABLED(ENDSTOP_INTERRUPTS_FEATURE) && !defined(TARGET_STM32F1) && !defined(TARGET_STM32F4) && !( \
2025
-       defined(X_HARDWARE_SERIAL ) || defined(X2_HARDWARE_SERIAL) \
2026
-    || defined(Y_HARDWARE_SERIAL ) || defined(Y2_HARDWARE_SERIAL) \
2027
-    || defined(Z_HARDWARE_SERIAL ) || defined(Z2_HARDWARE_SERIAL) \
2028
-    || defined(Z3_HARDWARE_SERIAL) || defined(E0_HARDWARE_SERIAL) \
2029
-    || defined(E1_HARDWARE_SERIAL) || defined(E2_HARDWARE_SERIAL) \
2030
-    || defined(E3_HARDWARE_SERIAL) || defined(E4_HARDWARE_SERIAL) \
2031
-    || defined(E5_HARDWARE_SERIAL) )
2032
-  #error "Select hardware UART for TMC2208 to use both TMC2208 and ENDSTOP_INTERRUPTS_FEATURE."
2033
-#endif
2034
-
2035
-/**
2036
- * TMC2208/2209 software UART is only supported on AVR, LPC, STM32F1 and STM32F4
2037
- */
2038
-#if HAS_TMC220x && !defined(__AVR__) && !defined(TARGET_LPC1768) && !defined(TARGET_STM32F1) && !defined(TARGET_STM32F4) && !( \
2039
-       defined(X_HARDWARE_SERIAL ) || defined(X2_HARDWARE_SERIAL) \
2040
-    || defined(Y_HARDWARE_SERIAL ) || defined(Y2_HARDWARE_SERIAL) \
2041
-    || defined(Z_HARDWARE_SERIAL ) || defined(Z2_HARDWARE_SERIAL) \
2042
-    || defined(Z3_HARDWARE_SERIAL) || defined(E0_HARDWARE_SERIAL) \
2043
-    || defined(E1_HARDWARE_SERIAL) || defined(E2_HARDWARE_SERIAL) \
2044
-    || defined(E3_HARDWARE_SERIAL) || defined(E4_HARDWARE_SERIAL) \
2045
-    || defined(E5_HARDWARE_SERIAL) )
2046
-  #error "TMC2208 Software Serial is supported only on AVR, LPC1768, STM32F1 and STM32F4 platforms."
2047
-#endif
2048
-
2049 2021
 #if ENABLED(DELTA) && (ENABLED(STEALTHCHOP_XY) != ENABLED(STEALTHCHOP_Z))
2050 2022
   #error "STEALTHCHOP_XY and STEALTHCHOP_Z must be the same on DELTA."
2051 2023
 #endif

Loading…
İptal
Kaydet