From 982197b162fe8574d19f526695dc7ffe87efda1e Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sun, 8 Mar 2020 16:31:37 -0500 Subject: [PATCH] Fixes for Z4 axis, CS pins (#17097) --- Marlin/src/inc/SanityCheck.h | 39 ++++++++++++++++++------------------ Marlin/src/pins/pins.h | 16 +++++++-------- 2 files changed, 28 insertions(+), 27 deletions(-) diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 4c9af7c790..ab36dd231c 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -2088,6 +2088,8 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS #error "An SPI driven TMC driver on Z2 requires Z2_CS_PIN." #elif INVALID_TMC_SPI(Z3) #error "An SPI driven TMC driver on Z3 requires Z3_CS_PIN." +#elif INVALID_TMC_SPI(Z4) + #error "An SPI driven TMC driver on Z4 requires Z4_CS_PIN." #elif INVALID_TMC_SPI(E0) #error "An SPI driven TMC driver on E0 requires E0_CS_PIN." #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 #error "TMC2208 or TMC2209 on Z2 requires Z2_HARDWARE_SERIAL or Z2_SERIAL_(RX|TX)_PIN." #elif INVALID_TMC_UART(Z3) #error "TMC2208 or TMC2209 on Z3 requires Z3_HARDWARE_SERIAL or Z3_SERIAL_(RX|TX)_PIN." +#elif INVALID_TMC_UART(Z4) + #error "TMC2208 or TMC2209 on Z4 requires Z4_HARDWARE_SERIAL or Z4_SERIAL_(RX|TX)_PIN." #elif INVALID_TMC_UART(E0) #error "TMC2208 or TMC2209 on E0 requires E0_HARDWARE_SERIAL or E0_SERIAL_(RX|TX)_PIN." #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 INVALID_TMC_ADDRESS(Z2); #elif AXIS_DRIVER_TYPE_Z3(TMC2209) INVALID_TMC_ADDRESS(Z3); +#elif AXIS_DRIVER_TYPE_Z4(TMC2209) + INVALID_TMC_ADDRESS(Z4); #elif AXIS_DRIVER_TYPE_E0(TMC2209) INVALID_TMC_ADDRESS(E0); #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 #error "STEALTHCHOP requires TMC2130, TMC2160, TMC2208, TMC2209, or TMC5160 stepper drivers." #endif +/** + * TMC SPI Chaining + */ #define IN_CHAIN(A) ((A##_CHAIN_POS > 0) && !HAS_L64XX) -// TMC SPI Chaining -#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) - #if (IN_CHAIN(X) && !PIN_EXISTS(X_CS) ) || (IN_CHAIN(Y) && !PIN_EXISTS(Y_CS) ) \ - || (IN_CHAIN(Z) && !PIN_EXISTS(Z_CS) ) || (IN_CHAIN(X2) && !PIN_EXISTS(X2_CS)) \ - || (IN_CHAIN(Y2) && !PIN_EXISTS(Y2_CS)) || (IN_CHAIN(Z2) && !PIN_EXISTS(Z2_CS)) \ - || (IN_CHAIN(Z3) && !PIN_EXISTS(Z3_CS)) || (IN_CHAIN(E0) && !PIN_EXISTS(E0_CS)) \ - || (IN_CHAIN(E1) && !PIN_EXISTS(E1_CS)) || (IN_CHAIN(E2) && !PIN_EXISTS(E2_CS)) \ - || (IN_CHAIN(E3) && !PIN_EXISTS(E3_CS)) || (IN_CHAIN(E4) && !PIN_EXISTS(E4_CS)) \ - || (IN_CHAIN(E5) && !PIN_EXISTS(E5_CS)) || (IN_CHAIN(E6) && !PIN_EXISTS(E6_CS)) \ - || (IN_CHAIN(E7) && !PIN_EXISTS(E7_CS)) +#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) \ + || IN_CHAIN(E0) || IN_CHAIN(E1) || IN_CHAIN(E2) || IN_CHAIN(E3) || IN_CHAIN(E4) || IN_CHAIN(E5) || IN_CHAIN(E6) || IN_CHAIN(E7) + #define BAD_CHAIN(A) (IN_CHAIN(A) && !PIN_EXISTS(A##_CS)) + #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) \ + || BAD_CHAIN(E0) || BAD_CHAIN(E1) || BAD_CHAIN(E2) || BAD_CHAIN(E3) || BAD_CHAIN(E4) || BAD_CHAIN(E5) || BAD_CHAIN(E6) || BAD_CHAIN(E7) #error "All chained TMC drivers need a CS pin." #else #if IN_CHAIN(X) @@ -2372,18 +2376,15 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS #elif IN_CHAIN(E7) #define CS_COMPARE E7_CS_PIN #endif - #if (IN_CHAIN(X) && X_CS_PIN != CS_COMPARE) || (IN_CHAIN(Y) && Y_CS_PIN != CS_COMPARE) \ - || (IN_CHAIN(Z) && Z_CS_PIN != CS_COMPARE) || (IN_CHAIN(X2) && X2_CS_PIN != CS_COMPARE) \ - || (IN_CHAIN(Y2) && Y2_CS_PIN != CS_COMPARE) || (IN_CHAIN(Z2) && Z2_CS_PIN != CS_COMPARE) \ - || (IN_CHAIN(Z3) && Z3_CS_PIN != CS_COMPARE) || (IN_CHAIN(E0) && E0_CS_PIN != CS_COMPARE) \ - || (IN_CHAIN(E1) && E1_CS_PIN != CS_COMPARE) || (IN_CHAIN(E2) && E2_CS_PIN != CS_COMPARE) \ - || (IN_CHAIN(E3) && E3_CS_PIN != CS_COMPARE) || (IN_CHAIN(E4) && E4_CS_PIN != CS_COMPARE) \ - || (IN_CHAIN(E5) && E5_CS_PIN != CS_COMPARE) || (IN_CHAIN(E6) && E6_CS_PIN != CS_COMPARE) \ - || (IN_CHAIN(E7) && E7_CS_PIN != CS_COMPARE) + #define BAD_CS_PIN(A) (IN_CHAIN(A) && A##_CS_PIN != CS_COMPARE) + #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) \ + || 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) #error "All chained TMC drivers must use the same CS pin." #endif + #undef BAD_CS_PIN + #undef CS_COMPARE #endif - #undef CS_COMPARE + #undef BAD_CHAIN #endif #undef IN_CHAIN diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h index a3b14e22aa..64b9e85ba8 100644 --- a/Marlin/src/pins/pins.h +++ b/Marlin/src/pins/pins.h @@ -874,28 +874,28 @@ #if !AXIS_HAS_SPI(Z) #undef Z_CS_PIN #endif -#if !AXIS_HAS_SPI(E0) +#if E_STEPPERS && !AXIS_HAS_SPI(E0) #undef E0_CS_PIN #endif -#if !AXIS_HAS_SPI(E1) +#if E_STEPPERS > 1 && !AXIS_HAS_SPI(E1) #undef E1_CS_PIN #endif -#if !AXIS_HAS_SPI(E2) +#if E_STEPPERS > 2 && !AXIS_HAS_SPI(E2) #undef E2_CS_PIN #endif -#if !AXIS_HAS_SPI(E3) +#if E_STEPPERS > 3 && !AXIS_HAS_SPI(E3) #undef E3_CS_PIN #endif -#if !AXIS_HAS_SPI(E4) +#if E_STEPPERS > 4 && !AXIS_HAS_SPI(E4) #undef E4_CS_PIN #endif -#if !AXIS_HAS_SPI(E5) +#if E_STEPPERS > 5 && !AXIS_HAS_SPI(E5) #undef E5_CS_PIN #endif -#if !AXIS_HAS_SPI(E6) +#if E_STEPPERS > 6 && !AXIS_HAS_SPI(E6) #undef E6_CS_PIN #endif -#if !AXIS_HAS_SPI(E7) +#if E_STEPPERS > 7 && !AXIS_HAS_SPI(E7) #undef E7_CS_PIN #endif