From 025376e61ae940f8257cca82b06612d9ba24ab1a Mon Sep 17 00:00:00 2001 From: FabioSan Date: Tue, 21 Jan 2020 16:18:01 -0800 Subject: [PATCH 01/13] CoolConf for 2209 --- Marlin/Configuration.h | 2 +- Marlin/Configuration_adv.h | 4 ++-- Marlin/src/feature/tmc_util.h | 8 ++++++++ Marlin/src/module/stepper/trinamic.cpp | 9 +++++++++ 4 files changed, 20 insertions(+), 3 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 28625955af77..ed9bb26e2b93 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -671,7 +671,7 @@ * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'L6474', 'POWERSTEP01', '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'] */ -//#define X_DRIVER_TYPE A4988 +#define X_DRIVER_TYPE TMC2209 //#define Y_DRIVER_TYPE A4988 //#define Z_DRIVER_TYPE A4988 //#define X2_DRIVER_TYPE A4988 diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index f5a561b4c24f..86859b0a9ab3 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -2241,7 +2241,7 @@ * M912 - Clear stepper driver overtemperature pre-warn condition flag. * M122 - Report driver parameters (Requires TMC_DEBUG) */ - //#define MONITOR_DRIVER_STATUS + #define MONITOR_DRIVER_STATUS #if ENABLED(MONITOR_DRIVER_STATUS) #define CURRENT_STEP_DOWN 50 // [mA] @@ -2328,7 +2328,7 @@ * Enable M122 debugging command for TMC stepper drivers. * M122 S0/1 will enable continous reporting. */ - //#define TMC_DEBUG + #define TMC_DEBUG /** * You can set your own advanced settings by filling in predefined functions. diff --git a/Marlin/src/feature/tmc_util.h b/Marlin/src/feature/tmc_util.h index 2c0a87703e15..90b0200b5a50 100644 --- a/Marlin/src/feature/tmc_util.h +++ b/Marlin/src/feature/tmc_util.h @@ -121,6 +121,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) { @@ -228,6 +229,13 @@ 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]); + } + void set_cool_thrs(const uint32_t thrs) { + TMC2209Stepper::TCOOLTHRS(_tmc_thrs(this->microsteps(), thrs, planner.settings.axis_steps_per_mm[AXIS_ID])); + } + #if USE_SENSORLESS inline int16_t homing_threshold() { return TMC2209Stepper::SGTHRS(); } void homing_threshold(int16_t sgt_val) { diff --git a/Marlin/src/module/stepper/trinamic.cpp b/Marlin/src/module/stepper/trinamic.cpp index 69eaaa5c5ceb..430fd54928d4 100644 --- a/Marlin/src/module/stepper/trinamic.cpp +++ b/Marlin/src/module/stepper/trinamic.cpp @@ -529,6 +529,15 @@ enum StealthIndex : uint8_t { STEALTH_AXIS_XY, STEALTH_AXIS_Z, STEALTH_AXIS_E }; UNUSED(thrs); #endif + st.set_cool_thrs(10); //mm/s + TMC2209_n::COOLCONF_t coolconf{0}; + coolconf.semin = 7; + coolconf.semax = 1; + coolconf.seup = 0; + coolconf.sedn = 0; + coolconf.seimin = 0; + st.COOLCONF(coolconf.sr); + st.GSTAT(0b111); // Clear delay(200); } From 2bdba048109893be4960e5d1cbe1d0f7a954c622 Mon Sep 17 00:00:00 2001 From: FabioSan Date: Wed, 22 Jan 2020 19:47:01 -0800 Subject: [PATCH 02/13] CoolConf params --- Marlin/Configuration_adv.h | 22 +++++++++++++++++++++- Marlin/src/feature/tmc_util.cpp | 14 +++++++++++++- Marlin/src/module/stepper/trinamic.cpp | 8 ++++---- 3 files changed, 38 insertions(+), 6 deletions(-) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 86859b0a9ab3..4e41d5f1509c 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -2015,7 +2015,7 @@ */ #if HAS_TRINAMIC - #define HOLD_MULTIPLIER 0.5 // Scales down the holding current from run current + #define HOLD_MULTIPLIER 0.25 // Scales down the holding current from run current #define INTERPOLATE true // Interpolate X/Y/Z_MICROSTEPS to 256 #if AXIS_IS_TMC(X) @@ -2275,6 +2275,26 @@ #define E6_HYBRID_THRESHOLD 30 #define E7_HYBRID_THRESHOLD 30 + /** + * CoolStep. 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. + * If SG_RESULT goes below COOLSTEP_LOWER_LOAD_THRESHOLD stepper curreent will be increased. + * 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 + */ + + #define X_COOLSTEP_SPEED_THRESHOLD 10 // [mm/s] + #define X_COOLSTEP_LOWER_LOAD_THRESHOLD 7 // 0 disables it, 1..15 + #define X_COOLSTEP_UPPER_LOAD_THRESHOLD 0 // 0..15 + #define X_COOLSTEP_SEUP 2 // 0..3 + #define X_COOLSTEP_SEDN 0 // 0..3 + #define X_COOLSTEP_SEIMIN 1 // 0..1 + + /** * Use StallGuard2 to home / probe X, Y, Z. * diff --git a/Marlin/src/feature/tmc_util.cpp b/Marlin/src/feature/tmc_util.cpp index c09939173a23..a293a88516d4 100644 --- a/Marlin/src/feature/tmc_util.cpp +++ b/Marlin/src/feature/tmc_util.cpp @@ -629,6 +629,16 @@ default: break; } } + + #if HAS_DRIVER(TMC2209) + static void _tmc_parse_drv_status(TMC2209Stepper &st, const TMC_drv_status_enum i) { + switch (i) { + case TMC_SG_RESULT: SERIAL_PRINT(st.SG_RESULT(), DEC); break; + default: _tmc_parse_drv_status(static_cast(st), i); + break; + } + } + #endif #endif #if HAS_DRIVER(TMC2660) @@ -905,9 +915,11 @@ TMC_REPORT("Stallguard thrs", TMC_SGT); DRV_REPORT("DRVSTATUS", TMC_DRV_CODES); + #if HAS_TMCX1X0 || HAS_TMC220x + DRV_REPORT("sg_result", TMC_SG_RESULT); + #endif #if HAS_TMCX1X0 DRV_REPORT("stallguard\t", TMC_STALLGUARD); - DRV_REPORT("sg_result", TMC_SG_RESULT); DRV_REPORT("fsactive\t", TMC_FSACTIVE); #endif DRV_REPORT("stst\t", TMC_STST); diff --git a/Marlin/src/module/stepper/trinamic.cpp b/Marlin/src/module/stepper/trinamic.cpp index 430fd54928d4..dded4731579c 100644 --- a/Marlin/src/module/stepper/trinamic.cpp +++ b/Marlin/src/module/stepper/trinamic.cpp @@ -529,13 +529,13 @@ enum StealthIndex : uint8_t { STEALTH_AXIS_XY, STEALTH_AXIS_Z, STEALTH_AXIS_E }; UNUSED(thrs); #endif - st.set_cool_thrs(10); //mm/s + st.set_cool_thrs(5); //mm/s TMC2209_n::COOLCONF_t coolconf{0}; coolconf.semin = 7; - coolconf.semax = 1; - coolconf.seup = 0; + coolconf.semax = 0; + coolconf.seup = 2; coolconf.sedn = 0; - coolconf.seimin = 0; + coolconf.seimin = 1; st.COOLCONF(coolconf.sr); st.GSTAT(0b111); // Clear From 4e2b979498ddb4e975fb160fa0bba12f7d538dfb Mon Sep 17 00:00:00 2001 From: Fabio Santos Date: Thu, 23 Jan 2020 19:13:49 -0800 Subject: [PATCH 03/13] CoolStep configuration and init --- Marlin/Configuration_adv.h | 123 +++++++++++++++++++++++-- Marlin/src/module/stepper/trinamic.cpp | 29 +++--- 2 files changed, 131 insertions(+), 21 deletions(-) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 4e41d5f1509c..65becbc8c389 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -2287,13 +2287,122 @@ * SEIMIN sets the lower current limit. 0: 1/2 of IRUN, 1:1/4 of IRUN */ - #define X_COOLSTEP_SPEED_THRESHOLD 10 // [mm/s] - #define X_COOLSTEP_LOWER_LOAD_THRESHOLD 7 // 0 disables it, 1..15 - #define X_COOLSTEP_UPPER_LOAD_THRESHOLD 0 // 0..15 - #define X_COOLSTEP_SEUP 2 // 0..3 - #define X_COOLSTEP_SEDN 0 // 0..3 - #define X_COOLSTEP_SEIMIN 1 // 0..1 - + #if AXIS_IS_TMC(X) + #define X_COOLSTEP_SPEED_THRESHOLD 5 + #define X_COOLSTEP_LOWER_LOAD_THRESHOLD 7 + #define X_COOLSTEP_UPPER_LOAD_THRESHOLD 0 + #define X_COOLSTEP_SEUP 2 + #define X_COOLSTEP_SEDN 0 + #define X_COOLSTEP_SEIMIN 1 + #endif + + #if AXIS_IS_TMC(X2) + #define X2_COOLSTEP_SPEED_THRESHOLD 5 + #define X2_COOLSTEP_LOWER_LOAD_THRESHOLD 7 + #define X2_COOLSTEP_UPPER_LOAD_THRESHOLD 0 + #define X2_COOLSTEP_SEUP 2 + #define X2_COOLSTEP_SEDN 0 + #define X2_COOLSTEP_SEIMIN 1 + #endif + + #if AXIS_IS_TMC(Y) + #define Y_COOLSTEP_SPEED_THRESHOLD 5 + #define Y_COOLSTEP_LOWER_LOAD_THRESHOLD 7 + #define Y_COOLSTEP_UPPER_LOAD_THRESHOLD 0 + #define Y_COOLSTEP_SEUP 2 + #define Y_COOLSTEP_SEDN 0 + #define Y_COOLSTEP_SEIMIN 1 + #endif + + #if AXIS_IS_TMC(Y2) + #define Y2_COOLSTEP_SPEED_THRESHOLD 5 + #define Y2_COOLSTEP_LOWER_LOAD_THRESHOLD 7 + #define Y2_COOLSTEP_UPPER_LOAD_THRESHOLD 0 + #define Y2_COOLSTEP_SEUP 2 + #define Y2_COOLSTEP_SEDN 0 + #define Y2_COOLSTEP_SEIMIN 1 + #endif + + #if AXIS_IS_TMC(Z) + #define Z_COOLSTEP_SPEED_THRESHOLD 5 + #define Z_COOLSTEP_LOWER_LOAD_THRESHOLD 7 + #define Z_COOLSTEP_UPPER_LOAD_THRESHOLD 0 + #define Z_COOLSTEP_SEUP 2 + #define Z_COOLSTEP_SEDN 0 + #define Z_COOLSTEP_SEIMIN 1 + #endif + + #if AXIS_IS_TMC(Z2) + #define Z2_COOLSTEP_SPEED_THRESHOLD 5 + #define Z2_COOLSTEP_LOWER_LOAD_THRESHOLD 7 + #define Z2_COOLSTEP_UPPER_LOAD_THRESHOLD 0 + #define Z2_COOLSTEP_SEUP 2 + #define Z2_COOLSTEP_SEDN 0 + #define Z2_COOLSTEP_SEIMIN 1 + #endif + + #if AXIS_IS_TMC(Z3) + #define Z3_COOLSTEP_SPEED_THRESHOLD 5 + #define Z3_COOLSTEP_LOWER_LOAD_THRESHOLD 7 + #define Z3_COOLSTEP_UPPER_LOAD_THRESHOLD 0 + #define Z3_COOLSTEP_SEUP 2 + #define Z3_COOLSTEP_SEDN 0 + #define Z3_COOLSTEP_SEIMIN 1 + #endif + + #if AXIS_IS_TMC(E0) + #define E0_COOLSTEP_SPEED_THRESHOLD 5 + #define E0_COOLSTEP_LOWER_LOAD_THRESHOLD 7 + #define E0_COOLSTEP_UPPER_LOAD_THRESHOLD 0 + #define E0_COOLSTEP_SEUP 2 + #define E0_COOLSTEP_SEDN 0 + #define E0_COOLSTEP_SEIMIN 1 + #endif + + #if AXIS_IS_TMC(E1) + #define E1_COOLSTEP_SPEED_THRESHOLD 5 + #define E1_COOLSTEP_LOWER_LOAD_THRESHOLD 7 + #define E1_COOLSTEP_UPPER_LOAD_THRESHOLD 0 + #define E1_COOLSTEP_SEUP 2 + #define E1_COOLSTEP_SEDN 0 + #define E1_COOLSTEP_SEIMIN 1 + #endif + + #if AXIS_IS_TMC(E2) + #define E2_COOLSTEP_SPEED_THRESHOLD 5 + #define E2_COOLSTEP_LOWER_LOAD_THRESHOLD 7 + #define E2_COOLSTEP_UPPER_LOAD_THRESHOLD 0 + #define E2_COOLSTEP_SEUP 2 + #define E2_COOLSTEP_SEDN 0 + #define E2_COOLSTEP_SEIMIN 1 + #endif + + #if AXIS_IS_TMC(E3) + #define E3_COOLSTEP_SPEED_THRESHOLD 5 + #define E3_COOLSTEP_LOWER_LOAD_THRESHOLD 7 + #define E3_COOLSTEP_UPPER_LOAD_THRESHOLD 0 + #define E3_COOLSTEP_SEUP 2 + #define E3_COOLSTEP_SEDN 0 + #define E3_COOLSTEP_SEIMIN 1 + #endif + + #if AXIS_IS_TMC(E4) + #define E4_COOLSTEP_SPEED_THRESHOLD 5 + #define E4_COOLSTEP_LOWER_LOAD_THRESHOLD 7 + #define E4_COOLSTEP_UPPER_LOAD_THRESHOLD 0 + #define E4_COOLSTEP_SEUP 2 + #define E4_COOLSTEP_SEDN 0 + #define E4_COOLSTEP_SEIMIN 1 + #endif + + #if AXIS_IS_TMC(E5) + #define E5_COOLSTEP_SPEED_THRESHOLD 5 + #define E5_COOLSTEP_LOWER_LOAD_THRESHOLD 7 + #define E5_COOLSTEP_UPPER_LOAD_THRESHOLD 0 + #define E5_COOLSTEP_SEUP 2 + #define E5_COOLSTEP_SEDN 0 + #define E5_COOLSTEP_SEIMIN 1 + #endif /** * Use StallGuard2 to home / probe X, Y, Z. diff --git a/Marlin/src/module/stepper/trinamic.cpp b/Marlin/src/module/stepper/trinamic.cpp index dded4731579c..4d9d0e1663f2 100644 --- a/Marlin/src/module/stepper/trinamic.cpp +++ b/Marlin/src/module/stepper/trinamic.cpp @@ -36,7 +36,7 @@ #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, stealthchop_by_axis[STEALTH_INDEX]) +#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]) // IC = TMC model number // ST = Stepper object letter @@ -122,7 +122,7 @@ 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 bool stealth) { + 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) { st.begin(); CHOPCONF_t chopconf{0}; @@ -163,7 +163,7 @@ enum StealthIndex : uint8_t { STEALTH_AXIS_XY, STEALTH_AXIS_Z, STEALTH_AXIS_E }; #if HAS_DRIVER(TMC2160) template - void tmc_init(TMCMarlin &st, const uint16_t mA, const uint16_t microsteps, const uint32_t thrs, const bool stealth) { + 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) { st.begin(); CHOPCONF_t chopconf{0}; @@ -440,7 +440,7 @@ 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 bool stealth) { + 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) { TMC2208_n::GCONF_t gconf{0}; gconf.pdn_disable = true; // Use UART gconf.mstep_reg_select = true; // Select microsteps with UART @@ -488,7 +488,8 @@ 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 bool stealth) { + 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) { TMC2208_n::GCONF_t gconf{0}; gconf.pdn_disable = true; // Use UART gconf.mstep_reg_select = true; // Select microsteps with UART @@ -529,13 +530,13 @@ enum StealthIndex : uint8_t { STEALTH_AXIS_XY, STEALTH_AXIS_Z, STEALTH_AXIS_E }; UNUSED(thrs); #endif - st.set_cool_thrs(5); //mm/s + st.set_cool_thrs(cool_thrs); //mm/s TMC2209_n::COOLCONF_t coolconf{0}; - coolconf.semin = 7; - coolconf.semax = 0; - coolconf.seup = 2; - coolconf.sedn = 0; - coolconf.seimin = 1; + 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(0b111); // Clear @@ -545,7 +546,7 @@ 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 bool) { + 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) { st.begin(); TMC2660_n::CHOPCONF_t chopconf{0}; @@ -572,7 +573,7 @@ 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 bool stealth) { + 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) { st.begin(); CHOPCONF_t chopconf{0}; @@ -613,7 +614,7 @@ 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 bool stealth) { + 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) { st.begin(); CHOPCONF_t chopconf{0}; From 00c8110906f9fa9aab96ec7447f0120f75697f86 Mon Sep 17 00:00:00 2001 From: FabioSan Date: Wed, 5 Feb 2020 18:07:15 -0800 Subject: [PATCH 04/13] Revert configs to default --- Marlin/Configuration.h | 2 +- Marlin/Configuration_adv.h | 6 +++--- Marlin/src/feature/tmc_util.h | 1 - 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index ed9bb26e2b93..28625955af77 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -671,7 +671,7 @@ * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'L6474', 'POWERSTEP01', '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'] */ -#define X_DRIVER_TYPE TMC2209 +//#define X_DRIVER_TYPE A4988 //#define Y_DRIVER_TYPE A4988 //#define Z_DRIVER_TYPE A4988 //#define X2_DRIVER_TYPE A4988 diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 65becbc8c389..d05441737a6e 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -2015,7 +2015,7 @@ */ #if HAS_TRINAMIC - #define HOLD_MULTIPLIER 0.25 // Scales down the holding current from run current + #define HOLD_MULTIPLIER 0.5 // Scales down the holding current from run current #define INTERPOLATE true // Interpolate X/Y/Z_MICROSTEPS to 256 #if AXIS_IS_TMC(X) @@ -2241,7 +2241,7 @@ * M912 - Clear stepper driver overtemperature pre-warn condition flag. * M122 - Report driver parameters (Requires TMC_DEBUG) */ - #define MONITOR_DRIVER_STATUS + //#define MONITOR_DRIVER_STATUS #if ENABLED(MONITOR_DRIVER_STATUS) #define CURRENT_STEP_DOWN 50 // [mA] @@ -2457,7 +2457,7 @@ * Enable M122 debugging command for TMC stepper drivers. * M122 S0/1 will enable continous reporting. */ - #define TMC_DEBUG + //#define TMC_DEBUG /** * You can set your own advanced settings by filling in predefined functions. diff --git a/Marlin/src/feature/tmc_util.h b/Marlin/src/feature/tmc_util.h index 90b0200b5a50..14fc64c44e40 100644 --- a/Marlin/src/feature/tmc_util.h +++ b/Marlin/src/feature/tmc_util.h @@ -121,7 +121,6 @@ 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) { From 7d40e4888d3639b50725b98e69b8b178f98baa91 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 6 Feb 2020 17:30:11 -0600 Subject: [PATCH 05/13] Auto assign extra axis driver types --- Marlin/Configuration.h | 5 ----- Marlin/src/pins/pins.h | 22 ++++++++++++++++++++++ 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 28625955af77..7ba7cde69304 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -674,11 +674,6 @@ //#define X_DRIVER_TYPE A4988 //#define Y_DRIVER_TYPE A4988 //#define Z_DRIVER_TYPE A4988 -//#define X2_DRIVER_TYPE A4988 -//#define Y2_DRIVER_TYPE A4988 -//#define Z2_DRIVER_TYPE A4988 -//#define Z3_DRIVER_TYPE A4988 -//#define Z4_DRIVER_TYPE A4988 //#define E0_DRIVER_TYPE A4988 //#define E1_DRIVER_TYPE A4988 //#define E2_DRIVER_TYPE A4988 diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h index def3e2681b1c..288f7830e08e 100644 --- a/Marlin/src/pins/pins.h +++ b/Marlin/src/pins/pins.h @@ -1183,12 +1183,18 @@ #define _PEXI(p,q) __PEXI(p,q) #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 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 #define X2_E_INDEX E_STEPPERS #if EITHER(DUAL_X_CARRIAGE, X_DUAL_STEPPER_DRIVERS) + #ifndef X2_DRIVER_TYPE + #define X2_DRIVER_TYPE _EDRV(X2_E_INDEX) + #endif + #ifndef X2_STEP_PIN #define X2_STEP_PIN _EPIN(X2_E_INDEX, STEP) #define X2_DIR_PIN _EPIN(X2_E_INDEX, DIR) @@ -1262,6 +1268,10 @@ // The Y2 axis, if any, should be the next open extruder port #if ENABLED(Y_DUAL_STEPPER_DRIVERS) + #ifndef Y2_DRIVER_TYPE + #define Y2_DRIVER_TYPE _EDRV(Y2_E_INDEX) + #endif + #ifndef Y2_STEP_PIN #define Y2_STEP_PIN _EPIN(Y2_E_INDEX, STEP) #define Y2_DIR_PIN _EPIN(Y2_E_INDEX, DIR) @@ -1330,6 +1340,10 @@ // The Z2 axis, if any, should be the next open extruder port #if NUM_Z_STEPPER_DRIVERS >= 2 + #ifndef Z2_DRIVER_TYPE + #define Z2_DRIVER_TYPE _EDRV(Z2_E_INDEX) + #endif + #ifndef Z2_STEP_PIN #define Z2_STEP_PIN _EPIN(Z2_E_INDEX, STEP) #define Z2_DIR_PIN _EPIN(Z2_E_INDEX, DIR) @@ -1397,6 +1411,10 @@ #endif #if NUM_Z_STEPPER_DRIVERS >= 3 + #ifndef Z3_DRIVER_TYPE + #define Z3_DRIVER_TYPE _EDRV(Z3_E_INDEX) + #endif + #ifndef Z3_STEP_PIN #define Z3_STEP_PIN _EPIN(Z3_E_INDEX, STEP) #define Z3_DIR_PIN _EPIN(Z3_E_INDEX, DIR) @@ -1464,6 +1482,10 @@ #endif #if NUM_Z_STEPPER_DRIVERS >= 4 + #ifndef Z4_DRIVER_TYPE + #define Z4_DRIVER_TYPE _EDRV(Z4_E_INDEX) + #endif + #ifndef Z4_STEP_PIN #define Z4_STEP_PIN _EPIN(Z4_E_INDEX, STEP) #define Z4_DIR_PIN _EPIN(Z4_E_INDEX, DIR) From 4455c812ca47c03a3ec0e09c4bf9389c262d42ba Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 6 Feb 2020 17:47:48 -0600 Subject: [PATCH 06/13] 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 From 2697a0dce87c4f519f54cd903b2dee82083d1d12 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 6 Feb 2020 18:10:03 -0600 Subject: [PATCH 07/13] Tweak spacing --- Marlin/src/feature/tmc_util.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/Marlin/src/feature/tmc_util.cpp b/Marlin/src/feature/tmc_util.cpp index a293a88516d4..471469285763 100644 --- a/Marlin/src/feature/tmc_util.cpp +++ b/Marlin/src/feature/tmc_util.cpp @@ -631,11 +631,10 @@ } #if HAS_DRIVER(TMC2209) - static void _tmc_parse_drv_status(TMC2209Stepper &st, const TMC_drv_status_enum i) { + static void _tmc_parse_drv_status(TMC2209Stepper &st, const TMC_drv_status_enum i) { switch (i) { - case TMC_SG_RESULT: SERIAL_PRINT(st.SG_RESULT(), DEC); break; - default: _tmc_parse_drv_status(static_cast(st), i); - break; + case TMC_SG_RESULT: SERIAL_PRINT(st.SG_RESULT(), DEC); break; + default: _tmc_parse_drv_status(static_cast(st), i); break; } } #endif From f73b80afcf6ace7784154053852720d15b89f9b0 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 6 Feb 2020 19:32:08 -0600 Subject: [PATCH 08/13] Add CoolStep sanity check --- Marlin/src/inc/SanityCheck.h | 56 ++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index ed5ddce34d3c..e0fcb8ecde40 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -2040,6 +2040,62 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS #error "LED_USER_PRESET_STARTUP is required for FYSETC_MINI_12864 2.x displays." #endif +/** + * Make sure CoolStep settings exist + */ +#if HAS_COOLSTEP + #define NEEDS_COOLSTEP(A) AXIS_HAS_COOLSTEP(A) && !(defined(X_COOLSTEP_SPEED_THRESHOLD) && defined(X_COOLSTEP_LOWER_LOAD_THRESHOLD) && defined(X_COOLSTEP_UPPER_LOAD_THRESHOLD) && defined(X_COOLSTEP_SEUP) && defined(X_COOLSTEP_SEDN) && defined(X_COOLSTEP_SEIMIN)) + #if NEEDS_COOLSTEP(X) + #error "X COOLSTEP settings must be defined in Configuration_adv.h." + #endif + #if NEEDS_COOLSTEP(X2) + #error "X2 COOLSTEP settings must be defined in Configuration_adv.h." + #endif + #if NEEDS_COOLSTEP(Y) + #error "Y COOLSTEP settings must be defined in Configuration_adv.h." + #endif + #if NEEDS_COOLSTEP(Y2) + #error "Y2 COOLSTEP settings must be defined in Configuration_adv.h." + #endif + #if NEEDS_COOLSTEP(Z) + #error "Z COOLSTEP settings must be defined in Configuration_adv.h." + #endif + #if NEEDS_COOLSTEP(Z2) + #error "Z2 COOLSTEP settings must be defined in Configuration_adv.h." + #endif + #if NEEDS_COOLSTEP(Z3) + #error "Z3 COOLSTEP settings must be defined in Configuration_adv.h." + #endif + #if NEEDS_COOLSTEP(Z4) + #error "Z4 COOLSTEP settings must be defined in Configuration_adv.h." + #endif + #if NEEDS_COOLSTEP(E0) + #error "E0 COOLSTEP settings must be defined in Configuration_adv.h." + #endif + #if NEEDS_COOLSTEP(E1) + #error "E1 COOLSTEP settings must be defined in Configuration_adv.h." + #endif + #if NEEDS_COOLSTEP(E2) + #error "E2 COOLSTEP settings must be defined in Configuration_adv.h." + #endif + #if NEEDS_COOLSTEP(E3) + #error "E3 COOLSTEP settings must be defined in Configuration_adv.h." + #endif + #if NEEDS_COOLSTEP(E4) + #error "E4 COOLSTEP settings must be defined in Configuration_adv.h." + #endif + #if NEEDS_COOLSTEP(E5) + #error "E5 COOLSTEP settings must be defined in Configuration_adv.h." + #endif + #if NEEDS_COOLSTEP(E6) + #error "E6 COOLSTEP settings must be defined in Configuration_adv.h." + #endif + #if NEEDS_COOLSTEP(E7) + #error "E7 COOLSTEP settings must be defined in Configuration_adv.h." + #endif + #undef NEEDS_COOLSTEP +#endif + /** * Check existing CS pins against enabled TMC SPI drivers. */ From b86e9e99f95bdef51baba9e52078f177a951ff04 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 6 Feb 2020 22:51:33 -0600 Subject: [PATCH 09/13] =?UTF-8?q?CoolStep=E2=84=A2=20for=205130,=205160?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/core/drivers.h | 14 +++++---- Marlin/src/inc/SanityCheck.h | 2 +- Marlin/src/module/stepper/trinamic.cpp | 39 +++++++++++++++++++++++--- 3 files changed, 44 insertions(+), 11 deletions(-) diff --git a/Marlin/src/core/drivers.h b/Marlin/src/core/drivers.h index dfc9fcc1d015..a12570a3078c 100644 --- a/Marlin/src/core/drivers.h +++ b/Marlin/src/core/drivers.h @@ -149,16 +149,18 @@ || AXIS_DRIVER_TYPE(A,TMC5160) ) #define AXIS_HAS_COOLSTEP(A) ( AXIS_DRIVER_TYPE(A,TMC2130) \ - || AXIS_DRIVER_TYPE(A,TMC2209) ) + || AXIS_DRIVER_TYPE(A,TMC2209) \ + || AXIS_DRIVER_TYPE(A,TMC5130) \ + || AXIS_DRIVER_TYPE(A,TMC5160) ) + +#define _OR_EAH(N,T) || AXIS_HAS_##T(E##N) +#define E_AXIS_HAS(T) (0 RREPEAT2(E_STEPPERS, _OR_EAH, T)) #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) \ - || AXIS_HAS_##T(Z3) \ - || AXIS_HAS_##T(E0) || AXIS_HAS_##T(E1) \ - || AXIS_HAS_##T(E2) || AXIS_HAS_##T(E3) \ - || AXIS_HAS_##T(E4) || AXIS_HAS_##T(E5) \ - || AXIS_HAS_##T(E6) || AXIS_HAS_##T(E7) ) + || AXIS_HAS_##T(Z3) || AXIS_HAS_##T(Z4) \ + || E_AXIS_HAS(T) ) #define HAS_STEALTHCHOP ANY_AXIS_HAS(STEALTHCHOP) #define HAS_STALLGUARD ANY_AXIS_HAS(STALLGUARD) diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index e0fcb8ecde40..30217e25c6bf 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -2044,7 +2044,7 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS * Make sure CoolStep settings exist */ #if HAS_COOLSTEP - #define NEEDS_COOLSTEP(A) AXIS_HAS_COOLSTEP(A) && !(defined(X_COOLSTEP_SPEED_THRESHOLD) && defined(X_COOLSTEP_LOWER_LOAD_THRESHOLD) && defined(X_COOLSTEP_UPPER_LOAD_THRESHOLD) && defined(X_COOLSTEP_SEUP) && defined(X_COOLSTEP_SEDN) && defined(X_COOLSTEP_SEIMIN)) + #define NEEDS_COOLSTEP(A) AXIS_HAS_COOLSTEP(A) && !(defined(A##_COOLSTEP_SPEED_THRESHOLD) && defined(A##_COOLSTEP_LOWER_LOAD_THRESHOLD) && defined(A##_COOLSTEP_UPPER_LOAD_THRESHOLD) && defined(A##_COOLSTEP_SEUP) && defined(A##_COOLSTEP_SEDN) && defined(A##_COOLSTEP_SEIMIN)) #if NEEDS_COOLSTEP(X) #error "X COOLSTEP settings must be defined in Configuration_adv.h." #endif diff --git a/Marlin/src/module/stepper/trinamic.cpp b/Marlin/src/module/stepper/trinamic.cpp index cc175fbc1a9c..a9f6f08f4828 100644 --- a/Marlin/src/module/stepper/trinamic.cpp +++ b/Marlin/src/module/stepper/trinamic.cpp @@ -42,8 +42,8 @@ enum StealthIndex : uint8_t { STEALTH_AXIS_XY, STEALTH_AXIS_Z, STEALTH_AXIS_E }; #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_TMC5130(ST, STEALTH_INDEX) _TMC_INIT_3(ST, STEALTH_INDEX) +#define _TMC_INIT_TMC5160(ST, STEALTH_INDEX) _TMC_INIT_3(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) @@ -638,7 +638,13 @@ enum StealthIndex : uint8_t { STEALTH_AXIS_XY, STEALTH_AXIS_Z, STEALTH_AXIS_E }; const uint16_t mA, const uint16_t microsteps, const bool stealth, - const uint32_t hyb_thrs + 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(); @@ -674,6 +680,15 @@ enum StealthIndex : uint8_t { STEALTH_AXIS_XY, STEALTH_AXIS_Z, STEALTH_AXIS_E }; 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 // TMC5130 @@ -685,7 +700,13 @@ enum StealthIndex : uint8_t { STEALTH_AXIS_XY, STEALTH_AXIS_Z, STEALTH_AXIS_E }; const uint16_t mA, const uint16_t microsteps, const bool stealth, - const uint32_t hyb_thrs + 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(); @@ -723,6 +744,16 @@ enum StealthIndex : uint8_t { STEALTH_AXIS_XY, STEALTH_AXIS_Z, STEALTH_AXIS_E }; #else 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 // TMC5160 From 9569662ad8ee27e312976da50afb59806a899f8f Mon Sep 17 00:00:00 2001 From: FabioSan Date: Fri, 7 Feb 2020 17:15:10 -0800 Subject: [PATCH 10/13] Fix up and clarify config comments --- Marlin/Configuration_adv.h | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index f29a6972b5d8..4550fd8e2a85 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -2276,12 +2276,16 @@ #define E7_HYBRID_THRESHOLD 30 /** - * CoolStep. TMC2130 and TMC2209 only. + * CoolStep. Currently supported for TMC2130, TMC2209, TMC5130 and TMC5160 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. - * If SG_RESULT goes below COOLSTEP_LOWER_LOAD_THRESHOLD stepper curreent will be increased. - * If SG_RESULT goes above COOLSTEP_UPPER_LOAD_THRESHOLD stepper curreent will be decreased. + * The driver will switch to coolStep when stepper speed is over COOLSTEP_THRESHOLD mm/s. + * + * If SG_RESULT goes below COOLSTEP_LOWER_LOAD_THRESHOLD * 32 stepper current will be increased. + * Set to 0 to dable CoolStep. + * + * If SG_RESULT goes above (COOLSTEP_LOWER_LOAD_THRESHOLD + COOLSTEP_UPPER_LOAD_THRESHOLD +1) * 32 + * stepper current 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 From 52d4d028644520b83534e87d1b7d0461fc22d623 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 8 Feb 2020 16:58:14 -0600 Subject: [PATCH 11/13] Additional TMC enhancements --- Marlin/src/HAL/HAL_AVR/inc/SanityCheck.h | 2 +- Marlin/src/HAL/HAL_DUE/inc/SanityCheck.h | 2 +- Marlin/src/HAL/HAL_ESP32/inc/SanityCheck.h | 2 +- Marlin/src/HAL/HAL_LINUX/inc/SanityCheck.h | 2 +- Marlin/src/HAL/HAL_SAMD51/inc/SanityCheck.h | 2 +- Marlin/src/HAL/HAL_STM32/HAL.cpp | 4 ++-- Marlin/src/HAL/HAL_STM32F1/inc/SanityCheck.h | 2 +- .../src/HAL/HAL_STM32_F4_F7/inc/SanityCheck.h | 2 +- .../src/HAL/HAL_TEENSY31_32/inc/SanityCheck.h | 2 +- .../src/HAL/HAL_TEENSY35_36/inc/SanityCheck.h | 2 +- Marlin/src/MarlinCore.cpp | 2 +- Marlin/src/core/drivers.h | 13 +++++++++++-- Marlin/src/feature/tmc_util.cpp | 18 ++++++++---------- Marlin/src/feature/tmc_util.h | 2 +- Marlin/src/inc/SanityCheck.h | 2 +- Marlin/src/module/stepper.cpp | 2 +- Marlin/src/pins/lpc1768/pins_GMARSH_X6_REV1.h | 2 +- Marlin/src/pins/lpc1769/pins_TH3D_EZBOARD.h | 4 ++-- Marlin/src/pins/mega/pins_MIGHTYBOARD_REVE.h | 6 +++--- Marlin/src/pins/ramps/pins_Z_BOLT_X_SERIES.h | 4 ++-- .../src/pins/stm32/pins_BTT_SKR_MINI_E3_V1_0.h | 4 ++-- 21 files changed, 44 insertions(+), 37 deletions(-) diff --git a/Marlin/src/HAL/HAL_AVR/inc/SanityCheck.h b/Marlin/src/HAL/HAL_AVR/inc/SanityCheck.h index d24a2781c007..87864bcaf67b 100644 --- a/Marlin/src/HAL/HAL_AVR/inc/SanityCheck.h +++ b/Marlin/src/HAL/HAL_AVR/inc/SanityCheck.h @@ -60,6 +60,6 @@ #error "TMCStepper includes SoftwareSerial.h which is incompatible with ENDSTOP_INTERRUPTS_FEATURE. Disable ENDSTOP_INTERRUPTS_FEATURE to continue." #endif -#if TMC_HAS_SW_SERIAL && ENABLED(MONITOR_DRIVER_STATUS) +#if HAS_TMC_SW_SERIAL && ENABLED(MONITOR_DRIVER_STATUS) #error "MONITOR_DRIVER_STATUS causes performance issues when used with SoftwareSerial-connected drivers. Disable MONITOR_DRIVER_STATUS or use hardware serial to continue." #endif diff --git a/Marlin/src/HAL/HAL_DUE/inc/SanityCheck.h b/Marlin/src/HAL/HAL_DUE/inc/SanityCheck.h index 0de4e705bd2e..0f7be7955fa8 100644 --- a/Marlin/src/HAL/HAL_DUE/inc/SanityCheck.h +++ b/Marlin/src/HAL/HAL_DUE/inc/SanityCheck.h @@ -56,6 +56,6 @@ #error "FAST_PWM_FAN is not yet implemented for this platform." #endif -#if TMC_HAS_SW_SERIAL +#if HAS_TMC_SW_SERIAL #error "TMC220x Software Serial is not supported on this platform." #endif diff --git a/Marlin/src/HAL/HAL_ESP32/inc/SanityCheck.h b/Marlin/src/HAL/HAL_ESP32/inc/SanityCheck.h index 9f19fd920b66..b6ad7a3c4bff 100644 --- a/Marlin/src/HAL/HAL_ESP32/inc/SanityCheck.h +++ b/Marlin/src/HAL/HAL_ESP32/inc/SanityCheck.h @@ -29,7 +29,7 @@ #error "FAST_PWM_FAN is not yet implemented for this platform." #endif -#if TMC_HAS_SW_SERIAL +#if HAS_TMC_SW_SERIAL #error "TMC220x Software Serial is not supported on this platform." #endif diff --git a/Marlin/src/HAL/HAL_LINUX/inc/SanityCheck.h b/Marlin/src/HAL/HAL_LINUX/inc/SanityCheck.h index 9898c01db424..a3238b088b83 100644 --- a/Marlin/src/HAL/HAL_LINUX/inc/SanityCheck.h +++ b/Marlin/src/HAL/HAL_LINUX/inc/SanityCheck.h @@ -34,6 +34,6 @@ #error "FAST_PWM_FAN is not yet implemented for this platform." #endif -#if TMC_HAS_SW_SERIAL +#if HAS_TMC_SW_SERIAL #error "TMC220x Software Serial is not supported on this platform." #endif diff --git a/Marlin/src/HAL/HAL_SAMD51/inc/SanityCheck.h b/Marlin/src/HAL/HAL_SAMD51/inc/SanityCheck.h index 163bf1278c8d..d0bc2275bf6c 100644 --- a/Marlin/src/HAL/HAL_SAMD51/inc/SanityCheck.h +++ b/Marlin/src/HAL/HAL_SAMD51/inc/SanityCheck.h @@ -47,6 +47,6 @@ #warning "Did you activate the SmartEEPROM? See https://github.com/GMagician/SAMD51-SmartEEprom-Activator" #endif -#if TMC_HAS_SW_SERIAL +#if HAS_TMC_SW_SERIAL #error "TMC220x Software Serial is not supported on this platform." #endif diff --git a/Marlin/src/HAL/HAL_STM32/HAL.cpp b/Marlin/src/HAL/HAL_STM32/HAL.cpp index f21ec53ce422..5d8c686af30e 100644 --- a/Marlin/src/HAL/HAL_STM32/HAL.cpp +++ b/Marlin/src/HAL/HAL_STM32/HAL.cpp @@ -28,7 +28,7 @@ #include "../../inc/MarlinConfig.h" #include "../shared/Delay.h" -#if TMC_HAS_SW_SERIAL +#if HAS_TMC_SW_SERIAL #include "SoftwareSerial.h" #endif @@ -87,7 +87,7 @@ void HAL_init() { while (!LL_PWR_IsActiveFlag_BRR()); #endif // EEPROM_EMULATED_SRAM - #if TMC_HAS_SW_SERIAL + #if HAS_TMC_SW_SERIAL SoftwareSerial::setInterruptPriority(SWSERIAL_TIMER_IRQ_PRIO, 0); #endif } diff --git a/Marlin/src/HAL/HAL_STM32F1/inc/SanityCheck.h b/Marlin/src/HAL/HAL_STM32F1/inc/SanityCheck.h index 25e5d0f1f848..b8ebc446d6db 100644 --- a/Marlin/src/HAL/HAL_STM32F1/inc/SanityCheck.h +++ b/Marlin/src/HAL/HAL_STM32F1/inc/SanityCheck.h @@ -37,7 +37,7 @@ #error "FAST_PWM_FAN is not yet implemented for this platform." #endif -#if !defined(HAVE_SW_SERIAL) && TMC_HAS_SW_SERIAL +#if !defined(HAVE_SW_SERIAL) && HAS_TMC_SW_SERIAL #warning "With TMC2208/9 consider using SoftwareSerialM with HAVE_SW_SERIAL and appropriate SS_TIMER." #error "Missing SoftwareSerial implementation." #endif diff --git a/Marlin/src/HAL/HAL_STM32_F4_F7/inc/SanityCheck.h b/Marlin/src/HAL/HAL_STM32_F4_F7/inc/SanityCheck.h index 058c8d9dde6e..e04258fa078a 100644 --- a/Marlin/src/HAL/HAL_STM32_F4_F7/inc/SanityCheck.h +++ b/Marlin/src/HAL/HAL_STM32_F4_F7/inc/SanityCheck.h @@ -36,6 +36,6 @@ #error "FAST_PWM_FAN is not yet implemented for this platform." #endif -#if TMC_HAS_SW_SERIAL +#if HAS_TMC_SW_SERIAL #error "TMC220x Software Serial is not supported on this platform." #endif diff --git a/Marlin/src/HAL/HAL_TEENSY31_32/inc/SanityCheck.h b/Marlin/src/HAL/HAL_TEENSY31_32/inc/SanityCheck.h index 04efaaa6701a..92688685966e 100644 --- a/Marlin/src/HAL/HAL_TEENSY31_32/inc/SanityCheck.h +++ b/Marlin/src/HAL/HAL_TEENSY31_32/inc/SanityCheck.h @@ -33,6 +33,6 @@ #error "FAST_PWM_FAN is not yet implemented for this platform." #endif -#if TMC_HAS_SW_SERIAL +#if HAS_TMC_SW_SERIAL #error "TMC220x Software Serial is not supported on this platform." #endif diff --git a/Marlin/src/HAL/HAL_TEENSY35_36/inc/SanityCheck.h b/Marlin/src/HAL/HAL_TEENSY35_36/inc/SanityCheck.h index 37ef55e02dcc..f42bd63b1781 100644 --- a/Marlin/src/HAL/HAL_TEENSY35_36/inc/SanityCheck.h +++ b/Marlin/src/HAL/HAL_TEENSY35_36/inc/SanityCheck.h @@ -33,6 +33,6 @@ #error "FAST_PWM_FAN is not yet implemented for this platform." #endif -#if TMC_HAS_SW_SERIAL +#if HAS_TMC_SW_SERIAL #error "TMC220x Software Serial is not supported on this platform." #endif diff --git a/Marlin/src/MarlinCore.cpp b/Marlin/src/MarlinCore.cpp index 180bedd87c2d..64d914991c1d 100644 --- a/Marlin/src/MarlinCore.cpp +++ b/Marlin/src/MarlinCore.cpp @@ -897,7 +897,7 @@ void setup() { SERIAL_ECHOLNPGM("start"); SERIAL_ECHO_START(); - #if TMC_HAS_SPI + #if HAS_TMC_SPI #if DISABLED(TMC_USE_SW_SPI) SPI.begin(); #endif diff --git a/Marlin/src/core/drivers.h b/Marlin/src/core/drivers.h index a12570a3078c..8b8995af0f70 100644 --- a/Marlin/src/core/drivers.h +++ b/Marlin/src/core/drivers.h @@ -148,6 +148,11 @@ || AXIS_DRIVER_TYPE(A,TMC5130) \ || AXIS_DRIVER_TYPE(A,TMC5160) ) +#define AXIS_HAS_SG_RESULT(A) ( AXIS_DRIVER_TYPE(A,TMC2130) \ + || AXIS_DRIVER_TYPE(A,TMC2160) \ + || AXIS_DRIVER_TYPE(A,TMC2208) \ + || AXIS_DRIVER_TYPE(A,TMC2209) ) + #define AXIS_HAS_COOLSTEP(A) ( AXIS_DRIVER_TYPE(A,TMC2130) \ || AXIS_DRIVER_TYPE(A,TMC2209) \ || AXIS_DRIVER_TYPE(A,TMC5130) \ @@ -162,11 +167,15 @@ || AXIS_HAS_##T(Z3) || AXIS_HAS_##T(Z4) \ || E_AXIS_HAS(T) ) +HAS_TMCX1X0 || HAS_TMC220x + #define HAS_STEALTHCHOP ANY_AXIS_HAS(STEALTHCHOP) #define HAS_STALLGUARD ANY_AXIS_HAS(STALLGUARD) +#define HAS_SG_RESULT ANY_AXIS_HAS(SG_RESULT) #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) +#define HAS_TMC_UART ANY_AXIS_HAS(UART) +#define HAS_TMC_SPI ANY_AXIS_HAS(SPI) +#define HAS_TMC_SW_SERIAL ANY_AXIS_HAS(SW_SERIAL) // // Stretching 'drivers.h' to include LPC/SAMD51 SD options diff --git a/Marlin/src/feature/tmc_util.cpp b/Marlin/src/feature/tmc_util.cpp index 471469285763..11a81559df9e 100644 --- a/Marlin/src/feature/tmc_util.cpp +++ b/Marlin/src/feature/tmc_util.cpp @@ -900,26 +900,24 @@ TMC_REPORT("stealthChop", TMC_STEALTHCHOP); TMC_REPORT("msteps\t", TMC_MICROSTEPS); TMC_REPORT("tstep\t", TMC_TSTEP); - TMC_REPORT("pwm\nthreshold", TMC_TPWMTHRS); + TMC_REPORT("PWM thresh.", TMC_TPWMTHRS); TMC_REPORT("[mm/s]\t", TMC_TPWMTHRS_MMS); TMC_REPORT("OT prewarn", TMC_OTPW); #if ENABLED(MONITOR_DRIVER_STATUS) - TMC_REPORT("OT prewarn has\n" - "been triggered", TMC_OTPW_TRIGGERED); + TMC_REPORT("triggered\n OTP\t", TMC_OTPW_TRIGGERED); #endif TMC_REPORT("off time", TMC_TOFF); TMC_REPORT("blank time", TMC_TBL); - TMC_REPORT("hysteresis\n-end\t", TMC_HEND); - TMC_REPORT("-start\t", TMC_HSTRT); + TMC_REPORT("hysteresis\n -end\t", TMC_HEND); + TMC_REPORT(" -start\t", TMC_HSTRT); TMC_REPORT("Stallguard thrs", TMC_SGT); - DRV_REPORT("DRVSTATUS", TMC_DRV_CODES); #if HAS_TMCX1X0 || HAS_TMC220x DRV_REPORT("sg_result", TMC_SG_RESULT); #endif #if HAS_TMCX1X0 - DRV_REPORT("stallguard\t", TMC_STALLGUARD); - DRV_REPORT("fsactive\t", TMC_FSACTIVE); + DRV_REPORT("stallguard", TMC_STALLGUARD); + DRV_REPORT("fsactive", TMC_FSACTIVE); #endif DRV_REPORT("stst\t", TMC_STST); DRV_REPORT("olb\t", TMC_OLB); @@ -1114,7 +1112,7 @@ #endif // USE_SENSORLESS -#if TMC_HAS_SPI +#if HAS_TMC_SPI #define SET_CS_PIN(st) OUT_WRITE(st##_CS_PIN, HIGH) void tmc_init_cs_pins() { #if AXIS_HAS_SPI(X) @@ -1166,7 +1164,7 @@ SET_CS_PIN(E7); #endif } -#endif // TMC_HAS_SPI +#endif // HAS_TMC_SPI template static bool test_connection(TMC &st) { diff --git a/Marlin/src/feature/tmc_util.h b/Marlin/src/feature/tmc_util.h index 98913f857255..584076e478da 100644 --- a/Marlin/src/feature/tmc_util.h +++ b/Marlin/src/feature/tmc_util.h @@ -410,7 +410,7 @@ void test_tmc_connection(const bool test_x, const bool test_y, const bool test_z #endif // USE_SENSORLESS -#if TMC_HAS_SPI +#if HAS_TMC_SPI void tmc_init_cs_pins(); #endif diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 30217e25c6bf..7d7592cb194b 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -2706,6 +2706,6 @@ static_assert( _ARR_TEST(3,0) && _ARR_TEST(3,1) && _ARR_TEST(3,2) * Check to make sure MONITOR_DRIVER_STATUS isn't enabled * on boards where TMC drivers share the SPI bus with SD. */ -#if TMC_HAS_SPI && ALL(MONITOR_DRIVER_STATUS, SDSUPPORT, USES_SHARED_SPI) +#if HAS_TMC_SPI && ALL(MONITOR_DRIVER_STATUS, SDSUPPORT, USES_SHARED_SPI) #error "MONITOR_DRIVER_STATUS and SDSUPPORT cannot be used together on boards with shared SPI." #endif diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index dcc13eca58e5..c739abe26a42 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -1496,7 +1496,7 @@ void Stepper::stepper_pulse_phase_isr() { #define _APPLY_STEP(AXIS) AXIS ##_APPLY_STEP #define _INVERT_STEP_PIN(AXIS) INVERT_## AXIS ##_STEP_PIN - // Determine if pulses are needed + // Determine if a pulse is needed using Bresenham #define PULSE_PREP(AXIS) do{ \ delta_error[_AXIS(AXIS)] += advance_dividend[_AXIS(AXIS)]; \ step_needed[_AXIS(AXIS)] = (delta_error[_AXIS(AXIS)] >= 0); \ diff --git a/Marlin/src/pins/lpc1768/pins_GMARSH_X6_REV1.h b/Marlin/src/pins/lpc1768/pins_GMARSH_X6_REV1.h index 514da67c643c..28445962ac7b 100644 --- a/Marlin/src/pins/lpc1768/pins_GMARSH_X6_REV1.h +++ b/Marlin/src/pins/lpc1768/pins_GMARSH_X6_REV1.h @@ -82,7 +82,7 @@ // // TMC2208 UART pins // -#if HAS_DRIVER(TMC2208) +#if HAS_TMC_UART #define X_SERIAL_TX_PIN P1_00 #define X_SERIAL_RX_PIN P1_00 #define Y_SERIAL_TX_PIN P1_09 diff --git a/Marlin/src/pins/lpc1769/pins_TH3D_EZBOARD.h b/Marlin/src/pins/lpc1769/pins_TH3D_EZBOARD.h index d86558a49d2f..8f7d00bb3bdd 100644 --- a/Marlin/src/pins/lpc1769/pins_TH3D_EZBOARD.h +++ b/Marlin/src/pins/lpc1769/pins_TH3D_EZBOARD.h @@ -74,9 +74,9 @@ #define E1_DIR_PIN P2_13 #define E1_ENABLE_PIN P4_29 -#if HAS_DRIVER(TMC2208) +#if HAS_TMC_UART // - // TMC2208 stepper drivers + // TMC220x stepper drivers // Software serial // #define X_SERIAL_TX_PIN P0_04 diff --git a/Marlin/src/pins/mega/pins_MIGHTYBOARD_REVE.h b/Marlin/src/pins/mega/pins_MIGHTYBOARD_REVE.h index 929c3ee68790..6d3102172bb8 100644 --- a/Marlin/src/pins/mega/pins_MIGHTYBOARD_REVE.h +++ b/Marlin/src/pins/mega/pins_MIGHTYBOARD_REVE.h @@ -264,11 +264,11 @@ #define SD_DETECT_PIN 9 // H6 // -//TMC 2208 +// TMC 220x // -#if HAS_DRIVER(TMC2208) +#if HAS_TMC_UART /** - * TMC2208 stepper drivers + * TMC220x stepper drivers * * Hardware serial communication ports. * If undefined software serial is used according to the pins below diff --git a/Marlin/src/pins/ramps/pins_Z_BOLT_X_SERIES.h b/Marlin/src/pins/ramps/pins_Z_BOLT_X_SERIES.h index a1005c51ec57..9808646d32db 100644 --- a/Marlin/src/pins/ramps/pins_Z_BOLT_X_SERIES.h +++ b/Marlin/src/pins/ramps/pins_Z_BOLT_X_SERIES.h @@ -193,9 +193,9 @@ #endif #endif -#if HAS_DRIVER(TMC2208) +#if HAS_TMC_UART /** - * TMC2208 stepper drivers + * TMC220x stepper drivers * * Hardware serial communication ports. * If undefined software serial is used according to the pins below diff --git a/Marlin/src/pins/stm32/pins_BTT_SKR_MINI_E3_V1_0.h b/Marlin/src/pins/stm32/pins_BTT_SKR_MINI_E3_V1_0.h index 461cd347a658..f909cce83a31 100644 --- a/Marlin/src/pins/stm32/pins_BTT_SKR_MINI_E3_V1_0.h +++ b/Marlin/src/pins/stm32/pins_BTT_SKR_MINI_E3_V1_0.h @@ -26,10 +26,10 @@ #define BOARD_INFO_NAME "BIGTREE SKR Mini E3" /** - * TMC2209 stepper drivers + * TMC220x stepper drivers * Hardware serial communication ports. */ -#if HAS_DRIVER(TMC2209) +#if HAS_TMC_UART #define X_HARDWARE_SERIAL Serial4 #define Y_HARDWARE_SERIAL Serial4 #define Z_HARDWARE_SERIAL Serial4 From 435a4390b9522ac7c135b5628cae1aeb45814090 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 8 Feb 2020 20:29:04 -0600 Subject: [PATCH 12/13] Update drivers.h --- Marlin/src/core/drivers.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/Marlin/src/core/drivers.h b/Marlin/src/core/drivers.h index 8b8995af0f70..a9a3d5bcc4c4 100644 --- a/Marlin/src/core/drivers.h +++ b/Marlin/src/core/drivers.h @@ -167,8 +167,6 @@ || AXIS_HAS_##T(Z3) || AXIS_HAS_##T(Z4) \ || E_AXIS_HAS(T) ) -HAS_TMCX1X0 || HAS_TMC220x - #define HAS_STEALTHCHOP ANY_AXIS_HAS(STEALTHCHOP) #define HAS_STALLGUARD ANY_AXIS_HAS(STALLGUARD) #define HAS_SG_RESULT ANY_AXIS_HAS(SG_RESULT) From d5e1cc3c2d0f314897bd44fba108d586f8c4625e Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 8 Feb 2020 20:38:48 -0600 Subject: [PATCH 13/13] Update Configuration_adv.h --- Marlin/Configuration_adv.h | 168 ++++++++++++++++++------------------- 1 file changed, 84 insertions(+), 84 deletions(-) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 4550fd8e2a85..2d4931a722d1 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -2278,14 +2278,14 @@ /** * CoolStep. Currently supported for TMC2130, TMC2209, TMC5130 and TMC5160 only. * This mode allows for cooler steppers and energy savings. - * The driver will switch to coolStep when stepper speed is over COOLSTEP_THRESHOLD mm/s. - * + * The driver will switch to coolStep when stepper speed is over COOLSTEP_THRESHOLD mm/s. + * * If SG_RESULT goes below COOLSTEP_LOWER_LOAD_THRESHOLD * 32 stepper current will be increased. - * Set to 0 to dable CoolStep. - * - * If SG_RESULT goes above (COOLSTEP_LOWER_LOAD_THRESHOLD + COOLSTEP_UPPER_LOAD_THRESHOLD +1) * 32 + * Set to 0 to disable CoolStep. + * + * If SG_RESULT goes above (COOLSTEP_LOWER_LOAD_THRESHOLD + COOLSTEP_UPPER_LOAD_THRESHOLD + 1) * 32 * stepper current 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 @@ -2301,12 +2301,12 @@ #endif #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 - #define X2_COOLSTEP_SEUP 2 - #define X2_COOLSTEP_SEDN 0 - #define X2_COOLSTEP_SEIMIN 1 + #define X2_COOLSTEP_SPEED_THRESHOLD 5 + #define X2_COOLSTEP_LOWER_LOAD_THRESHOLD 7 + #define X2_COOLSTEP_UPPER_LOAD_THRESHOLD 0 + #define X2_COOLSTEP_SEUP 2 + #define X2_COOLSTEP_SEDN 0 + #define X2_COOLSTEP_SEIMIN 1 #endif #if AXIS_HAS_COOLSTEP(Y) @@ -2319,12 +2319,12 @@ #endif #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 - #define Y2_COOLSTEP_SEUP 2 - #define Y2_COOLSTEP_SEDN 0 - #define Y2_COOLSTEP_SEIMIN 1 + #define Y2_COOLSTEP_SPEED_THRESHOLD 5 + #define Y2_COOLSTEP_LOWER_LOAD_THRESHOLD 7 + #define Y2_COOLSTEP_UPPER_LOAD_THRESHOLD 0 + #define Y2_COOLSTEP_SEUP 2 + #define Y2_COOLSTEP_SEDN 0 + #define Y2_COOLSTEP_SEIMIN 1 #endif #if AXIS_HAS_COOLSTEP(Z) @@ -2337,102 +2337,102 @@ #endif #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 - #define Z2_COOLSTEP_SEUP 2 - #define Z2_COOLSTEP_SEDN 0 - #define Z2_COOLSTEP_SEIMIN 1 + #define Z2_COOLSTEP_SPEED_THRESHOLD 5 + #define Z2_COOLSTEP_LOWER_LOAD_THRESHOLD 7 + #define Z2_COOLSTEP_UPPER_LOAD_THRESHOLD 0 + #define Z2_COOLSTEP_SEUP 2 + #define Z2_COOLSTEP_SEDN 0 + #define Z2_COOLSTEP_SEIMIN 1 #endif #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 - #define Z3_COOLSTEP_SEUP 2 - #define Z3_COOLSTEP_SEDN 0 - #define Z3_COOLSTEP_SEIMIN 1 + #define Z3_COOLSTEP_SPEED_THRESHOLD 5 + #define Z3_COOLSTEP_LOWER_LOAD_THRESHOLD 7 + #define Z3_COOLSTEP_UPPER_LOAD_THRESHOLD 0 + #define Z3_COOLSTEP_SEUP 2 + #define Z3_COOLSTEP_SEDN 0 + #define Z3_COOLSTEP_SEIMIN 1 #endif #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 + #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 - #define E0_COOLSTEP_SEUP 2 - #define E0_COOLSTEP_SEDN 0 - #define E0_COOLSTEP_SEIMIN 1 + #define E0_COOLSTEP_SPEED_THRESHOLD 5 + #define E0_COOLSTEP_LOWER_LOAD_THRESHOLD 7 + #define E0_COOLSTEP_UPPER_LOAD_THRESHOLD 0 + #define E0_COOLSTEP_SEUP 2 + #define E0_COOLSTEP_SEDN 0 + #define E0_COOLSTEP_SEIMIN 1 #endif #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 - #define E1_COOLSTEP_SEUP 2 - #define E1_COOLSTEP_SEDN 0 - #define E1_COOLSTEP_SEIMIN 1 + #define E1_COOLSTEP_SPEED_THRESHOLD 5 + #define E1_COOLSTEP_LOWER_LOAD_THRESHOLD 7 + #define E1_COOLSTEP_UPPER_LOAD_THRESHOLD 0 + #define E1_COOLSTEP_SEUP 2 + #define E1_COOLSTEP_SEDN 0 + #define E1_COOLSTEP_SEIMIN 1 #endif #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 - #define E2_COOLSTEP_SEUP 2 - #define E2_COOLSTEP_SEDN 0 - #define E2_COOLSTEP_SEIMIN 1 + #define E2_COOLSTEP_SPEED_THRESHOLD 5 + #define E2_COOLSTEP_LOWER_LOAD_THRESHOLD 7 + #define E2_COOLSTEP_UPPER_LOAD_THRESHOLD 0 + #define E2_COOLSTEP_SEUP 2 + #define E2_COOLSTEP_SEDN 0 + #define E2_COOLSTEP_SEIMIN 1 #endif #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 - #define E3_COOLSTEP_SEUP 2 - #define E3_COOLSTEP_SEDN 0 - #define E3_COOLSTEP_SEIMIN 1 + #define E3_COOLSTEP_SPEED_THRESHOLD 5 + #define E3_COOLSTEP_LOWER_LOAD_THRESHOLD 7 + #define E3_COOLSTEP_UPPER_LOAD_THRESHOLD 0 + #define E3_COOLSTEP_SEUP 2 + #define E3_COOLSTEP_SEDN 0 + #define E3_COOLSTEP_SEIMIN 1 #endif #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 - #define E4_COOLSTEP_SEUP 2 - #define E4_COOLSTEP_SEDN 0 - #define E4_COOLSTEP_SEIMIN 1 + #define E4_COOLSTEP_SPEED_THRESHOLD 5 + #define E4_COOLSTEP_LOWER_LOAD_THRESHOLD 7 + #define E4_COOLSTEP_UPPER_LOAD_THRESHOLD 0 + #define E4_COOLSTEP_SEUP 2 + #define E4_COOLSTEP_SEDN 0 + #define E4_COOLSTEP_SEIMIN 1 #endif #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 - #define E5_COOLSTEP_SEUP 2 - #define E5_COOLSTEP_SEDN 0 - #define E5_COOLSTEP_SEIMIN 1 + #define E5_COOLSTEP_SPEED_THRESHOLD 5 + #define E5_COOLSTEP_LOWER_LOAD_THRESHOLD 7 + #define E5_COOLSTEP_UPPER_LOAD_THRESHOLD 0 + #define E5_COOLSTEP_SEUP 2 + #define E5_COOLSTEP_SEDN 0 + #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 + #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 + #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 /**