SPI chaining with TMCStepper simplified interface (#15179)

This commit is contained in:
Bob Kuhn
2019-09-29 05:47:20 -05:00
committed by Scott Lahteine
parent 4564ad2920
commit 178dcd6fd8
107 changed files with 2722 additions and 2817 deletions

View File

@ -44,9 +44,9 @@ enum StealthIndex : uint8_t { STEALTH_AXIS_XY, STEALTH_AXIS_Z, STEALTH_AXIS_E };
// AI = Axis Enum Index
// SWHW = SW/SH UART selection
#if ENABLED(TMC_USE_SW_SPI)
#define __TMC_SPI_DEFINE(IC, ST, L, AI) TMCMarlin<IC##Stepper, L, AI> stepper##ST(ST##_CS_PIN, ST##_RSENSE, TMC_SW_MOSI, TMC_SW_MISO, TMC_SW_SCK)
#define __TMC_SPI_DEFINE(IC, ST, L, AI) TMCMarlin<IC##Stepper, L, AI> stepper##ST(ST##_CS_PIN, ST##_RSENSE, TMC_SW_MOSI, TMC_SW_MISO, TMC_SW_SCK, ST##_CHAIN_POS)
#else
#define __TMC_SPI_DEFINE(IC, ST, L, AI) TMCMarlin<IC##Stepper, L, AI> stepper##ST(ST##_CS_PIN, ST##_RSENSE)
#define __TMC_SPI_DEFINE(IC, ST, L, AI) TMCMarlin<IC##Stepper, L, AI> stepper##ST(ST##_CS_PIN, ST##_RSENSE, ST##_CHAIN_POS)
#endif
#define TMC_UART_HW_DEFINE(IC, ST, L, AI) TMCMarlin<IC##Stepper, L, AI> stepper##ST(&ST##_HARDWARE_SERIAL, ST##_RSENSE, ST##_SLAVE_ADDRESS)
@ -653,93 +653,6 @@ void reset_trinamic_drivers() {
#endif
};
#if TMC_USE_CHAIN
enum TMC_axis_enum : unsigned char { _, X, Y, Z, X2, Y2, Z2, Z3, E0, E1, E2, E3, E4, E5 };
#define __TMC_CHAIN(Q,V) do{ stepper##Q.set_chain_info(Q,V); }while(0)
#define _TMC_CHAIN(Q) __TMC_CHAIN(Q, Q##_CHAIN_POS)
#if AXIS_HAS_SPI(X) // First set chain array to uninitialized
__TMC_CHAIN(X, 0);
#endif
#if AXIS_HAS_SPI(X2)
__TMC_CHAIN(X2, 0);
#endif
#if AXIS_HAS_SPI(Y)
__TMC_CHAIN(Y, 0);
#endif
#if AXIS_HAS_SPI(Y2)
__TMC_CHAIN(Y2, 0);
#endif
#if AXIS_HAS_SPI(Z)
__TMC_CHAIN(Z, 0);
#endif
#if AXIS_HAS_SPI(Z2)
__TMC_CHAIN(Z2, 0);
#endif
#if AXIS_HAS_SPI(Z3)
__TMC_CHAIN(Z3, 0);
#endif
#if AXIS_HAS_SPI(E0)
__TMC_CHAIN(E0, 0);
#endif
#if AXIS_HAS_SPI(E1)
__TMC_CHAIN(E1, 0);
#endif
#if AXIS_HAS_SPI(E2)
__TMC_CHAIN(E2, 0);
#endif
#if AXIS_HAS_SPI(E3)
__TMC_CHAIN(E3, 0);
#endif
#if AXIS_HAS_SPI(E4)
__TMC_CHAIN(E4, 0);
#endif
#if AXIS_HAS_SPI(E5)
__TMC_CHAIN(E5, 0);
#endif
#if AXIS_HAS_SPI(X) && X_CHAIN_POS // Now set up the SPI chain
_TMC_CHAIN(X);
#endif
#if AXIS_HAS_SPI(X2) && X2_CHAIN_POS
_TMC_CHAIN(X2);
#endif
#if AXIS_HAS_SPI(Y) && Y_CHAIN_POS
_TMC_CHAIN(Y);
#endif
#if AXIS_HAS_SPI(Y2) && Y2_CHAIN_POS
_TMC_CHAIN(Y2);
#endif
#if AXIS_HAS_SPI(Z) && Z_CHAIN_POS
_TMC_CHAIN(Z);
#endif
#if AXIS_HAS_SPI(Z2) && Z2_CHAIN_POS
_TMC_CHAIN(Z2);
#endif
#if AXIS_HAS_SPI(Z3) && Z3_CHAIN_POS
_TMC_CHAIN(Z3);
#endif
#if AXIS_HAS_SPI(E0) && E0_CHAIN_POS
_TMC_CHAIN(E0);
#endif
#if AXIS_HAS_SPI(E1) && E1_CHAIN_POS
_TMC_CHAIN(E1);
#endif
#if AXIS_HAS_SPI(E2) && E2_CHAIN_POS
_TMC_CHAIN(E2);
#endif
#if AXIS_HAS_SPI(E3) && E3_CHAIN_POS
_TMC_CHAIN(E3);
#endif
#if AXIS_HAS_SPI(E4) && E4_CHAIN_POS
_TMC_CHAIN(E4);
#endif
#if AXIS_HAS_SPI(E5) && E5_CHAIN_POS
_TMC_CHAIN(E5);
#endif
#endif // TMC_USE_CHAIN
#if AXIS_IS_TMC(X)
_TMC_INIT(X, STEALTH_AXIS_XY);
#endif