|
|
@ -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 }; |
|
|
|
|
|
|
|
void tmc_serial_begin() { |
|
|
|
struct { |
|
|
|
const void *ptr[TMCAxis::TOTAL]; |
|
|
|
bool began(const TMCAxis a, const void * const p) { |
|
|
|
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)) \ |
|
|
|
A##_HARDWARE_SERIAL.begin(TMC_BAUD_RATE); }while(0) |
|
|
|
#if HAS_TMC_HW_SERIAL |
|
|
|
struct { |
|
|
|
const void *ptr[TMCAxis::TOTAL]; |
|
|
|
bool began(const TMCAxis a, const void * const p) { |
|
|
|
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)) \ |
|
|
|
A##_HARDWARE_SERIAL.begin(TMC_BAUD_RATE); }while(0) |
|
|
|
#endif |
|
|
|
|
|
|
|
#if AXIS_HAS_UART(X) |
|
|
|
#ifdef X_HARDWARE_SERIAL |
|
|
|
HW_SERIAL_BEGIN(X); |
|
|
|