Skip to content

Commit

Permalink
CoolStep™ for 5130, 5160
Browse files Browse the repository at this point in the history
  • Loading branch information
thinkyhead committed Feb 7, 2020
1 parent f73b80a commit b86e9e9
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 11 deletions.
14 changes: 8 additions & 6 deletions Marlin/src/core/drivers.h
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
2 changes: 1 addition & 1 deletion Marlin/src/inc/SanityCheck.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
39 changes: 35 additions & 4 deletions Marlin/src/module/stepper/trinamic.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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();

Expand Down Expand Up @@ -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
Expand All @@ -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();

Expand Down Expand Up @@ -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
Expand Down

0 comments on commit b86e9e9

Please sign in to comment.