Add support for TMC2660 (#11998)
This commit is contained in:
committed by
Scott Lahteine
parent
cf0b9eb37c
commit
c447d75916
@ -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();
|
||||
|
@ -101,6 +101,10 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
|
||||
#define X_ENABLE_INIT NOOP
|
||||
#define X_ENABLE_WRITE(STATE) stepperX.setEnabled(STATE)
|
||||
#define X_ENABLE_READ stepperX.isEnabled()
|
||||
#elif AXIS_DRIVER_TYPE(X, TMC2660)
|
||||
#define X_ENABLE_INIT NOOP
|
||||
#define X_ENABLE_WRITE(STATE) stepperX.toff((STATE)==X_ENABLE_ON ? stepperX.savedToff() : 0)
|
||||
#define X_ENABLE_READ stepperX.isEnabled()
|
||||
#else
|
||||
#define X_ENABLE_INIT SET_OUTPUT(X_ENABLE_PIN)
|
||||
#define X_ENABLE_WRITE(STATE) WRITE(X_ENABLE_PIN,STATE)
|
||||
@ -132,6 +136,10 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
|
||||
#define Y_ENABLE_INIT NOOP
|
||||
#define Y_ENABLE_WRITE(STATE) stepperY.setEnabled(STATE)
|
||||
#define Y_ENABLE_READ stepperY.isEnabled()
|
||||
#elif AXIS_DRIVER_TYPE(Y, TMC2660)
|
||||
#define Y_ENABLE_INIT NOOP
|
||||
#define Y_ENABLE_WRITE(STATE) stepperY.toff((STATE)==Y_ENABLE_ON ? stepperY.savedToff() : 0)
|
||||
#define Y_ENABLE_READ stepperY.isEnabled()
|
||||
#else
|
||||
#define Y_ENABLE_INIT SET_OUTPUT(Y_ENABLE_PIN)
|
||||
#define Y_ENABLE_WRITE(STATE) WRITE(Y_ENABLE_PIN,STATE)
|
||||
@ -163,6 +171,10 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
|
||||
#define Z_ENABLE_INIT NOOP
|
||||
#define Z_ENABLE_WRITE(STATE) stepperZ.setEnabled(STATE)
|
||||
#define Z_ENABLE_READ stepperZ.isEnabled()
|
||||
#elif AXIS_DRIVER_TYPE(Z, TMC2660)
|
||||
#define Z_ENABLE_INIT NOOP
|
||||
#define Z_ENABLE_WRITE(STATE) stepperZ.toff((STATE)==Z_ENABLE_ON ? stepperZ.savedToff() : 0)
|
||||
#define Z_ENABLE_READ stepperZ.isEnabled()
|
||||
#else
|
||||
#define Z_ENABLE_INIT SET_OUTPUT(Z_ENABLE_PIN)
|
||||
#define Z_ENABLE_WRITE(STATE) WRITE(Z_ENABLE_PIN,STATE)
|
||||
@ -195,6 +207,10 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
|
||||
#define X2_ENABLE_INIT NOOP
|
||||
#define X2_ENABLE_WRITE(STATE) stepperX2.setEnabled(STATE)
|
||||
#define X2_ENABLE_READ stepperX2.isEnabled()
|
||||
#elif AXIS_DRIVER_TYPE(X2, TMC2660)
|
||||
#define X2_ENABLE_INIT NOOP
|
||||
#define X2_ENABLE_WRITE(STATE) stepperX2.toff((STATE)==X_ENABLE_ON ? stepperX2.savedToff() : 0)
|
||||
#define X2_ENABLE_READ stepperX2.isEnabled()
|
||||
#else
|
||||
#define X2_ENABLE_INIT SET_OUTPUT(X2_ENABLE_PIN)
|
||||
#define X2_ENABLE_WRITE(STATE) WRITE(X2_ENABLE_PIN,STATE)
|
||||
@ -228,6 +244,10 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
|
||||
#define Y2_ENABLE_INIT NOOP
|
||||
#define Y2_ENABLE_WRITE(STATE) stepperY2.setEnabled(STATE)
|
||||
#define Y2_ENABLE_READ stepperY2.isEnabled()
|
||||
#elif AXIS_DRIVER_TYPE(Y2, TMC2660)
|
||||
#define Y2_ENABLE_INIT NOOP
|
||||
#define Y2_ENABLE_WRITE(STATE) stepperY2.toff((STATE)==Y_ENABLE_ON ? stepperY2.savedToff() : 0)
|
||||
#define Y2_ENABLE_READ stepperY2.isEnabled()
|
||||
#else
|
||||
#define Y2_ENABLE_INIT SET_OUTPUT(Y2_ENABLE_PIN)
|
||||
#define Y2_ENABLE_WRITE(STATE) WRITE(Y2_ENABLE_PIN,STATE)
|
||||
@ -261,6 +281,10 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
|
||||
#define Z2_ENABLE_INIT NOOP
|
||||
#define Z2_ENABLE_WRITE(STATE) stepperZ2.setEnabled(STATE)
|
||||
#define Z2_ENABLE_READ stepperZ2.isEnabled()
|
||||
#elif AXIS_DRIVER_TYPE(Z2, TMC2660)
|
||||
#define Z2_ENABLE_INIT NOOP
|
||||
#define Z2_ENABLE_WRITE(STATE) stepperZ2.toff((STATE)==Z_ENABLE_ON ? stepperZ2.savedToff() : 0)
|
||||
#define Z2_ENABLE_READ stepperZ2.isEnabled()
|
||||
#else
|
||||
#define Z2_ENABLE_INIT SET_OUTPUT(Z2_ENABLE_PIN)
|
||||
#define Z2_ENABLE_WRITE(STATE) WRITE(Z2_ENABLE_PIN,STATE)
|
||||
@ -294,6 +318,10 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
|
||||
#define Z3_ENABLE_INIT NOOP
|
||||
#define Z3_ENABLE_WRITE(STATE) stepperZ3.setEnabled(STATE)
|
||||
#define Z3_ENABLE_READ stepperZ3.isEnabled()
|
||||
#elif AXIS_DRIVER_TYPE(Z3, TMC2660)
|
||||
#define Z3_ENABLE_INIT NOOP
|
||||
#define Z3_ENABLE_WRITE(STATE) stepperZ3.toff((STATE)==Z_ENABLE_ON ? stepperZ3.savedToff() : 0)
|
||||
#define Z3_ENABLE_READ stepperZ3.isEnabled()
|
||||
#else
|
||||
#define Z3_ENABLE_INIT SET_OUTPUT(Z3_ENABLE_PIN)
|
||||
#define Z3_ENABLE_WRITE(STATE) WRITE(Z3_ENABLE_PIN,STATE)
|
||||
@ -326,6 +354,10 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
|
||||
#define E0_ENABLE_INIT NOOP
|
||||
#define E0_ENABLE_WRITE(STATE) stepperE0.setEnabled(STATE)
|
||||
#define E0_ENABLE_READ stepperE0.isEnabled()
|
||||
#elif AXIS_DRIVER_TYPE(E0, TMC2660)
|
||||
#define E0_ENABLE_INIT NOOP
|
||||
#define E0_ENABLE_WRITE(STATE) stepperE0.toff((STATE)==E_ENABLE_ON ? stepperE0.savedToff() : 0)
|
||||
#define E0_ENABLE_READ stepperE0.isEnabled()
|
||||
#else
|
||||
#define E0_ENABLE_INIT SET_OUTPUT(E0_ENABLE_PIN)
|
||||
#define E0_ENABLE_WRITE(STATE) WRITE(E0_ENABLE_PIN,STATE)
|
||||
@ -357,6 +389,10 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
|
||||
#define E1_ENABLE_INIT NOOP
|
||||
#define E1_ENABLE_WRITE(STATE) stepperE1.setEnabled(STATE)
|
||||
#define E1_ENABLE_READ stepperE1.isEnabled()
|
||||
#elif AXIS_DRIVER_TYPE(E1, TMC2660)
|
||||
#define E1_ENABLE_INIT NOOP
|
||||
#define E1_ENABLE_WRITE(STATE) stepperE1.toff((STATE)==E_ENABLE_ON ? stepperE1.savedToff() : 0)
|
||||
#define E1_ENABLE_READ stepperE1.isEnabled()
|
||||
#else
|
||||
#define E1_ENABLE_INIT SET_OUTPUT(E1_ENABLE_PIN)
|
||||
#define E1_ENABLE_WRITE(STATE) WRITE(E1_ENABLE_PIN,STATE)
|
||||
@ -388,6 +424,10 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
|
||||
#define E2_ENABLE_INIT NOOP
|
||||
#define E2_ENABLE_WRITE(STATE) stepperE2.setEnabled(STATE)
|
||||
#define E2_ENABLE_READ stepperE2.isEnabled()
|
||||
#elif AXIS_DRIVER_TYPE(E2, TMC2660)
|
||||
#define E2_ENABLE_INIT NOOP
|
||||
#define E2_ENABLE_WRITE(STATE) stepperE2.toff((STATE)==E_ENABLE_ON ? stepperE2.savedToff() : 0)
|
||||
#define E2_ENABLE_READ stepperE2.isEnabled()
|
||||
#else
|
||||
#define E2_ENABLE_INIT SET_OUTPUT(E2_ENABLE_PIN)
|
||||
#define E2_ENABLE_WRITE(STATE) WRITE(E2_ENABLE_PIN,STATE)
|
||||
@ -419,6 +459,10 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
|
||||
#define E3_ENABLE_INIT NOOP
|
||||
#define E3_ENABLE_WRITE(STATE) stepperE3.setEnabled(STATE)
|
||||
#define E3_ENABLE_READ stepperE3.isEnabled()
|
||||
#elif AXIS_DRIVER_TYPE(E3, TMC2660)
|
||||
#define E3_ENABLE_INIT NOOP
|
||||
#define E3_ENABLE_WRITE(STATE) stepperE3.toff((STATE)==E_ENABLE_ON ? stepperE3.savedToff() : 0)
|
||||
#define E3_ENABLE_READ stepperE3.isEnabled()
|
||||
#else
|
||||
#define E3_ENABLE_INIT SET_OUTPUT(E3_ENABLE_PIN)
|
||||
#define E3_ENABLE_WRITE(STATE) WRITE(E3_ENABLE_PIN,STATE)
|
||||
@ -450,6 +494,10 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
|
||||
#define E4_ENABLE_INIT NOOP
|
||||
#define E4_ENABLE_WRITE(STATE) stepperE4.setEnabled(STATE)
|
||||
#define E4_ENABLE_READ stepperE4.isEnabled()
|
||||
#elif AXIS_DRIVER_TYPE(E4, TMC2660)
|
||||
#define E4_ENABLE_INIT NOOP
|
||||
#define E4_ENABLE_WRITE(STATE) stepperE4.toff((STATE)==E_ENABLE_ON ? stepperE4.savedToff() : 0)
|
||||
#define E4_ENABLE_READ stepperE4.isEnabled()
|
||||
#else
|
||||
#define E4_ENABLE_INIT SET_OUTPUT(E4_ENABLE_PIN)
|
||||
#define E4_ENABLE_WRITE(STATE) WRITE(E4_ENABLE_PIN,STATE)
|
||||
@ -481,6 +529,10 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
|
||||
#define E5_ENABLE_INIT NOOP
|
||||
#define E5_ENABLE_WRITE(STATE) stepperE5.setEnabled(STATE)
|
||||
#define E5_ENABLE_READ stepperE5.isEnabled()
|
||||
#elif AXIS_DRIVER_TYPE(E5, TMC2660)
|
||||
#define E5_ENABLE_INIT NOOP
|
||||
#define E5_ENABLE_WRITE(STATE) stepperE5.toff((STATE)==E_ENABLE_ON ? stepperE5.savedToff() : 0)
|
||||
#define E5_ENABLE_READ stepperE5.isEnabled()
|
||||
#else
|
||||
#define E5_ENABLE_INIT SET_OUTPUT(E5_ENABLE_PIN)
|
||||
#define E5_ENABLE_WRITE(STATE) WRITE(E5_ENABLE_PIN,STATE)
|
||||
|
Reference in New Issue
Block a user