123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- #ifndef _TMC_UTIL_H_
- #define _TMC_UTIL_H_
- #include "MarlinConfig.h"
- #if HAS_DRIVER(TMC2130)
- #include <TMC2130Stepper.h>
- #endif
- #if HAS_DRIVER(TMC2208)
- #include <TMC2208Stepper.h>
- #endif
- extern bool report_tmc_status;
- enum TMC_AxisEnum : char { TMC_X, TMC_Y, TMC_Z, TMC_X2, TMC_Y2, TMC_Z2, TMC_E0, TMC_E1, TMC_E2, TMC_E3, TMC_E4 };
- constexpr uint32_t _tmc_thrs(const uint16_t msteps, const int32_t thrs, const uint32_t spmm) {
- return 12650000UL * msteps / (256 * thrs * spmm);
- }
- void _tmc_say_axis(const TMC_AxisEnum axis);
- void _tmc_say_current(const TMC_AxisEnum axis, const uint16_t curr);
- void _tmc_say_otpw(const TMC_AxisEnum axis, const bool otpw);
- void _tmc_say_otpw_cleared(const TMC_AxisEnum axis);
- void _tmc_say_pwmthrs(const TMC_AxisEnum axis, const uint32_t thrs);
- void _tmc_say_sgt(const TMC_AxisEnum axis, const int8_t sgt);
- template<typename TMC>
- void tmc_get_current(TMC &st, const TMC_AxisEnum axis) {
- _tmc_say_current(axis, st.getCurrent());
- }
- template<typename TMC>
- void tmc_set_current(TMC &st, const int mA) {
- st.setCurrent(mA, R_SENSE, HOLD_MULTIPLIER);
- }
- template<typename TMC>
- void tmc_report_otpw(TMC &st, const TMC_AxisEnum axis) {
- _tmc_say_otpw(axis, st.getOTPW());
- }
- template<typename TMC>
- void tmc_clear_otpw(TMC &st, const TMC_AxisEnum axis) {
- st.clear_otpw();
- _tmc_say_otpw_cleared(axis);
- }
- template<typename TMC>
- void tmc_get_pwmthrs(TMC &st, const TMC_AxisEnum axis, const uint16_t spmm) {
- _tmc_say_pwmthrs(axis, _tmc_thrs(st.microsteps(), st.TPWMTHRS(), spmm));
- }
- template<typename TMC>
- void tmc_set_pwmthrs(TMC &st, const int32_t thrs, const uint32_t spmm) {
- st.TPWMTHRS(_tmc_thrs(st.microsteps(), thrs, spmm));
- }
- template<typename TMC>
- void tmc_get_sgt(TMC &st, const TMC_AxisEnum axis) {
- _tmc_say_sgt(axis, st.sgt());
- }
- template<typename TMC>
- void tmc_set_sgt(TMC &st, const int8_t sgt_val) {
- st.sgt(sgt_val);
- }
- void monitor_tmc_driver();
- #if ENABLED(TMC_DEBUG)
- void tmc_set_report_status(const bool status);
- void tmc_report_all();
- #endif
- #if ENABLED(SENSORLESS_HOMING)
- void tmc_sensorless_homing(TMC2130Stepper &st, const bool enable=true);
- #endif
- #if HAS_DRIVER(TMC2130)
- void tmc_init_cs_pins();
- #endif
- #endif
|