Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add support tmc2209 #14215

Closed
wants to merge 51 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
a9a7dcf
fix Serial and ADC pins
Mar 8, 2019
fb24430
Merge pull request #2 from MarlinFirmware/bugfix-2.0.x
Msq001 Mar 11, 2019
2fb50ec
Merge pull request #5 from MarlinFirmware/bugfix-2.0.x
Msq001 Mar 27, 2019
bc59bc2
fix relative mode bug resume after power loss
Msq001 Mar 27, 2019
d5eef75
fix relative mode resume after power less
Msq001 Mar 27, 2019
2d8fa15
Update power_loss_recovery.cpp
Msq001 Mar 27, 2019
340ef55
Update power_loss_recovery.h
thinkyhead Mar 29, 2019
a7d2b03
Update power_loss_recovery.cpp
thinkyhead Mar 29, 2019
7cca8ea
Update power_loss_recovery.cpp
thinkyhead Mar 29, 2019
d251620
Merge pull request #6 from MarlinFirmware/bugfix-2.0.x
Msq001 Apr 15, 2019
d6ca134
Update power_loss_recovery.cpp
Msq001 Apr 15, 2019
3ef849f
Update power_loss_recovery.h
Msq001 Apr 15, 2019
b711710
Update power_loss_recovery.h
Msq001 Apr 15, 2019
2d1e213
Update power_loss_recovery.cpp
Msq001 Apr 15, 2019
66ea85f
Update power_loss_recovery.cpp
Msq001 Apr 15, 2019
5bc6aea
Update cardreader.cpp
Msq001 Apr 15, 2019
199209b
Update M23.cpp
Msq001 Apr 15, 2019
355ca33
Extend G92 with G92.9 for PLR
thinkyhead Apr 15, 2019
efd5448
Save and restore position_shift in PLR
thinkyhead Apr 15, 2019
eac83da
Remove the extra (unsafe) home and Z raise
thinkyhead Apr 15, 2019
f52dcf0
Drop extra purge on resume
thinkyhead Apr 15, 2019
052f5b6
Call it "purge" over "extrude"
thinkyhead Apr 15, 2019
aa3a236
Add conditions for purge/retract
thinkyhead Apr 15, 2019
4403f84
Delete power_loss_recovery.cpp
Msq001 Apr 17, 2019
9bafe18
Delete G92.cpp
Msq001 Apr 17, 2019
7592259
Merge branch 'pr/9' into bugfix-2.0.x
Apr 17, 2019
6b29b7f
Merge pull request #11 from MarlinFirmware/bugfix-2.0.x
Msq001 Apr 19, 2019
cb7e993
Merge pull request #15 from MarlinFirmware/bugfix-2.0.x
Msq001 May 24, 2019
a09fa53
Merge pull request #16 from MarlinFirmware/bugfix-2.0.x
Msq001 May 30, 2019
1518979
tmc2209
May 30, 2019
c568261
test
May 30, 2019
c44b987
commit
May 30, 2019
980e826
commit
May 30, 2019
a4d8ede
commit
May 30, 2019
d9b64ca
Merge pull request #18 from MarlinFirmware/bugfix-2.0.x
Msq001 May 31, 2019
6024d3c
add tmc2209 slave address
Jun 1, 2019
6e08f8d
Merge pull request #24 from MarlinFirmware/bugfix-2.0.x
Msq001 Jun 1, 2019
47fa170
before sync
Jun 3, 2019
7b8f306
Merge pull request #29 from Msq001/bugfix-2.0.x
Msq001 Jun 3, 2019
787a780
before sync
Jun 3, 2019
336840e
add tmc2209 after sync
Jun 3, 2019
f48c1ad
Merge branch 'marlin-2.0-for-tmc2209' of Msq001.github.com:Msq001/Mar…
Jun 3, 2019
47526e6
temp save
Jun 3, 2019
dc609ad
update
Jun 3, 2019
2c5ec47
update
Jun 3, 2019
75cb7e5
update
Jun 3, 2019
f31685c
slave sddress
Jun 3, 2019
7a5b53c
sgt int8 to int16
Jun 3, 2019
0a27168
Update Configuration.h
bigtreetech Jun 4, 2019
bc73f31
Update Configuration_adv.h
bigtreetech Jun 4, 2019
df92056
Update Marlin.cpp
bigtreetech Jun 4, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 2 additions & 2 deletions Marlin/Configuration.h
Expand Up @@ -639,8 +639,8 @@
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
* TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE,
* TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
* TMC5160, TMC5160_STANDALONE
* :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
* TMC5160, TMC5160_STANDALONE, TMC2209, TMC2209_STANDALONE
* :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE', TMC2209, TMC2209_STANDALONE]
*/
//#define X_DRIVER_TYPE A4988
//#define Y_DRIVER_TYPE A4988
Expand Down
20 changes: 19 additions & 1 deletion Marlin/Configuration_adv.h
Expand Up @@ -1753,13 +1753,31 @@
* to move the Z axis. Take extreme care when attempting to enable this feature.
*/
//#define SENSORLESS_PROBING // TMC2130 only

//tmc2209 SENSITIVITY can be set in 0~255
//else tmc SENSITIVITY can be set in -64~63
#if EITHER(SENSORLESS_HOMING, SENSORLESS_PROBING)
#define X_STALL_SENSITIVITY 8
#define Y_STALL_SENSITIVITY 8
//#define Z_STALL_SENSITIVITY 8
#endif

//tmc2209 slave address can be set in 0x00~0x03
#if HAS_DRIVER(TMC2209)
#define X_SLAVE_ADDRESS 0x00
#define Y_SLAVE_ADDRESS 0x00
#define Z_SLAVE_ADDRESS 0x00
//#define X2_SLAVE_ADDRESS 0x00
//#define Y2_SLAVE_ADDRESS 0x00
//#define Z2_SLAVE_ADDRESS 0x00
//#define Z3_SLAVE_ADDRESS 0x00
#define E0_SLAVE_ADDRESS 0x00
//#define E1_SLAVE_ADDRESS 0x00
//#define E2_SLAVE_ADDRESS 0x00
//#define E3_SLAVE_ADDRESS 0x00
//#define E4_SLAVE_ADDRESS 0x00
//#define E5_SLAVE_ADDRESS 0x00
#endif

/**
* Enable M122 debugging command for TMC stepper drivers.
* M122 S0/1 will enable continous reporting.
Expand Down
2 changes: 1 addition & 1 deletion Marlin/Makefile
Expand Up @@ -587,7 +587,7 @@ ifeq ($(U8GLIB), 1)
endif

ifeq ($(TMC), 1)
LIB_CXXSRC += TMCStepper.cpp COOLCONF.cpp DRV_STATUS.cpp IHOLD_IRUN.cpp CHOPCONF.cpp GCONF.cpp PWMCONF.cpp DRV_CONF.cpp DRVCONF.cpp DRVCTRL.cpp DRVSTATUS.cpp ENCMODE.cpp RAMP_STAT.cpp SGCSCONF.cpp SHORT_CONF.cpp SMARTEN.cpp SW_MODE.cpp SW_SPI.cpp TMC2130Stepper.cpp TMC2208Stepper.cpp TMC2660Stepper.cpp TMC5130Stepper.cpp TMC5160Stepper.cpp
LIB_CXXSRC += TMCStepper.cpp COOLCONF.cpp DRV_STATUS.cpp IHOLD_IRUN.cpp CHOPCONF.cpp GCONF.cpp PWMCONF.cpp DRV_CONF.cpp DRVCONF.cpp DRVCTRL.cpp DRVSTATUS.cpp ENCMODE.cpp RAMP_STAT.cpp SGCSCONF.cpp SHORT_CONF.cpp SMARTEN.cpp SW_MODE.cpp SW_SPI.cpp TMC2130Stepper.cpp TMC2208Stepper.cpp TMC2209Stepper.cpp TMC2660Stepper.cpp TMC5130Stepper.cpp TMC5160Stepper.cpp
endif

ifeq ($(RELOC_WORKAROUND), 1)
Expand Down
4 changes: 2 additions & 2 deletions Marlin/src/Marlin.cpp
Expand Up @@ -904,8 +904,8 @@ void setup() {
#endif
tmc_init_cs_pins();
#endif
#if HAS_DRIVER(TMC2208)
tmc2208_serial_begin();
#if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
tmc220x_serial_begin();
#endif

#ifdef BOARD_INIT
Expand Down
14 changes: 10 additions & 4 deletions Marlin/src/core/drivers.h
Expand Up @@ -45,6 +45,8 @@
#define _TMC5130_STANDALONE 5131
#define _TMC5160 5160
#define _TMC5160_STANDALONE 5161
#define _TMC2209 2209
#define _TMC2209_STANDALONE 0x00D

#define _ACTUAL(V) _CAT(_, V)
#define _AXIS_DRIVER_TYPE(A,T) (defined(A##_DRIVER_TYPE) && _ACTUAL(A##_DRIVER_TYPE) == _CAT(_, T))
Expand Down Expand Up @@ -79,14 +81,16 @@
|| HAS_DRIVER(TMC2208) \
|| HAS_DRIVER(TMC2660) \
|| HAS_DRIVER(TMC5130) \
|| HAS_DRIVER(TMC5160) )
|| HAS_DRIVER(TMC5160) \
|| HAS_DRIVER(TMC2209) )

#define AXIS_IS_TMC(A) ( AXIS_DRIVER_TYPE(A,TMC2130) \
|| AXIS_DRIVER_TYPE(A,TMC2160) \
|| AXIS_DRIVER_TYPE(A,TMC2208) \
|| AXIS_DRIVER_TYPE(A,TMC2660) \
|| AXIS_DRIVER_TYPE(A,TMC5130) \
|| AXIS_DRIVER_TYPE(A,TMC5160) )
|| AXIS_DRIVER_TYPE(A,TMC5160) \
|| AXIS_DRIVER_TYPE(A,TMC2209) )

// Test for a driver that uses SPI - this allows checking whether a _CS_ pin
// is considered sensitive
Expand All @@ -100,10 +104,12 @@
|| AXIS_DRIVER_TYPE(A,TMC2160) \
|| AXIS_DRIVER_TYPE(A,TMC2660) \
|| AXIS_DRIVER_TYPE(A,TMC5130) \
|| AXIS_DRIVER_TYPE(A,TMC5160) )
|| AXIS_DRIVER_TYPE(A,TMC5160) \
|| AXIS_DRIVER_TYPE(A,TMC2209) )

#define AXIS_HAS_STEALTHCHOP(A) ( AXIS_DRIVER_TYPE(A,TMC2130) \
|| AXIS_DRIVER_TYPE(A,TMC2160) \
|| AXIS_DRIVER_TYPE(A,TMC2208) \
|| AXIS_DRIVER_TYPE(A,TMC5130) \
|| AXIS_DRIVER_TYPE(A,TMC5160) )
|| AXIS_DRIVER_TYPE(A,TMC5160) \
|| AXIS_DRIVER_TYPE(A,TMC2209) )
81 changes: 77 additions & 4 deletions Marlin/src/feature/tmc_util.cpp
Expand Up @@ -69,7 +69,7 @@
#endif
;
#if ENABLED(TMC_DEBUG)
#if HAS_TMCX1X0 || HAS_DRIVER(TMC2208)
#if HAS_TMCX1X0 || HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
uint8_t cs_actual;
#endif
#if HAS_STALLGUARD
Expand Down Expand Up @@ -176,6 +176,45 @@

#endif // TMC2208

#if HAS_DRIVER(TMC2209)

#if ENABLED(TMC_DEBUG)
static uint32_t get_pwm_scale(TMC2209Stepper &st) { return st.pwm_scale_sum(); }
#endif

static TMC_driver_data get_driver_data(TMC2209Stepper &st) {
constexpr uint8_t OTPW_bp = 0, OT_bp = 1;
constexpr uint8_t S2G_bm = 0b11110; // 2..5
TMC_driver_data data;
data.drv_status = st.DRV_STATUS();
data.is_otpw = !!(data.drv_status & _BV(OTPW_bp));
data.is_ot = !!(data.drv_status & _BV(OT_bp));
data.is_s2g = !!(data.drv_status & S2G_bm);
#if ENABLED(TMC_DEBUG)
constexpr uint32_t CS_ACTUAL_bm = 0x1F0000; // 16:20
constexpr uint8_t STEALTH_bp = 30, STST_bp = 31;
#ifdef __AVR__
// 8-bit optimization saves up to 12 bytes of PROGMEM per axis
uint8_t spart = data.drv_status >> 16;
data.cs_actual = spart & (CS_ACTUAL_bm >> 16);
spart = data.drv_status >> 24;
data.is_stealth = !!(spart & _BV(STEALTH_bp - 24));
data.is_standstill = !!(spart & _BV(STST_bp - 24));
#else
constexpr uint8_t CS_ACTUAL_sb = 16;
data.cs_actual = (data.drv_status & CS_ACTUAL_bm) >> CS_ACTUAL_sb;
data.is_stealth = !!(data.drv_status & _BV(STEALTH_bp));
data.is_standstill = !!(data.drv_status & _BV(STST_bp));
#endif
#if HAS_STALLGUARD
data.sg_result_reasonable = false;
#endif
#endif
return data;
}

#endif // TMC2209

#if HAS_DRIVER(TMC2660)

#if ENABLED(TMC_DEBUG)
Expand Down Expand Up @@ -239,7 +278,7 @@
st.printLabel();
SERIAL_CHAR(':'); SERIAL_PRINT(pwm_scale, DEC);
#if ENABLED(TMC_DEBUG)
#if HAS_TMCX1X0 || HAS_DRIVER(TMC2208)
#if HAS_TMCX1X0 || HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
SERIAL_CHAR('/'); SERIAL_PRINT(data.cs_actual, DEC);
#endif
#if HAS_STALLGUARD
Expand Down Expand Up @@ -537,6 +576,29 @@
}
#endif

#if HAS_DRIVER(TMC2209)
static void _tmc_status(TMC2209Stepper &st, const TMC_debug_enum i) {
switch (i) {
case TMC_PWM_SCALE: SERIAL_PRINT(st.pwm_scale_sum(), DEC); break;
case TMC_STEALTHCHOP: serialprint_truefalse(st.stealth()); break;
case TMC_S2VSA: if (st.s2vsa()) SERIAL_CHAR('X'); break;
case TMC_S2VSB: if (st.s2vsb()) SERIAL_CHAR('X'); break;
case TMC_SGT: SERIAL_PRINT(st.sgt(), DEC); break;
default: break;
}
}
static void _tmc_parse_drv_status(TMC2209Stepper &st, const TMC_drv_status_enum i) {
switch (i) {
case TMC_T157: if (st.t157()) SERIAL_CHAR('X'); break;
case TMC_T150: if (st.t150()) SERIAL_CHAR('X'); break;
case TMC_T143: if (st.t143()) SERIAL_CHAR('X'); break;
case TMC_T120: if (st.t120()) SERIAL_CHAR('X'); break;
case TMC_DRV_CS_ACTUAL: SERIAL_PRINT(st.cs_actual(), DEC); break;
default: break;
}
}
#endif

#if HAS_DRIVER(TMC2660)
static void _tmc_parse_drv_status(TMC2660Stepper, const TMC_drv_status_enum) { }
#endif
Expand Down Expand Up @@ -770,7 +832,7 @@
#endif
TMC_REPORT("CS actual\t", TMC_CS_ACTUAL);
TMC_REPORT("PWM scale", TMC_PWM_SCALE);
#if HAS_DRIVER(TMC2130) || HAS_DRIVER(TMC2224) || HAS_DRIVER(TMC2660) || HAS_DRIVER(TMC2208)
#if HAS_DRIVER(TMC2130) || HAS_DRIVER(TMC2224) || HAS_DRIVER(TMC2660) || HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
TMC_REPORT("vsense\t", TMC_VSENSE);
#endif
TMC_REPORT("stealthChop", TMC_STEALTHCHOP);
Expand Down Expand Up @@ -802,7 +864,7 @@
DRV_REPORT("s2ga\t", TMC_S2GA);
DRV_REPORT("otpw\t", TMC_DRV_OTPW);
DRV_REPORT("ot\t", TMC_OT);
#if HAS_DRIVER(TMC2208)
#if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
DRV_REPORT("157C\t", TMC_T157);
DRV_REPORT("150C\t", TMC_T150);
DRV_REPORT("143C\t", TMC_T143);
Expand All @@ -829,6 +891,9 @@
#if HAS_DRIVER(TMC2208)
static void tmc_get_ic_registers(TMC2208Stepper, const TMC_get_registers_enum) { SERIAL_CHAR('\t'); }
#endif
#if HAS_DRIVER(TMC2209)
static void tmc_get_ic_registers(TMC2209Stepper, const TMC_get_registers_enum) { SERIAL_CHAR('\t'); }
#endif

#if HAS_TRINAMIC
template<class TMC>
Expand Down Expand Up @@ -967,6 +1032,14 @@
}
void tmc_disable_stallguard(TMC2660Stepper, const bool) {};

//TCOOLTHRS ≥ TSTEP > TPWMTHRS Stall output signal on pin DIAG is enabled
bool tmc_enable_stallguard(TMC2209Stepper &st) {
st.TCOOLTHRS(0xFFFFF);
return true;
}
void tmc_disable_stallguard(TMC2209Stepper &st, const bool restore_stealth) {
st.TCOOLTHRS(0);
}
#endif // USE_SENSORLESS

#if TMC_HAS_SPI
Expand Down
52 changes: 51 additions & 1 deletion Marlin/src/feature/tmc_util.h
Expand Up @@ -92,7 +92,7 @@ class TMCStorage {
uint8_t hybrid_thrs = 0;
#endif
#if USE_SENSORLESS
int8_t homing_thrs = 0;
int16_t homing_thrs = 0;
#endif
} stored;
};
Expand Down Expand Up @@ -196,6 +196,53 @@ class TMCMarlin<TMC2208Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID> : public TMC220
#endif
};
template<char AXIS_LETTER, char DRIVER_ID, AxisEnum AXIS_ID>
class TMCMarlin<TMC2209Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID> : public TMC2209Stepper, public TMCStorage<AXIS_LETTER, DRIVER_ID> {
public:
TMCMarlin(Stream * SerialPort, float RS, uint8_t slave=0x00, bool has_rx=true) :
TMC2209Stepper(SerialPort, RS, slave, has_rx=true)
{}
TMCMarlin(uint16_t RX, uint16_t TX, float RS, uint8_t slave=0x00, bool has_rx=true) :
TMC2209Stepper(RX, TX, RS, slave, has_rx=true)
{}
uint16_t rms_current() { return TMC2209Stepper::rms_current(); }
inline void rms_current(uint16_t mA) {
this->val_mA = mA;
TMC2209Stepper::rms_current(mA);
}
inline void rms_current(uint16_t mA, float mult) {
this->val_mA = mA;
TMC2209Stepper::rms_current(mA, mult);
}

#if HAS_STEALTHCHOP
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]);
}
void set_pwm_thrs(const uint32_t thrs) {
TMC2209Stepper::TPWMTHRS(_tmc_thrs(this->microsteps(), thrs, planner.settings.axis_steps_per_mm[AXIS_ID]));
#if HAS_LCD_MENU
this->stored.hybrid_thrs = thrs;
#endif
}
#endif

#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

#if USE_SENSORLESS
inline void refresh_homing_thrs() { this->sgt(this->stored.homing_thrs); }
#endif
#endif
};
template<char AXIS_LETTER, char DRIVER_ID, AxisEnum AXIS_ID>
class TMCMarlin<TMC2660Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID> : public TMC2660Stepper, public TMCStorage<AXIS_LETTER, DRIVER_ID> {
public:
TMCMarlin(uint16_t cs_pin, float RS) :
Expand Down Expand Up @@ -295,6 +342,9 @@ void test_tmc_connection(const bool test_x, const bool test_y, const bool test_z

bool tmc_enable_stallguard(TMC2660Stepper);
void tmc_disable_stallguard(TMC2660Stepper, const bool);

bool tmc_enable_stallguard(TMC2209Stepper &st);
void tmc_disable_stallguard(TMC2209Stepper &st, const bool restore_stealth);
#endif

#if TMC_HAS_SPI
Expand Down
4 changes: 2 additions & 2 deletions Marlin/src/gcode/feature/trinamic/M911-M914.cpp
Expand Up @@ -32,7 +32,7 @@

#if ENABLED(MONITOR_DRIVER_STATUS)

#define M91x_USE(ST) (AXIS_DRIVER_TYPE(ST, TMC2130) || AXIS_DRIVER_TYPE(ST, TMC2160) || AXIS_DRIVER_TYPE(ST, TMC2208) || AXIS_DRIVER_TYPE(ST, TMC2660) || AXIS_DRIVER_TYPE(ST, TMC5130) || AXIS_DRIVER_TYPE(ST, TMC5160))
#define M91x_USE(ST) (AXIS_DRIVER_TYPE(ST, TMC2130) || AXIS_DRIVER_TYPE(ST, TMC2160) || AXIS_DRIVER_TYPE(ST, TMC2208) || AXIS_DRIVER_TYPE(ST, TMC2209) || AXIS_DRIVER_TYPE(ST, TMC2660) || AXIS_DRIVER_TYPE(ST, TMC5130) || AXIS_DRIVER_TYPE(ST, TMC5160))
#define M91x_USE_E(N) (E_STEPPERS > N && M91x_USE(E##N))

#define M91x_SOME_X (M91x_USE(X) || M91x_USE(X2))
Expand All @@ -41,7 +41,7 @@
#define M91x_SOME_E (M91x_USE_E(0) || M91x_USE_E(1) || M91x_USE_E(2) || M91x_USE_E(3) || M91x_USE_E(4) || M91x_USE_E(5))

#if !M91x_SOME_X && !M91x_SOME_Y && !M91x_SOME_Z && !M91x_SOME_E
#error "MONITOR_DRIVER_STATUS requires at least one TMC2130, TMC2208, or TMC2660."
#error "MONITOR_DRIVER_STATUS requires at least one TMC2130, TMC2208, TMC2209, or TMC2660."
#endif

/**
Expand Down
8 changes: 4 additions & 4 deletions Marlin/src/gcode/gcode.h
Expand Up @@ -136,7 +136,7 @@
* M119 - Report endstops status.
* M120 - Enable endstops detection.
* M121 - Disable endstops detection.
* M122 - Debug stepper (Requires at least one _DRIVER_TYPE defined as TMC2130/TMC2208/TMC2660 or L6470)
* M122 - Debug stepper (Requires at least one _DRIVER_TYPE defined as TMC2130/TMC2208/TMC2209/TMC2660 or L6470)
* M125 - Save current position and move to filament change position. (Requires PARK_HEAD_ON_PAUSE)
* M126 - Solenoid Air Valve Open. (Requires BARICUDA)
* M127 - Solenoid Air Valve Closed. (Requires BARICUDA)
Expand Down Expand Up @@ -215,7 +215,7 @@
* M504 - Validate EEPROM contents. (Requires EEPROM_SETTINGS)
* M524 - Abort the current SD print job (started with M24)
* M540 - Enable/disable SD card abort on endstop hit: "M540 S<state>". (Requires ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED)
* M569 - Enable stealthChop on an axis. (Requires at least one _DRIVER_TYPE to be TMC2130 or TMC2208)
* M569 - Enable stealthChop on an axis. (Requires at least one _DRIVER_TYPE to be TMC2130, TMC2208 or TMC2209)
* M600 - Pause for filament change: "M600 X<pos> Y<pos> Z<raise> E<first_retract> L<later_retract>". (Requires ADVANCED_PAUSE_FEATURE)
* M603 - Configure filament change: "M603 T<tool> U<unload_length> L<load_length>". (Requires ADVANCED_PAUSE_FEATURE)
* M605 - Set Dual X-Carriage movement mode: "M605 S<mode> [X<x_offset>] [R<temp_offset>]". (Requires DUAL_X_CARRIAGE)
Expand Down Expand Up @@ -243,8 +243,8 @@
* M908 - Control digital trimpot directly. (Requires DAC_STEPPER_CURRENT or DIGIPOTSS_PIN)
* M909 - Print digipot/DAC current value. (Requires DAC_STEPPER_CURRENT)
* M910 - Commit digipot/DAC value to external EEPROM via I2C. (Requires DAC_STEPPER_CURRENT)
* M911 - Report stepper driver overtemperature pre-warn condition. (Requires at least one _DRIVER_TYPE defined as TMC2130/TMC2208/TMC2660)
* M912 - Clear stepper driver overtemperature pre-warn condition flag. (Requires at least one _DRIVER_TYPE defined as TMC2130/TMC2208/TMC2660)
* M911 - Report stepper driver overtemperature pre-warn condition. (Requires at least one _DRIVER_TYPE defined as TMC2130/TMC2208/TMC2209/TMC2660)
* M912 - Clear stepper driver overtemperature pre-warn condition flag. (Requires at least one _DRIVER_TYPE defined as TMC2130/TMC2208/TMC2209/TMC2660)
* M913 - Set HYBRID_THRESHOLD speed. (Requires HYBRID_THRESHOLD)
* M914 - Set StallGuard sensitivity. (Requires SENSORLESS_HOMING or SENSORLESS_PROBING)
* M916 - L6470 tuning: Increase KVAL_HOLD until thermal warning. (Requires at least one _DRIVER_TYPE L6470)
Expand Down
6 changes: 3 additions & 3 deletions Marlin/src/inc/Conditionals_post.h
Expand Up @@ -493,7 +493,7 @@
* Preserve this ordering when adding new drivers.
*/

#define TRINAMICS (HAS_TRINAMIC || HAS_DRIVER(TMC2130_STANDALONE) || HAS_DRIVER(TMC2208_STANDALONE) || HAS_DRIVER(TMC26X_STANDALONE) || HAS_DRIVER(TMC2660_STANDALONE) || HAS_DRIVER(TMC5130_STANDALONE) || HAS_DRIVER(TMC5160_STANDALONE) || HAS_DRIVER(TMC2160_STANDALONE))
#define TRINAMICS (HAS_TRINAMIC || HAS_DRIVER(TMC2130_STANDALONE) || HAS_DRIVER(TMC2208_STANDALONE) || HAS_DRIVER(TMC26X_STANDALONE) || HAS_DRIVER(TMC2660_STANDALONE) || HAS_DRIVER(TMC5130_STANDALONE) || HAS_DRIVER(TMC5160_STANDALONE) || HAS_DRIVER(TMC2160_STANDALONE) || HAS_DRIVER(TMC2209_STANDALONE))

#ifndef MINIMUM_STEPPER_DIR_DELAY
#if HAS_DRIVER(TB6560)
Expand Down Expand Up @@ -905,8 +905,8 @@
#if HAS_TRINAMIC
#define HAS_TMCX1X0 (HAS_DRIVER(TMC2130) || HAS_DRIVER(TMC2160) || HAS_DRIVER(TMC5130) || HAS_DRIVER(TMC5160))
#define TMC_HAS_SPI (HAS_TMCX1X0 || HAS_DRIVER(TMC2660))
#define HAS_STALLGUARD (HAS_TMCX1X0 || HAS_DRIVER(TMC2660))
#define HAS_STEALTHCHOP (HAS_TMCX1X0 || HAS_DRIVER(TMC2208))
#define HAS_STALLGUARD (HAS_TMCX1X0 || HAS_DRIVER(TMC2660) || HAS_DRIVER(TMC2209))
#define HAS_STEALTHCHOP (HAS_TMCX1X0 || HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209))

#define STEALTHCHOP_ENABLED ANY(STEALTHCHOP_XY, STEALTHCHOP_Z, STEALTHCHOP_E)
#define USE_SENSORLESS EITHER(SENSORLESS_HOMING, SENSORLESS_PROBING)
Expand Down