Add support for TMC2660 (#11998)

This commit is contained in:
teemuatlut
2018-10-07 01:18:10 +03:00
committed by Scott Lahteine
parent cf0b9eb37c
commit c447d75916
11 changed files with 278 additions and 62 deletions

View File

@@ -487,6 +487,74 @@
}
#endif // TMC2208
//
// TMC2660 Driver objects and inits
//
#if HAS_DRIVER(TMC2660)
#include <SPI.h>
#include "planner.h"
#include "../core/enum.h"
#if ENABLED(TMC_USE_SW_SPI)
#define _TMC2660_DEFINE(ST, L) TMCMarlin<TMC2660Stepper, L> stepper##ST(ST##_CS_PIN, R_SENSE, TMC_SW_MOSI, TMC_SW_MISO, TMC_SW_SCK)
#define TMC2660_DEFINE(ST) _TMC2660_DEFINE(ST, TMC_##ST##_LABEL)
#else
#define _TMC2660_DEFINE(ST, L) TMCMarlin<TMC2660Stepper, L> stepper##ST(ST##_CS_PIN, R_SENSE)
#define TMC2660_DEFINE(ST) _TMC2660_DEFINE(ST, TMC_##ST##_LABEL)
#endif
// Stepper objects of TMC2660 steppers used
#if AXIS_DRIVER_TYPE(X, TMC2660)
TMC2660_DEFINE(X);
#endif
#if AXIS_DRIVER_TYPE(X2, TMC2660)
TMC2660_DEFINE(X2);
#endif
#if AXIS_DRIVER_TYPE(Y, TMC2660)
TMC2660_DEFINE(Y);
#endif
#if AXIS_DRIVER_TYPE(Y2, TMC2660)
TMC2660_DEFINE(Y2);
#endif
#if AXIS_DRIVER_TYPE(Z, TMC2660)
TMC2660_DEFINE(Z);
#endif
#if AXIS_DRIVER_TYPE(Z2, TMC2660)
TMC2660_DEFINE(Z2);
#endif
#if AXIS_DRIVER_TYPE(E0, TMC2660)
TMC2660_DEFINE(E0);
#endif
#if AXIS_DRIVER_TYPE(E1, TMC2660)
TMC2660_DEFINE(E1);
#endif
#if AXIS_DRIVER_TYPE(E2, TMC2660)
TMC2660_DEFINE(E2);
#endif
#if AXIS_DRIVER_TYPE(E3, TMC2660)
TMC2660_DEFINE(E3);
#endif
#if AXIS_DRIVER_TYPE(E4, TMC2660)
TMC2660_DEFINE(E4);
#endif
#if AXIS_DRIVER_TYPE(E5, TMC2660)
TMC2660_DEFINE(E5);
#endif
template<char AXIS_LETTER, char DRIVER_ID>
void tmc_init(TMCMarlin<TMC2660Stepper, AXIS_LETTER, DRIVER_ID> &st, const uint16_t mA, const uint16_t microsteps, const uint32_t, const float) {
st.begin();
st.rms_current(mA);
st.microsteps(microsteps);
st.blank_time(24);
st.toff(5); // Only enables the driver if used with stealthChop
st.intpol(INTERPOLATE);
//st.hysteresis_start(3);
//st.hysteresis_end(2);
}
#endif // TMC2660
void restore_stepper_drivers() {
#if AXIS_IS_TMC(X)
stepperX.push();