From 4455c812ca47c03a3ec0e09c4bf9389c262d42ba Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 6 Feb 2020 17:47:48 -0600 Subject: [PATCH] Fix up TMC_INIT, add TMC2130 --- Marlin/Configuration_adv.h | 59 +++++++--- Marlin/src/core/drivers.h | 6 +- Marlin/src/feature/tmc_util.h | 14 ++- Marlin/src/module/stepper/trinamic.cpp | 150 ++++++++++++++++++------- Marlin/src/pins/pins.h | 2 +- 5 files changed, 173 insertions(+), 58 deletions(-) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index d05441737a6e..f29a6972b5d8 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -2276,7 +2276,7 @@ #define E7_HYBRID_THRESHOLD 30 /** - * CoolStep. TMC2209 only. + * CoolStep. TMC2130 and TMC2209 only. * This mode allows for cooler steppers and energy savings. * STEALTHCHOP_(XY|Z|E) must be enabled to use CoolStep. * The driver will switch to coolStep when stepper speed is over COOLSTEP_THRESHOLD mm/s. @@ -2284,10 +2284,10 @@ * If SG_RESULT goes above COOLSTEP_UPPER_LOAD_THRESHOLD stepper curreent will be decreased. * SEUP sets the increase step width. Value range is 0..3 and computed as 2^SEUP. * SEDN sets the decrease delay. Value range is 0..3, 0 being the slowest. - * SEIMIN sets the lower current limit. 0: 1/2 of IRUN, 1:1/4 of IRUN + * SEIMIN sets the lower current limit. 0: 1/2 of IRUN, 1:1/4 of IRUN */ - - #if AXIS_IS_TMC(X) + + #if AXIS_HAS_COOLSTEP(X) #define X_COOLSTEP_SPEED_THRESHOLD 5 #define X_COOLSTEP_LOWER_LOAD_THRESHOLD 7 #define X_COOLSTEP_UPPER_LOAD_THRESHOLD 0 @@ -2296,7 +2296,7 @@ #define X_COOLSTEP_SEIMIN 1 #endif - #if AXIS_IS_TMC(X2) + #if AXIS_HAS_COOLSTEP(X2) #define X2_COOLSTEP_SPEED_THRESHOLD 5 #define X2_COOLSTEP_LOWER_LOAD_THRESHOLD 7 #define X2_COOLSTEP_UPPER_LOAD_THRESHOLD 0 @@ -2305,7 +2305,7 @@ #define X2_COOLSTEP_SEIMIN 1 #endif - #if AXIS_IS_TMC(Y) + #if AXIS_HAS_COOLSTEP(Y) #define Y_COOLSTEP_SPEED_THRESHOLD 5 #define Y_COOLSTEP_LOWER_LOAD_THRESHOLD 7 #define Y_COOLSTEP_UPPER_LOAD_THRESHOLD 0 @@ -2314,7 +2314,7 @@ #define Y_COOLSTEP_SEIMIN 1 #endif - #if AXIS_IS_TMC(Y2) + #if AXIS_HAS_COOLSTEP(Y2) #define Y2_COOLSTEP_SPEED_THRESHOLD 5 #define Y2_COOLSTEP_LOWER_LOAD_THRESHOLD 7 #define Y2_COOLSTEP_UPPER_LOAD_THRESHOLD 0 @@ -2323,7 +2323,7 @@ #define Y2_COOLSTEP_SEIMIN 1 #endif - #if AXIS_IS_TMC(Z) + #if AXIS_HAS_COOLSTEP(Z) #define Z_COOLSTEP_SPEED_THRESHOLD 5 #define Z_COOLSTEP_LOWER_LOAD_THRESHOLD 7 #define Z_COOLSTEP_UPPER_LOAD_THRESHOLD 0 @@ -2332,7 +2332,7 @@ #define Z_COOLSTEP_SEIMIN 1 #endif - #if AXIS_IS_TMC(Z2) + #if AXIS_HAS_COOLSTEP(Z2) #define Z2_COOLSTEP_SPEED_THRESHOLD 5 #define Z2_COOLSTEP_LOWER_LOAD_THRESHOLD 7 #define Z2_COOLSTEP_UPPER_LOAD_THRESHOLD 0 @@ -2341,7 +2341,7 @@ #define Z2_COOLSTEP_SEIMIN 1 #endif - #if AXIS_IS_TMC(Z3) + #if AXIS_HAS_COOLSTEP(Z3) #define Z3_COOLSTEP_SPEED_THRESHOLD 5 #define Z3_COOLSTEP_LOWER_LOAD_THRESHOLD 7 #define Z3_COOLSTEP_UPPER_LOAD_THRESHOLD 0 @@ -2350,7 +2350,16 @@ #define Z3_COOLSTEP_SEIMIN 1 #endif - #if AXIS_IS_TMC(E0) + #if AXIS_HAS_COOLSTEP(Z4) + #define Z4_COOLSTEP_SPEED_THRESHOLD 5 + #define Z4_COOLSTEP_LOWER_LOAD_THRESHOLD 7 + #define Z4_COOLSTEP_UPPER_LOAD_THRESHOLD 0 + #define Z4_COOLSTEP_SEUP 2 + #define Z4_COOLSTEP_SEDN 0 + #define Z4_COOLSTEP_SEIMIN 1 + #endif + + #if AXIS_HAS_COOLSTEP(E0) #define E0_COOLSTEP_SPEED_THRESHOLD 5 #define E0_COOLSTEP_LOWER_LOAD_THRESHOLD 7 #define E0_COOLSTEP_UPPER_LOAD_THRESHOLD 0 @@ -2359,7 +2368,7 @@ #define E0_COOLSTEP_SEIMIN 1 #endif - #if AXIS_IS_TMC(E1) + #if AXIS_HAS_COOLSTEP(E1) #define E1_COOLSTEP_SPEED_THRESHOLD 5 #define E1_COOLSTEP_LOWER_LOAD_THRESHOLD 7 #define E1_COOLSTEP_UPPER_LOAD_THRESHOLD 0 @@ -2368,7 +2377,7 @@ #define E1_COOLSTEP_SEIMIN 1 #endif - #if AXIS_IS_TMC(E2) + #if AXIS_HAS_COOLSTEP(E2) #define E2_COOLSTEP_SPEED_THRESHOLD 5 #define E2_COOLSTEP_LOWER_LOAD_THRESHOLD 7 #define E2_COOLSTEP_UPPER_LOAD_THRESHOLD 0 @@ -2377,7 +2386,7 @@ #define E2_COOLSTEP_SEIMIN 1 #endif - #if AXIS_IS_TMC(E3) + #if AXIS_HAS_COOLSTEP(E3) #define E3_COOLSTEP_SPEED_THRESHOLD 5 #define E3_COOLSTEP_LOWER_LOAD_THRESHOLD 7 #define E3_COOLSTEP_UPPER_LOAD_THRESHOLD 0 @@ -2386,7 +2395,7 @@ #define E3_COOLSTEP_SEIMIN 1 #endif - #if AXIS_IS_TMC(E4) + #if AXIS_HAS_COOLSTEP(E4) #define E4_COOLSTEP_SPEED_THRESHOLD 5 #define E4_COOLSTEP_LOWER_LOAD_THRESHOLD 7 #define E4_COOLSTEP_UPPER_LOAD_THRESHOLD 0 @@ -2395,7 +2404,7 @@ #define E4_COOLSTEP_SEIMIN 1 #endif - #if AXIS_IS_TMC(E5) + #if AXIS_HAS_COOLSTEP(E5) #define E5_COOLSTEP_SPEED_THRESHOLD 5 #define E5_COOLSTEP_LOWER_LOAD_THRESHOLD 7 #define E5_COOLSTEP_UPPER_LOAD_THRESHOLD 0 @@ -2404,6 +2413,24 @@ #define E5_COOLSTEP_SEIMIN 1 #endif + #if AXIS_HAS_COOLSTEP(E6) + #define E6_COOLSTEP_SPEED_THRESHOLD 5 + #define E6_COOLSTEP_LOWER_LOAD_THRESHOLD 7 + #define E6_COOLSTEP_UPPER_LOAD_THRESHOLD 0 + #define E6_COOLSTEP_SEUP 2 + #define E6_COOLSTEP_SEDN 0 + #define E6_COOLSTEP_SEIMIN 1 + #endif + + #if AXIS_HAS_COOLSTEP(E7) + #define E7_COOLSTEP_SPEED_THRESHOLD 5 + #define E7_COOLSTEP_LOWER_LOAD_THRESHOLD 7 + #define E7_COOLSTEP_UPPER_LOAD_THRESHOLD 0 + #define E7_COOLSTEP_SEUP 2 + #define E7_COOLSTEP_SEDN 0 + #define E7_COOLSTEP_SEIMIN 1 + #endif + /** * Use StallGuard2 to home / probe X, Y, Z. * diff --git a/Marlin/src/core/drivers.h b/Marlin/src/core/drivers.h index 7e0f3b65510a..dfc9fcc1d015 100644 --- a/Marlin/src/core/drivers.h +++ b/Marlin/src/core/drivers.h @@ -52,7 +52,7 @@ #define _TMC5160_STANDALONE 0x5160B #define _DRIVER_ID(V) _CAT(_, V) -#define _AXIS_DRIVER_TYPE(A,T) (_DRIVER_ID(A##_DRIVER_TYPE) == _CAT(_, T)) +#define _AXIS_DRIVER_TYPE(A,T) (_DRIVER_ID(A##_DRIVER_TYPE) == _DRIVER_ID(T)) #define AXIS_DRIVER_TYPE_X(T) _AXIS_DRIVER_TYPE(X,T) #define AXIS_DRIVER_TYPE_Y(T) _AXIS_DRIVER_TYPE(Y,T) @@ -148,6 +148,9 @@ || AXIS_DRIVER_TYPE(A,TMC5130) \ || AXIS_DRIVER_TYPE(A,TMC5160) ) +#define AXIS_HAS_COOLSTEP(A) ( AXIS_DRIVER_TYPE(A,TMC2130) \ + || AXIS_DRIVER_TYPE(A,TMC2209) ) + #define ANY_AXIS_HAS(T) ( AXIS_HAS_##T(X) || AXIS_HAS_##T(X2) \ || AXIS_HAS_##T(Y) || AXIS_HAS_##T(Y2) \ || AXIS_HAS_##T(Z) || AXIS_HAS_##T(Z2) \ @@ -159,6 +162,7 @@ #define HAS_STEALTHCHOP ANY_AXIS_HAS(STEALTHCHOP) #define HAS_STALLGUARD ANY_AXIS_HAS(STALLGUARD) +#define HAS_COOLSTEP ANY_AXIS_HAS(COOLSTEP) #define TMC_HAS_SPI ANY_AXIS_HAS(SPI) #define TMC_HAS_SW_SERIAL ANY_AXIS_HAS(SW_SERIAL) diff --git a/Marlin/src/feature/tmc_util.h b/Marlin/src/feature/tmc_util.h index 14fc64c44e40..98913f857255 100644 --- a/Marlin/src/feature/tmc_util.h +++ b/Marlin/src/feature/tmc_util.h @@ -110,6 +110,7 @@ class TMCMarlin : public TMC, public TMCStorage { inline void refresh_stepping_mode() { this->en_pwm_mode(this->stored.stealthChop_enabled); } inline bool get_stealthChop_status() { return this->en_pwm_mode(); } #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]); @@ -121,6 +122,7 @@ class TMCMarlin : public TMC, public TMCStorage { #endif } #endif + #if USE_SENSORLESS inline int16_t homing_threshold() { return TMC::sgt(); } void homing_threshold(int16_t sgt_val) { @@ -135,6 +137,13 @@ class TMCMarlin : public TMC, public TMCStorage { #endif #endif + uint32_t get_cool_thrs() { + return _tmc_thrs(this->microsteps(), this->TCOOLTHRS(), planner.settings.axis_steps_per_mm[AXIS_ID]); + } + void set_cool_thrs(const uint32_t thrs) { + TMC::TCOOLTHRS(_tmc_thrs(this->microsteps(), thrs, planner.settings.axis_steps_per_mm[AXIS_ID])); + } + #if HAS_LCD_MENU inline void refresh_stepper_current() { rms_current(this->val_mA); } @@ -149,6 +158,7 @@ class TMCMarlin : public TMC, public TMCStorage { static constexpr int8_t sgt_min = -64, sgt_max = 63; }; + template class TMCMarlin : public TMC2208Stepper, public TMCStorage { public: @@ -172,6 +182,7 @@ class TMCMarlin : public TMC220 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]); @@ -217,6 +228,7 @@ class TMCMarlin : public TMC220 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]); @@ -228,6 +240,7 @@ class TMCMarlin : public TMC220 #endif } #endif + uint32_t get_cool_thrs() { return _tmc_thrs(this->microsteps(), this->TCOOLTHRS(), planner.settings.axis_steps_per_mm[AXIS_ID]); } @@ -248,7 +261,6 @@ class TMCMarlin : public TMC220 #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 diff --git a/Marlin/src/module/stepper/trinamic.cpp b/Marlin/src/module/stepper/trinamic.cpp index 4d9d0e1663f2..cc175fbc1a9c 100644 --- a/Marlin/src/module/stepper/trinamic.cpp +++ b/Marlin/src/module/stepper/trinamic.cpp @@ -36,7 +36,19 @@ #include enum StealthIndex : uint8_t { STEALTH_AXIS_XY, STEALTH_AXIS_Z, STEALTH_AXIS_E }; -#define _TMC_INIT(ST, STEALTH_INDEX) tmc_init(stepper##ST, ST##_CURRENT, ST##_MICROSTEPS, ST##_HYBRID_THRESHOLD, ST##_COOLSTEP_SPEED_THRESHOLD, ST##_COOLSTEP_LOWER_LOAD_THRESHOLD, ST##_COOLSTEP_UPPER_LOAD_THRESHOLD, ST##_COOLSTEP_SEUP, ST##_COOLSTEP_SEDN, ST##_COOLSTEP_SEIMIN, stealthchop_by_axis[STEALTH_INDEX]) +#define _TMC_INIT_1(ST, STEALTH_INDEX) tmc_init(stepper##ST, ST##_CURRENT, ST##_MICROSTEPS) +#define _TMC_INIT_2(ST, STEALTH_INDEX) tmc_init(stepper##ST, ST##_CURRENT, ST##_MICROSTEPS, stealthchop_by_axis[STEALTH_INDEX], ST##_HYBRID_THRESHOLD) +#define _TMC_INIT_3(ST, STEALTH_INDEX) tmc_init(stepper##ST, ST##_CURRENT, ST##_MICROSTEPS, stealthchop_by_axis[STEALTH_INDEX], ST##_HYBRID_THRESHOLD, ST##_COOLSTEP_SPEED_THRESHOLD, ST##_COOLSTEP_LOWER_LOAD_THRESHOLD, ST##_COOLSTEP_UPPER_LOAD_THRESHOLD, ST##_COOLSTEP_SEUP, ST##_COOLSTEP_SEDN, ST##_COOLSTEP_SEIMIN) +#define _TMC_INIT_TMC2660(ST, STEALTH_INDEX) _TMC_INIT_1(ST, STEALTH_INDEX) +#define _TMC_INIT_TMC2160(ST, STEALTH_INDEX) _TMC_INIT_2(ST, STEALTH_INDEX) +#define _TMC_INIT_TMC2208(ST, STEALTH_INDEX) _TMC_INIT_2(ST, STEALTH_INDEX) +#define _TMC_INIT_TMC5130(ST, STEALTH_INDEX) _TMC_INIT_2(ST, STEALTH_INDEX) +#define _TMC_INIT_TMC5160(ST, STEALTH_INDEX) _TMC_INIT_2(ST, STEALTH_INDEX) +#define _TMC_INIT_TMC2130(ST, STEALTH_INDEX) _TMC_INIT_3(ST, STEALTH_INDEX) +#define _TMC_INIT_TMC2209(ST, STEALTH_INDEX) _TMC_INIT_3(ST, STEALTH_INDEX) +#define __TMC_INIT(DRV, ST, STEALTH_INDEX) _TMC_INIT_##DRV(ST, STEALTH_INDEX) +#define _TMC_INIT(DRV, ST, STEALTH_INDEX) __TMC_INIT(DRV, ST, STEALTH_INDEX) +#define TMC_INIT(ST, STEALTH_INDEX) _TMC_INIT(ST##_DRIVER_TYPE, ST, STEALTH_INDEX) // IC = TMC model number // ST = Stepper object letter @@ -122,7 +134,19 @@ enum StealthIndex : uint8_t { STEALTH_AXIS_XY, STEALTH_AXIS_Z, STEALTH_AXIS_E }; #if HAS_DRIVER(TMC2130) template - void tmc_init(TMCMarlin &st, const uint16_t mA, const uint16_t microsteps, const uint32_t thrs, const uint32_t, const uint8_t, const uint8_t, const uint8_t, const uint8_t, const bool, const bool stealth) { + void tmc_init( + TMCMarlin &st, + const uint16_t mA, + const uint16_t microsteps, + const bool stealth, + const uint32_t hyb_thrs, + const uint32_t cool_thrs, + const uint8_t cool_semin, + const uint8_t cool_semax, + const uint8_t cool_seup, + const uint8_t cool_sedn, + const bool cool_seimin + ) { st.begin(); CHOPCONF_t chopconf{0}; @@ -152,18 +176,33 @@ enum StealthIndex : uint8_t { STEALTH_AXIS_XY, STEALTH_AXIS_Z, STEALTH_AXIS_E }; st.PWMCONF(pwmconf.sr); #if ENABLED(HYBRID_THRESHOLD) - st.set_pwm_thrs(thrs); + st.set_pwm_thrs(hyb_thrs); #else - UNUSED(thrs); + UNUSED(hyb_thrs); #endif + st.set_cool_thrs(cool_thrs); // (mm/s) + COOLCONF_t coolconf{0}; + coolconf.semin = cool_semin; + coolconf.semax = cool_semax; + coolconf.seup = cool_seup; + coolconf.sedn = cool_sedn; + coolconf.seimin = cool_seimin; + st.COOLCONF(coolconf.sr); + st.GSTAT(); // Clear GSTAT } #endif // TMC2130 #if HAS_DRIVER(TMC2160) template - void tmc_init(TMCMarlin &st, const uint16_t mA, const uint16_t microsteps, const uint32_t thrs, const uint32_t, const uint8_t, const uint8_t, const uint8_t, const uint8_t, const bool, const bool stealth) { + void tmc_init( + TMCMarlin &st, + const uint16_t mA, + const uint16_t microsteps, + const bool stealth, + const uint32_t hyb_thrs + ) { st.begin(); CHOPCONF_t chopconf{0}; @@ -196,9 +235,9 @@ enum StealthIndex : uint8_t { STEALTH_AXIS_XY, STEALTH_AXIS_Z, STEALTH_AXIS_E }; st.PWMCONF(pwmconf.sr); #if ENABLED(HYBRID_THRESHOLD) - st.set_pwm_thrs(thrs); + st.set_pwm_thrs(hyb_thrs); #else - UNUSED(thrs); + UNUSED(hyb_thrs); #endif st.GSTAT(); // Clear GSTAT @@ -440,7 +479,13 @@ enum StealthIndex : uint8_t { STEALTH_AXIS_XY, STEALTH_AXIS_Z, STEALTH_AXIS_E }; #if HAS_DRIVER(TMC2208) template - void tmc_init(TMCMarlin &st, const uint16_t mA, const uint16_t microsteps, const uint32_t thrs, const uint32_t, const uint8_t, const uint8_t, const uint8_t, const uint8_t, const bool, const bool stealth) { + void tmc_init( + TMCMarlin &st, + const uint16_t mA, + const uint16_t microsteps, + const bool stealth, + const uint32_t hyb_thrs + ) { TMC2208_n::GCONF_t gconf{0}; gconf.pdn_disable = true; // Use UART gconf.mstep_reg_select = true; // Select microsteps with UART @@ -476,9 +521,9 @@ enum StealthIndex : uint8_t { STEALTH_AXIS_XY, STEALTH_AXIS_Z, STEALTH_AXIS_E }; st.PWMCONF(pwmconf.sr); #if ENABLED(HYBRID_THRESHOLD) - st.set_pwm_thrs(thrs); + st.set_pwm_thrs(hyb_thrs); #else - UNUSED(thrs); + UNUSED(hyb_thrs); #endif st.GSTAT(0b111); // Clear @@ -488,8 +533,19 @@ enum StealthIndex : uint8_t { STEALTH_AXIS_XY, STEALTH_AXIS_Z, STEALTH_AXIS_E }; #if HAS_DRIVER(TMC2209) template - void tmc_init(TMCMarlin &st, const uint16_t mA, const uint16_t microsteps, const uint32_t thrs, - const uint32_t cool_thrs, const uint8_t cool_semin, const uint8_t cool_semax, const uint8_t cool_seup, const uint8_t cool_sedn, const bool cool_seimin, const bool stealth) { + void tmc_init( + TMCMarlin &st, + const uint16_t mA, + const uint16_t microsteps, + const bool stealth, + const uint32_t hyb_thrs, + const uint32_t cool_thrs, + const uint8_t cool_semin, + const uint8_t cool_semax, + const uint8_t cool_seup, + const uint8_t cool_sedn, + const bool cool_seimin + ) { TMC2208_n::GCONF_t gconf{0}; gconf.pdn_disable = true; // Use UART gconf.mstep_reg_select = true; // Select microsteps with UART @@ -525,13 +581,13 @@ enum StealthIndex : uint8_t { STEALTH_AXIS_XY, STEALTH_AXIS_Z, STEALTH_AXIS_E }; st.PWMCONF(pwmconf.sr); #if ENABLED(HYBRID_THRESHOLD) - st.set_pwm_thrs(thrs); + st.set_pwm_thrs(hyb_thrs); #else - UNUSED(thrs); + UNUSED(hyb_thrs); #endif - st.set_cool_thrs(cool_thrs); //mm/s - TMC2209_n::COOLCONF_t coolconf{0}; + st.set_cool_thrs(cool_thrs); // (mm/s) + COOLCONF_t coolconf{0}; coolconf.semin = cool_semin; coolconf.semax = cool_semax; coolconf.seup = cool_seup; @@ -546,7 +602,11 @@ enum StealthIndex : uint8_t { STEALTH_AXIS_XY, STEALTH_AXIS_Z, STEALTH_AXIS_E }; #if HAS_DRIVER(TMC2660) template - void tmc_init(TMCMarlin &st, const uint16_t mA, const uint16_t microsteps, const uint32_t, const uint32_t, const uint8_t, const uint8_t, const uint8_t, const uint8_t, const bool, const bool) { + void tmc_init( + TMCMarlin &st, + const uint16_t mA, + const uint16_t microsteps + ) { st.begin(); TMC2660_n::CHOPCONF_t chopconf{0}; @@ -573,7 +633,13 @@ enum StealthIndex : uint8_t { STEALTH_AXIS_XY, STEALTH_AXIS_Z, STEALTH_AXIS_E }; #if HAS_DRIVER(TMC5130) template - void tmc_init(TMCMarlin &st, const uint16_t mA, const uint16_t microsteps, const uint32_t thrs, const uint32_t, const uint8_t, const uint8_t, const uint8_t, const uint8_t, const bool, const bool stealth) { + void tmc_init( + TMCMarlin &st, + const uint16_t mA, + const uint16_t microsteps, + const bool stealth, + const uint32_t hyb_thrs + ) { st.begin(); CHOPCONF_t chopconf{0}; @@ -603,9 +669,9 @@ enum StealthIndex : uint8_t { STEALTH_AXIS_XY, STEALTH_AXIS_Z, STEALTH_AXIS_E }; st.PWMCONF(pwmconf.sr); #if ENABLED(HYBRID_THRESHOLD) - st.set_pwm_thrs(thrs); + st.set_pwm_thrs(hyb_thrs); #else - UNUSED(thrs); + UNUSED(hyb_thrs); #endif st.GSTAT(); // Clear GSTAT @@ -614,7 +680,13 @@ enum StealthIndex : uint8_t { STEALTH_AXIS_XY, STEALTH_AXIS_Z, STEALTH_AXIS_E }; #if HAS_DRIVER(TMC5160) template - void tmc_init(TMCMarlin &st, const uint16_t mA, const uint16_t microsteps, const uint32_t thrs, const uint32_t, const uint8_t, const uint8_t, const uint8_t, const uint8_t, const bool, const bool stealth) { + void tmc_init( + TMCMarlin &st, + const uint16_t mA, + const uint16_t microsteps, + const bool stealth, + const uint32_t hyb_thrs + ) { st.begin(); CHOPCONF_t chopconf{0}; @@ -647,9 +719,9 @@ enum StealthIndex : uint8_t { STEALTH_AXIS_XY, STEALTH_AXIS_Z, STEALTH_AXIS_E }; st.PWMCONF(pwmconf.sr); #if ENABLED(HYBRID_THRESHOLD) - st.set_pwm_thrs(thrs); + st.set_pwm_thrs(hyb_thrs); #else - UNUSED(thrs); + UNUSED(hyb_thrs); #endif st.GSTAT(); // Clear GSTAT } @@ -728,52 +800,52 @@ void reset_trinamic_drivers() { }; #if AXIS_IS_TMC(X) - _TMC_INIT(X, STEALTH_AXIS_XY); + TMC_INIT(X, STEALTH_AXIS_XY); #endif #if AXIS_IS_TMC(X2) - _TMC_INIT(X2, STEALTH_AXIS_XY); + TMC_INIT(X2, STEALTH_AXIS_XY); #endif #if AXIS_IS_TMC(Y) - _TMC_INIT(Y, STEALTH_AXIS_XY); + TMC_INIT(Y, STEALTH_AXIS_XY); #endif #if AXIS_IS_TMC(Y2) - _TMC_INIT(Y2, STEALTH_AXIS_XY); + TMC_INIT(Y2, STEALTH_AXIS_XY); #endif #if AXIS_IS_TMC(Z) - _TMC_INIT(Z, STEALTH_AXIS_Z); + TMC_INIT(Z, STEALTH_AXIS_Z); #endif #if AXIS_IS_TMC(Z2) - _TMC_INIT(Z2, STEALTH_AXIS_Z); + TMC_INIT(Z2, STEALTH_AXIS_Z); #endif #if AXIS_IS_TMC(Z3) - _TMC_INIT(Z3, STEALTH_AXIS_Z); + TMC_INIT(Z3, STEALTH_AXIS_Z); #endif #if AXIS_IS_TMC(Z4) - _TMC_INIT(Z4, STEALTH_AXIS_Z); + TMC_INIT(Z4, STEALTH_AXIS_Z); #endif #if AXIS_IS_TMC(E0) - _TMC_INIT(E0, STEALTH_AXIS_E); + TMC_INIT(E0, STEALTH_AXIS_E); #endif #if AXIS_IS_TMC(E1) - _TMC_INIT(E1, STEALTH_AXIS_E); + TMC_INIT(E1, STEALTH_AXIS_E); #endif #if AXIS_IS_TMC(E2) - _TMC_INIT(E2, STEALTH_AXIS_E); + TMC_INIT(E2, STEALTH_AXIS_E); #endif #if AXIS_IS_TMC(E3) - _TMC_INIT(E3, STEALTH_AXIS_E); + TMC_INIT(E3, STEALTH_AXIS_E); #endif #if AXIS_IS_TMC(E4) - _TMC_INIT(E4, STEALTH_AXIS_E); + TMC_INIT(E4, STEALTH_AXIS_E); #endif #if AXIS_IS_TMC(E5) - _TMC_INIT(E5, STEALTH_AXIS_E); + TMC_INIT(E5, STEALTH_AXIS_E); #endif #if AXIS_IS_TMC(E6) - _TMC_INIT(E6, STEALTH_AXIS_E); + TMC_INIT(E6, STEALTH_AXIS_E); #endif #if AXIS_IS_TMC(E7) - _TMC_INIT(E7, STEALTH_AXIS_E); + TMC_INIT(E7, STEALTH_AXIS_E); #endif #if USE_SENSORLESS diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h index 288f7830e08e..14e2ff42e6b2 100644 --- a/Marlin/src/pins/pins.h +++ b/Marlin/src/pins/pins.h @@ -1184,7 +1184,7 @@ #define __EPIN(p,q) E##p##_##q##_PIN #define _EPIN(p,q) __EPIN(p,q) #define __EDRV(p) E##p##_DRIVER_TYPE -#define _EDRV(p) __EDRV(p,q) +#define _EDRV(p) __EDRV(p) #define DIAG_REMAPPED(p,q) (PIN_EXISTS(q) && _EPIN(p##_E_INDEX, DIAG) == q##_PIN) // The X2 axis, if any, should be the next open extruder port