Add TMC2209 support (#14249)

2.0.x
Scott Lahteine 5 years ago committed by GitHub
parent ed0c70f0a0
commit 4df4c47994
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -637,11 +637,11 @@
* A4988 is assumed for unspecified drivers. * A4988 is assumed for unspecified drivers.
* *
* Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100, * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE, * TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
* TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
* TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE, * TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE,
* TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE, * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
* TMC5160, TMC5160_STANDALONE * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
* :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
*/ */
//#define X_DRIVER_TYPE A4988 //#define X_DRIVER_TYPE A4988
//#define Y_DRIVER_TYPE A4988 //#define Y_DRIVER_TYPE A4988

@ -1716,7 +1716,6 @@
//#define E5_CS_PIN -1 //#define E5_CS_PIN -1
/** /**
* Use software SPI for TMC2130.
* Software option for SPI driven drivers (TMC2130, TMC2160, TMC2660, TMC5130 and TMC5160). * Software option for SPI driven drivers (TMC2130, TMC2160, TMC2660, TMC5130 and TMC5160).
* The default SW SPI pins are defined the respective pins files, * The default SW SPI pins are defined the respective pins files,
* but you can override or define them here. * but you can override or define them here.
@ -1726,6 +1725,29 @@
//#define TMC_SW_MISO -1 //#define TMC_SW_MISO -1
//#define TMC_SW_SCK -1 //#define TMC_SW_SCK -1
/**
* Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
* Set the address using jumpers on pins MS1 and MS2.
* Address | MS1 | MS2
* 0 | LOW | LOW
* 1 | HIGH | LOW
* 2 | LOW | HIGH
* 3 | HIGH | HIGH
*/
#define X_SLAVE_ADDRESS 0
#define Y_SLAVE_ADDRESS 0
#define Z_SLAVE_ADDRESS 0
#define X2_SLAVE_ADDRESS 0
#define Y2_SLAVE_ADDRESS 0
#define Z2_SLAVE_ADDRESS 0
#define Z3_SLAVE_ADDRESS 0
#define E0_SLAVE_ADDRESS 0
#define E1_SLAVE_ADDRESS 0
#define E2_SLAVE_ADDRESS 0
#define E3_SLAVE_ADDRESS 0
#define E4_SLAVE_ADDRESS 0
#define E5_SLAVE_ADDRESS 0
/** /**
* Software enable * Software enable
* *
@ -1735,7 +1757,7 @@
//#define SOFTWARE_DRIVER_ENABLE //#define SOFTWARE_DRIVER_ENABLE
/** /**
* TMC2130, TMC2160, TMC2208, TMC5130 and TMC5160 only * TMC2130, TMC2160, TMC2208, TMC2209, TMC5130 and TMC5160 only
* Use Trinamic's ultra quiet stepping mode. * Use Trinamic's ultra quiet stepping mode.
* When disabled, Marlin will use spreadCycle stepping mode. * When disabled, Marlin will use spreadCycle stepping mode.
*/ */
@ -1761,7 +1783,7 @@
/** /**
* Monitor Trinamic drivers for error conditions, * Monitor Trinamic drivers for error conditions,
* like overtemperature and short to ground. TMC2208 requires hardware serial. * like overtemperature and short to ground.
* In the case of overtemperature Marlin can decrease the driver current until error condition clears. * In the case of overtemperature Marlin can decrease the driver current until error condition clears.
* Other detected conditions can be used to stop the current print. * Other detected conditions can be used to stop the current print.
* Relevant g-codes: * Relevant g-codes:
@ -1779,7 +1801,7 @@
#endif #endif
/** /**
* TMC2130, TMC2160, TMC2208, TMC5130 and TMC5160 only * TMC2130, TMC2160, TMC2208, TMC2209, TMC5130 and TMC5160 only
* The driver will switch to spreadCycle when stepper speed is over HYBRID_THRESHOLD. * The driver will switch to spreadCycle when stepper speed is over HYBRID_THRESHOLD.
* This mode allows for faster movements at the expense of higher noise levels. * This mode allows for faster movements at the expense of higher noise levels.
* STEALTHCHOP_(XY|Z|E) must be enabled to use HYBRID_THRESHOLD. * STEALTHCHOP_(XY|Z|E) must be enabled to use HYBRID_THRESHOLD.
@ -1802,7 +1824,7 @@
#define E5_HYBRID_THRESHOLD 30 #define E5_HYBRID_THRESHOLD 30
/** /**
* TMC2130, TMC2160, TMC2660, TMC5130, and TMC5160 only * TMC2130, TMC2160, TMC2209, TMC2660, TMC5130, and TMC5160 only
* Use StallGuard2 to sense an obstacle and trigger an endstop. * Use StallGuard2 to sense an obstacle and trigger an endstop.
* Connect the stepper driver's DIAG1 pin to the X/Y endstop pin. * Connect the stepper driver's DIAG1 pin to the X/Y endstop pin.
* X, Y, and Z homing will always be done in spreadCycle mode. * X, Y, and Z homing will always be done in spreadCycle mode.
@ -1814,7 +1836,7 @@
* It is advised to set X/Y/Z_HOME_BUMP_MM to 0. * It is advised to set X/Y/Z_HOME_BUMP_MM to 0.
* M914 X/Y/Z to live tune the setting * M914 X/Y/Z to live tune the setting
*/ */
//#define SENSORLESS_HOMING // TMC2130 only //#define SENSORLESS_HOMING // StallGuard capable drivers only
/** /**
* Use StallGuard2 to probe the bed with the nozzle. * Use StallGuard2 to probe the bed with the nozzle.
@ -1822,9 +1844,10 @@
* CAUTION: This could cause damage to machines that use a lead screw or threaded rod * CAUTION: This could cause damage to machines that use a lead screw or threaded rod
* to move the Z axis. Take extreme care when attempting to enable this feature. * to move the Z axis. Take extreme care when attempting to enable this feature.
*/ */
//#define SENSORLESS_PROBING // TMC2130 only //#define SENSORLESS_PROBING // StallGuard capable drivers only
#if EITHER(SENSORLESS_HOMING, SENSORLESS_PROBING) #if EITHER(SENSORLESS_HOMING, SENSORLESS_PROBING)
// TMC2209: 0...255. TMC2130: -64...63
#define X_STALL_SENSITIVITY 8 #define X_STALL_SENSITIVITY 8
#define Y_STALL_SENSITIVITY 8 #define Y_STALL_SENSITIVITY 8
//#define Z_STALL_SENSITIVITY 8 //#define Z_STALL_SENSITIVITY 8

@ -593,7 +593,7 @@ ifeq ($(U8GLIB), 1)
endif endif
ifeq ($(TMC), 1) ifeq ($(TMC), 1)
LIB_CXXSRC += TMCStepper.cpp COOLCONF.cpp DRV_STATUS.cpp IHOLD_IRUN.cpp CHOPCONF.cpp GCONF.cpp PWMCONF.cpp DRV_CONF.cpp DRVCONF.cpp DRVCTRL.cpp DRVSTATUS.cpp ENCMODE.cpp RAMP_STAT.cpp SGCSCONF.cpp SHORT_CONF.cpp SMARTEN.cpp SW_MODE.cpp SW_SPI.cpp TMC2130Stepper.cpp TMC2208Stepper.cpp TMC2660Stepper.cpp TMC5130Stepper.cpp TMC5160Stepper.cpp LIB_CXXSRC += TMCStepper.cpp COOLCONF.cpp DRV_STATUS.cpp IHOLD_IRUN.cpp CHOPCONF.cpp GCONF.cpp PWMCONF.cpp DRV_CONF.cpp DRVCONF.cpp DRVCTRL.cpp DRVSTATUS.cpp ENCMODE.cpp RAMP_STAT.cpp SGCSCONF.cpp SHORT_CONF.cpp SMARTEN.cpp SW_MODE.cpp SW_SPI.cpp TMC2130Stepper.cpp TMC2208Stepper.cpp TMC2209Stepper.cpp TMC2660Stepper.cpp TMC5130Stepper.cpp TMC5160Stepper.cpp
endif endif
ifeq ($(RELOC_WORKAROUND), 1) ifeq ($(RELOC_WORKAROUND), 1)

@ -861,8 +861,8 @@ void setup() {
setup_killpin(); setup_killpin();
#if HAS_DRIVER(TMC2208) #if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
tmc2208_serial_begin(); tmc_serial_begin();
#endif #endif
setup_powerhold(); setup_powerhold();

@ -37,6 +37,8 @@
#define _TMC2160_STANDALONE 2161 #define _TMC2160_STANDALONE 2161
#define _TMC2208 2208 #define _TMC2208 2208
#define _TMC2208_STANDALONE 0x00A #define _TMC2208_STANDALONE 0x00A
#define _TMC2209 2209
#define _TMC2209_STANDALONE 0x00D
#define _TMC26X 0x10B #define _TMC26X 0x10B
#define _TMC26X_STANDALONE 0x00B #define _TMC26X_STANDALONE 0x00B
#define _TMC2660 2660 #define _TMC2660 2660
@ -77,6 +79,7 @@
#define HAS_TRINAMIC ( HAS_DRIVER(TMC2130) \ #define HAS_TRINAMIC ( HAS_DRIVER(TMC2130) \
|| HAS_DRIVER(TMC2160) \ || HAS_DRIVER(TMC2160) \
|| HAS_DRIVER(TMC2208) \ || HAS_DRIVER(TMC2208) \
|| HAS_DRIVER(TMC2209) \
|| HAS_DRIVER(TMC2660) \ || HAS_DRIVER(TMC2660) \
|| HAS_DRIVER(TMC5130) \ || HAS_DRIVER(TMC5130) \
|| HAS_DRIVER(TMC5160) ) || HAS_DRIVER(TMC5160) )
@ -84,6 +87,7 @@
#define AXIS_IS_TMC(A) ( AXIS_DRIVER_TYPE(A,TMC2130) \ #define AXIS_IS_TMC(A) ( AXIS_DRIVER_TYPE(A,TMC2130) \
|| AXIS_DRIVER_TYPE(A,TMC2160) \ || AXIS_DRIVER_TYPE(A,TMC2160) \
|| AXIS_DRIVER_TYPE(A,TMC2208) \ || AXIS_DRIVER_TYPE(A,TMC2208) \
|| AXIS_DRIVER_TYPE(A,TMC2209) \
|| AXIS_DRIVER_TYPE(A,TMC2660) \ || AXIS_DRIVER_TYPE(A,TMC2660) \
|| AXIS_DRIVER_TYPE(A,TMC5130) \ || AXIS_DRIVER_TYPE(A,TMC5130) \
|| AXIS_DRIVER_TYPE(A,TMC5160) ) || AXIS_DRIVER_TYPE(A,TMC5160) )
@ -96,8 +100,12 @@
|| AXIS_DRIVER_TYPE(A,TMC5130) \ || AXIS_DRIVER_TYPE(A,TMC5130) \
|| AXIS_DRIVER_TYPE(A,TMC5160) ) || AXIS_DRIVER_TYPE(A,TMC5160) )
#define AXIS_HAS_UART(A) ( AXIS_DRIVER_TYPE(A,TMC2208) \
|| AXIS_DRIVER_TYPE(A,TMC2209) )
#define AXIS_HAS_STALLGUARD(A) ( AXIS_DRIVER_TYPE(A,TMC2130) \ #define AXIS_HAS_STALLGUARD(A) ( AXIS_DRIVER_TYPE(A,TMC2130) \
|| AXIS_DRIVER_TYPE(A,TMC2160) \ || AXIS_DRIVER_TYPE(A,TMC2160) \
|| AXIS_DRIVER_TYPE(A,TMC2209) \
|| AXIS_DRIVER_TYPE(A,TMC2660) \ || AXIS_DRIVER_TYPE(A,TMC2660) \
|| AXIS_DRIVER_TYPE(A,TMC5130) \ || AXIS_DRIVER_TYPE(A,TMC5130) \
|| AXIS_DRIVER_TYPE(A,TMC5160) ) || AXIS_DRIVER_TYPE(A,TMC5160) )
@ -105,5 +113,6 @@
#define AXIS_HAS_STEALTHCHOP(A) ( AXIS_DRIVER_TYPE(A,TMC2130) \ #define AXIS_HAS_STEALTHCHOP(A) ( AXIS_DRIVER_TYPE(A,TMC2130) \
|| AXIS_DRIVER_TYPE(A,TMC2160) \ || AXIS_DRIVER_TYPE(A,TMC2160) \
|| AXIS_DRIVER_TYPE(A,TMC2208) \ || AXIS_DRIVER_TYPE(A,TMC2208) \
|| AXIS_DRIVER_TYPE(A,TMC2209) \
|| AXIS_DRIVER_TYPE(A,TMC5130) \ || AXIS_DRIVER_TYPE(A,TMC5130) \
|| AXIS_DRIVER_TYPE(A,TMC5160) ) || AXIS_DRIVER_TYPE(A,TMC5160) )

@ -69,7 +69,7 @@
#endif #endif
; ;
#if ENABLED(TMC_DEBUG) #if ENABLED(TMC_DEBUG)
#if HAS_TMCX1X0 || HAS_DRIVER(TMC2208) #if HAS_TMCX1X0 || HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
uint8_t cs_actual; uint8_t cs_actual;
#endif #endif
#if HAS_STALLGUARD #if HAS_STALLGUARD
@ -97,6 +97,7 @@
TMC_driver_data data; TMC_driver_data data;
const auto ds = data.drv_status = st.DRV_STATUS(); const auto ds = data.drv_status = st.DRV_STATUS();
#ifdef __AVR__ #ifdef __AVR__
// 8-bit optimization saves up to 70 bytes of PROGMEM per axis // 8-bit optimization saves up to 70 bytes of PROGMEM per axis
uint8_t spart; uint8_t spart;
#if ENABLED(TMC_DEBUG) #if ENABLED(TMC_DEBUG)
@ -115,6 +116,7 @@
data.is_standstill = TEST(spart, STST_bp - 24); data.is_standstill = TEST(spart, STST_bp - 24);
data.sg_result_reasonable = !data.is_standstill; // sg_result has no reasonable meaning while standstill data.sg_result_reasonable = !data.is_standstill; // sg_result has no reasonable meaning while standstill
#endif #endif
#else // !__AVR__ #else // !__AVR__
data.is_ot = TEST(ds, OT_bp); data.is_ot = TEST(ds, OT_bp);
@ -137,7 +139,7 @@
#endif // HAS_TMCX1X0 #endif // HAS_TMCX1X0
#if HAS_DRIVER(TMC2208) #if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
#if ENABLED(TMC_DEBUG) #if ENABLED(TMC_DEBUG)
static uint32_t get_pwm_scale(TMC2208Stepper &st) { return st.pwm_scale_sum(); } static uint32_t get_pwm_scale(TMC2208Stepper &st) { return st.pwm_scale_sum(); }
@ -174,7 +176,7 @@
return data; return data;
} }
#endif // TMC2208 #endif // TMC2208 || TMC2209
#if HAS_DRIVER(TMC2660) #if HAS_DRIVER(TMC2660)
@ -228,9 +230,7 @@
SERIAL_ECHO(timestamp); SERIAL_ECHO(timestamp);
SERIAL_ECHOPGM(": "); SERIAL_ECHOPGM(": ");
st.printLabel(); st.printLabel();
SERIAL_ECHOPGM(" driver overtemperature warning! ("); SERIAL_ECHOLNPAIR(" driver overtemperature warning! (", st.getMilliamps(), "mA)");
SERIAL_ECHO(st.getMilliamps());
SERIAL_ECHOLNPGM("mA)");
} }
template<typename TMC> template<typename TMC>
@ -239,7 +239,7 @@
st.printLabel(); st.printLabel();
SERIAL_CHAR(':'); SERIAL_PRINT(pwm_scale, DEC); SERIAL_CHAR(':'); SERIAL_PRINT(pwm_scale, DEC);
#if ENABLED(TMC_DEBUG) #if ENABLED(TMC_DEBUG)
#if HAS_TMCX1X0 || HAS_DRIVER(TMC2208) #if HAS_TMCX1X0 || HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
SERIAL_CHAR('/'); SERIAL_PRINT(data.cs_actual, DEC); SERIAL_CHAR('/'); SERIAL_PRINT(data.cs_actual, DEC);
#endif #endif
#if HAS_STALLGUARD #if HAS_STALLGUARD
@ -386,7 +386,7 @@
if ((report_tmc_status_interval = update_interval)) if ((report_tmc_status_interval = update_interval))
SERIAL_ECHOLNPGM("axis:pwm_scale" SERIAL_ECHOLNPGM("axis:pwm_scale"
#if HAS_STEALTHCHOP #if HAS_STEALTHCHOP
"/current_scale" "/curr_scale"
#endif #endif
#if HAS_STALLGUARD #if HAS_STALLGUARD
"/mech_load" "/mech_load"
@ -398,6 +398,7 @@
enum TMC_debug_enum : char { enum TMC_debug_enum : char {
TMC_CODES, TMC_CODES,
TMC_UART_ADDR,
TMC_ENABLED, TMC_ENABLED,
TMC_CURRENT, TMC_CURRENT,
TMC_RMS_CURRENT, TMC_RMS_CURRENT,
@ -482,9 +483,9 @@
#if HAS_TMCX1X0 #if HAS_TMCX1X0
static void _tmc_parse_drv_status(TMC2130Stepper &st, const TMC_drv_status_enum i) { static void _tmc_parse_drv_status(TMC2130Stepper &st, const TMC_drv_status_enum i) {
switch (i) { switch (i) {
case TMC_STALLGUARD: if (st.stallguard()) SERIAL_CHAR('X'); break; case TMC_STALLGUARD: if (st.stallguard()) SERIAL_CHAR('*'); break;
case TMC_SG_RESULT: SERIAL_PRINT(st.sg_result(), DEC); break; case TMC_SG_RESULT: SERIAL_PRINT(st.sg_result(), DEC); break;
case TMC_FSACTIVE: if (st.fsactive()) SERIAL_CHAR('X'); break; case TMC_FSACTIVE: if (st.fsactive()) SERIAL_CHAR('*'); break;
case TMC_DRV_CS_ACTUAL: SERIAL_PRINT(st.cs_actual(), DEC); break; case TMC_DRV_CS_ACTUAL: SERIAL_PRINT(st.cs_actual(), DEC); break;
default: break; default: break;
} }
@ -515,22 +516,37 @@
} }
#endif #endif
#if HAS_DRIVER(TMC2208) #if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
static void _tmc_status(TMC2208Stepper &st, const TMC_debug_enum i) { static void _tmc_status(TMC2208Stepper &st, const TMC_debug_enum i) {
switch (i) { switch (i) {
case TMC_PWM_SCALE: SERIAL_PRINT(st.pwm_scale_sum(), DEC); break; case TMC_PWM_SCALE: SERIAL_PRINT(st.pwm_scale_sum(), DEC); break;
case TMC_STEALTHCHOP: serialprint_truefalse(st.stealth()); break; case TMC_STEALTHCHOP: serialprint_truefalse(st.stealth()); break;
case TMC_S2VSA: if (st.s2vsa()) SERIAL_CHAR('X'); break; case TMC_S2VSA: if (st.s2vsa()) SERIAL_CHAR('*'); break;
case TMC_S2VSB: if (st.s2vsb()) SERIAL_CHAR('X'); break; case TMC_S2VSB: if (st.s2vsb()) SERIAL_CHAR('*'); break;
default: break; default: break;
} }
} }
#if HAS_DRIVER(TMC2209)
template<char AXIS_LETTER, char DRIVER_ID, AxisEnum AXIS_ID>
static void _tmc_status(TMCMarlin<TMC2209Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID> &st, const TMC_debug_enum i) {
switch (i) {
case TMC_SGT: SERIAL_PRINT(st.SGTHRS(), DEC); break;
case TMC_UART_ADDR: SERIAL_PRINT(st.get_address(), DEC); break;
default:
TMC2208Stepper *parent = &st;
_tmc_status(*parent, i);
break;
}
}
#endif
static void _tmc_parse_drv_status(TMC2208Stepper &st, const TMC_drv_status_enum i) { static void _tmc_parse_drv_status(TMC2208Stepper &st, const TMC_drv_status_enum i) {
switch (i) { switch (i) {
case TMC_T157: if (st.t157()) SERIAL_CHAR('X'); break; case TMC_T157: if (st.t157()) SERIAL_CHAR('*'); break;
case TMC_T150: if (st.t150()) SERIAL_CHAR('X'); break; case TMC_T150: if (st.t150()) SERIAL_CHAR('*'); break;
case TMC_T143: if (st.t143()) SERIAL_CHAR('X'); break; case TMC_T143: if (st.t143()) SERIAL_CHAR('*'); break;
case TMC_T120: if (st.t120()) SERIAL_CHAR('X'); break; case TMC_T120: if (st.t120()) SERIAL_CHAR('*'); break;
case TMC_DRV_CS_ACTUAL: SERIAL_PRINT(st.cs_actual(), DEC); break; case TMC_DRV_CS_ACTUAL: SERIAL_PRINT(st.cs_actual(), DEC); break;
default: break; default: break;
} }
@ -620,13 +636,13 @@
SERIAL_CHAR('\t'); SERIAL_CHAR('\t');
switch (i) { switch (i) {
case TMC_DRV_CODES: st.printLabel(); break; case TMC_DRV_CODES: st.printLabel(); break;
case TMC_STST: if (st.stst()) SERIAL_CHAR('X'); break; case TMC_STST: if (st.stst()) SERIAL_CHAR('*'); break;
case TMC_OLB: if (st.olb()) SERIAL_CHAR('X'); break; case TMC_OLB: if (st.olb()) SERIAL_CHAR('*'); break;
case TMC_OLA: if (st.ola()) SERIAL_CHAR('X'); break; case TMC_OLA: if (st.ola()) SERIAL_CHAR('*'); break;
case TMC_S2GB: if (st.s2gb()) SERIAL_CHAR('X'); break; case TMC_S2GB: if (st.s2gb()) SERIAL_CHAR('*'); break;
case TMC_S2GA: if (st.s2ga()) SERIAL_CHAR('X'); break; case TMC_S2GA: if (st.s2ga()) SERIAL_CHAR('*'); break;
case TMC_DRV_OTPW: if (st.otpw()) SERIAL_CHAR('X'); break; case TMC_DRV_OTPW: if (st.otpw()) SERIAL_CHAR('*'); break;
case TMC_OT: if (st.ot()) SERIAL_CHAR('X'); break; case TMC_OT: if (st.ot()) SERIAL_CHAR('*'); break;
case TMC_DRV_STATUS_HEX: { case TMC_DRV_STATUS_HEX: {
const uint32_t drv_status = st.DRV_STATUS(); const uint32_t drv_status = st.DRV_STATUS();
SERIAL_CHAR('\t'); SERIAL_CHAR('\t');
@ -759,6 +775,9 @@
#define TMC_REPORT(LABEL, ITEM) do{ SERIAL_ECHOPGM(LABEL); tmc_debug_loop(ITEM, print_x, print_y, print_z, print_e); }while(0) #define TMC_REPORT(LABEL, ITEM) do{ SERIAL_ECHOPGM(LABEL); tmc_debug_loop(ITEM, print_x, print_y, print_z, print_e); }while(0)
#define DRV_REPORT(LABEL, ITEM) do{ SERIAL_ECHOPGM(LABEL); drv_status_loop(ITEM, print_x, print_y, print_z, print_e); }while(0) #define DRV_REPORT(LABEL, ITEM) do{ SERIAL_ECHOPGM(LABEL); drv_status_loop(ITEM, print_x, print_y, print_z, print_e); }while(0)
TMC_REPORT("\t", TMC_CODES); TMC_REPORT("\t", TMC_CODES);
#if HAS_DRIVER(TMC2209)
TMC_REPORT("Address\t", TMC_UART_ADDR);
#endif
TMC_REPORT("Enabled\t", TMC_ENABLED); TMC_REPORT("Enabled\t", TMC_ENABLED);
TMC_REPORT("Set current", TMC_CURRENT); TMC_REPORT("Set current", TMC_CURRENT);
TMC_REPORT("RMS current", TMC_RMS_CURRENT); TMC_REPORT("RMS current", TMC_RMS_CURRENT);
@ -770,7 +789,7 @@
#endif #endif
TMC_REPORT("CS actual\t", TMC_CS_ACTUAL); TMC_REPORT("CS actual\t", TMC_CS_ACTUAL);
TMC_REPORT("PWM scale", TMC_PWM_SCALE); TMC_REPORT("PWM scale", TMC_PWM_SCALE);
#if HAS_DRIVER(TMC2130) || HAS_DRIVER(TMC2224) || HAS_DRIVER(TMC2660) || HAS_DRIVER(TMC2208) #if HAS_DRIVER(TMC2130) || HAS_DRIVER(TMC2224) || HAS_DRIVER(TMC2660) || HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
TMC_REPORT("vsense\t", TMC_VSENSE); TMC_REPORT("vsense\t", TMC_VSENSE);
#endif #endif
TMC_REPORT("stealthChop", TMC_STEALTHCHOP); TMC_REPORT("stealthChop", TMC_STEALTHCHOP);
@ -802,7 +821,7 @@
DRV_REPORT("s2ga\t", TMC_S2GA); DRV_REPORT("s2ga\t", TMC_S2GA);
DRV_REPORT("otpw\t", TMC_DRV_OTPW); DRV_REPORT("otpw\t", TMC_DRV_OTPW);
DRV_REPORT("ot\t", TMC_OT); DRV_REPORT("ot\t", TMC_OT);
#if HAS_DRIVER(TMC2208) #if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
DRV_REPORT("157C\t", TMC_T157); DRV_REPORT("157C\t", TMC_T157);
DRV_REPORT("150C\t", TMC_T150); DRV_REPORT("150C\t", TMC_T150);
DRV_REPORT("143C\t", TMC_T143); DRV_REPORT("143C\t", TMC_T143);
@ -826,7 +845,7 @@
} }
} }
#endif #endif
#if HAS_DRIVER(TMC2208) #if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
static void tmc_get_ic_registers(TMC2208Stepper, const TMC_get_registers_enum) { SERIAL_CHAR('\t'); } static void tmc_get_ic_registers(TMC2208Stepper, const TMC_get_registers_enum) { SERIAL_CHAR('\t'); }
#endif #endif
@ -961,6 +980,15 @@
st.en_pwm_mode(restore_stealth); st.en_pwm_mode(restore_stealth);
st.diag1_stall(false); st.diag1_stall(false);
} }
bool tmc_enable_stallguard(TMC2209Stepper &st) {
st.TCOOLTHRS(0xFFFFF);
return true;
}
void tmc_disable_stallguard(TMC2209Stepper &st, const bool restore_stealth) {
st.TCOOLTHRS(0);
}
bool tmc_enable_stallguard(TMC2660Stepper) { bool tmc_enable_stallguard(TMC2660Stepper) {
// TODO // TODO
return false; return false;

@ -92,7 +92,7 @@ class TMCStorage {
uint8_t hybrid_thrs = 0; uint8_t hybrid_thrs = 0;
#endif #endif
#if USE_SENSORLESS #if USE_SENSORLESS
int8_t homing_thrs = 0; int16_t homing_thrs = 0;
#endif #endif
} stored; } stored;
}; };
@ -100,10 +100,10 @@ class TMCStorage {
template<class TMC, char AXIS_LETTER, char DRIVER_ID, AxisEnum AXIS_ID> template<class TMC, char AXIS_LETTER, char DRIVER_ID, AxisEnum AXIS_ID>
class TMCMarlin : public TMC, public TMCStorage<AXIS_LETTER, DRIVER_ID> { class TMCMarlin : public TMC, public TMCStorage<AXIS_LETTER, DRIVER_ID> {
public: public:
TMCMarlin(uint16_t cs_pin, float RS) : TMCMarlin(const uint16_t cs_pin, const float RS) :
TMC(cs_pin, RS) TMC(cs_pin, RS)
{} {}
TMCMarlin(uint16_t CS, float RS, uint16_t pinMOSI, uint16_t pinMISO, uint16_t pinSCK) : TMCMarlin(const uint16_t CS, const float RS, const uint16_t pinMOSI, const uint16_t pinMISO, const uint16_t pinSCK) :
TMC(CS, RS, pinMOSI, pinMISO, pinSCK) TMC(CS, RS, pinMOSI, pinMISO, pinSCK)
{} {}
inline uint16_t rms_current() { return TMC::rms_current(); } inline uint16_t rms_current() { return TMC::rms_current(); }
@ -111,7 +111,7 @@ class TMCMarlin : public TMC, public TMCStorage<AXIS_LETTER, DRIVER_ID> {
this->val_mA = mA; this->val_mA = mA;
TMC::rms_current(mA); TMC::rms_current(mA);
} }
inline void rms_current(uint16_t mA, float mult) { inline void rms_current(const uint16_t mA, const float mult) {
this->val_mA = mA; this->val_mA = mA;
TMC::rms_current(mA, mult); TMC::rms_current(mA, mult);
} }
@ -132,8 +132,9 @@ class TMCMarlin : public TMC, public TMCStorage<AXIS_LETTER, DRIVER_ID> {
} }
#endif #endif
#if USE_SENSORLESS #if USE_SENSORLESS
inline int8_t sgt() { return TMC::sgt(); } inline int16_t homing_threshold() { return TMC::sgt(); }
void sgt(const int8_t sgt_val) { void homing_threshold(int16_t sgt_val) {
sgt_val = (int16_t)constrain(sgt_val, sgt_min, sgt_max);
TMC::sgt(sgt_val); TMC::sgt(sgt_val);
#if HAS_LCD_MENU #if HAS_LCD_MENU
this->stored.homing_thrs = sgt_val; this->stored.homing_thrs = sgt_val;
@ -148,25 +149,28 @@ class TMCMarlin : public TMC, public TMCStorage<AXIS_LETTER, DRIVER_ID> {
inline void refresh_hybrid_thrs() { set_pwm_thrs(this->stored.hybrid_thrs); } inline void refresh_hybrid_thrs() { set_pwm_thrs(this->stored.hybrid_thrs); }
#endif #endif
#if USE_SENSORLESS #if USE_SENSORLESS
inline void refresh_homing_thrs() { sgt(this->stored.homing_thrs); } inline void refresh_homing_thrs() { homing_threshold(this->stored.homing_thrs); }
#endif #endif
#endif #endif
static constexpr int8_t sgt_min = -64,
sgt_max = 63;
}; };
template<char AXIS_LETTER, char DRIVER_ID, AxisEnum AXIS_ID> template<char AXIS_LETTER, char DRIVER_ID, AxisEnum AXIS_ID>
class TMCMarlin<TMC2208Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID> : public TMC2208Stepper, public TMCStorage<AXIS_LETTER, DRIVER_ID> { class TMCMarlin<TMC2208Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID> : public TMC2208Stepper, public TMCStorage<AXIS_LETTER, DRIVER_ID> {
public: public:
TMCMarlin(Stream * SerialPort, float RS, bool has_rx=true) : TMCMarlin(Stream * SerialPort, const float RS, const uint8_t) :
TMC2208Stepper(SerialPort, RS, has_rx=true) TMC2208Stepper(SerialPort, RS, /*has_rx=*/true)
{} {}
TMCMarlin(uint16_t RX, uint16_t TX, float RS, bool has_rx=true) : TMCMarlin(const uint16_t RX, const uint16_t TX, const float RS, const uint8_t, const bool has_rx=true) :
TMC2208Stepper(RX, TX, RS, has_rx=true) TMC2208Stepper(RX, TX, RS, has_rx)
{} {}
uint16_t rms_current() { return TMC2208Stepper::rms_current(); } uint16_t rms_current() { return TMC2208Stepper::rms_current(); }
inline void rms_current(uint16_t mA) { inline void rms_current(const uint16_t mA) {
this->val_mA = mA; this->val_mA = mA;
TMC2208Stepper::rms_current(mA); TMC2208Stepper::rms_current(mA);
} }
inline void rms_current(uint16_t mA, float mult) { inline void rms_current(const uint16_t mA, const float mult) {
this->val_mA = mA; this->val_mA = mA;
TMC2208Stepper::rms_current(mA, mult); TMC2208Stepper::rms_current(mA, mult);
} }
@ -195,24 +199,87 @@ class TMCMarlin<TMC2208Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID> : public TMC220
#endif #endif
#endif #endif
}; };
template<char AXIS_LETTER, char DRIVER_ID, AxisEnum AXIS_ID>
class TMCMarlin<TMC2209Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID> : public TMC2209Stepper, public TMCStorage<AXIS_LETTER, DRIVER_ID> {
public:
TMCMarlin(Stream * SerialPort, const float RS, const uint8_t addr) :
TMC2209Stepper(SerialPort, RS, addr)
{}
TMCMarlin(const uint16_t RX, const uint16_t TX, const float RS, const uint8_t addr, const bool) :
TMC2209Stepper(RX, TX, RS, addr)
{}
uint8_t get_address() { return slave_address; }
uint16_t rms_current() { return TMC2209Stepper::rms_current(); }
inline void rms_current(const uint16_t mA) {
this->val_mA = mA;
TMC2209Stepper::rms_current(mA);
}
inline void rms_current(const uint16_t mA, const float mult) {
this->val_mA = mA;
TMC2209Stepper::rms_current(mA, mult);
}
#if HAS_STEALTHCHOP
inline void refresh_stepping_mode() { en_spreadCycle(!this->stored.stealthChop_enabled); }
inline bool get_stealthChop_status() { return !this->en_spreadCycle(); }
#endif
#if ENABLED(HYBRID_THRESHOLD)
uint32_t get_pwm_thrs() {
return _tmc_thrs(this->microsteps(), this->TPWMTHRS(), planner.settings.axis_steps_per_mm[AXIS_ID]);
}
void set_pwm_thrs(const uint32_t thrs) {
TMC2209Stepper::TPWMTHRS(_tmc_thrs(this->microsteps(), thrs, planner.settings.axis_steps_per_mm[AXIS_ID]));
#if HAS_LCD_MENU
this->stored.hybrid_thrs = thrs;
#endif
}
#endif
#if USE_SENSORLESS
inline int16_t homing_threshold() { return TMC2209Stepper::SGTHRS(); }
void homing_threshold(int16_t sgt_val) {
sgt_val = (int16_t)constrain(sgt_val, sgt_min, sgt_max);
TMC2209Stepper::SGTHRS(sgt_val);
#if HAS_LCD_MENU
this->stored.homing_thrs = sgt_val;
#endif
}
#endif
#if HAS_LCD_MENU
inline void refresh_stepper_current() { rms_current(this->val_mA); }
#if ENABLED(HYBRID_THRESHOLD)
inline void refresh_hybrid_thrs() { set_pwm_thrs(this->stored.hybrid_thrs); }
#endif
#if USE_SENSORLESS
inline void refresh_homing_thrs() { homing_threshold(this->stored.homing_thrs); }
#endif
#endif
static constexpr uint8_t sgt_min = 0,
sgt_max = 255;
};
template<char AXIS_LETTER, char DRIVER_ID, AxisEnum AXIS_ID> template<char AXIS_LETTER, char DRIVER_ID, AxisEnum AXIS_ID>
class TMCMarlin<TMC2660Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID> : public TMC2660Stepper, public TMCStorage<AXIS_LETTER, DRIVER_ID> { class TMCMarlin<TMC2660Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID> : public TMC2660Stepper, public TMCStorage<AXIS_LETTER, DRIVER_ID> {
public: public:
TMCMarlin(uint16_t cs_pin, float RS) : TMCMarlin(const uint16_t cs_pin, const float RS) :
TMC2660Stepper(cs_pin, RS) TMC2660Stepper(cs_pin, RS)
{} {}
TMCMarlin(uint16_t CS, float RS, uint16_t pinMOSI, uint16_t pinMISO, uint16_t pinSCK) : TMCMarlin(const uint16_t CS, const float RS, const uint16_t pinMOSI, const uint16_t pinMISO, const uint16_t pinSCK) :
TMC2660Stepper(CS, RS, pinMOSI, pinMISO, pinSCK) TMC2660Stepper(CS, RS, pinMOSI, pinMISO, pinSCK)
{} {}
inline uint16_t rms_current() { return TMC2660Stepper::rms_current(); } inline uint16_t rms_current() { return TMC2660Stepper::rms_current(); }
inline void rms_current(uint16_t mA) { inline void rms_current(const uint16_t mA) {
this->val_mA = mA; this->val_mA = mA;
TMC2660Stepper::rms_current(mA); TMC2660Stepper::rms_current(mA);
} }
#if USE_SENSORLESS #if USE_SENSORLESS
inline int8_t sgt() { return TMC2660Stepper::sgt(); } inline int16_t homing_threshold() { return TMC2660Stepper::sgt(); }
void sgt(const int8_t sgt_val) { void homing_threshold(int16_t sgt_val) {
sgt_val = (int16_t)constrain(sgt_val, sgt_min, sgt_max);
TMC2660Stepper::sgt(sgt_val); TMC2660Stepper::sgt(sgt_val);
#if HAS_LCD_MENU #if HAS_LCD_MENU
this->stored.homing_thrs = sgt_val; this->stored.homing_thrs = sgt_val;
@ -224,9 +291,12 @@ class TMCMarlin<TMC2660Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID> : public TMC266
inline void refresh_stepper_current() { rms_current(this->val_mA); } inline void refresh_stepper_current() { rms_current(this->val_mA); }
#if USE_SENSORLESS #if USE_SENSORLESS
inline void refresh_homing_thrs() { sgt(this->stored.homing_thrs); } inline void refresh_homing_thrs() { homing_threshold(this->stored.homing_thrs); }
#endif #endif
#endif #endif
static constexpr int8_t sgt_min = -64,
sgt_max = 63;
}; };
template<typename TMC> template<typename TMC>
@ -262,7 +332,7 @@ void tmc_print_current(TMC &st) {
void tmc_print_sgt(TMC &st) { void tmc_print_sgt(TMC &st) {
st.printLabel(); st.printLabel();
SERIAL_ECHOPGM(" homing sensitivity: "); SERIAL_ECHOPGM(" homing sensitivity: ");
SERIAL_PRINTLN(st.sgt(), DEC); SERIAL_PRINTLN(st.homing_threshold(), DEC);
} }
#endif #endif
@ -293,6 +363,9 @@ void test_tmc_connection(const bool test_x, const bool test_y, const bool test_z
bool tmc_enable_stallguard(TMC2130Stepper &st); bool tmc_enable_stallguard(TMC2130Stepper &st);
void tmc_disable_stallguard(TMC2130Stepper &st, const bool restore_stealth); void tmc_disable_stallguard(TMC2130Stepper &st, const bool restore_stealth);
bool tmc_enable_stallguard(TMC2209Stepper &st);
void tmc_disable_stallguard(TMC2209Stepper &st, const bool restore_stealth);
bool tmc_enable_stallguard(TMC2660Stepper); bool tmc_enable_stallguard(TMC2660Stepper);
void tmc_disable_stallguard(TMC2660Stepper, const bool); void tmc_disable_stallguard(TMC2660Stepper, const bool);
#endif #endif

@ -32,7 +32,7 @@
#if ENABLED(MONITOR_DRIVER_STATUS) #if ENABLED(MONITOR_DRIVER_STATUS)
#define M91x_USE(ST) (AXIS_DRIVER_TYPE(ST, TMC2130) || AXIS_DRIVER_TYPE(ST, TMC2160) || AXIS_DRIVER_TYPE(ST, TMC2208) || AXIS_DRIVER_TYPE(ST, TMC2660) || AXIS_DRIVER_TYPE(ST, TMC5130) || AXIS_DRIVER_TYPE(ST, TMC5160)) #define M91x_USE(ST) (AXIS_DRIVER_TYPE(ST, TMC2130) || AXIS_DRIVER_TYPE(ST, TMC2160) || AXIS_DRIVER_TYPE(ST, TMC2208) || AXIS_DRIVER_TYPE(ST, TMC2209) || AXIS_DRIVER_TYPE(ST, TMC2660) || AXIS_DRIVER_TYPE(ST, TMC5130) || AXIS_DRIVER_TYPE(ST, TMC5160))
#define M91x_USE_E(N) (E_STEPPERS > N && M91x_USE(E##N)) #define M91x_USE_E(N) (E_STEPPERS > N && M91x_USE(E##N))
#define M91x_SOME_X (M91x_USE(X) || M91x_USE(X2)) #define M91x_SOME_X (M91x_USE(X) || M91x_USE(X2))
@ -41,7 +41,7 @@
#define M91x_SOME_E (M91x_USE_E(0) || M91x_USE_E(1) || M91x_USE_E(2) || M91x_USE_E(3) || M91x_USE_E(4) || M91x_USE_E(5)) #define M91x_SOME_E (M91x_USE_E(0) || M91x_USE_E(1) || M91x_USE_E(2) || M91x_USE_E(3) || M91x_USE_E(4) || M91x_USE_E(5))
#if !M91x_SOME_X && !M91x_SOME_Y && !M91x_SOME_Z && !M91x_SOME_E #if !M91x_SOME_X && !M91x_SOME_Y && !M91x_SOME_Z && !M91x_SOME_E
#error "MONITOR_DRIVER_STATUS requires at least one TMC2130, TMC2208, or TMC2660." #error "MONITOR_DRIVER_STATUS requires at least one TMC2130, 2160, 2208, 2209, 2660, 5130, or 5160."
#endif #endif
/** /**
@ -313,39 +313,39 @@
bool report = true; bool report = true;
const uint8_t index = parser.byteval('I'); const uint8_t index = parser.byteval('I');
LOOP_XYZ(i) if (parser.seen(axis_codes[i])) { LOOP_XYZ(i) if (parser.seen(axis_codes[i])) {
const int8_t value = (int8_t)constrain(parser.value_int(), -64, 63); const int16_t value = parser.value_int();
report = false; report = false;
switch (i) { switch (i) {
#if X_SENSORLESS #if X_SENSORLESS
case X_AXIS: case X_AXIS:
#if AXIS_HAS_STALLGUARD(X) #if AXIS_HAS_STALLGUARD(X)
if (index < 2) stepperX.sgt(value); if (index < 2) stepperX.homing_threshold(value);
#endif #endif
#if AXIS_HAS_STALLGUARD(X2) #if AXIS_HAS_STALLGUARD(X2)
if (!(index & 1)) stepperX2.sgt(value); if (!(index & 1)) stepperX2.homing_threshold(value);
#endif #endif
break; break;
#endif #endif
#if Y_SENSORLESS #if Y_SENSORLESS
case Y_AXIS: case Y_AXIS:
#if AXIS_HAS_STALLGUARD(Y) #if AXIS_HAS_STALLGUARD(Y)
if (index < 2) stepperY.sgt(value); if (index < 2) stepperY.homing_threshold(value);
#endif #endif
#if AXIS_HAS_STALLGUARD(Y2) #if AXIS_HAS_STALLGUARD(Y2)
if (!(index & 1)) stepperY2.sgt(value); if (!(index & 1)) stepperY2.homing_threshold(value);
#endif #endif
break; break;
#endif #endif
#if Z_SENSORLESS #if Z_SENSORLESS
case Z_AXIS: case Z_AXIS:
#if AXIS_HAS_STALLGUARD(Z) #if AXIS_HAS_STALLGUARD(Z)
if (index < 2) stepperZ.sgt(value); if (index < 2) stepperZ.homing_threshold(value);
#endif #endif
#if AXIS_HAS_STALLGUARD(Z2) #if AXIS_HAS_STALLGUARD(Z2)
if (index == 0 || index == 2) stepperZ2.sgt(value); if (index == 0 || index == 2) stepperZ2.homing_threshold(value);
#endif #endif
#if AXIS_HAS_STALLGUARD(Z3) #if AXIS_HAS_STALLGUARD(Z3)
if (index == 0 || index == 3) stepperZ3.sgt(value); if (index == 0 || index == 3) stepperZ3.homing_threshold(value);
#endif #endif
break; break;
#endif #endif

@ -139,7 +139,7 @@
* M119 - Report endstops status. * M119 - Report endstops status.
* M120 - Enable endstops detection. * M120 - Enable endstops detection.
* M121 - Disable endstops detection. * M121 - Disable endstops detection.
* M122 - Debug stepper (Requires at least one _DRIVER_TYPE defined as TMC2130/TMC2208/TMC2660 or L6470) * M122 - Debug stepper (Requires at least one _DRIVER_TYPE defined as TMC2130/2160/5130/5160/2208/2209/2660 or L6470)
* M125 - Save current position and move to filament change position. (Requires PARK_HEAD_ON_PAUSE) * M125 - Save current position and move to filament change position. (Requires PARK_HEAD_ON_PAUSE)
* M126 - Solenoid Air Valve Open. (Requires BARICUDA) * M126 - Solenoid Air Valve Open. (Requires BARICUDA)
* M127 - Solenoid Air Valve Closed. (Requires BARICUDA) * M127 - Solenoid Air Valve Closed. (Requires BARICUDA)
@ -218,7 +218,7 @@
* M504 - Validate EEPROM contents. (Requires EEPROM_SETTINGS) * M504 - Validate EEPROM contents. (Requires EEPROM_SETTINGS)
* M524 - Abort the current SD print job started with M24. (Requires SDSUPPORT) * M524 - Abort the current SD print job started with M24. (Requires SDSUPPORT)
* M540 - Enable/disable SD card abort on endstop hit: "M540 S<state>". (Requires SD_ABORT_ON_ENDSTOP_HIT) * M540 - Enable/disable SD card abort on endstop hit: "M540 S<state>". (Requires SD_ABORT_ON_ENDSTOP_HIT)
* M569 - Enable stealthChop on an axis. (Requires at least one _DRIVER_TYPE to be TMC2130 or TMC2208) * M569 - Enable stealthChop on an axis. (Requires at least one _DRIVER_TYPE to be TMC2130/2160/2208/2209/5130/5160)
* M600 - Pause for filament change: "M600 X<pos> Y<pos> Z<raise> E<first_retract> L<later_retract>". (Requires ADVANCED_PAUSE_FEATURE) * M600 - Pause for filament change: "M600 X<pos> Y<pos> Z<raise> E<first_retract> L<later_retract>". (Requires ADVANCED_PAUSE_FEATURE)
* M603 - Configure filament change: "M603 T<tool> U<unload_length> L<load_length>". (Requires ADVANCED_PAUSE_FEATURE) * M603 - Configure filament change: "M603 T<tool> U<unload_length> L<load_length>". (Requires ADVANCED_PAUSE_FEATURE)
* M605 - Set Dual X-Carriage movement mode: "M605 S<mode> [X<x_offset>] [R<temp_offset>]". (Requires DUAL_X_CARRIAGE) * M605 - Set Dual X-Carriage movement mode: "M605 S<mode> [X<x_offset>] [R<temp_offset>]". (Requires DUAL_X_CARRIAGE)
@ -241,13 +241,13 @@
* M869 - Report position encoder module error. * M869 - Report position encoder module error.
* M876 - Handle Prompt Response. (Requires HOST_PROMPT_SUPPORT and not EMERGENCY_PARSER) * M876 - Handle Prompt Response. (Requires HOST_PROMPT_SUPPORT and not EMERGENCY_PARSER)
* M900 - Get or Set Linear Advance K-factor. (Requires LIN_ADVANCE) * M900 - Get or Set Linear Advance K-factor. (Requires LIN_ADVANCE)
* M906 - Set or get motor current in milliamps using axis codes X, Y, Z, E. Report values if no axis codes given. (Requires at least one _DRIVER_TYPE defined as TMC2130/TMC2208/TMC2660 or L6470) * M906 - Set or get motor current in milliamps using axis codes X, Y, Z, E. Report values if no axis codes given. (Requires at least one _DRIVER_TYPE defined as TMC2130/2160/5130/5160/2208/2209/2660 or L6470)
* M907 - Set digital trimpot motor current using axis codes. (Requires a board with digital trimpots) * M907 - Set digital trimpot motor current using axis codes. (Requires a board with digital trimpots)
* M908 - Control digital trimpot directly. (Requires DAC_STEPPER_CURRENT or DIGIPOTSS_PIN) * M908 - Control digital trimpot directly. (Requires DAC_STEPPER_CURRENT or DIGIPOTSS_PIN)
* M909 - Print digipot/DAC current value. (Requires DAC_STEPPER_CURRENT) * M909 - Print digipot/DAC current value. (Requires DAC_STEPPER_CURRENT)
* M910 - Commit digipot/DAC value to external EEPROM via I2C. (Requires DAC_STEPPER_CURRENT) * M910 - Commit digipot/DAC value to external EEPROM via I2C. (Requires DAC_STEPPER_CURRENT)
* M911 - Report stepper driver overtemperature pre-warn condition. (Requires at least one _DRIVER_TYPE defined as TMC2130/TMC2208/TMC2660) * M911 - Report stepper driver overtemperature pre-warn condition. (Requires at least one _DRIVER_TYPE defined as TMC2130/2160/5130/5160/2208/2209/2660)
* M912 - Clear stepper driver overtemperature pre-warn condition flag. (Requires at least one _DRIVER_TYPE defined as TMC2130/TMC2208/TMC2660) * M912 - Clear stepper driver overtemperature pre-warn condition flag. (Requires at least one _DRIVER_TYPE defined as TMC2130/2160/5130/5160/2208/2209/2660)
* M913 - Set HYBRID_THRESHOLD speed. (Requires HYBRID_THRESHOLD) * M913 - Set HYBRID_THRESHOLD speed. (Requires HYBRID_THRESHOLD)
* M914 - Set StallGuard sensitivity. (Requires SENSORLESS_HOMING or SENSORLESS_PROBING) * M914 - Set StallGuard sensitivity. (Requires SENSORLESS_HOMING or SENSORLESS_PROBING)
* M916 - L6470 tuning: Increase KVAL_HOLD until thermal warning. (Requires at least one _DRIVER_TYPE L6470) * M916 - L6470 tuning: Increase KVAL_HOLD until thermal warning. (Requires at least one _DRIVER_TYPE L6470)

@ -493,7 +493,7 @@
* Preserve this ordering when adding new drivers. * Preserve this ordering when adding new drivers.
*/ */
#define TRINAMICS (HAS_TRINAMIC || HAS_DRIVER(TMC2130_STANDALONE) || HAS_DRIVER(TMC2208_STANDALONE) || HAS_DRIVER(TMC26X_STANDALONE) || HAS_DRIVER(TMC2660_STANDALONE) || HAS_DRIVER(TMC5130_STANDALONE) || HAS_DRIVER(TMC5160_STANDALONE) || HAS_DRIVER(TMC2160_STANDALONE)) #define TRINAMICS (HAS_TRINAMIC || HAS_DRIVER(TMC2130_STANDALONE) || HAS_DRIVER(TMC2208_STANDALONE) || HAS_DRIVER(TMC2209_STANDALONE) || HAS_DRIVER(TMC26X_STANDALONE) || HAS_DRIVER(TMC2660_STANDALONE) || HAS_DRIVER(TMC5130_STANDALONE) || HAS_DRIVER(TMC5160_STANDALONE) || HAS_DRIVER(TMC2160_STANDALONE))
#ifndef MINIMUM_STEPPER_DIR_DELAY #ifndef MINIMUM_STEPPER_DIR_DELAY
#if HAS_DRIVER(TB6560) #if HAS_DRIVER(TB6560)
@ -905,8 +905,8 @@
#if HAS_TRINAMIC #if HAS_TRINAMIC
#define HAS_TMCX1X0 (HAS_DRIVER(TMC2130) || HAS_DRIVER(TMC2160) || HAS_DRIVER(TMC5130) || HAS_DRIVER(TMC5160)) #define HAS_TMCX1X0 (HAS_DRIVER(TMC2130) || HAS_DRIVER(TMC2160) || HAS_DRIVER(TMC5130) || HAS_DRIVER(TMC5160))
#define TMC_HAS_SPI (HAS_TMCX1X0 || HAS_DRIVER(TMC2660)) #define TMC_HAS_SPI (HAS_TMCX1X0 || HAS_DRIVER(TMC2660))
#define HAS_STALLGUARD (HAS_TMCX1X0 || HAS_DRIVER(TMC2660)) #define HAS_STALLGUARD (HAS_TMCX1X0 || HAS_DRIVER(TMC2209) || HAS_DRIVER(TMC2660))
#define HAS_STEALTHCHOP (HAS_TMCX1X0 || HAS_DRIVER(TMC2208)) #define HAS_STEALTHCHOP (HAS_TMCX1X0 || HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209))
#define STEALTHCHOP_ENABLED ANY(STEALTHCHOP_XY, STEALTHCHOP_Z, STEALTHCHOP_E) #define STEALTHCHOP_ENABLED ANY(STEALTHCHOP_XY, STEALTHCHOP_Z, STEALTHCHOP_E)
#define USE_SENSORLESS EITHER(SENSORLESS_HOMING, SENSORLESS_PROBING) #define USE_SENSORLESS EITHER(SENSORLESS_HOMING, SENSORLESS_PROBING)

@ -275,6 +275,8 @@
#error "HAVE_TMC26X is now [AXIS]_DRIVER_TYPE TMC26X. Please update your Configuration.h." #error "HAVE_TMC26X is now [AXIS]_DRIVER_TYPE TMC26X. Please update your Configuration.h."
#elif defined(HAVE_TMC2130) #elif defined(HAVE_TMC2130)
#error "HAVE_TMC2130 is now [AXIS]_DRIVER_TYPE TMC2130. Please update your Configuration.h." #error "HAVE_TMC2130 is now [AXIS]_DRIVER_TYPE TMC2130. Please update your Configuration.h."
#elif defined(HAVE_TMC2208)
#error "HAVE_TMC2208 is now [AXIS]_DRIVER_TYPE TMC2208. Please update your Configuration.h."
#elif defined(HAVE_L6470DRIVER) #elif defined(HAVE_L6470DRIVER)
#error "HAVE_L6470DRIVER is now [AXIS]_DRIVER_TYPE L6470. Please update your Configuration.h." #error "HAVE_L6470DRIVER is now [AXIS]_DRIVER_TYPE L6470. Please update your Configuration.h."
#elif defined(X_IS_TMC) || defined(X2_IS_TMC) || defined(Y_IS_TMC) || defined(Y2_IS_TMC) || defined(Z_IS_TMC) || defined(Z2_IS_TMC) || defined(Z3_IS_TMC) \ #elif defined(X_IS_TMC) || defined(X2_IS_TMC) || defined(Y_IS_TMC) || defined(Y2_IS_TMC) || defined(Z_IS_TMC) || defined(Z2_IS_TMC) || defined(Z3_IS_TMC) \
@ -1070,10 +1072,10 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
* Require pin options and pins to be defined * Require pin options and pins to be defined
*/ */
#if ENABLED(SENSORLESS_PROBING) #if ENABLED(SENSORLESS_PROBING)
#if ENABLED(DELTA) && (!AXIS_DRIVER_TYPE_X(TMC2130) || !AXIS_DRIVER_TYPE_Y(TMC2130) || !AXIS_DRIVER_TYPE_Z(TMC2130)) #if ENABLED(DELTA) && !(AXIS_HAS_STALLGUARD(X) && AXIS_HAS_STALLGUARD(Y) && AXIS_HAS_STALLGUARD(Z))
#error "SENSORLESS_PROBING requires TMC2130 drivers on X, Y, and Z." #error "SENSORLESS_PROBING requires TMC2130/2160/2209/5130/5160 drivers on X, Y, and Z."
#elif !AXIS_DRIVER_TYPE_Z(TMC2130) #elif !AXIS_HAS_STALLGUARD(Z)
#error "SENSORLESS_PROBING requires a TMC2130 driver on Z." #error "SENSORLESS_PROBING requires a TMC2130/2160/2209/5130/5160 driver on Z."
#endif #endif
#elif ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) #elif ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN)
#if DISABLED(USE_ZMIN_PLUG) #if DISABLED(USE_ZMIN_PLUG)
@ -1876,73 +1878,106 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
/** /**
* Check existing CS pins against enabled TMC SPI drivers. * Check existing CS pins against enabled TMC SPI drivers.
*/ */
#define INVALID_TMC2130(ST) (AXIS_DRIVER_TYPE(ST, TMC2130) && !PIN_EXISTS(ST##_CS)) #define INVALID_TMC_SPI(ST) (AXIS_HAS_SPI && !PIN_EXISTS(ST##_CS))
#if INVALID_TMC2130(X) #if INVALID_TMC_SPI(X)
#error "TMC2130 on X requires X_CS_PIN." #error "An SPI driven TMC driver on X requires X_CS_PIN."
#elif INVALID_TMC2130(X2) #elif INVALID_TMC_SPI(X2)
#error "TMC2130 on X2 requires X2_CS_PIN." #error "An SPI driven TMC driver on X2 requires X2_CS_PIN."
#elif INVALID_TMC2130(Y) #elif INVALID_TMC_SPI(Y)
#error "TMC2130 on Y requires Y_CS_PIN." #error "An SPI driven TMC driver on Y requires Y_CS_PIN."
#elif INVALID_TMC2130(Y2) #elif INVALID_TMC_SPI(Y2)
#error "TMC2130 on Y2 requires Y2_CS_PIN." #error "An SPI driven TMC driver on Y2 requires Y2_CS_PIN."
#elif INVALID_TMC2130(Z) #elif INVALID_TMC_SPI(Z)
#error "TMC2130 on Z requires Z_CS_PIN." #error "An SPI driven TMC driver on Z requires Z_CS_PIN."
#elif INVALID_TMC2130(Z2) #elif INVALID_TMC_SPI(Z2)
#error "TMC2130 on Z2 requires Z2_CS_PIN." #error "An SPI driven TMC driver on Z2 requires Z2_CS_PIN."
#elif INVALID_TMC2130(Z3) #elif INVALID_TMC_SPI(Z3)
#error "TMC2130 on Z3 requires Z3_CS_PIN." #error "An SPI driven TMC driver on Z3 requires Z3_CS_PIN."
#elif INVALID_TMC2130(E0) #elif INVALID_TMC_SPI(E0)
#error "TMC2130 on E0 requires E0_CS_PIN." #error "An SPI driven TMC driver on E0 requires E0_CS_PIN."
#elif INVALID_TMC2130(E1) #elif INVALID_TMC_SPI(E1)
#error "TMC2130 on E1 requires E1_CS_PIN." #error "An SPI driven TMC driver on E1 requires E1_CS_PIN."
#elif INVALID_TMC2130(E2) #elif INVALID_TMC_SPI(E2)
#error "TMC2130 on E2 requires E2_CS_PIN." #error "An SPI driven TMC driver on E2 requires E2_CS_PIN."
#elif INVALID_TMC2130(E3) #elif INVALID_TMC_SPI(E3)
#error "TMC2130 on E3 requires E3_CS_PIN." #error "An SPI driven TMC driver on E3 requires E3_CS_PIN."
#elif INVALID_TMC2130(E4) #elif INVALID_TMC_SPI(E4)
#error "TMC2130 on E4 requires E4_CS_PIN." #error "An SPI driven TMC driver on E4 requires E4_CS_PIN."
#elif INVALID_TMC2130(E5) #elif INVALID_TMC_SPI(E5)
#error "TMC2130 on E5 requires E5_CS_PIN." #error "An SPI driven TMC driver on E5 requires E5_CS_PIN."
#endif #endif
#undef INVALID_TMC2130 #undef INVALID_TMC_SPI
/** /**
* Check existing RX/TX pins against enable TMC UART drivers. * Check existing RX/TX pins against enable TMC UART drivers.
*/ */
#define INVALID_TMC2208(ST) (AXIS_DRIVER_TYPE(ST, TMC2208) && !(defined(ST##_HARDWARE_SERIAL) || (PIN_EXISTS(ST##_SERIAL_RX, ST##_SERIAL_TX)))) #define INVALID_TMC_UART(ST) (AXIS_HAS_UART(ST) && !(defined(ST##_HARDWARE_SERIAL) || (PIN_EXISTS(ST##_SERIAL_RX, ST##_SERIAL_TX))))
#if INVALID_TMC2208(X) #if INVALID_TMC_UART(X)
#error "TMC2208 on X requires X_HARDWARE_SERIAL or X_SERIAL_(RX|TX)_PIN." #error "TMC2208 or TMC2209 on X requires X_HARDWARE_SERIAL or X_SERIAL_(RX|TX)_PIN."
#elif INVALID_TMC2208(X2) #elif INVALID_TMC_UART(X2)
#error "TMC2208 on X2 requires X2_HARDWARE_SERIAL or X2_SERIAL_(RX|TX)_PIN." #error "TMC2208 or TMC2209 on X2 requires X2_HARDWARE_SERIAL or X2_SERIAL_(RX|TX)_PIN."
#elif INVALID_TMC2208(Y) #elif INVALID_TMC_UART(Y)
#error "TMC2208 on Y requires Y_HARDWARE_SERIAL or Y_SERIAL_(RX|TX)_PIN." #error "TMC2208 or TMC2209 on Y requires Y_HARDWARE_SERIAL or Y_SERIAL_(RX|TX)_PIN."
#elif INVALID_TMC2208(Y2) #elif INVALID_TMC_UART(Y2)
#error "TMC2208 on Y2 requires Y2_HARDWARE_SERIAL or Y2_SERIAL_(RX|TX)_PIN." #error "TMC2208 or TMC2209 on Y2 requires Y2_HARDWARE_SERIAL or Y2_SERIAL_(RX|TX)_PIN."
#elif INVALID_TMC2208(Z) #elif INVALID_TMC_UART(Z)
#error "TMC2208 on Z requires Z_HARDWARE_SERIAL or Z_SERIAL_(RX|TX)_PIN." #error "TMC2208 or TMC2209 on Z requires Z_HARDWARE_SERIAL or Z_SERIAL_(RX|TX)_PIN."
#elif INVALID_TMC2208(Z2) #elif INVALID_TMC_UART(Z2)
#error "TMC2208 on Z2 requires Z2_HARDWARE_SERIAL or Z2_SERIAL_(RX|TX)_PIN." #error "TMC2208 or TMC2209 on Z2 requires Z2_HARDWARE_SERIAL or Z2_SERIAL_(RX|TX)_PIN."
#elif INVALID_TMC2208(Z3) #elif INVALID_TMC_UART(Z3)
#error "TMC2208 on Z3 requires Z3_HARDWARE_SERIAL or Z3_SERIAL_(RX|TX)_PIN." #error "TMC2208 or TMC2209 on Z3 requires Z3_HARDWARE_SERIAL or Z3_SERIAL_(RX|TX)_PIN."
#elif INVALID_TMC2208(E0) #elif INVALID_TMC_UART(E0)
#error "TMC2208 on E0 requires E0_HARDWARE_SERIAL or E0_SERIAL_(RX|TX)_PIN." #error "TMC2208 or TMC2209 on E0 requires E0_HARDWARE_SERIAL or E0_SERIAL_(RX|TX)_PIN."
#elif INVALID_TMC2208(E1) #elif INVALID_TMC_UART(E1)
#error "TMC2208 on E1 requires E1_HARDWARE_SERIAL or E1_SERIAL_(RX|TX)_PIN." #error "TMC2208 or TMC2209 on E1 requires E1_HARDWARE_SERIAL or E1_SERIAL_(RX|TX)_PIN."
#elif INVALID_TMC2208(E2) #elif INVALID_TMC_UART(E2)
#error "TMC2208 on E2 requires E2_HARDWARE_SERIAL or E2_SERIAL_(RX|TX)_PIN." #error "TMC2208 or TMC2209 on E2 requires E2_HARDWARE_SERIAL or E2_SERIAL_(RX|TX)_PIN."
#elif INVALID_TMC2208(E3) #elif INVALID_TMC_UART(E3)
#error "TMC2208 on E3 requires E3_HARDWARE_SERIAL or E3_SERIAL_(RX|TX)_PIN." #error "TMC2208 or TMC2209 on E3 requires E3_HARDWARE_SERIAL or E3_SERIAL_(RX|TX)_PIN."
#elif INVALID_TMC2208(E4) #elif INVALID_TMC_UART(E4)
#error "TMC2208 on E4 requires E4_HARDWARE_SERIAL or E4_SERIAL_(RX|TX)_PIN." #error "TMC2208 or TMC2209 on E4 requires E4_HARDWARE_SERIAL or E4_SERIAL_(RX|TX)_PIN."
#elif INVALID_TMC2208(E5) #elif INVALID_TMC_UART(E5)
#error "TMC2208 on E5 requires E5_HARDWARE_SERIAL or E5_SERIAL_(RX|TX)_PIN." #error "TMC2208 or TMC2209 on E5 requires E5_HARDWARE_SERIAL or E5_SERIAL_(RX|TX)_PIN."
#endif #endif
#undef INVALID_TMC2208 #undef INVALID_TMC_UART
/** /**
* TMC2208 software UART and ENDSTOP_INTERRUPTS both use pin change interrupts (PCI) * TMC2209 slave address values
*/ */
#if HAS_DRIVER(TMC2208) && ENABLED(ENDSTOP_INTERRUPTS_FEATURE) && !( \ #define INVALID_TMC_ADDRESS(ST) static_assert(0 <= ST##_SLAVE_ADDRESS && ST##_SLAVE_ADDRESS <= 3, "TMC2209 slave address must be 0, 1, 2 or 3")
#if AXIS_DRIVER_TYPE_X(TMC2209)
INVALID_TMC_ADDRESS(X);
#elif AXIS_DRIVER_TYPE_X2(TMC2209)
INVALID_TMC_ADDRESS(X2);
#elif AXIS_DRIVER_TYPE_Y(TMC2209)
INVALID_TMC_ADDRESS(Y);
#elif AXIS_DRIVER_TYPE_Y2(TMC2209)
INVALID_TMC_ADDRESS(Y2);
#elif AXIS_DRIVER_TYPE_Z(TMC2209)
INVALID_TMC_ADDRESS(Z);
#elif AXIS_DRIVER_TYPE_Z2(TMC2209)
INVALID_TMC_ADDRESS(Z2);
#elif AXIS_DRIVER_TYPE_Z3(TMC2209)
INVALID_TMC_ADDRESS(Z3);
#elif AXIS_DRIVER_TYPE_E0(TMC2209)
INVALID_TMC_ADDRESS(E0);
#elif AXIS_DRIVER_TYPE_E1(TMC2209)
INVALID_TMC_ADDRESS(E1);
#elif AXIS_DRIVER_TYPE_E2(TMC2209)
INVALID_TMC_ADDRESS(E2);
#elif AXIS_DRIVER_TYPE_E3(TMC2209)
INVALID_TMC_ADDRESS(E3);
#elif AXIS_DRIVER_TYPE_E4(TMC2209)
INVALID_TMC_ADDRESS(E4);
#elif AXIS_DRIVER_TYPE_E5(TMC2209)
INVALID_TMC_ADDRESS(E5);
#endif
#undef INVALID_TMC_ADDRESS
/**
* TMC2208/2209 software UART and ENDSTOP_INTERRUPTS both use pin change interrupts (PCI)
*/
#if (HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)) && ENABLED(ENDSTOP_INTERRUPTS_FEATURE) && !( \
defined(X_HARDWARE_SERIAL ) \ defined(X_HARDWARE_SERIAL ) \
|| defined(X2_HARDWARE_SERIAL) \ || defined(X2_HARDWARE_SERIAL) \
|| defined(Y_HARDWARE_SERIAL ) \ || defined(Y_HARDWARE_SERIAL ) \
@ -1960,9 +1995,9 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
#endif #endif
/** /**
* TMC2208 software UART is only supported on AVR * TMC2208/2209 software UART is only supported on AVR and LPC
*/ */
#if HAS_DRIVER(TMC2208) && !defined(__AVR__) && !defined(TARGET_LPC1768) && !( \ #if (HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)) && !defined(__AVR__) && !defined(TARGET_LPC1768) && !( \
defined(X_HARDWARE_SERIAL ) \ defined(X_HARDWARE_SERIAL ) \
|| defined(X2_HARDWARE_SERIAL) \ || defined(X2_HARDWARE_SERIAL) \
|| defined(Y_HARDWARE_SERIAL ) \ || defined(Y_HARDWARE_SERIAL ) \
@ -1983,25 +2018,36 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
// is necessary in order to reset the stallGuard indication between the initial movement of all three // is necessary in order to reset the stallGuard indication between the initial movement of all three
// towers to +Z and the individual homing of each tower. This restriction can be removed once a means of // towers to +Z and the individual homing of each tower. This restriction can be removed once a means of
// clearing the stallGuard activated status is found. // clearing the stallGuard activated status is found.
// Stall detection DIAG = HIGH : TMC2209
// Stall detection DIAG = LOW : TMC2130/TMC2160/TMC2660/TMC5130/TMC5160
#define X_ENDSTOP_INVERTING !AXIS_DRIVER_TYPE(X,TMC2209)
#define Y_ENDSTOP_INVERTING !AXIS_DRIVER_TYPE(Y,TMC2209)
#define Z_ENDSTOP_INVERTING !AXIS_DRIVER_TYPE(Z,TMC2209)
#if ENABLED(DELTA) && !BOTH(STEALTHCHOP_XY, STEALTHCHOP_Z) #if ENABLED(DELTA) && !BOTH(STEALTHCHOP_XY, STEALTHCHOP_Z)
#error "SENSORLESS_HOMING on DELTA currently requires STEALTHCHOP_XY and STEALTHCHOP_Z." #error "SENSORLESS_HOMING on DELTA currently requires STEALTHCHOP_XY and STEALTHCHOP_Z."
#elif X_SENSORLESS && X_HOME_DIR == -1 && (!X_MIN_ENDSTOP_INVERTING || DISABLED(ENDSTOPPULLUP_XMIN)) #elif X_SENSORLESS && X_HOME_DIR == -1 && (X_MIN_ENDSTOP_INVERTING != X_ENDSTOP_INVERTING || DISABLED(ENDSTOPPULLUP_XMIN))
#error "SENSORLESS_HOMING requires X_MIN_ENDSTOP_INVERTING and ENDSTOPPULLUP_XMIN when homing to X_MIN." #error "SENSORLESS_HOMING requires X_MIN_ENDSTOP_INVERTING and ENDSTOPPULLUP_XMIN when homing to X_MIN."
#elif X_SENSORLESS && X_HOME_DIR == 1 && (!X_MAX_ENDSTOP_INVERTING || DISABLED(ENDSTOPPULLUP_XMAX)) #elif X_SENSORLESS && X_HOME_DIR == 1 && (X_MAX_ENDSTOP_INVERTING != X_ENDSTOP_INVERTING || DISABLED(ENDSTOPPULLUP_XMAX))
#error "SENSORLESS_HOMING requires X_MAX_ENDSTOP_INVERTING and ENDSTOPPULLUP_XMAX when homing to X_MAX." #error "SENSORLESS_HOMING requires X_MAX_ENDSTOP_INVERTING and ENDSTOPPULLUP_XMAX when homing to X_MAX."
#elif Y_SENSORLESS && Y_HOME_DIR == -1 && (!Y_MIN_ENDSTOP_INVERTING || DISABLED(ENDSTOPPULLUP_YMIN)) #elif Y_SENSORLESS && Y_HOME_DIR == -1 && (Y_MIN_ENDSTOP_INVERTING != Y_ENDSTOP_INVERTING || DISABLED(ENDSTOPPULLUP_YMIN))
#error "SENSORLESS_HOMING requires Y_MIN_ENDSTOP_INVERTING and ENDSTOPPULLUP_YMIN when homing to Y_MIN." #error "SENSORLESS_HOMING requires Y_MIN_ENDSTOP_INVERTING and ENDSTOPPULLUP_YMIN when homing to Y_MIN."
#elif Y_SENSORLESS && Y_HOME_DIR == 1 && (!Y_MAX_ENDSTOP_INVERTING || DISABLED(ENDSTOPPULLUP_YMAX)) #elif Y_SENSORLESS && Y_HOME_DIR == 1 && (Y_MAX_ENDSTOP_INVERTING != Y_ENDSTOP_INVERTING || DISABLED(ENDSTOPPULLUP_YMAX))
#error "SENSORLESS_HOMING requires Y_MAX_ENDSTOP_INVERTING and ENDSTOPPULLUP_YMAX when homing to Y_MAX." #error "SENSORLESS_HOMING requires Y_MAX_ENDSTOP_INVERTING and ENDSTOPPULLUP_YMAX when homing to Y_MAX."
#elif Z_SENSORLESS && Z_HOME_DIR == -1 && (!Z_MIN_ENDSTOP_INVERTING || DISABLED(ENDSTOPPULLUP_ZMIN)) #elif Z_SENSORLESS && Z_HOME_DIR == -1 && (Z_MIN_ENDSTOP_INVERTING != Z_ENDSTOP_INVERTING || DISABLED(ENDSTOPPULLUP_ZMIN))
#error "SENSORLESS_HOMING requires Z_MIN_ENDSTOP_INVERTING and ENDSTOPPULLUP_ZMIN when homing to Z_MIN." #error "SENSORLESS_HOMING requires Z_MIN_ENDSTOP_INVERTING and ENDSTOPPULLUP_ZMIN when homing to Z_MIN."
#elif Z_SENSORLESS && Z_HOME_DIR == 1 && (!Z_MAX_ENDSTOP_INVERTING || DISABLED(ENDSTOPPULLUP_ZMAX)) #elif Z_SENSORLESS && Z_HOME_DIR == 1 && (Z_MAX_ENDSTOP_INVERTING != Z_ENDSTOP_INVERTING || DISABLED(ENDSTOPPULLUP_ZMAX))
#error "SENSORLESS_HOMING requires Z_MAX_ENDSTOP_INVERTING and ENDSTOPPULLUP_ZMAX when homing to Z_MAX." #error "SENSORLESS_HOMING requires Z_MAX_ENDSTOP_INVERTING and ENDSTOPPULLUP_ZMAX when homing to Z_MAX."
#elif ENDSTOP_NOISE_THRESHOLD #elif ENDSTOP_NOISE_THRESHOLD
#error "SENSORLESS_HOMING is incompatible with ENDSTOP_NOISE_THRESHOLD." #error "SENSORLESS_HOMING is incompatible with ENDSTOP_NOISE_THRESHOLD."
#elif !(X_SENSORLESS || Y_SENSORLESS || Z_SENSORLESS) #elif !(X_SENSORLESS || Y_SENSORLESS || Z_SENSORLESS)
#error "SENSORLESS_HOMING requires a TMC stepper driver with StallGuard on X, Y, or Z axes." #error "SENSORLESS_HOMING requires a TMC stepper driver with StallGuard on X, Y, or Z axes."
#endif #endif
#undef X_ENDSTOP_INVERTING
#undef Y_ENDSTOP_INVERTING
#undef Z_ENDSTOP_INVERTING
#endif #endif
// Sensorless probing requirements // Sensorless probing requirements
@ -2026,11 +2072,11 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
#if ENABLED(HYBRID_THRESHOLD) && !STEALTHCHOP_ENABLED #if ENABLED(HYBRID_THRESHOLD) && !STEALTHCHOP_ENABLED
#error "Enable STEALTHCHOP_(XY|Z|E) to use HYBRID_THRESHOLD." #error "Enable STEALTHCHOP_(XY|Z|E) to use HYBRID_THRESHOLD."
#elif ENABLED(SENSORLESS_HOMING) && !HAS_STALLGUARD #elif ENABLED(SENSORLESS_HOMING) && !HAS_STALLGUARD
#error "SENSORLESS_HOMING requires TMC2130 or TMC2160 or TMC5160 stepper drivers." #error "SENSORLESS_HOMING requires TMC2130, TMC2160, TMC2209, TMC2660, or TMC5160 stepper drivers."
#elif ENABLED(SENSORLESS_PROBING) && !HAS_STALLGUARD #elif ENABLED(SENSORLESS_PROBING) && !HAS_STALLGUARD
#error "SENSORLESS_PROBING requires TMC2130 stepper drivers." #error "SENSORLESS_PROBING requires TMC2130, TMC2160, TMC2209, TMC2660, or TMC5160 stepper drivers."
#elif STEALTHCHOP_ENABLED && !HAS_STEALTHCHOP #elif STEALTHCHOP_ENABLED && !HAS_STEALTHCHOP
#error "STEALTHCHOP requires TMC2130 or TMC2160 or TMC2208 or TMC5160 stepper drivers." #error "STEALTHCHOP requires TMC2130, TMC2160, TMC2208, TMC2209, or TMC5160 stepper drivers."
#endif #endif
#if ENABLED(DELTA) && (ENABLED(STEALTHCHOP_XY) != ENABLED(STEALTHCHOP_Z)) #if ENABLED(DELTA) && (ENABLED(STEALTHCHOP_XY) != ENABLED(STEALTHCHOP_Z))

@ -473,13 +473,13 @@ namespace ExtUI {
int getTMCBumpSensitivity(const axis_t axis) { int getTMCBumpSensitivity(const axis_t axis) {
switch (axis) { switch (axis) {
#if X_SENSORLESS && AXIS_HAS_STALLGUARD(X) #if X_SENSORLESS && AXIS_HAS_STALLGUARD(X)
case X: return stepperX.sgt(); case X: return stepperX.homing_threshold();
#endif #endif
#if Y_SENSORLESS && AXIS_HAS_STALLGUARD(Y) #if Y_SENSORLESS && AXIS_HAS_STALLGUARD(Y)
case Y: return stepperY.sgt(); case Y: return stepperY.homing_threshold();
#endif #endif
#if Z_SENSORLESS && AXIS_HAS_STALLGUARD(Z) #if Z_SENSORLESS && AXIS_HAS_STALLGUARD(Z)
case Z: return stepperZ.sgt(); case Z: return stepperZ.homing_threshold();
#endif #endif
default: return 0; default: return 0;
} }
@ -488,13 +488,13 @@ namespace ExtUI {
void setTMCBumpSensitivity(const float value, const axis_t axis) { void setTMCBumpSensitivity(const float value, const axis_t axis) {
switch (axis) { switch (axis) {
#if X_SENSORLESS && AXIS_HAS_STALLGUARD(X) #if X_SENSORLESS && AXIS_HAS_STALLGUARD(X)
case X: stepperX.sgt(clamp(value, -64, 63)); break; case X: stepperX.homing_threshold(value); break;
#endif #endif
#if Y_SENSORLESS && AXIS_HAS_STALLGUARD(Y) #if Y_SENSORLESS && AXIS_HAS_STALLGUARD(Y)
case Y: stepperY.sgt(clamp(value, -64, 63)); break; case Y: stepperY.homing_threshold(value); break;
#endif #endif
#if Z_SENSORLESS && AXIS_HAS_STALLGUARD(Z) #if Z_SENSORLESS && AXIS_HAS_STALLGUARD(Z)
case Z: stepperZ.sgt(clamp(value, -64, 63)); break; case Z: stepperZ.homing_threshold(value); break;
#endif #endif
default: break; default: break;
} }

@ -212,7 +212,7 @@ void menu_tmc_current() {
#if ENABLED(SENSORLESS_HOMING) #if ENABLED(SENSORLESS_HOMING)
#define TMC_EDIT_STORED_SGT(ST) MENU_ITEM_EDIT_CALLBACK(int8, MSG_##ST, &stepper##ST.stored.homing_thrs, -64, 63, refresh_homing_thrs_##ST); #define TMC_EDIT_STORED_SGT(ST) MENU_ITEM_EDIT_CALLBACK(int4, MSG_##ST, &stepper##ST.stored.homing_thrs, stepper##ST.sgt_min, stepper##ST.sgt_max, refresh_homing_thrs_##ST);
#if X_SENSORLESS #if X_SENSORLESS
void refresh_homing_thrs_X() { stepperX.refresh_homing_thrs(); } void refresh_homing_thrs_X() { stepperX.refresh_homing_thrs(); }

@ -1051,13 +1051,13 @@ void MarlinSettings::postprocess() {
tmc_sgt_t tmc_sgt = { 0, 0, 0 }; tmc_sgt_t tmc_sgt = { 0, 0, 0 };
#if USE_SENSORLESS #if USE_SENSORLESS
#if X_SENSORLESS #if X_SENSORLESS
tmc_sgt.X = stepperX.sgt(); tmc_sgt.X = stepperX.homing_threshold();
#endif #endif
#if Y_SENSORLESS #if Y_SENSORLESS
tmc_sgt.Y = stepperY.sgt(); tmc_sgt.Y = stepperY.homing_threshold();
#endif #endif
#if Z_SENSORLESS #if Z_SENSORLESS
tmc_sgt.Z = stepperZ.sgt(); tmc_sgt.Z = stepperZ.homing_threshold();
#endif #endif
#endif #endif
EEPROM_WRITE(tmc_sgt); EEPROM_WRITE(tmc_sgt);
@ -1834,29 +1834,29 @@ void MarlinSettings::postprocess() {
if (!validating) { if (!validating) {
#ifdef X_STALL_SENSITIVITY #ifdef X_STALL_SENSITIVITY
#if AXIS_HAS_STALLGUARD(X) #if AXIS_HAS_STALLGUARD(X)
stepperX.sgt(tmc_sgt.X); stepperX.homing_threshold(tmc_sgt.X);
#endif #endif
#if AXIS_HAS_STALLGUARD(X2) #if AXIS_HAS_STALLGUARD(X2)
stepperX2.sgt(tmc_sgt.X); stepperX2.homing_threshold(tmc_sgt.X);
#endif #endif
#endif #endif
#ifdef Y_STALL_SENSITIVITY #ifdef Y_STALL_SENSITIVITY
#if AXIS_HAS_STALLGUARD(Y) #if AXIS_HAS_STALLGUARD(Y)
stepperY.sgt(tmc_sgt.Y); stepperY.homing_threshold(tmc_sgt.Y);
#endif #endif
#if AXIS_HAS_STALLGUARD(Y2) #if AXIS_HAS_STALLGUARD(Y2)
stepperY2.sgt(tmc_sgt.Y); stepperY2.homing_threshold(tmc_sgt.Y);
#endif #endif
#endif #endif
#ifdef Z_STALL_SENSITIVITY #ifdef Z_STALL_SENSITIVITY
#if AXIS_HAS_STALLGUARD(Z) #if AXIS_HAS_STALLGUARD(Z)
stepperZ.sgt(tmc_sgt.Z); stepperZ.homing_threshold(tmc_sgt.Z);
#endif #endif
#if AXIS_HAS_STALLGUARD(Z2) #if AXIS_HAS_STALLGUARD(Z2)
stepperZ2.sgt(tmc_sgt.Z); stepperZ2.homing_threshold(tmc_sgt.Z);
#endif #endif
#if AXIS_HAS_STALLGUARD(Z3) #if AXIS_HAS_STALLGUARD(Z3)
stepperZ3.sgt(tmc_sgt.Z); stepperZ3.homing_threshold(tmc_sgt.Z);
#endif #endif
#endif #endif
} }
@ -3259,13 +3259,13 @@ void MarlinSettings::reset() {
#if X_SENSORLESS || Y_SENSORLESS || Z_SENSORLESS #if X_SENSORLESS || Y_SENSORLESS || Z_SENSORLESS
say_M914(); say_M914();
#if X_SENSORLESS #if X_SENSORLESS
SERIAL_ECHOPAIR(" X", stepperX.sgt()); SERIAL_ECHOPAIR(" X", stepperX.homing_threshold());
#endif #endif
#if Y_SENSORLESS #if Y_SENSORLESS
SERIAL_ECHOPAIR(" Y", stepperY.sgt()); SERIAL_ECHOPAIR(" Y", stepperY.homing_threshold());
#endif #endif
#if Z_SENSORLESS #if Z_SENSORLESS
SERIAL_ECHOPAIR(" Z", stepperZ.sgt()); SERIAL_ECHOPAIR(" Z", stepperZ.homing_threshold());
#endif #endif
SERIAL_EOL(); SERIAL_EOL();
#endif #endif
@ -3278,20 +3278,20 @@ void MarlinSettings::reset() {
say_M914(); say_M914();
SERIAL_ECHOPGM(" I1"); SERIAL_ECHOPGM(" I1");
#if HAS_X2_SENSORLESS #if HAS_X2_SENSORLESS
SERIAL_ECHOPAIR(" X", stepperX2.sgt()); SERIAL_ECHOPAIR(" X", stepperX2.homing_threshold());
#endif #endif
#if HAS_Y2_SENSORLESS #if HAS_Y2_SENSORLESS
SERIAL_ECHOPAIR(" Y", stepperY2.sgt()); SERIAL_ECHOPAIR(" Y", stepperY2.homing_threshold());
#endif #endif
#if HAS_Z2_SENSORLESS #if HAS_Z2_SENSORLESS
SERIAL_ECHOPAIR(" Z", stepperZ2.sgt()); SERIAL_ECHOPAIR(" Z", stepperZ2.homing_threshold());
#endif #endif
SERIAL_EOL(); SERIAL_EOL();
#endif #endif
#if HAS_Z3_SENSORLESS #if HAS_Z3_SENSORLESS
say_M914(); say_M914();
SERIAL_ECHOLNPAIR(" I2 Z", stepperZ3.sgt()); SERIAL_ECHOLNPAIR(" I2 Z", stepperZ3.homing_threshold());
#endif #endif
#endif // USE_SENSORLESS #endif // USE_SENSORLESS

@ -163,8 +163,8 @@
#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)
#endif #endif
#define TMC_UART_HW_DEFINE(IC, ST, L, AI) TMCMarlin<IC##Stepper, L, AI> stepper##ST(&ST##_HARDWARE_SERIAL, ST##_RSENSE) #define TMC_UART_HW_DEFINE(IC, ST, L, AI) TMCMarlin<IC##Stepper, L, AI> stepper##ST(&ST##_HARDWARE_SERIAL, ST##_RSENSE, ST##_SLAVE_ADDRESS)
#define TMC_UART_SW_DEFINE(IC, ST, L, AI) TMCMarlin<IC##Stepper, L, AI> stepper##ST(ST##_SERIAL_RX_PIN, ST##_SERIAL_TX_PIN, ST##_RSENSE, ST##_SERIAL_RX_PIN > -1) #define TMC_UART_SW_DEFINE(IC, ST, L, AI) TMCMarlin<IC##Stepper, L, AI> stepper##ST(ST##_SERIAL_RX_PIN, ST##_SERIAL_TX_PIN, ST##_RSENSE, ST##_SLAVE_ADDRESS, ST##_SERIAL_RX_PIN > -1)
#define _TMC_SPI_DEFINE(IC, ST, AI) __TMC_SPI_DEFINE(IC, ST, TMC_##ST##_LABEL, AI) #define _TMC_SPI_DEFINE(IC, ST, AI) __TMC_SPI_DEFINE(IC, ST, TMC_##ST##_LABEL, AI)
#define TMC_SPI_DEFINE(ST, AI) _TMC_SPI_DEFINE(ST##_DRIVER_TYPE, ST, AI##_AXIS) #define TMC_SPI_DEFINE(ST, AI) _TMC_SPI_DEFINE(ST##_DRIVER_TYPE, ST, AI##_AXIS)
@ -318,95 +318,94 @@
#endif // TMC2160 #endif // TMC2160
// //
// TMC2208 Driver objects and inits // TMC2208/2209 Driver objects and inits
// //
#if HAS_DRIVER(TMC2208) #if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
// Stepper objects of TMC2208 steppers used #if AXIS_HAS_UART(X)
#if AXIS_DRIVER_TYPE_X(TMC2208)
#ifdef X_HARDWARE_SERIAL #ifdef X_HARDWARE_SERIAL
TMC_UART_DEFINE(HW, X, X); TMC_UART_DEFINE(HW, X, X);
#else #else
TMC_UART_DEFINE(SW, X, X); TMC_UART_DEFINE(SW, X, X);
#endif #endif
#endif #endif
#if AXIS_DRIVER_TYPE_X2(TMC2208) #if AXIS_HAS_UART(X2)
#ifdef X2_HARDWARE_SERIAL #ifdef X2_HARDWARE_SERIAL
TMC_UART_DEFINE(HW, X2, X); TMC_UART_DEFINE(HW, X2, X);
#else #else
TMC_UART_DEFINE(SW, X2, X); TMC_UART_DEFINE(SW, X2, X);
#endif #endif
#endif #endif
#if AXIS_DRIVER_TYPE_Y(TMC2208) #if AXIS_HAS_UART(Y)
#ifdef Y_HARDWARE_SERIAL #ifdef Y_HARDWARE_SERIAL
TMC_UART_DEFINE(HW, Y, Y); TMC_UART_DEFINE(HW, Y, Y);
#else #else
TMC_UART_DEFINE(SW, Y, Y); TMC_UART_DEFINE(SW, Y, Y);
#endif #endif
#endif #endif
#if AXIS_DRIVER_TYPE_Y2(TMC2208) #if AXIS_HAS_UART(Y2)
#ifdef Y2_HARDWARE_SERIAL #ifdef Y2_HARDWARE_SERIAL
TMC_UART_DEFINE(HW, Y2, Y); TMC_UART_DEFINE(HW, Y2, Y);
#else #else
TMC_UART_DEFINE(SW, Y2, Y); TMC_UART_DEFINE(SW, Y2, Y);
#endif #endif
#endif #endif
#if AXIS_DRIVER_TYPE_Z(TMC2208) #if AXIS_HAS_UART(Z)
#ifdef Z_HARDWARE_SERIAL #ifdef Z_HARDWARE_SERIAL
TMC_UART_DEFINE(HW, Z, Z); TMC_UART_DEFINE(HW, Z, Z);
#else #else
TMC_UART_DEFINE(SW, Z, Z); TMC_UART_DEFINE(SW, Z, Z);
#endif #endif
#endif #endif
#if AXIS_DRIVER_TYPE_Z2(TMC2208) #if AXIS_HAS_UART(Z2)
#ifdef Z2_HARDWARE_SERIAL #ifdef Z2_HARDWARE_SERIAL
TMC_UART_DEFINE(HW, Z2, Z); TMC_UART_DEFINE(HW, Z2, Z);
#else #else
TMC_UART_DEFINE(SW, Z2, Z); TMC_UART_DEFINE(SW, Z2, Z);
#endif #endif
#endif #endif
#if AXIS_DRIVER_TYPE_Z3(TMC2208) #if AXIS_HAS_UART(Z3)
#ifdef Z3_HARDWARE_SERIAL #ifdef Z3_HARDWARE_SERIAL
TMC_UART_DEFINE(HW, Z3, Z); TMC_UART_DEFINE(HW, Z3, Z);
#else #else
TMC_UART_DEFINE(SW, Z3, Z); TMC_UART_DEFINE(SW, Z3, Z);
#endif #endif
#endif #endif
#if AXIS_DRIVER_TYPE_E0(TMC2208) #if AXIS_HAS_UART(E0)
#ifdef E0_HARDWARE_SERIAL #ifdef E0_HARDWARE_SERIAL
TMC_UART_DEFINE_E(HW, 0); TMC_UART_DEFINE_E(HW, 0);
#else #else
TMC_UART_DEFINE_E(SW, 0); TMC_UART_DEFINE_E(SW, 0);
#endif #endif
#endif #endif
#if AXIS_DRIVER_TYPE_E1(TMC2208) #if AXIS_HAS_UART(E1)
#ifdef E1_HARDWARE_SERIAL #ifdef E1_HARDWARE_SERIAL
TMC_UART_DEFINE_E(HW, 1); TMC_UART_DEFINE_E(HW, 1);
#else #else
TMC_UART_DEFINE_E(SW, 1); TMC_UART_DEFINE_E(SW, 1);
#endif #endif
#endif #endif
#if AXIS_DRIVER_TYPE_E2(TMC2208) #if AXIS_HAS_UART(E2)
#ifdef E2_HARDWARE_SERIAL #ifdef E2_HARDWARE_SERIAL
TMC_UART_DEFINE_E(HW, 2); TMC_UART_DEFINE_E(HW, 2);
#else #else
TMC_UART_DEFINE_E(SW, 2); TMC_UART_DEFINE_E(SW, 2);
#endif #endif
#endif #endif
#if AXIS_DRIVER_TYPE_E3(TMC2208) #if AXIS_HAS_UART(E3)
#ifdef E3_HARDWARE_SERIAL #ifdef E3_HARDWARE_SERIAL
TMC_UART_DEFINE_E(HW, 3); TMC_UART_DEFINE_E(HW, 3);
#else #else
TMC_UART_DEFINE_E(SW, 3); TMC_UART_DEFINE_E(SW, 3);
#endif #endif
#endif #endif
#if AXIS_DRIVER_TYPE_E4(TMC2208) #if AXIS_HAS_UART(E4)
#ifdef E4_HARDWARE_SERIAL #ifdef E4_HARDWARE_SERIAL
TMC_UART_DEFINE_E(HW, 4); TMC_UART_DEFINE_E(HW, 4);
#else #else
TMC_UART_DEFINE_E(SW, 4); TMC_UART_DEFINE_E(SW, 4);
#endif #endif
#endif #endif
#if AXIS_DRIVER_TYPE_E5(TMC2208) #if AXIS_HAS_UART(E5)
#ifdef E5_HARDWARE_SERIAL #ifdef E5_HARDWARE_SERIAL
TMC_UART_DEFINE_E(HW, 5); TMC_UART_DEFINE_E(HW, 5);
#else #else
@ -414,92 +413,92 @@
#endif #endif
#endif #endif
void tmc2208_serial_begin() { void tmc_serial_begin() {
#if AXIS_DRIVER_TYPE_X(TMC2208) #if AXIS_HAS_UART(X)
#ifdef X_HARDWARE_SERIAL #ifdef X_HARDWARE_SERIAL
X_HARDWARE_SERIAL.begin(115200); X_HARDWARE_SERIAL.begin(115200);
#else #else
stepperX.beginSerial(115200); stepperX.beginSerial(115200);
#endif #endif
#endif #endif
#if AXIS_DRIVER_TYPE_X2(TMC2208) #if AXIS_HAS_UART(X2)
#ifdef X2_HARDWARE_SERIAL #ifdef X2_HARDWARE_SERIAL
X2_HARDWARE_SERIAL.begin(115200); X2_HARDWARE_SERIAL.begin(115200);
#else #else
stepperX2.beginSerial(115200); stepperX2.beginSerial(115200);
#endif #endif
#endif #endif
#if AXIS_DRIVER_TYPE_Y(TMC2208) #if AXIS_HAS_UART(Y)
#ifdef Y_HARDWARE_SERIAL #ifdef Y_HARDWARE_SERIAL
Y_HARDWARE_SERIAL.begin(115200); Y_HARDWARE_SERIAL.begin(115200);
#else #else
stepperY.beginSerial(115200); stepperY.beginSerial(115200);
#endif #endif
#endif #endif
#if AXIS_DRIVER_TYPE_Y2(TMC2208) #if AXIS_HAS_UART(Y2)
#ifdef Y2_HARDWARE_SERIAL #ifdef Y2_HARDWARE_SERIAL
Y2_HARDWARE_SERIAL.begin(115200); Y2_HARDWARE_SERIAL.begin(115200);
#else #else
stepperY2.beginSerial(115200); stepperY2.beginSerial(115200);
#endif #endif
#endif #endif
#if AXIS_DRIVER_TYPE_Z(TMC2208) #if AXIS_HAS_UART(Z)
#ifdef Z_HARDWARE_SERIAL #ifdef Z_HARDWARE_SERIAL
Z_HARDWARE_SERIAL.begin(115200); Z_HARDWARE_SERIAL.begin(115200);
#else #else
stepperZ.beginSerial(115200); stepperZ.beginSerial(115200);
#endif #endif
#endif #endif
#if AXIS_DRIVER_TYPE_Z2(TMC2208) #if AXIS_HAS_UART(Z2)
#ifdef Z2_HARDWARE_SERIAL #ifdef Z2_HARDWARE_SERIAL
Z2_HARDWARE_SERIAL.begin(115200); Z2_HARDWARE_SERIAL.begin(115200);
#else #else
stepperZ2.beginSerial(115200); stepperZ2.beginSerial(115200);
#endif #endif
#endif #endif
#if AXIS_DRIVER_TYPE_Z3(TMC2208) #if AXIS_HAS_UART(Z3)
#ifdef Z3_HARDWARE_SERIAL #ifdef Z3_HARDWARE_SERIAL
Z3_HARDWARE_SERIAL.begin(115200); Z3_HARDWARE_SERIAL.begin(115200);
#else #else
stepperZ3.beginSerial(115200); stepperZ3.beginSerial(115200);
#endif #endif
#endif #endif
#if AXIS_DRIVER_TYPE_E0(TMC2208) #if AXIS_HAS_UART(E0)
#ifdef E0_HARDWARE_SERIAL #ifdef E0_HARDWARE_SERIAL
E0_HARDWARE_SERIAL.begin(115200); E0_HARDWARE_SERIAL.begin(115200);
#else #else
stepperE0.beginSerial(115200); stepperE0.beginSerial(115200);
#endif #endif
#endif #endif
#if AXIS_DRIVER_TYPE_E1(TMC2208) #if AXIS_HAS_UART(E1)
#ifdef E1_HARDWARE_SERIAL #ifdef E1_HARDWARE_SERIAL
E1_HARDWARE_SERIAL.begin(115200); E1_HARDWARE_SERIAL.begin(115200);
#else #else
stepperE1.beginSerial(115200); stepperE1.beginSerial(115200);
#endif #endif
#endif #endif
#if AXIS_DRIVER_TYPE_E2(TMC2208) #if AXIS_HAS_UART(E2)
#ifdef E2_HARDWARE_SERIAL #ifdef E2_HARDWARE_SERIAL
E2_HARDWARE_SERIAL.begin(115200); E2_HARDWARE_SERIAL.begin(115200);
#else #else
stepperE2.beginSerial(115200); stepperE2.beginSerial(115200);
#endif #endif
#endif #endif
#if AXIS_DRIVER_TYPE_E3(TMC2208) #if AXIS_HAS_UART(E3)
#ifdef E3_HARDWARE_SERIAL #ifdef E3_HARDWARE_SERIAL
E3_HARDWARE_SERIAL.begin(115200); E3_HARDWARE_SERIAL.begin(115200);
#else #else
stepperE3.beginSerial(115200); stepperE3.beginSerial(115200);
#endif #endif
#endif #endif
#if AXIS_DRIVER_TYPE_E4(TMC2208) #if AXIS_HAS_UART(E4)
#ifdef E4_HARDWARE_SERIAL #ifdef E4_HARDWARE_SERIAL
E4_HARDWARE_SERIAL.begin(115200); E4_HARDWARE_SERIAL.begin(115200);
#else #else
stepperE4.beginSerial(115200); stepperE4.beginSerial(115200);
#endif #endif
#endif #endif
#if AXIS_DRIVER_TYPE_E5(TMC2208) #if AXIS_HAS_UART(E5)
#ifdef E5_HARDWARE_SERIAL #ifdef E5_HARDWARE_SERIAL
E5_HARDWARE_SERIAL.begin(115200); E5_HARDWARE_SERIAL.begin(115200);
#else #else
@ -507,7 +506,9 @@
#endif #endif
#endif #endif
} }
#endif
#if HAS_DRIVER(TMC2208)
template<char AXIS_LETTER, char DRIVER_ID, AxisEnum AXIS_ID> template<char AXIS_LETTER, char DRIVER_ID, AxisEnum AXIS_ID>
void tmc_init(TMCMarlin<TMC2208Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID> &st, const uint16_t mA, const uint16_t microsteps, const uint32_t thrs, const bool stealth) { void tmc_init(TMCMarlin<TMC2208Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID> &st, const uint16_t mA, const uint16_t microsteps, const uint32_t thrs, const bool stealth) {
TMC2208_n::GCONF_t gconf{0}; TMC2208_n::GCONF_t gconf{0};
@ -555,6 +556,50 @@
} }
#endif // TMC2208 #endif // TMC2208
#if HAS_DRIVER(TMC2209)
template<char AXIS_LETTER, char DRIVER_ID, AxisEnum AXIS_ID>
void tmc_init(TMCMarlin<TMC2209Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID> &st, const uint16_t mA, const uint16_t microsteps, const uint32_t thrs, const bool stealth) {
TMC2208_n::GCONF_t gconf{0};
gconf.pdn_disable = true; // Use UART
gconf.mstep_reg_select = true; // Select microsteps with UART
gconf.i_scale_analog = false;
gconf.en_spreadcycle = !stealth;
st.GCONF(gconf.sr);
st.stored.stealthChop_enabled = stealth;
TMC2208_n::CHOPCONF_t chopconf{0};
chopconf.tbl = 0b01; // blank_time = 24
chopconf.toff = chopper_timing.toff;
chopconf.intpol = INTERPOLATE;
chopconf.hend = chopper_timing.hend + 3;
chopconf.hstrt = chopper_timing.hstrt - 1;
st.CHOPCONF(chopconf.sr);
st.rms_current(mA, HOLD_MULTIPLIER);
st.microsteps(microsteps);
st.iholddelay(10);
st.TPOWERDOWN(128); // ~2s until driver lowers to hold current
TMC2208_n::PWMCONF_t pwmconf{0};
pwmconf.pwm_lim = 12;
pwmconf.pwm_reg = 8;
pwmconf.pwm_autograd = true;
pwmconf.pwm_autoscale = true;
pwmconf.pwm_freq = 0b01;
pwmconf.pwm_grad = 14;
pwmconf.pwm_ofs = 36;
st.PWMCONF(pwmconf.sr);
#if ENABLED(HYBRID_THRESHOLD)
st.set_pwm_thrs(thrs);
#else
UNUSED(thrs);
#endif
st.GSTAT(0b111); // Clear
}
#endif // TMC2209
#if HAS_DRIVER(TMC2660) #if HAS_DRIVER(TMC2660)
template<char AXIS_LETTER, char DRIVER_ID, AxisEnum AXIS_ID> template<char AXIS_LETTER, char DRIVER_ID, AxisEnum AXIS_ID>
void tmc_init(TMCMarlin<TMC2660Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID> &st, const uint16_t mA, const uint16_t microsteps, const uint32_t, const bool) { void tmc_init(TMCMarlin<TMC2660Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID> &st, const uint16_t mA, const uint16_t microsteps, const uint32_t, const bool) {
@ -791,29 +836,29 @@ void reset_stepper_drivers() {
#if USE_SENSORLESS #if USE_SENSORLESS
#if X_SENSORLESS #if X_SENSORLESS
#if AXIS_HAS_STALLGUARD(X) #if AXIS_HAS_STALLGUARD(X)
stepperX.sgt(X_STALL_SENSITIVITY); stepperX.homing_threshold(X_STALL_SENSITIVITY);
#endif #endif
#if AXIS_HAS_STALLGUARD(X2) #if AXIS_HAS_STALLGUARD(X2)
stepperX2.sgt(X_STALL_SENSITIVITY); stepperX2.homing_threshold(X_STALL_SENSITIVITY);
#endif #endif
#endif #endif
#if Y_SENSORLESS #if Y_SENSORLESS
#if AXIS_HAS_STALLGUARD(Y) #if AXIS_HAS_STALLGUARD(Y)
stepperY.sgt(Y_STALL_SENSITIVITY); stepperY.homing_threshold(Y_STALL_SENSITIVITY);
#endif #endif
#if AXIS_HAS_STALLGUARD(Y2) #if AXIS_HAS_STALLGUARD(Y2)
stepperY2.sgt(Y_STALL_SENSITIVITY); stepperY2.homing_threshold(Y_STALL_SENSITIVITY);
#endif #endif
#endif #endif
#if Z_SENSORLESS #if Z_SENSORLESS
#if AXIS_HAS_STALLGUARD(Z) #if AXIS_HAS_STALLGUARD(Z)
stepperZ.sgt(Z_STALL_SENSITIVITY); stepperZ.homing_threshold(Z_STALL_SENSITIVITY);
#endif #endif
#if AXIS_HAS_STALLGUARD(Z2) #if AXIS_HAS_STALLGUARD(Z2)
stepperZ2.sgt(Z_STALL_SENSITIVITY); stepperZ2.homing_threshold(Z_STALL_SENSITIVITY);
#endif #endif
#if AXIS_HAS_STALLGUARD(Z3) #if AXIS_HAS_STALLGUARD(Z3)
stepperZ3.sgt(Z_STALL_SENSITIVITY); stepperZ3.homing_threshold(Z_STALL_SENSITIVITY);
#endif #endif
#endif #endif
#endif #endif

@ -58,8 +58,8 @@
#if HAS_TRINAMIC #if HAS_TRINAMIC
#include <TMCStepper.h> #include <TMCStepper.h>
#include "../feature/tmc_util.h" #include "../feature/tmc_util.h"
#if TMCSTEPPER_VERSION < 0x000401 #if TMCSTEPPER_VERSION < 0x000405
#error "Update TMCStepper library to 0.4.1 or newer." #error "Update TMCStepper library to 0.4.5 or newer."
#endif #endif
#define ____TMC_CLASS(MODEL, A, I, E) TMCMarlin<TMC##MODEL##Stepper, A, I, E> #define ____TMC_CLASS(MODEL, A, I, E) TMCMarlin<TMC##MODEL##Stepper, A, I, E>
@ -81,8 +81,8 @@
static constexpr chopper_timing_t chopper_timing = CHOPPER_TIMING; static constexpr chopper_timing_t chopper_timing = CHOPPER_TIMING;
#if HAS_DRIVER(TMC2208) #if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
void tmc2208_serial_begin(); void tmc_serial_begin();
#endif #endif
#endif #endif

@ -107,9 +107,9 @@
#define TMC_SW_SCK P0_04 #define TMC_SW_SCK P0_04
#endif #endif
#if HAS_DRIVER(TMC2208) #if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
/** /**
* TMC2208 stepper drivers * TMC2208/TMC2209 stepper drivers
* *
* Hardware serial communication ports. * Hardware serial communication ports.
* If undefined software serial is used according to the pins below * If undefined software serial is used according to the pins below

@ -116,7 +116,7 @@
// the jumper next to the limit switch socket when using sensorless homing. // the jumper next to the limit switch socket when using sensorless homing.
// //
#if HAS_DRIVER(TMC2208) #if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
// Software serial // Software serial
#define X_SERIAL_RX_PIN 71 #define X_SERIAL_RX_PIN 71
#define X_SERIAL_TX_PIN 72 #define X_SERIAL_TX_PIN 72

@ -288,7 +288,7 @@
/** /**
* Example for trinamic drivers using the J8 connector on MKs Sbase. * Example for trinamic drivers using the J8 connector on MKs Sbase.
* 2130s need 1 pin for each driver. 2208s need 2 pins for serial control. * 2130s need 1 pin for each driver. 2208/2209s need 2 pins for serial control.
* This board does not have enough pins to use hardware serial. * This board does not have enough pins to use hardware serial.
*/ */
@ -316,7 +316,7 @@
#endif #endif
#endif #endif
#if MB(MKS_SBASE) && HAS_DRIVER(TMC2208) #if MB(MKS_SBASE) && (HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209))
// The shortage of pins becomes apparent. // The shortage of pins becomes apparent.
// Worst case you may have to give up the LCD // Worst case you may have to give up the LCD
// RX pins need to be interrupt capable // RX pins need to be interrupt capable

@ -42,7 +42,7 @@
//#define BTN_EN1 P1_23 // EXP2.5 //#define BTN_EN1 P1_23 // EXP2.5
//#define BTN_EN2 P1_22 // EXP2.3 //#define BTN_EN2 P1_22 // EXP2.3
#if HAS_DRIVER(TMC2208) #if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
// The shortage of pins becomes apparent. // The shortage of pins becomes apparent.
// In the worst case you may have to give up the LCD. // In the worst case you may have to give up the LCD.
// RX pins must be interrupt-capable. // RX pins must be interrupt-capable.

@ -293,9 +293,9 @@
#endif #endif
#endif #endif
#if HAS_DRIVER(TMC2208) #if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
/** /**
* TMC2208 stepper drivers * TMC2208/TMC2209 stepper drivers
* *
* Hardware serial communication ports. * Hardware serial communication ports.
* If undefined software serial is used according to the pins below * If undefined software serial is used according to the pins below

@ -204,9 +204,9 @@
#endif // ULTRA_LCD #endif // ULTRA_LCD
#if HAS_DRIVER(TMC2208) #if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
/** /**
* TMC2208 stepper drivers * TMC2208/TMC2209 stepper drivers
* *
* Hardware serial communication ports. * Hardware serial communication ports.
* If undefined software serial is used according to the pins below * If undefined software serial is used according to the pins below

@ -268,9 +268,9 @@
#endif #endif
#endif #endif
#if ENABLED(HAVE_TMC2208) #if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
/** /**
* TMC2208 stepper drivers * TMC2208/TMC2209 stepper drivers
* *
* Hardware serial communication ports. * Hardware serial communication ports.
* If undefined software serial is used according to the pins below * If undefined software serial is used according to the pins below

@ -106,9 +106,9 @@
#define TMC_SW_SCK P1_09 // ETH #define TMC_SW_SCK P1_09 // ETH
#endif #endif
#if HAS_DRIVER(TMC2208) #if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
/** /**
* TMC2208 stepper drivers * TMC2208/TMC2209 stepper drivers
* *
* Hardware serial communication ports. * Hardware serial communication ports.
* If undefined software serial is used according to the pins below * If undefined software serial is used according to the pins below

@ -298,11 +298,12 @@ use_example_configs SCARA
opt_enable USE_ZMIN_PLUG FIX_MOUNTED_PROBE AUTO_BED_LEVELING_BILINEAR PAUSE_BEFORE_DEPLOY_STOW \ opt_enable USE_ZMIN_PLUG FIX_MOUNTED_PROBE AUTO_BED_LEVELING_BILINEAR PAUSE_BEFORE_DEPLOY_STOW \
EEPROM_SETTINGS EEPROM_CHITCHAT ULTIMAKERCONTROLLER \ EEPROM_SETTINGS EEPROM_CHITCHAT ULTIMAKERCONTROLLER \
MONITOR_DRIVER_STATUS STEALTHCHOP_XY STEALTHCHOP_Z STEALTHCHOP_E HYBRID_THRESHOLD SENSORLESS_HOMING SQUARE_WAVE_STEPPING MONITOR_DRIVER_STATUS STEALTHCHOP_XY STEALTHCHOP_Z STEALTHCHOP_E HYBRID_THRESHOLD SENSORLESS_HOMING SQUARE_WAVE_STEPPING
opt_set X_DRIVER_TYPE TMC2130 opt_set X_MAX_ENDSTOP_INVERTING false
opt_set X_DRIVER_TYPE TMC2209
opt_set Y_DRIVER_TYPE TMC2130 opt_set Y_DRIVER_TYPE TMC2130
opt_set Z_DRIVER_TYPE TMC2130 opt_set Z_DRIVER_TYPE TMC2130
opt_set E0_DRIVER_TYPE TMC2660 opt_set E0_DRIVER_TYPE TMC2660
exec_test $1 $2 "SCARA with TMC2130 and TMC2660" exec_test $1 $2 "SCARA with TMC2130, TMC2209, and TMC2660"
# #
# Test mixed TMC config # Test mixed TMC config
# #

@ -637,11 +637,11 @@
* A4988 is assumed for unspecified drivers. * A4988 is assumed for unspecified drivers.
* *
* Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100, * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE, * TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
* TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
* TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE, * TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE,
* TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE, * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
* TMC5160, TMC5160_STANDALONE * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
* :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
*/ */
//#define X_DRIVER_TYPE A4988 //#define X_DRIVER_TYPE A4988
//#define Y_DRIVER_TYPE A4988 //#define Y_DRIVER_TYPE A4988

@ -1726,6 +1726,29 @@
//#define TMC_SW_MISO -1 //#define TMC_SW_MISO -1
//#define TMC_SW_SCK -1 //#define TMC_SW_SCK -1
/**
* Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
* Set the address using jumpers on pins MS1 and MS2.
* Address | MS1 | MS2
* 0 | LOW | LOW
* 1 | HIGH | LOW
* 2 | LOW | HIGH
* 3 | HIGH | HIGH
*/
#define X_SLAVE_ADDRESS 0
#define Y_SLAVE_ADDRESS 0
#define Z_SLAVE_ADDRESS 0
#define X2_SLAVE_ADDRESS 0
#define Y2_SLAVE_ADDRESS 0
#define Z2_SLAVE_ADDRESS 0
#define Z3_SLAVE_ADDRESS 0
#define E0_SLAVE_ADDRESS 0
#define E1_SLAVE_ADDRESS 0
#define E2_SLAVE_ADDRESS 0
#define E3_SLAVE_ADDRESS 0
#define E4_SLAVE_ADDRESS 0
#define E5_SLAVE_ADDRESS 0
/** /**
* Software enable * Software enable
* *

@ -642,11 +642,11 @@
* A4988 is assumed for unspecified drivers. * A4988 is assumed for unspecified drivers.
* *
* Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100, * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE, * TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
* TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
* TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE, * TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE,
* TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE, * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
* TMC5160, TMC5160_STANDALONE * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
* :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
*/ */
//#define X_DRIVER_TYPE A4988 //#define X_DRIVER_TYPE A4988
//#define Y_DRIVER_TYPE A4988 //#define Y_DRIVER_TYPE A4988

@ -1726,6 +1726,29 @@
//#define TMC_SW_MISO -1 //#define TMC_SW_MISO -1
//#define TMC_SW_SCK -1 //#define TMC_SW_SCK -1
/**
* Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
* Set the address using jumpers on pins MS1 and MS2.
* Address | MS1 | MS2
* 0 | LOW | LOW
* 1 | HIGH | LOW
* 2 | LOW | HIGH
* 3 | HIGH | HIGH
*/
#define X_SLAVE_ADDRESS 0
#define Y_SLAVE_ADDRESS 0
#define Z_SLAVE_ADDRESS 0
#define X2_SLAVE_ADDRESS 0
#define Y2_SLAVE_ADDRESS 0
#define Z2_SLAVE_ADDRESS 0
#define Z3_SLAVE_ADDRESS 0
#define E0_SLAVE_ADDRESS 0
#define E1_SLAVE_ADDRESS 0
#define E2_SLAVE_ADDRESS 0
#define E3_SLAVE_ADDRESS 0
#define E4_SLAVE_ADDRESS 0
#define E5_SLAVE_ADDRESS 0
/** /**
* Software enable * Software enable
* *

@ -657,11 +657,11 @@
* A4988 is assumed for unspecified drivers. * A4988 is assumed for unspecified drivers.
* *
* Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100, * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE, * TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
* TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
* TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE, * TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE,
* TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE, * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
* TMC5160, TMC5160_STANDALONE * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
* :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
*/ */
//#define X_DRIVER_TYPE A4988 //#define X_DRIVER_TYPE A4988
//#define Y_DRIVER_TYPE A4988 //#define Y_DRIVER_TYPE A4988

@ -1726,6 +1726,29 @@
//#define TMC_SW_MISO -1 //#define TMC_SW_MISO -1
//#define TMC_SW_SCK -1 //#define TMC_SW_SCK -1
/**
* Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
* Set the address using jumpers on pins MS1 and MS2.
* Address | MS1 | MS2
* 0 | LOW | LOW
* 1 | HIGH | LOW
* 2 | LOW | HIGH
* 3 | HIGH | HIGH
*/
#define X_SLAVE_ADDRESS 0
#define Y_SLAVE_ADDRESS 0
#define Z_SLAVE_ADDRESS 0
#define X2_SLAVE_ADDRESS 0
#define Y2_SLAVE_ADDRESS 0
#define Z2_SLAVE_ADDRESS 0
#define Z3_SLAVE_ADDRESS 0
#define E0_SLAVE_ADDRESS 0
#define E1_SLAVE_ADDRESS 0
#define E2_SLAVE_ADDRESS 0
#define E3_SLAVE_ADDRESS 0
#define E4_SLAVE_ADDRESS 0
#define E5_SLAVE_ADDRESS 0
/** /**
* Software enable * Software enable
* *

@ -637,11 +637,11 @@
* A4988 is assumed for unspecified drivers. * A4988 is assumed for unspecified drivers.
* *
* Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100, * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE, * TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
* TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
* TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE, * TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE,
* TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE, * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
* TMC5160, TMC5160_STANDALONE * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
* :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
*/ */
//#define X_DRIVER_TYPE A4988 //#define X_DRIVER_TYPE A4988
//#define Y_DRIVER_TYPE A4988 //#define Y_DRIVER_TYPE A4988

@ -648,11 +648,11 @@
* A4988 is assumed for unspecified drivers. * A4988 is assumed for unspecified drivers.
* *
* Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100, * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE, * TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
* TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
* TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE, * TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE,
* TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE, * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
* TMC5160, TMC5160_STANDALONE * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
* :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
*/ */
//#define X_DRIVER_TYPE A4988 //#define X_DRIVER_TYPE A4988
//#define Y_DRIVER_TYPE A4988 //#define Y_DRIVER_TYPE A4988

@ -1728,6 +1728,29 @@
//#define TMC_SW_MISO -1 //#define TMC_SW_MISO -1
//#define TMC_SW_SCK -1 //#define TMC_SW_SCK -1
/**
* Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
* Set the address using jumpers on pins MS1 and MS2.
* Address | MS1 | MS2
* 0 | LOW | LOW
* 1 | HIGH | LOW
* 2 | LOW | HIGH
* 3 | HIGH | HIGH
*/
#define X_SLAVE_ADDRESS 0
#define Y_SLAVE_ADDRESS 0
#define Z_SLAVE_ADDRESS 0
#define X2_SLAVE_ADDRESS 0
#define Y2_SLAVE_ADDRESS 0
#define Z2_SLAVE_ADDRESS 0
#define Z3_SLAVE_ADDRESS 0
#define E0_SLAVE_ADDRESS 0
#define E1_SLAVE_ADDRESS 0
#define E2_SLAVE_ADDRESS 0
#define E3_SLAVE_ADDRESS 0
#define E4_SLAVE_ADDRESS 0
#define E5_SLAVE_ADDRESS 0
/** /**
* Software enable * Software enable
* *

@ -637,11 +637,11 @@
* A4988 is assumed for unspecified drivers. * A4988 is assumed for unspecified drivers.
* *
* Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100, * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE, * TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
* TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
* TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE, * TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE,
* TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE, * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
* TMC5160, TMC5160_STANDALONE * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
* :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
*/ */
//#define X_DRIVER_TYPE A4988 //#define X_DRIVER_TYPE A4988
//#define Y_DRIVER_TYPE A4988 //#define Y_DRIVER_TYPE A4988

@ -1726,6 +1726,29 @@
//#define TMC_SW_MISO -1 //#define TMC_SW_MISO -1
//#define TMC_SW_SCK -1 //#define TMC_SW_SCK -1
/**
* Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
* Set the address using jumpers on pins MS1 and MS2.
* Address | MS1 | MS2
* 0 | LOW | LOW
* 1 | HIGH | LOW
* 2 | LOW | HIGH
* 3 | HIGH | HIGH
*/
#define X_SLAVE_ADDRESS 0
#define Y_SLAVE_ADDRESS 0
#define Z_SLAVE_ADDRESS 0
#define X2_SLAVE_ADDRESS 0
#define Y2_SLAVE_ADDRESS 0
#define Z2_SLAVE_ADDRESS 0
#define Z3_SLAVE_ADDRESS 0
#define E0_SLAVE_ADDRESS 0
#define E1_SLAVE_ADDRESS 0
#define E2_SLAVE_ADDRESS 0
#define E3_SLAVE_ADDRESS 0
#define E4_SLAVE_ADDRESS 0
#define E5_SLAVE_ADDRESS 0
/** /**
* Software enable * Software enable
* *

@ -637,11 +637,11 @@
* A4988 is assumed for unspecified drivers. * A4988 is assumed for unspecified drivers.
* *
* Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100, * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE, * TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
* TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
* TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE, * TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE,
* TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE, * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
* TMC5160, TMC5160_STANDALONE * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
* :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
*/ */
//#define X_DRIVER_TYPE A4988 //#define X_DRIVER_TYPE A4988
//#define Y_DRIVER_TYPE A4988 //#define Y_DRIVER_TYPE A4988

@ -1726,6 +1726,29 @@
//#define TMC_SW_MISO -1 //#define TMC_SW_MISO -1
//#define TMC_SW_SCK -1 //#define TMC_SW_SCK -1
/**
* Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
* Set the address using jumpers on pins MS1 and MS2.
* Address | MS1 | MS2
* 0 | LOW | LOW
* 1 | HIGH | LOW
* 2 | LOW | HIGH
* 3 | HIGH | HIGH
*/
#define X_SLAVE_ADDRESS 0
#define Y_SLAVE_ADDRESS 0
#define Z_SLAVE_ADDRESS 0
#define X2_SLAVE_ADDRESS 0
#define Y2_SLAVE_ADDRESS 0
#define Z2_SLAVE_ADDRESS 0
#define Z3_SLAVE_ADDRESS 0
#define E0_SLAVE_ADDRESS 0
#define E1_SLAVE_ADDRESS 0
#define E2_SLAVE_ADDRESS 0
#define E3_SLAVE_ADDRESS 0
#define E4_SLAVE_ADDRESS 0
#define E5_SLAVE_ADDRESS 0
/** /**
* Software enable * Software enable
* *

@ -657,11 +657,11 @@
* A4988 is assumed for unspecified drivers. * A4988 is assumed for unspecified drivers.
* *
* Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100, * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE, * TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
* TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
* TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE, * TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE,
* TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE, * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
* TMC5160, TMC5160_STANDALONE * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
* :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
*/ */
//#define X_DRIVER_TYPE A4988 //#define X_DRIVER_TYPE A4988
//#define Y_DRIVER_TYPE A4988 //#define Y_DRIVER_TYPE A4988

@ -1726,6 +1726,29 @@
//#define TMC_SW_MISO -1 //#define TMC_SW_MISO -1
//#define TMC_SW_SCK -1 //#define TMC_SW_SCK -1
/**
* Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
* Set the address using jumpers on pins MS1 and MS2.
* Address | MS1 | MS2
* 0 | LOW | LOW
* 1 | HIGH | LOW
* 2 | LOW | HIGH
* 3 | HIGH | HIGH
*/
#define X_SLAVE_ADDRESS 0
#define Y_SLAVE_ADDRESS 0
#define Z_SLAVE_ADDRESS 0
#define X2_SLAVE_ADDRESS 0
#define Y2_SLAVE_ADDRESS 0
#define Z2_SLAVE_ADDRESS 0
#define Z3_SLAVE_ADDRESS 0
#define E0_SLAVE_ADDRESS 0
#define E1_SLAVE_ADDRESS 0
#define E2_SLAVE_ADDRESS 0
#define E3_SLAVE_ADDRESS 0
#define E4_SLAVE_ADDRESS 0
#define E5_SLAVE_ADDRESS 0
/** /**
* Software enable * Software enable
* *

@ -650,11 +650,11 @@
* A4988 is assumed for unspecified drivers. * A4988 is assumed for unspecified drivers.
* *
* Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100, * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE, * TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
* TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
* TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE, * TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE,
* TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE, * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
* TMC5160, TMC5160_STANDALONE * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
* :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
*/ */
//#define X_DRIVER_TYPE A4988 //#define X_DRIVER_TYPE A4988
//#define Y_DRIVER_TYPE A4988 //#define Y_DRIVER_TYPE A4988

@ -1726,6 +1726,29 @@
//#define TMC_SW_MISO -1 //#define TMC_SW_MISO -1
//#define TMC_SW_SCK -1 //#define TMC_SW_SCK -1
/**
* Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
* Set the address using jumpers on pins MS1 and MS2.
* Address | MS1 | MS2
* 0 | LOW | LOW
* 1 | HIGH | LOW
* 2 | LOW | HIGH
* 3 | HIGH | HIGH
*/
#define X_SLAVE_ADDRESS 0
#define Y_SLAVE_ADDRESS 0
#define Z_SLAVE_ADDRESS 0
#define X2_SLAVE_ADDRESS 0
#define Y2_SLAVE_ADDRESS 0
#define Z2_SLAVE_ADDRESS 0
#define Z3_SLAVE_ADDRESS 0
#define E0_SLAVE_ADDRESS 0
#define E1_SLAVE_ADDRESS 0
#define E2_SLAVE_ADDRESS 0
#define E3_SLAVE_ADDRESS 0
#define E4_SLAVE_ADDRESS 0
#define E5_SLAVE_ADDRESS 0
/** /**
* Software enable * Software enable
* *

@ -648,11 +648,11 @@
* A4988 is assumed for unspecified drivers. * A4988 is assumed for unspecified drivers.
* *
* Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100, * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE, * TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
* TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
* TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE, * TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE,
* TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE, * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
* TMC5160, TMC5160_STANDALONE * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
* :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
*/ */
#define X_DRIVER_TYPE A4988 #define X_DRIVER_TYPE A4988
#define Y_DRIVER_TYPE A4988 #define Y_DRIVER_TYPE A4988

@ -1726,6 +1726,29 @@
//#define TMC_SW_MISO -1 //#define TMC_SW_MISO -1
//#define TMC_SW_SCK -1 //#define TMC_SW_SCK -1
/**
* Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
* Set the address using jumpers on pins MS1 and MS2.
* Address | MS1 | MS2
* 0 | LOW | LOW
* 1 | HIGH | LOW
* 2 | LOW | HIGH
* 3 | HIGH | HIGH
*/
#define X_SLAVE_ADDRESS 0
#define Y_SLAVE_ADDRESS 0
#define Z_SLAVE_ADDRESS 0
#define X2_SLAVE_ADDRESS 0
#define Y2_SLAVE_ADDRESS 0
#define Z2_SLAVE_ADDRESS 0
#define Z3_SLAVE_ADDRESS 0
#define E0_SLAVE_ADDRESS 0
#define E1_SLAVE_ADDRESS 0
#define E2_SLAVE_ADDRESS 0
#define E3_SLAVE_ADDRESS 0
#define E4_SLAVE_ADDRESS 0
#define E5_SLAVE_ADDRESS 0
/** /**
* Software enable * Software enable
* *

@ -649,11 +649,11 @@
* A4988 is assumed for unspecified drivers. * A4988 is assumed for unspecified drivers.
* *
* Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100, * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE, * TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
* TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
* TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE, * TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE,
* TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE, * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
* TMC5160, TMC5160_STANDALONE * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
* :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
*/ */
#define X_DRIVER_TYPE A4988 #define X_DRIVER_TYPE A4988
#define Y_DRIVER_TYPE A4988 #define Y_DRIVER_TYPE A4988

@ -1726,6 +1726,29 @@
//#define TMC_SW_MISO -1 //#define TMC_SW_MISO -1
//#define TMC_SW_SCK -1 //#define TMC_SW_SCK -1
/**
* Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
* Set the address using jumpers on pins MS1 and MS2.
* Address | MS1 | MS2
* 0 | LOW | LOW
* 1 | HIGH | LOW
* 2 | LOW | HIGH
* 3 | HIGH | HIGH
*/
#define X_SLAVE_ADDRESS 0
#define Y_SLAVE_ADDRESS 0
#define Z_SLAVE_ADDRESS 0
#define X2_SLAVE_ADDRESS 0
#define Y2_SLAVE_ADDRESS 0
#define Z2_SLAVE_ADDRESS 0
#define Z3_SLAVE_ADDRESS 0
#define E0_SLAVE_ADDRESS 0
#define E1_SLAVE_ADDRESS 0
#define E2_SLAVE_ADDRESS 0
#define E3_SLAVE_ADDRESS 0
#define E4_SLAVE_ADDRESS 0
#define E5_SLAVE_ADDRESS 0
/** /**
* Software enable * Software enable
* *

@ -647,11 +647,11 @@
* A4988 is assumed for unspecified drivers. * A4988 is assumed for unspecified drivers.
* *
* Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100, * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE, * TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
* TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
* TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE, * TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE,
* TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE, * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
* TMC5160, TMC5160_STANDALONE * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
* :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
*/ */
//#define X_DRIVER_TYPE A4988 //#define X_DRIVER_TYPE A4988
//#define Y_DRIVER_TYPE A4988 //#define Y_DRIVER_TYPE A4988

@ -1726,6 +1726,29 @@
//#define TMC_SW_MISO -1 //#define TMC_SW_MISO -1
//#define TMC_SW_SCK -1 //#define TMC_SW_SCK -1
/**
* Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
* Set the address using jumpers on pins MS1 and MS2.
* Address | MS1 | MS2
* 0 | LOW | LOW
* 1 | HIGH | LOW
* 2 | LOW | HIGH
* 3 | HIGH | HIGH
*/
#define X_SLAVE_ADDRESS 0
#define Y_SLAVE_ADDRESS 0
#define Z_SLAVE_ADDRESS 0
#define X2_SLAVE_ADDRESS 0
#define Y2_SLAVE_ADDRESS 0
#define Z2_SLAVE_ADDRESS 0
#define Z3_SLAVE_ADDRESS 0
#define E0_SLAVE_ADDRESS 0
#define E1_SLAVE_ADDRESS 0
#define E2_SLAVE_ADDRESS 0
#define E3_SLAVE_ADDRESS 0
#define E4_SLAVE_ADDRESS 0
#define E5_SLAVE_ADDRESS 0
/** /**
* Software enable * Software enable
* *

@ -638,11 +638,11 @@
* A4988 is assumed for unspecified drivers. * A4988 is assumed for unspecified drivers.
* *
* Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100, * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE, * TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
* TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
* TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE, * TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE,
* TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE, * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
* TMC5160, TMC5160_STANDALONE * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
* :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
*/ */
//#define X_DRIVER_TYPE A4988 //#define X_DRIVER_TYPE A4988
//#define Y_DRIVER_TYPE A4988 //#define Y_DRIVER_TYPE A4988

@ -1730,6 +1730,29 @@
//#define TMC_SW_MISO -1 //#define TMC_SW_MISO -1
//#define TMC_SW_SCK -1 //#define TMC_SW_SCK -1
/**
* Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
* Set the address using jumpers on pins MS1 and MS2.
* Address | MS1 | MS2
* 0 | LOW | LOW
* 1 | HIGH | LOW
* 2 | LOW | HIGH
* 3 | HIGH | HIGH
*/
#define X_SLAVE_ADDRESS 0
#define Y_SLAVE_ADDRESS 0
#define Z_SLAVE_ADDRESS 0
#define X2_SLAVE_ADDRESS 0
#define Y2_SLAVE_ADDRESS 0
#define Z2_SLAVE_ADDRESS 0
#define Z3_SLAVE_ADDRESS 0
#define E0_SLAVE_ADDRESS 0
#define E1_SLAVE_ADDRESS 0
#define E2_SLAVE_ADDRESS 0
#define E3_SLAVE_ADDRESS 0
#define E4_SLAVE_ADDRESS 0
#define E5_SLAVE_ADDRESS 0
/** /**
* Software enable * Software enable
* *

@ -637,11 +637,11 @@
* A4988 is assumed for unspecified drivers. * A4988 is assumed for unspecified drivers.
* *
* Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100, * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE, * TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
* TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
* TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE, * TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE,
* TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE, * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
* TMC5160, TMC5160_STANDALONE * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
* :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
*/ */
//#define X_DRIVER_TYPE A4988 //#define X_DRIVER_TYPE A4988
//#define Y_DRIVER_TYPE A4988 //#define Y_DRIVER_TYPE A4988

@ -637,11 +637,11 @@
* A4988 is assumed for unspecified drivers. * A4988 is assumed for unspecified drivers.
* *
* Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100, * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE, * TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
* TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
* TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE, * TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE,
* TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE, * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
* TMC5160, TMC5160_STANDALONE * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
* :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
*/ */
//#define X_DRIVER_TYPE A4988 //#define X_DRIVER_TYPE A4988
//#define Y_DRIVER_TYPE A4988 //#define Y_DRIVER_TYPE A4988

@ -1726,6 +1726,29 @@
//#define TMC_SW_MISO -1 //#define TMC_SW_MISO -1
//#define TMC_SW_SCK -1 //#define TMC_SW_SCK -1
/**
* Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
* Set the address using jumpers on pins MS1 and MS2.
* Address | MS1 | MS2
* 0 | LOW | LOW
* 1 | HIGH | LOW
* 2 | LOW | HIGH
* 3 | HIGH | HIGH
*/
#define X_SLAVE_ADDRESS 0
#define Y_SLAVE_ADDRESS 0
#define Z_SLAVE_ADDRESS 0
#define X2_SLAVE_ADDRESS 0
#define Y2_SLAVE_ADDRESS 0
#define Z2_SLAVE_ADDRESS 0
#define Z3_SLAVE_ADDRESS 0
#define E0_SLAVE_ADDRESS 0
#define E1_SLAVE_ADDRESS 0
#define E2_SLAVE_ADDRESS 0
#define E3_SLAVE_ADDRESS 0
#define E4_SLAVE_ADDRESS 0
#define E5_SLAVE_ADDRESS 0
/** /**
* Software enable * Software enable
* *

@ -637,11 +637,11 @@
* A4988 is assumed for unspecified drivers. * A4988 is assumed for unspecified drivers.
* *
* Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100, * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE, * TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
* TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
* TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE, * TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE,
* TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE, * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
* TMC5160, TMC5160_STANDALONE * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
* :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
*/ */
//#define X_DRIVER_TYPE A4988 //#define X_DRIVER_TYPE A4988
//#define Y_DRIVER_TYPE A4988 //#define Y_DRIVER_TYPE A4988

@ -1726,6 +1726,29 @@
//#define TMC_SW_MISO -1 //#define TMC_SW_MISO -1
//#define TMC_SW_SCK -1 //#define TMC_SW_SCK -1
/**
* Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
* Set the address using jumpers on pins MS1 and MS2.
* Address | MS1 | MS2
* 0 | LOW | LOW
* 1 | HIGH | LOW
* 2 | LOW | HIGH
* 3 | HIGH | HIGH
*/
#define X_SLAVE_ADDRESS 0
#define Y_SLAVE_ADDRESS 0
#define Z_SLAVE_ADDRESS 0
#define X2_SLAVE_ADDRESS 0
#define Y2_SLAVE_ADDRESS 0
#define Z2_SLAVE_ADDRESS 0
#define Z3_SLAVE_ADDRESS 0
#define E0_SLAVE_ADDRESS 0
#define E1_SLAVE_ADDRESS 0
#define E2_SLAVE_ADDRESS 0
#define E3_SLAVE_ADDRESS 0
#define E4_SLAVE_ADDRESS 0
#define E5_SLAVE_ADDRESS 0
/** /**
* Software enable * Software enable
* *

@ -625,11 +625,11 @@
* A4988 is assumed for unspecified drivers. * A4988 is assumed for unspecified drivers.
* *
* Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100, * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE, * TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
* TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
* TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE, * TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE,
* TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE, * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
* TMC5160, TMC5160_STANDALONE * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
* :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
*/ */
//#define X_DRIVER_TYPE A4988 //#define X_DRIVER_TYPE A4988
//#define Y_DRIVER_TYPE A4988 //#define Y_DRIVER_TYPE A4988

@ -1726,6 +1726,29 @@
//#define TMC_SW_MISO -1 //#define TMC_SW_MISO -1
//#define TMC_SW_SCK -1 //#define TMC_SW_SCK -1
/**
* Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
* Set the address using jumpers on pins MS1 and MS2.
* Address | MS1 | MS2
* 0 | LOW | LOW
* 1 | HIGH | LOW
* 2 | LOW | HIGH
* 3 | HIGH | HIGH
*/
#define X_SLAVE_ADDRESS 0
#define Y_SLAVE_ADDRESS 0
#define Z_SLAVE_ADDRESS 0
#define X2_SLAVE_ADDRESS 0
#define Y2_SLAVE_ADDRESS 0
#define Z2_SLAVE_ADDRESS 0
#define Z3_SLAVE_ADDRESS 0
#define E0_SLAVE_ADDRESS 0
#define E1_SLAVE_ADDRESS 0
#define E2_SLAVE_ADDRESS 0
#define E3_SLAVE_ADDRESS 0
#define E4_SLAVE_ADDRESS 0
#define E5_SLAVE_ADDRESS 0
/** /**
* Software enable * Software enable
* *

@ -638,11 +638,11 @@
* A4988 is assumed for unspecified drivers. * A4988 is assumed for unspecified drivers.
* *
* Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100, * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE, * TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
* TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
* TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE, * TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE,
* TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE, * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
* TMC5160, TMC5160_STANDALONE * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
* :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
*/ */
//#define X_DRIVER_TYPE A4988 //#define X_DRIVER_TYPE A4988
//#define Y_DRIVER_TYPE A4988 //#define Y_DRIVER_TYPE A4988

@ -1734,6 +1734,29 @@
//#define TMC_SW_MISO -1 //#define TMC_SW_MISO -1
//#define TMC_SW_SCK -1 //#define TMC_SW_SCK -1
/**
* Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
* Set the address using jumpers on pins MS1 and MS2.
* Address | MS1 | MS2
* 0 | LOW | LOW
* 1 | HIGH | LOW
* 2 | LOW | HIGH
* 3 | HIGH | HIGH
*/
#define X_SLAVE_ADDRESS 0
#define Y_SLAVE_ADDRESS 0
#define Z_SLAVE_ADDRESS 0
#define X2_SLAVE_ADDRESS 0
#define Y2_SLAVE_ADDRESS 0
#define Z2_SLAVE_ADDRESS 0
#define Z3_SLAVE_ADDRESS 0
#define E0_SLAVE_ADDRESS 0
#define E1_SLAVE_ADDRESS 0
#define E2_SLAVE_ADDRESS 0
#define E3_SLAVE_ADDRESS 0
#define E4_SLAVE_ADDRESS 0
#define E5_SLAVE_ADDRESS 0
/** /**
* Software enable * Software enable
* *

@ -625,11 +625,11 @@
* A4988 is assumed for unspecified drivers. * A4988 is assumed for unspecified drivers.
* *
* Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100, * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE, * TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
* TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
* TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE, * TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE,
* TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE, * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
* TMC5160, TMC5160_STANDALONE * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
* :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
*/ */
//#define X_DRIVER_TYPE A4988 //#define X_DRIVER_TYPE A4988
//#define Y_DRIVER_TYPE A4988 //#define Y_DRIVER_TYPE A4988

@ -1726,6 +1726,29 @@
//#define TMC_SW_MISO -1 //#define TMC_SW_MISO -1
//#define TMC_SW_SCK -1 //#define TMC_SW_SCK -1
/**
* Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
* Set the address using jumpers on pins MS1 and MS2.
* Address | MS1 | MS2
* 0 | LOW | LOW
* 1 | HIGH | LOW
* 2 | LOW | HIGH
* 3 | HIGH | HIGH
*/
#define X_SLAVE_ADDRESS 0
#define Y_SLAVE_ADDRESS 0
#define Z_SLAVE_ADDRESS 0
#define X2_SLAVE_ADDRESS 0
#define Y2_SLAVE_ADDRESS 0
#define Z2_SLAVE_ADDRESS 0
#define Z3_SLAVE_ADDRESS 0
#define E0_SLAVE_ADDRESS 0
#define E1_SLAVE_ADDRESS 0
#define E2_SLAVE_ADDRESS 0
#define E3_SLAVE_ADDRESS 0
#define E4_SLAVE_ADDRESS 0
#define E5_SLAVE_ADDRESS 0
/** /**
* Software enable * Software enable
* *

@ -636,11 +636,11 @@
* A4988 is assumed for unspecified drivers. * A4988 is assumed for unspecified drivers.
* *
* Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100, * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE, * TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
* TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
* TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE, * TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE,
* TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE, * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
* TMC5160, TMC5160_STANDALONE * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
* :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
*/ */
//#define X_DRIVER_TYPE A4988 //#define X_DRIVER_TYPE A4988
//#define Y_DRIVER_TYPE A4988 //#define Y_DRIVER_TYPE A4988

@ -1726,6 +1726,29 @@
//#define TMC_SW_MISO -1 //#define TMC_SW_MISO -1
//#define TMC_SW_SCK -1 //#define TMC_SW_SCK -1
/**
* Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
* Set the address using jumpers on pins MS1 and MS2.
* Address | MS1 | MS2
* 0 | LOW | LOW
* 1 | HIGH | LOW
* 2 | LOW | HIGH
* 3 | HIGH | HIGH
*/
#define X_SLAVE_ADDRESS 0
#define Y_SLAVE_ADDRESS 0
#define Z_SLAVE_ADDRESS 0
#define X2_SLAVE_ADDRESS 0
#define Y2_SLAVE_ADDRESS 0
#define Z2_SLAVE_ADDRESS 0
#define Z3_SLAVE_ADDRESS 0
#define E0_SLAVE_ADDRESS 0
#define E1_SLAVE_ADDRESS 0
#define E2_SLAVE_ADDRESS 0
#define E3_SLAVE_ADDRESS 0
#define E4_SLAVE_ADDRESS 0
#define E5_SLAVE_ADDRESS 0
/** /**
* Software enable * Software enable
* *

@ -647,11 +647,11 @@
* A4988 is assumed for unspecified drivers. * A4988 is assumed for unspecified drivers.
* *
* Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100, * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE, * TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
* TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
* TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE, * TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE,
* TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE, * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
* TMC5160, TMC5160_STANDALONE * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
* :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
*/ */
//#define X_DRIVER_TYPE A4988 //#define X_DRIVER_TYPE A4988
//#define Y_DRIVER_TYPE A4988 //#define Y_DRIVER_TYPE A4988

@ -1726,6 +1726,29 @@
//#define TMC_SW_MISO -1 //#define TMC_SW_MISO -1
//#define TMC_SW_SCK -1 //#define TMC_SW_SCK -1
/**
* Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
* Set the address using jumpers on pins MS1 and MS2.
* Address | MS1 | MS2
* 0 | LOW | LOW
* 1 | HIGH | LOW
* 2 | LOW | HIGH
* 3 | HIGH | HIGH
*/
#define X_SLAVE_ADDRESS 0
#define Y_SLAVE_ADDRESS 0
#define Z_SLAVE_ADDRESS 0
#define X2_SLAVE_ADDRESS 0
#define Y2_SLAVE_ADDRESS 0
#define Z2_SLAVE_ADDRESS 0
#define Z3_SLAVE_ADDRESS 0
#define E0_SLAVE_ADDRESS 0
#define E1_SLAVE_ADDRESS 0
#define E2_SLAVE_ADDRESS 0
#define E3_SLAVE_ADDRESS 0
#define E4_SLAVE_ADDRESS 0
#define E5_SLAVE_ADDRESS 0
/** /**
* Software enable * Software enable
* *

@ -637,11 +637,11 @@
* A4988 is assumed for unspecified drivers. * A4988 is assumed for unspecified drivers.
* *
* Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100, * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE, * TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
* TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
* TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE, * TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE,
* TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE, * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
* TMC5160, TMC5160_STANDALONE * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
* :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
*/ */
//#define X_DRIVER_TYPE A4988 //#define X_DRIVER_TYPE A4988
//#define Y_DRIVER_TYPE A4988 //#define Y_DRIVER_TYPE A4988

@ -1726,6 +1726,29 @@
//#define TMC_SW_MISO -1 //#define TMC_SW_MISO -1
//#define TMC_SW_SCK -1 //#define TMC_SW_SCK -1
/**
* Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
* Set the address using jumpers on pins MS1 and MS2.
* Address | MS1 | MS2
* 0 | LOW | LOW
* 1 | HIGH | LOW
* 2 | LOW | HIGH
* 3 | HIGH | HIGH
*/
#define X_SLAVE_ADDRESS 0
#define Y_SLAVE_ADDRESS 0
#define Z_SLAVE_ADDRESS 0
#define X2_SLAVE_ADDRESS 0
#define Y2_SLAVE_ADDRESS 0
#define Z2_SLAVE_ADDRESS 0
#define Z3_SLAVE_ADDRESS 0
#define E0_SLAVE_ADDRESS 0
#define E1_SLAVE_ADDRESS 0
#define E2_SLAVE_ADDRESS 0
#define E3_SLAVE_ADDRESS 0
#define E4_SLAVE_ADDRESS 0
#define E5_SLAVE_ADDRESS 0
/** /**
* Software enable * Software enable
* *

@ -637,11 +637,11 @@
* A4988 is assumed for unspecified drivers. * A4988 is assumed for unspecified drivers.
* *
* Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100, * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE, * TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
* TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
* TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE, * TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE,
* TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE, * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
* TMC5160, TMC5160_STANDALONE * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
* :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
*/ */
//#define X_DRIVER_TYPE A4988 //#define X_DRIVER_TYPE A4988
//#define Y_DRIVER_TYPE A4988 //#define Y_DRIVER_TYPE A4988

@ -1726,6 +1726,29 @@
//#define TMC_SW_MISO -1 //#define TMC_SW_MISO -1
//#define TMC_SW_SCK -1 //#define TMC_SW_SCK -1
/**
* Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
* Set the address using jumpers on pins MS1 and MS2.
* Address | MS1 | MS2
* 0 | LOW | LOW
* 1 | HIGH | LOW
* 2 | LOW | HIGH
* 3 | HIGH | HIGH
*/
#define X_SLAVE_ADDRESS 0
#define Y_SLAVE_ADDRESS 0
#define Z_SLAVE_ADDRESS 0
#define X2_SLAVE_ADDRESS 0
#define Y2_SLAVE_ADDRESS 0
#define Z2_SLAVE_ADDRESS 0
#define Z3_SLAVE_ADDRESS 0
#define E0_SLAVE_ADDRESS 0
#define E1_SLAVE_ADDRESS 0
#define E2_SLAVE_ADDRESS 0
#define E3_SLAVE_ADDRESS 0
#define E4_SLAVE_ADDRESS 0
#define E5_SLAVE_ADDRESS 0
/** /**
* Software enable * Software enable
* *

@ -656,11 +656,11 @@
* A4988 is assumed for unspecified drivers. * A4988 is assumed for unspecified drivers.
* *
* Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100, * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE, * TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
* TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
* TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE, * TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE,
* TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE, * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
* TMC5160, TMC5160_STANDALONE * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
* :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
*/ */
//#define X_DRIVER_TYPE A4988 //#define X_DRIVER_TYPE A4988
//#define Y_DRIVER_TYPE A4988 //#define Y_DRIVER_TYPE A4988

@ -1726,6 +1726,29 @@
//#define TMC_SW_MISO -1 //#define TMC_SW_MISO -1
//#define TMC_SW_SCK -1 //#define TMC_SW_SCK -1
/**
* Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
* Set the address using jumpers on pins MS1 and MS2.
* Address | MS1 | MS2
* 0 | LOW | LOW
* 1 | HIGH | LOW
* 2 | LOW | HIGH
* 3 | HIGH | HIGH
*/
#define X_SLAVE_ADDRESS 0
#define Y_SLAVE_ADDRESS 0
#define Z_SLAVE_ADDRESS 0
#define X2_SLAVE_ADDRESS 0
#define Y2_SLAVE_ADDRESS 0
#define Z2_SLAVE_ADDRESS 0
#define Z3_SLAVE_ADDRESS 0
#define E0_SLAVE_ADDRESS 0
#define E1_SLAVE_ADDRESS 0
#define E2_SLAVE_ADDRESS 0
#define E3_SLAVE_ADDRESS 0
#define E4_SLAVE_ADDRESS 0
#define E5_SLAVE_ADDRESS 0
/** /**
* Software enable * Software enable
* *

@ -647,11 +647,11 @@
* A4988 is assumed for unspecified drivers. * A4988 is assumed for unspecified drivers.
* *
* Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100, * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE, * TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
* TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
* TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE, * TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE,
* TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE, * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
* TMC5160, TMC5160_STANDALONE * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
* :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
*/ */
//#define X_DRIVER_TYPE A4988 //#define X_DRIVER_TYPE A4988
//#define Y_DRIVER_TYPE A4988 //#define Y_DRIVER_TYPE A4988

@ -1726,6 +1726,29 @@
//#define TMC_SW_MISO -1 //#define TMC_SW_MISO -1
//#define TMC_SW_SCK -1 //#define TMC_SW_SCK -1
/**
* Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
* Set the address using jumpers on pins MS1 and MS2.
* Address | MS1 | MS2
* 0 | LOW | LOW
* 1 | HIGH | LOW
* 2 | LOW | HIGH
* 3 | HIGH | HIGH
*/
#define X_SLAVE_ADDRESS 0
#define Y_SLAVE_ADDRESS 0
#define Z_SLAVE_ADDRESS 0
#define X2_SLAVE_ADDRESS 0
#define Y2_SLAVE_ADDRESS 0
#define Z2_SLAVE_ADDRESS 0
#define Z3_SLAVE_ADDRESS 0
#define E0_SLAVE_ADDRESS 0
#define E1_SLAVE_ADDRESS 0
#define E2_SLAVE_ADDRESS 0
#define E3_SLAVE_ADDRESS 0
#define E4_SLAVE_ADDRESS 0
#define E5_SLAVE_ADDRESS 0
/** /**
* Software enable * Software enable
* *

@ -641,11 +641,11 @@
* A4988 is assumed for unspecified drivers. * A4988 is assumed for unspecified drivers.
* *
* Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100, * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE, * TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
* TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
* TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE, * TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE,
* TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE, * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
* TMC5160, TMC5160_STANDALONE * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
* :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
*/ */
//#define X_DRIVER_TYPE A4988 //#define X_DRIVER_TYPE A4988
//#define Y_DRIVER_TYPE A4988 //#define Y_DRIVER_TYPE A4988

@ -1726,6 +1726,29 @@
//#define TMC_SW_MISO -1 //#define TMC_SW_MISO -1
//#define TMC_SW_SCK -1 //#define TMC_SW_SCK -1
/**
* Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
* Set the address using jumpers on pins MS1 and MS2.
* Address | MS1 | MS2
* 0 | LOW | LOW
* 1 | HIGH | LOW
* 2 | LOW | HIGH
* 3 | HIGH | HIGH
*/
#define X_SLAVE_ADDRESS 0
#define Y_SLAVE_ADDRESS 0
#define Z_SLAVE_ADDRESS 0
#define X2_SLAVE_ADDRESS 0
#define Y2_SLAVE_ADDRESS 0
#define Z2_SLAVE_ADDRESS 0
#define Z3_SLAVE_ADDRESS 0
#define E0_SLAVE_ADDRESS 0
#define E1_SLAVE_ADDRESS 0
#define E2_SLAVE_ADDRESS 0
#define E3_SLAVE_ADDRESS 0
#define E4_SLAVE_ADDRESS 0
#define E5_SLAVE_ADDRESS 0
/** /**
* Software enable * Software enable
* *

@ -641,11 +641,11 @@
* A4988 is assumed for unspecified drivers. * A4988 is assumed for unspecified drivers.
* *
* Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100, * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE, * TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
* TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
* TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE, * TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE,
* TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE, * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
* TMC5160, TMC5160_STANDALONE * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
* :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
*/ */
//#define X_DRIVER_TYPE A4988 //#define X_DRIVER_TYPE A4988
//#define Y_DRIVER_TYPE A4988 //#define Y_DRIVER_TYPE A4988

@ -1726,6 +1726,29 @@
//#define TMC_SW_MISO -1 //#define TMC_SW_MISO -1
//#define TMC_SW_SCK -1 //#define TMC_SW_SCK -1
/**
* Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
* Set the address using jumpers on pins MS1 and MS2.
* Address | MS1 | MS2
* 0 | LOW | LOW
* 1 | HIGH | LOW
* 2 | LOW | HIGH
* 3 | HIGH | HIGH
*/
#define X_SLAVE_ADDRESS 0
#define Y_SLAVE_ADDRESS 0
#define Z_SLAVE_ADDRESS 0
#define X2_SLAVE_ADDRESS 0
#define Y2_SLAVE_ADDRESS 0
#define Z2_SLAVE_ADDRESS 0
#define Z3_SLAVE_ADDRESS 0
#define E0_SLAVE_ADDRESS 0
#define E1_SLAVE_ADDRESS 0
#define E2_SLAVE_ADDRESS 0
#define E3_SLAVE_ADDRESS 0
#define E4_SLAVE_ADDRESS 0
#define E5_SLAVE_ADDRESS 0
/** /**
* Software enable * Software enable
* *

@ -647,11 +647,11 @@
* A4988 is assumed for unspecified drivers. * A4988 is assumed for unspecified drivers.
* *
* Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100, * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE, * TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
* TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
* TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE, * TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE,
* TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE, * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
* TMC5160, TMC5160_STANDALONE * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
* :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
*/ */
//#define X_DRIVER_TYPE A4988 //#define X_DRIVER_TYPE A4988
//#define Y_DRIVER_TYPE A4988 //#define Y_DRIVER_TYPE A4988

@ -1726,6 +1726,29 @@
//#define TMC_SW_MISO -1 //#define TMC_SW_MISO -1
//#define TMC_SW_SCK -1 //#define TMC_SW_SCK -1
/**
* Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
* Set the address using jumpers on pins MS1 and MS2.
* Address | MS1 | MS2
* 0 | LOW | LOW
* 1 | HIGH | LOW
* 2 | LOW | HIGH
* 3 | HIGH | HIGH
*/
#define X_SLAVE_ADDRESS 0
#define Y_SLAVE_ADDRESS 0
#define Z_SLAVE_ADDRESS 0
#define X2_SLAVE_ADDRESS 0
#define Y2_SLAVE_ADDRESS 0
#define Z2_SLAVE_ADDRESS 0
#define Z3_SLAVE_ADDRESS 0
#define E0_SLAVE_ADDRESS 0
#define E1_SLAVE_ADDRESS 0
#define E2_SLAVE_ADDRESS 0
#define E3_SLAVE_ADDRESS 0
#define E4_SLAVE_ADDRESS 0
#define E5_SLAVE_ADDRESS 0
/** /**
* Software enable * Software enable
* *

@ -637,11 +637,11 @@
* A4988 is assumed for unspecified drivers. * A4988 is assumed for unspecified drivers.
* *
* Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100, * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE, * TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
* TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
* TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE, * TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE,
* TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE, * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
* TMC5160, TMC5160_STANDALONE * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
* :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
*/ */
#define X_DRIVER_TYPE A5984 #define X_DRIVER_TYPE A5984
#define Y_DRIVER_TYPE A5984 #define Y_DRIVER_TYPE A5984

@ -1726,6 +1726,29 @@
//#define TMC_SW_MISO -1 //#define TMC_SW_MISO -1
//#define TMC_SW_SCK -1 //#define TMC_SW_SCK -1
/**
* Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
* Set the address using jumpers on pins MS1 and MS2.
* Address | MS1 | MS2
* 0 | LOW | LOW
* 1 | HIGH | LOW
* 2 | LOW | HIGH
* 3 | HIGH | HIGH
*/
#define X_SLAVE_ADDRESS 0
#define Y_SLAVE_ADDRESS 0
#define Z_SLAVE_ADDRESS 0
#define X2_SLAVE_ADDRESS 0
#define Y2_SLAVE_ADDRESS 0
#define Z2_SLAVE_ADDRESS 0
#define Z3_SLAVE_ADDRESS 0
#define E0_SLAVE_ADDRESS 0
#define E1_SLAVE_ADDRESS 0
#define E2_SLAVE_ADDRESS 0
#define E3_SLAVE_ADDRESS 0
#define E4_SLAVE_ADDRESS 0
#define E5_SLAVE_ADDRESS 0
/** /**
* Software enable * Software enable
* *

@ -642,11 +642,11 @@
* A4988 is assumed for unspecified drivers. * A4988 is assumed for unspecified drivers.
* *
* Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100, * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE, * TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
* TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
* TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE, * TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE,
* TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE, * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
* TMC5160, TMC5160_STANDALONE * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
* :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
*/ */
#define X_DRIVER_TYPE TMC2100 #define X_DRIVER_TYPE TMC2100
#define Y_DRIVER_TYPE TMC2100 #define Y_DRIVER_TYPE TMC2100

@ -1726,6 +1726,29 @@
//#define TMC_SW_MISO -1 //#define TMC_SW_MISO -1
//#define TMC_SW_SCK -1 //#define TMC_SW_SCK -1
/**
* Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
* Set the address using jumpers on pins MS1 and MS2.
* Address | MS1 | MS2
* 0 | LOW | LOW
* 1 | HIGH | LOW
* 2 | LOW | HIGH
* 3 | HIGH | HIGH
*/
#define X_SLAVE_ADDRESS 0
#define Y_SLAVE_ADDRESS 0
#define Z_SLAVE_ADDRESS 0
#define X2_SLAVE_ADDRESS 0
#define Y2_SLAVE_ADDRESS 0
#define Z2_SLAVE_ADDRESS 0
#define Z3_SLAVE_ADDRESS 0
#define E0_SLAVE_ADDRESS 0
#define E1_SLAVE_ADDRESS 0
#define E2_SLAVE_ADDRESS 0
#define E3_SLAVE_ADDRESS 0
#define E4_SLAVE_ADDRESS 0
#define E5_SLAVE_ADDRESS 0
/** /**
* Software enable * Software enable
* *

@ -647,11 +647,11 @@
* A4988 is assumed for unspecified drivers. * A4988 is assumed for unspecified drivers.
* *
* Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100, * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE, * TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
* TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
* TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE, * TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE,
* TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE, * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
* TMC5160, TMC5160_STANDALONE * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
* :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
*/ */
//#define X_DRIVER_TYPE A4988 //#define X_DRIVER_TYPE A4988
//#define Y_DRIVER_TYPE A4988 //#define Y_DRIVER_TYPE A4988

@ -1726,6 +1726,29 @@
//#define TMC_SW_MISO -1 //#define TMC_SW_MISO -1
//#define TMC_SW_SCK -1 //#define TMC_SW_SCK -1
/**
* Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
* Set the address using jumpers on pins MS1 and MS2.
* Address | MS1 | MS2
* 0 | LOW | LOW
* 1 | HIGH | LOW
* 2 | LOW | HIGH
* 3 | HIGH | HIGH
*/
#define X_SLAVE_ADDRESS 0
#define Y_SLAVE_ADDRESS 0
#define Z_SLAVE_ADDRESS 0
#define X2_SLAVE_ADDRESS 0
#define Y2_SLAVE_ADDRESS 0
#define Z2_SLAVE_ADDRESS 0
#define Z3_SLAVE_ADDRESS 0
#define E0_SLAVE_ADDRESS 0
#define E1_SLAVE_ADDRESS 0
#define E2_SLAVE_ADDRESS 0
#define E3_SLAVE_ADDRESS 0
#define E4_SLAVE_ADDRESS 0
#define E5_SLAVE_ADDRESS 0
/** /**
* Software enable * Software enable
* *

@ -618,11 +618,11 @@
* A4988 is assumed for unspecified drivers. * A4988 is assumed for unspecified drivers.
* *
* Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100, * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE, * TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
* TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
* TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE, * TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE,
* TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE, * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
* TMC5160, TMC5160_STANDALONE * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
* :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
*/ */
//#define X_DRIVER_TYPE A4988 //#define X_DRIVER_TYPE A4988
//#define Y_DRIVER_TYPE A4988 //#define Y_DRIVER_TYPE A4988

@ -1726,6 +1726,29 @@
//#define TMC_SW_MISO -1 //#define TMC_SW_MISO -1
//#define TMC_SW_SCK -1 //#define TMC_SW_SCK -1
/**
* Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
* Set the address using jumpers on pins MS1 and MS2.
* Address | MS1 | MS2
* 0 | LOW | LOW
* 1 | HIGH | LOW
* 2 | LOW | HIGH
* 3 | HIGH | HIGH
*/
#define X_SLAVE_ADDRESS 0
#define Y_SLAVE_ADDRESS 0
#define Z_SLAVE_ADDRESS 0
#define X2_SLAVE_ADDRESS 0
#define Y2_SLAVE_ADDRESS 0
#define Z2_SLAVE_ADDRESS 0
#define Z3_SLAVE_ADDRESS 0
#define E0_SLAVE_ADDRESS 0
#define E1_SLAVE_ADDRESS 0
#define E2_SLAVE_ADDRESS 0
#define E3_SLAVE_ADDRESS 0
#define E4_SLAVE_ADDRESS 0
#define E5_SLAVE_ADDRESS 0
/** /**
* Software enable * Software enable
* *

@ -618,11 +618,11 @@
* A4988 is assumed for unspecified drivers. * A4988 is assumed for unspecified drivers.
* *
* Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100, * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE, * TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
* TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
* TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE, * TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE,
* TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE, * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
* TMC5160, TMC5160_STANDALONE * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
* :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
*/ */
//#define X_DRIVER_TYPE A4988 //#define X_DRIVER_TYPE A4988
//#define Y_DRIVER_TYPE A4988 //#define Y_DRIVER_TYPE A4988

@ -627,11 +627,11 @@
* A4988 is assumed for unspecified drivers. * A4988 is assumed for unspecified drivers.
* *
* Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100, * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE, * TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
* TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
* TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE, * TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE,
* TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE, * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
* TMC5160, TMC5160_STANDALONE * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
* :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
*/ */
//#define X_DRIVER_TYPE A4988 //#define X_DRIVER_TYPE A4988
//#define Y_DRIVER_TYPE A4988 //#define Y_DRIVER_TYPE A4988

@ -1725,6 +1725,29 @@
//#define TMC_SW_MISO -1 //#define TMC_SW_MISO -1
//#define TMC_SW_SCK -1 //#define TMC_SW_SCK -1
/**
* Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
* Set the address using jumpers on pins MS1 and MS2.
* Address | MS1 | MS2
* 0 | LOW | LOW
* 1 | HIGH | LOW
* 2 | LOW | HIGH
* 3 | HIGH | HIGH
*/
#define X_SLAVE_ADDRESS 0
#define Y_SLAVE_ADDRESS 0
#define Z_SLAVE_ADDRESS 0
#define X2_SLAVE_ADDRESS 0
#define Y2_SLAVE_ADDRESS 0
#define Z2_SLAVE_ADDRESS 0
#define Z3_SLAVE_ADDRESS 0
#define E0_SLAVE_ADDRESS 0
#define E1_SLAVE_ADDRESS 0
#define E2_SLAVE_ADDRESS 0
#define E3_SLAVE_ADDRESS 0
#define E4_SLAVE_ADDRESS 0
#define E5_SLAVE_ADDRESS 0
/** /**
* Software enable * Software enable
* *

@ -642,11 +642,11 @@
* A4988 is assumed for unspecified drivers. * A4988 is assumed for unspecified drivers.
* *
* Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100, * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE, * TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
* TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
* TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE, * TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE,
* TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE, * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
* TMC5160, TMC5160_STANDALONE * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
* :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
*/ */
//#define X_DRIVER_TYPE A4988 //#define X_DRIVER_TYPE A4988
//#define Y_DRIVER_TYPE A4988 //#define Y_DRIVER_TYPE A4988

@ -1726,6 +1726,29 @@
//#define TMC_SW_MISO -1 //#define TMC_SW_MISO -1
//#define TMC_SW_SCK -1 //#define TMC_SW_SCK -1
/**
* Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
* Set the address using jumpers on pins MS1 and MS2.
* Address | MS1 | MS2
* 0 | LOW | LOW
* 1 | HIGH | LOW
* 2 | LOW | HIGH
* 3 | HIGH | HIGH
*/
#define X_SLAVE_ADDRESS 0
#define Y_SLAVE_ADDRESS 0
#define Z_SLAVE_ADDRESS 0
#define X2_SLAVE_ADDRESS 0
#define Y2_SLAVE_ADDRESS 0
#define Z2_SLAVE_ADDRESS 0
#define Z3_SLAVE_ADDRESS 0
#define E0_SLAVE_ADDRESS 0
#define E1_SLAVE_ADDRESS 0
#define E2_SLAVE_ADDRESS 0
#define E3_SLAVE_ADDRESS 0
#define E4_SLAVE_ADDRESS 0
#define E5_SLAVE_ADDRESS 0
/** /**
* Software enable * Software enable
* *

@ -689,11 +689,11 @@
* A4988 is assumed for unspecified drivers. * A4988 is assumed for unspecified drivers.
* *
* Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100, * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE, * TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
* TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
* TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE, * TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE,
* TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE, * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
* TMC5160, TMC5160_STANDALONE * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
* :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
*/ */
//#define X_DRIVER_TYPE A4988 //#define X_DRIVER_TYPE A4988
//#define Y_DRIVER_TYPE A4988 //#define Y_DRIVER_TYPE A4988

@ -1728,6 +1728,29 @@
//#define TMC_SW_MISO -1 //#define TMC_SW_MISO -1
//#define TMC_SW_SCK -1 //#define TMC_SW_SCK -1
/**
* Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
* Set the address using jumpers on pins MS1 and MS2.
* Address | MS1 | MS2
* 0 | LOW | LOW
* 1 | HIGH | LOW
* 2 | LOW | HIGH
* 3 | HIGH | HIGH
*/
#define X_SLAVE_ADDRESS 0
#define Y_SLAVE_ADDRESS 0
#define Z_SLAVE_ADDRESS 0
#define X2_SLAVE_ADDRESS 0
#define Y2_SLAVE_ADDRESS 0
#define Z2_SLAVE_ADDRESS 0
#define Z3_SLAVE_ADDRESS 0
#define E0_SLAVE_ADDRESS 0
#define E1_SLAVE_ADDRESS 0
#define E2_SLAVE_ADDRESS 0
#define E3_SLAVE_ADDRESS 0
#define E4_SLAVE_ADDRESS 0
#define E5_SLAVE_ADDRESS 0
/** /**
* Software enable * Software enable
* *

@ -666,11 +666,11 @@
* A4988 is assumed for unspecified drivers. * A4988 is assumed for unspecified drivers.
* *
* Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100, * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE, * TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
* TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
* TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE, * TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE,
* TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE, * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
* TMC5160, TMC5160_STANDALONE * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
* :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
*/ */
//#define X_DRIVER_TYPE A4988 //#define X_DRIVER_TYPE A4988
//#define Y_DRIVER_TYPE A4988 //#define Y_DRIVER_TYPE A4988

@ -1730,6 +1730,29 @@
//#define TMC_SW_MISO -1 //#define TMC_SW_MISO -1
//#define TMC_SW_SCK -1 //#define TMC_SW_SCK -1
/**
* Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
* Set the address using jumpers on pins MS1 and MS2.
* Address | MS1 | MS2
* 0 | LOW | LOW
* 1 | HIGH | LOW
* 2 | LOW | HIGH
* 3 | HIGH | HIGH
*/
#define X_SLAVE_ADDRESS 0
#define Y_SLAVE_ADDRESS 0
#define Z_SLAVE_ADDRESS 0
#define X2_SLAVE_ADDRESS 0
#define Y2_SLAVE_ADDRESS 0
#define Z2_SLAVE_ADDRESS 0
#define Z3_SLAVE_ADDRESS 0
#define E0_SLAVE_ADDRESS 0
#define E1_SLAVE_ADDRESS 0
#define E2_SLAVE_ADDRESS 0
#define E3_SLAVE_ADDRESS 0
#define E4_SLAVE_ADDRESS 0
#define E5_SLAVE_ADDRESS 0
/** /**
* Software enable * Software enable
* *

@ -646,11 +646,11 @@
* A4988 is assumed for unspecified drivers. * A4988 is assumed for unspecified drivers.
* *
* Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100, * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE, * TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
* TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
* TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE, * TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE,
* TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE, * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
* TMC5160, TMC5160_STANDALONE * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
* :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
*/ */
//#define X_DRIVER_TYPE A4988 //#define X_DRIVER_TYPE A4988
//#define Y_DRIVER_TYPE A4988 //#define Y_DRIVER_TYPE A4988

@ -1730,6 +1730,29 @@
//#define TMC_SW_MISO -1 //#define TMC_SW_MISO -1
//#define TMC_SW_SCK -1 //#define TMC_SW_SCK -1
/**
* Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
* Set the address using jumpers on pins MS1 and MS2.
* Address | MS1 | MS2
* 0 | LOW | LOW
* 1 | HIGH | LOW
* 2 | LOW | HIGH
* 3 | HIGH | HIGH
*/
#define X_SLAVE_ADDRESS 0
#define Y_SLAVE_ADDRESS 0
#define Z_SLAVE_ADDRESS 0
#define X2_SLAVE_ADDRESS 0
#define Y2_SLAVE_ADDRESS 0
#define Z2_SLAVE_ADDRESS 0
#define Z3_SLAVE_ADDRESS 0
#define E0_SLAVE_ADDRESS 0
#define E1_SLAVE_ADDRESS 0
#define E2_SLAVE_ADDRESS 0
#define E3_SLAVE_ADDRESS 0
#define E4_SLAVE_ADDRESS 0
#define E5_SLAVE_ADDRESS 0
/** /**
* Software enable * Software enable
* *

@ -620,11 +620,11 @@
* A4988 is assumed for unspecified drivers. * A4988 is assumed for unspecified drivers.
* *
* Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100, * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE, * TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
* TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
* TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE, * TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE,
* TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE, * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
* TMC5160, TMC5160_STANDALONE * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
* :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
*/ */
//#define X_DRIVER_TYPE A4988 //#define X_DRIVER_TYPE A4988
//#define Y_DRIVER_TYPE A4988 //#define Y_DRIVER_TYPE A4988

@ -1726,6 +1726,29 @@
//#define TMC_SW_MISO -1 //#define TMC_SW_MISO -1
//#define TMC_SW_SCK -1 //#define TMC_SW_SCK -1
/**
* Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
* Set the address using jumpers on pins MS1 and MS2.
* Address | MS1 | MS2
* 0 | LOW | LOW
* 1 | HIGH | LOW
* 2 | LOW | HIGH
* 3 | HIGH | HIGH
*/
#define X_SLAVE_ADDRESS 0
#define Y_SLAVE_ADDRESS 0
#define Z_SLAVE_ADDRESS 0
#define X2_SLAVE_ADDRESS 0
#define Y2_SLAVE_ADDRESS 0
#define Z2_SLAVE_ADDRESS 0
#define Z3_SLAVE_ADDRESS 0
#define E0_SLAVE_ADDRESS 0
#define E1_SLAVE_ADDRESS 0
#define E2_SLAVE_ADDRESS 0
#define E3_SLAVE_ADDRESS 0
#define E4_SLAVE_ADDRESS 0
#define E5_SLAVE_ADDRESS 0
/** /**
* Software enable * Software enable
* *

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save