Add TMC2209 support (#14249)
This commit is contained in:
		| @@ -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
		Reference in New Issue
	
	Block a user