Add TMC driver HW serial defines (#17909)

This commit is contained in:
Jason Smith 2020-05-07 23:15:12 -07:00 committed by GitHub
parent c262b9c5a3
commit a2153c15ee
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 25 additions and 11 deletions

View File

@ -131,6 +131,7 @@
#define AXIS_HAS_RXTX AXIS_HAS_UART #define AXIS_HAS_RXTX AXIS_HAS_UART
#define AXIS_HAS_HW_SERIAL(A) ( AXIS_HAS_UART(A) && defined(A##_HARDWARE_SERIAL) )
#define AXIS_HAS_SW_SERIAL(A) ( AXIS_HAS_UART(A) && !defined(A##_HARDWARE_SERIAL) ) #define AXIS_HAS_SW_SERIAL(A) ( AXIS_HAS_UART(A) && !defined(A##_HARDWARE_SERIAL) )
#define AXIS_HAS_STALLGUARD(A) ( AXIS_DRIVER_TYPE(A,TMC2130) || AXIS_DRIVER_TYPE(A,TMC2160) \ #define AXIS_HAS_STALLGUARD(A) ( AXIS_DRIVER_TYPE(A,TMC2130) || AXIS_DRIVER_TYPE(A,TMC2160) \

View File

@ -1549,6 +1549,9 @@
#define HAS_E_STEPPER_ENABLE 1 #define HAS_E_STEPPER_ENABLE 1
#endif #endif
#if ANY_AXIS_HAS(HW_SERIAL)
#define HAS_TMC_HW_SERIAL 1
#endif
#if ANY_AXIS_HAS(SW_SERIAL) #if ANY_AXIS_HAS(SW_SERIAL)
#define HAS_TMC_SW_SERIAL 1 #define HAS_TMC_SW_SERIAL 1
#endif #endif

View File

@ -318,15 +318,19 @@ enum StealthIndex : uint8_t { STEALTH_AXIS_XY, STEALTH_AXIS_Z, STEALTH_AXIS_E };
enum TMCAxis : uint8_t { X, Y, Z, X2, Y2, Z2, Z3, Z4, E0, E1, E2, E3, E4, E5, E6, E7, TOTAL }; enum TMCAxis : uint8_t { X, Y, Z, X2, Y2, Z2, Z3, Z4, E0, E1, E2, E3, E4, E5, E6, E7, TOTAL };
void tmc_serial_begin() { void tmc_serial_begin() {
struct { #if HAS_TMC_HW_SERIAL
const void *ptr[TMCAxis::TOTAL]; struct {
bool began(const TMCAxis a, const void * const p) { const void *ptr[TMCAxis::TOTAL];
LOOP_L_N(i, a) if (p == ptr[i]) return true; bool began(const TMCAxis a, const void * const p) {
ptr[a] = p; return false; LOOP_L_N(i, a) if (p == ptr[i]) return true;
}; ptr[a] = p; return false;
} sp_helper; };
#define HW_SERIAL_BEGIN(A) do{ if (!sp_helper.began(TMCAxis::A, &A##_HARDWARE_SERIAL)) \ } sp_helper;
A##_HARDWARE_SERIAL.begin(TMC_BAUD_RATE); }while(0)
#define HW_SERIAL_BEGIN(A) do{ if (!sp_helper.began(TMCAxis::A, &A##_HARDWARE_SERIAL)) \
A##_HARDWARE_SERIAL.begin(TMC_BAUD_RATE); }while(0)
#endif
#if AXIS_HAS_UART(X) #if AXIS_HAS_UART(X)
#ifdef X_HARDWARE_SERIAL #ifdef X_HARDWARE_SERIAL
HW_SERIAL_BEGIN(X); HW_SERIAL_BEGIN(X);

View File

@ -13,7 +13,11 @@ restore_configs
opt_set MOTHERBOARD BOARD_BTT_SKR_MINI_E3_V1_0 opt_set MOTHERBOARD BOARD_BTT_SKR_MINI_E3_V1_0
opt_set SERIAL_PORT 1 opt_set SERIAL_PORT 1
opt_set SERIAL_PORT_2 -1 opt_set SERIAL_PORT_2 -1
exec_test $1 $2 "BigTreeTech SKR Mini E3 - Basic Configuration" opt_set X_DRIVER_TYPE TMC2209
opt_set Y_DRIVER_TYPE TMC2209
opt_set Z_DRIVER_TYPE TMC2209
opt_set E_DRIVER_TYPE TMC2209
exec_test $1 $2 "BigTreeTech SKR Mini E3 1.0 - Basic Config with TMC2209 HW Serial"
# clean up # clean up
restore_configs restore_configs

View File

@ -13,7 +13,9 @@ restore_configs
opt_set MOTHERBOARD BOARD_BTT_SKR_E3_DIP opt_set MOTHERBOARD BOARD_BTT_SKR_E3_DIP
opt_set SERIAL_PORT 1 opt_set SERIAL_PORT 1
opt_set SERIAL_PORT_2 -1 opt_set SERIAL_PORT_2 -1
exec_test $1 $2 "BigTreeTech SKR E3 DIP v1.0 - Basic Configuration" opt_set X_DRIVER_TYPE TMC2209
opt_set Y_DRIVER_TYPE TMC2130
exec_test $1 $2 "BigTreeTech SKR E3 DIP v1.0 - Basic Config with mixed TMC Drivers"
# clean up # clean up
restore_configs restore_configs