|
@@ -2088,6 +2088,8 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
|
2088
|
2088
|
#error "An SPI driven TMC driver on Z2 requires Z2_CS_PIN."
|
2089
|
2089
|
#elif INVALID_TMC_SPI(Z3)
|
2090
|
2090
|
#error "An SPI driven TMC driver on Z3 requires Z3_CS_PIN."
|
|
2091
|
+#elif INVALID_TMC_SPI(Z4)
|
|
2092
|
+ #error "An SPI driven TMC driver on Z4 requires Z4_CS_PIN."
|
2091
|
2093
|
#elif INVALID_TMC_SPI(E0)
|
2092
|
2094
|
#error "An SPI driven TMC driver on E0 requires E0_CS_PIN."
|
2093
|
2095
|
#elif INVALID_TMC_SPI(E1)
|
|
@@ -2125,6 +2127,8 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
|
2125
|
2127
|
#error "TMC2208 or TMC2209 on Z2 requires Z2_HARDWARE_SERIAL or Z2_SERIAL_(RX|TX)_PIN."
|
2126
|
2128
|
#elif INVALID_TMC_UART(Z3)
|
2127
|
2129
|
#error "TMC2208 or TMC2209 on Z3 requires Z3_HARDWARE_SERIAL or Z3_SERIAL_(RX|TX)_PIN."
|
|
2130
|
+#elif INVALID_TMC_UART(Z4)
|
|
2131
|
+ #error "TMC2208 or TMC2209 on Z4 requires Z4_HARDWARE_SERIAL or Z4_SERIAL_(RX|TX)_PIN."
|
2128
|
2132
|
#elif INVALID_TMC_UART(E0)
|
2129
|
2133
|
#error "TMC2208 or TMC2209 on E0 requires E0_HARDWARE_SERIAL or E0_SERIAL_(RX|TX)_PIN."
|
2130
|
2134
|
#elif INVALID_TMC_UART(E1)
|
|
@@ -2162,6 +2166,8 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
|
2162
|
2166
|
INVALID_TMC_ADDRESS(Z2);
|
2163
|
2167
|
#elif AXIS_DRIVER_TYPE_Z3(TMC2209)
|
2164
|
2168
|
INVALID_TMC_ADDRESS(Z3);
|
|
2169
|
+#elif AXIS_DRIVER_TYPE_Z4(TMC2209)
|
|
2170
|
+ INVALID_TMC_ADDRESS(Z4);
|
2165
|
2171
|
#elif AXIS_DRIVER_TYPE_E0(TMC2209)
|
2166
|
2172
|
INVALID_TMC_ADDRESS(E0);
|
2167
|
2173
|
#elif AXIS_DRIVER_TYPE_E1(TMC2209)
|
|
@@ -2328,17 +2334,15 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
|
2328
|
2334
|
#error "STEALTHCHOP requires TMC2130, TMC2160, TMC2208, TMC2209, or TMC5160 stepper drivers."
|
2329
|
2335
|
#endif
|
2330
|
2336
|
|
|
2337
|
+/**
|
|
2338
|
+ * TMC SPI Chaining
|
|
2339
|
+ */
|
2331
|
2340
|
#define IN_CHAIN(A) ((A##_CHAIN_POS > 0) && !HAS_L64XX)
|
2332
|
|
-// TMC SPI Chaining
|
2333
|
|
-#if IN_CHAIN(X) || IN_CHAIN(Y) || IN_CHAIN(Z) || IN_CHAIN(X2) || IN_CHAIN(Y2) || IN_CHAIN(Z2) || IN_CHAIN(Z3) || IN_CHAIN(E0) || IN_CHAIN(E1) || IN_CHAIN(E2) || IN_CHAIN(E3) || IN_CHAIN(E4) || IN_CHAIN(E5)
|
2334
|
|
- #if (IN_CHAIN(X) && !PIN_EXISTS(X_CS) ) || (IN_CHAIN(Y) && !PIN_EXISTS(Y_CS) ) \
|
2335
|
|
- || (IN_CHAIN(Z) && !PIN_EXISTS(Z_CS) ) || (IN_CHAIN(X2) && !PIN_EXISTS(X2_CS)) \
|
2336
|
|
- || (IN_CHAIN(Y2) && !PIN_EXISTS(Y2_CS)) || (IN_CHAIN(Z2) && !PIN_EXISTS(Z2_CS)) \
|
2337
|
|
- || (IN_CHAIN(Z3) && !PIN_EXISTS(Z3_CS)) || (IN_CHAIN(E0) && !PIN_EXISTS(E0_CS)) \
|
2338
|
|
- || (IN_CHAIN(E1) && !PIN_EXISTS(E1_CS)) || (IN_CHAIN(E2) && !PIN_EXISTS(E2_CS)) \
|
2339
|
|
- || (IN_CHAIN(E3) && !PIN_EXISTS(E3_CS)) || (IN_CHAIN(E4) && !PIN_EXISTS(E4_CS)) \
|
2340
|
|
- || (IN_CHAIN(E5) && !PIN_EXISTS(E5_CS)) || (IN_CHAIN(E6) && !PIN_EXISTS(E6_CS)) \
|
2341
|
|
- || (IN_CHAIN(E7) && !PIN_EXISTS(E7_CS))
|
|
2341
|
+#if IN_CHAIN(X ) || IN_CHAIN(Y ) || IN_CHAIN(Z ) || IN_CHAIN(X2) || IN_CHAIN(Y2) || IN_CHAIN(Z2) || IN_CHAIN(Z3) || IN_CHAIN(Z4) \
|
|
2342
|
+ || IN_CHAIN(E0) || IN_CHAIN(E1) || IN_CHAIN(E2) || IN_CHAIN(E3) || IN_CHAIN(E4) || IN_CHAIN(E5) || IN_CHAIN(E6) || IN_CHAIN(E7)
|
|
2343
|
+ #define BAD_CHAIN(A) (IN_CHAIN(A) && !PIN_EXISTS(A##_CS))
|
|
2344
|
+ #if BAD_CHAIN(X ) || BAD_CHAIN(Y ) || BAD_CHAIN(Z ) || BAD_CHAIN(X2) || BAD_CHAIN(Y2) || BAD_CHAIN(Z2) || BAD_CHAIN(Z3) || BAD_CHAIN(Z4) \
|
|
2345
|
+ || BAD_CHAIN(E0) || BAD_CHAIN(E1) || BAD_CHAIN(E2) || BAD_CHAIN(E3) || BAD_CHAIN(E4) || BAD_CHAIN(E5) || BAD_CHAIN(E6) || BAD_CHAIN(E7)
|
2342
|
2346
|
#error "All chained TMC drivers need a CS pin."
|
2343
|
2347
|
#else
|
2344
|
2348
|
#if IN_CHAIN(X)
|
|
@@ -2372,18 +2376,15 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
|
2372
|
2376
|
#elif IN_CHAIN(E7)
|
2373
|
2377
|
#define CS_COMPARE E7_CS_PIN
|
2374
|
2378
|
#endif
|
2375
|
|
- #if (IN_CHAIN(X) && X_CS_PIN != CS_COMPARE) || (IN_CHAIN(Y) && Y_CS_PIN != CS_COMPARE) \
|
2376
|
|
- || (IN_CHAIN(Z) && Z_CS_PIN != CS_COMPARE) || (IN_CHAIN(X2) && X2_CS_PIN != CS_COMPARE) \
|
2377
|
|
- || (IN_CHAIN(Y2) && Y2_CS_PIN != CS_COMPARE) || (IN_CHAIN(Z2) && Z2_CS_PIN != CS_COMPARE) \
|
2378
|
|
- || (IN_CHAIN(Z3) && Z3_CS_PIN != CS_COMPARE) || (IN_CHAIN(E0) && E0_CS_PIN != CS_COMPARE) \
|
2379
|
|
- || (IN_CHAIN(E1) && E1_CS_PIN != CS_COMPARE) || (IN_CHAIN(E2) && E2_CS_PIN != CS_COMPARE) \
|
2380
|
|
- || (IN_CHAIN(E3) && E3_CS_PIN != CS_COMPARE) || (IN_CHAIN(E4) && E4_CS_PIN != CS_COMPARE) \
|
2381
|
|
- || (IN_CHAIN(E5) && E5_CS_PIN != CS_COMPARE) || (IN_CHAIN(E6) && E6_CS_PIN != CS_COMPARE) \
|
2382
|
|
- || (IN_CHAIN(E7) && E7_CS_PIN != CS_COMPARE)
|
|
2379
|
+ #define BAD_CS_PIN(A) (IN_CHAIN(A) && A##_CS_PIN != CS_COMPARE)
|
|
2380
|
+ #if BAD_CS_PIN(X ) || BAD_CS_PIN(Y ) || BAD_CS_PIN(Z ) || BAD_CS_PIN(X2) || BAD_CS_PIN(Y2) || BAD_CS_PIN(Z2) || BAD_CS_PIN(Z3) || BAD_CS_PIN(Z4) \
|
|
2381
|
+ || BAD_CS_PIN(E0) || BAD_CS_PIN(E1) || BAD_CS_PIN(E2) || BAD_CS_PIN(E3) || BAD_CS_PIN(E4) || BAD_CS_PIN(E5) || BAD_CS_PIN(E6) || BAD_CS_PIN(E7)
|
2383
|
2382
|
#error "All chained TMC drivers must use the same CS pin."
|
2384
|
2383
|
#endif
|
|
2384
|
+ #undef BAD_CS_PIN
|
|
2385
|
+ #undef CS_COMPARE
|
2385
|
2386
|
#endif
|
2386
|
|
- #undef CS_COMPARE
|
|
2387
|
+ #undef BAD_CHAIN
|
2387
|
2388
|
#endif
|
2388
|
2389
|
#undef IN_CHAIN
|
2389
|
2390
|
|