diff --git a/Grbl_Esp32/src/Motors/TrinamicBase.cpp b/Grbl_Esp32/src/Motors/TrinamicBase.cpp index 7c71f5c2..f15fd876 100644 --- a/Grbl_Esp32/src/Motors/TrinamicBase.cpp +++ b/Grbl_Esp32/src/Motors/TrinamicBase.cpp @@ -16,12 +16,16 @@ along with Grbl. If not, see . */ - #include "TrinamicBase.h" #include "../Machine/MachineConfig.h" #include namespace Motors { + EnumItem trinamicModes[] = { { TrinamicMode::StealthChop, "StealthChop" }, + { TrinamicMode::CoolStep, "CoolStep" }, + { TrinamicMode::StallGuard, "StallGuard" }, + EnumItem(TrinamicMode::StealthChop) }; + TrinamicBase* TrinamicBase::List = NULL; // a static list of all drivers for stallguard reporting uint8_t TrinamicBase::get_next_index() { @@ -57,17 +61,52 @@ namespace Motors { #endif } } - + // calculate a tstep from a rate - // tstep = TRINAMIC_FCLK / (time between 1/256 steps) + // tstep = fclk / (time between 1/256 steps) // This is used to set the stallguard window from the homing speed. // The percent is the offset on the window uint32_t TrinamicBase::calc_tstep(float speed, float percent) { double tstep = speed / 60.0 * config->_axes->_axis[axis_index()]->_stepsPerMm * (256.0 / _microsteps); - tstep = TRINAMIC_FCLK / tstep * percent / 100.0; + tstep = fclk / tstep * percent / 100.0; return static_cast(tstep); } + // =========== Reporting functions ======================== + bool TrinamicBase::report_open_load(bool ola, bool olb) { + if (ola || olb) { + info_serial("%s Driver Open Load a:%s b:%s", reportAxisNameMsg(axis_index(), dual_axis_index()), ola ? "Y" : "N", olb ? "Y" : "N"); + return true; + } + return false; // no error + } + + bool TrinamicBase::report_short_to_ground(bool s2ga, bool s2gb) { + if (s2ga || s2gb) { + info_serial( + "%s Driver Short Coil a:%s b:%s", reportAxisNameMsg(axis_index(), dual_axis_index()), s2ga ? "Y" : "N", s2gb ? "Y" : "N"); + return true; + } + return false; // no error + } + + bool TrinamicBase::report_over_temp(bool ot, bool otpw) { + if (ot || otpw) { + info_serial( + "%s Driver Temp Warning:%s Fault:%s", reportAxisNameMsg(axis_index(), dual_axis_index()), otpw ? "Y" : "N", ot ? "Y" : "N"); + return true; + } + return false; // no error + } + + bool TrinamicBase::report_short_to_ps(bool vsa, bool vsb) { + // check for short to power supply + if (vsa || vsb) { + info_serial("%s Driver Short vsa:%s vsb:%s", reportAxisNameMsg(axis_index(), dual_axis_index()), vsa ? "Y" : "N", vsb ? "Y" : "N"); + return true; + } + return false; // no error + } } diff --git a/Grbl_Esp32/src/Motors/TrinamicBase.h b/Grbl_Esp32/src/Motors/TrinamicBase.h index 6fb0e440..040ccf19 100644 --- a/Grbl_Esp32/src/Motors/TrinamicBase.h +++ b/Grbl_Esp32/src/Motors/TrinamicBase.h @@ -21,32 +21,30 @@ #include #include "StandardStepper.h" -#ifndef TRINAMIC_RUN_MODE -# define TRINAMIC_RUN_MODE TrinamicMode ::StealthChop -#endif - -#ifndef TRINAMIC_HOMING_MODE -# define TRINAMIC_HOMING_MODE TRINAMIC_RUN_MODE -#endif - namespace Motors { - enum class TrinamicMode : uint8_t { - None = 0, // not for machine defs! - StealthChop = 1, - CoolStep = 2, - StallGuard = 3, + enum TrinamicMode { + StealthChop = 1, // very quiet + CoolStep = 2, // cooler so higher current possible + StallGuard = 3, // coolstep plus stall indication }; + extern EnumItem trinamicModes[]; + class TrinamicBase : public StandardStepper { protected: uint32_t calc_tstep(float speed, float percent); - uint16_t _driver_part_number; // example: use 2130 for TMC2130 - TrinamicMode _homing_mode; - float _r_sense; bool _has_errors; - bool _disabled; + uint16_t _driver_part_number; // example: use 2130 for TMC2130 + bool _disabled = false; + TrinamicMode _mode = StealthChop; + + // Configurable + int _homing_mode = StealthChop; + int _run_mode = StealthChop; + float _r_sense = 0.11; + bool _use_enable = false; float _run_current = 0.25; float _hold_current = 0.25; @@ -54,7 +52,9 @@ namespace Motors { int _stallguard = 0; bool _stallguardDebugMode = false; - TrinamicMode _mode = TrinamicMode::None; + uint8_t _toff_disable = 0; + uint8_t _toff_stealthchop = 5; + uint8_t _toff_coolstep = 3; uint8_t get_next_index(); @@ -64,10 +64,15 @@ namespace Motors { TrinamicBase* link; static void readSgTask(void*); - const double TRINAMIC_FCLK = 12700000.0; // Internal clock Approx (Hz) used to calculate TSTEP from homing rate + const double fclk = 12700000.0; // Internal clock Approx (Hz) used to calculate TSTEP from homing rate + + bool report_open_load(bool ola, bool olb); + bool report_short_to_ground(bool s2ga, bool s2gb); + bool report_over_temp(bool ot, bool otpw); + bool report_short_to_ps(bool vsa, bool vsb); public: - TrinamicBase(uint16_t partNumber) : StandardStepper(), _driver_part_number(partNumber), _homing_mode(TRINAMIC_HOMING_MODE) {} + TrinamicBase(uint16_t partNumber) : StandardStepper(), _driver_part_number(partNumber) {} void group(Configuration::HandlerBase& handler) override { handler.item("r_sense", _r_sense); @@ -76,6 +81,12 @@ namespace Motors { handler.item("microsteps", _microsteps); handler.item("stallguard", _stallguard); handler.item("stallguardDebugMode", _stallguardDebugMode); + handler.item("toff_disable", _toff_disable); + handler.item("toff_stealthchop", _toff_stealthchop); + handler.item("toff_coolstep", _toff_coolstep); + handler.item("run_mode", _run_mode, trinamicModes); + handler.item("homing_mode", _homing_mode, trinamicModes); + handler.item("use_enable", _use_enable); StandardStepper::group(handler); } diff --git a/Grbl_Esp32/src/Motors/TrinamicDriver.cpp b/Grbl_Esp32/src/Motors/TrinamicDriver.cpp index a08c3767..abc532fb 100644 --- a/Grbl_Esp32/src/Motors/TrinamicDriver.cpp +++ b/Grbl_Esp32/src/Motors/TrinamicDriver.cpp @@ -62,8 +62,7 @@ void TMC2130Stepper::switchCSpin(bool state) { namespace Motors { TrinamicDriver::TrinamicDriver(uint16_t driver_part_number, int8_t spi_index) : - TrinamicBase(driver_part_number), - _spi_index(spi_index) {} + TrinamicBase(driver_part_number), _spi_index(spi_index) {} void TrinamicDriver::init() { _has_errors = false; @@ -84,7 +83,7 @@ namespace Motors { // use slower speed if I2S if (_cs_pin.capabilities().has(Pin::Capabilities::I2S)) { - tmcstepper->setSPISpeed(TRINAMIC_SPI_FREQ); + tmcstepper->setSPISpeed(_spi_freq); } link = List; @@ -174,18 +173,20 @@ namespace Motors { bool err = false; // look for errors - if (report_short_to_ground(status)) { + if (report_short_to_ground(status.s2ga, status.s2gb)) { err = true; } - if (report_over_temp(status)) { + if (report_over_temp(status.ot, status.otpw)) { err = true; } - if (report_short_to_ps(status)) { + if (report_short_to_ps(bit_istrue(status.sr, 12), bit_istrue(status.sr, 13))) { err = true; } + // XXX why not report_open_load(status.ola, status.olb) ? + if (err) { return false; } @@ -196,12 +197,11 @@ namespace Motors { } /* -o Read setting and send them to the driver. Called at init() and whenever related settings change + Read setting and send them to the driver. Called at init() and whenever related settings change both are stored as float Amps, but TMCStepper library expects... uint16_t run (mA) float hold (as a percentage of run) -*/ - + */ void TrinamicDriver::read_settings() { if (_has_errors) { return; @@ -214,8 +214,9 @@ o Read setting and send them to the driver. Called at init() and whenever rel hold_i_percent = 0; } else { hold_i_percent = _hold_current / _run_current; - if (hold_i_percent > 1.0) + if (hold_i_percent > 1.0) { hold_i_percent = 1.0; + } } tmcstepper->microsteps(_microsteps); @@ -231,7 +232,7 @@ o Read setting and send them to the driver. Called at init() and whenever rel /* There are ton of settings. I'll start by grouping then into modes for now. - Many people will want quiet and stallgaurd homing. Stallguard only run in + Many people will want quiet and stallguard homing. Stallguard only run in Coolstep mode, so it will need to switch to Coolstep when homing */ void TrinamicDriver::set_mode(bool isHoming) { @@ -239,7 +240,7 @@ o Read setting and send them to the driver. Called at init() and whenever rel return; } - TrinamicMode newMode = isHoming ? TRINAMIC_HOMING_MODE : TRINAMIC_RUN_MODE; + TrinamicMode newMode = static_cast(trinamicModes[isHoming ? _homing_mode : _run_mode].value); if (newMode == _mode) { return; @@ -274,8 +275,6 @@ o Read setting and send them to the driver. Called at init() and whenever rel tmcstepper->sgt(constrain(_stallguard, -64, 63)); break; } - default: - info_serial("TRINAMIC_MODE_UNDEFINED"); } } @@ -301,14 +300,16 @@ o Read setting and send them to the driver. Called at init() and whenever rel feedrate, constrain(_stallguard, -64, 63)); + // The bit locations differ somewhat between different chips. + // The layout is very different between 2130 and 2208 TMC2130_n ::DRV_STATUS_t status { 0 }; // a useful struct to access the bits. status.sr = tmcstepper->DRV_STATUS(); // these only report if there is a fault condition - report_open_load(status); - report_short_to_ground(status); - report_over_temp(status); - report_short_to_ps(status); + report_open_load(status.ola, status.olb); + report_short_to_ground(status.s2ga, status.s2gb); + report_over_temp(status.ot, status.otpw); + report_short_to_ps(bit_istrue(status.sr, 12), bit_istrue(status.sr, 13)); // info_serial("%s Status Register %08x GSTAT %02x", // reportAxisNameMsg(axis_index(), dual_axis_index()), @@ -331,68 +332,21 @@ o Read setting and send them to the driver. Called at init() and whenever rel _disable_pin.write(_disabled); -#ifdef USE_TRINAMIC_ENABLE - if (_disabled) { - tmcstepper->toff(TRINAMIC_TOFF_DISABLE); - } else { - if (_mode == TrinamicMode::StealthChop) { - tmcstepper->toff(TRINAMIC_TOFF_STEALTHCHOP); + if (_use_enable) { + if (_disabled) { + tmcstepper->toff(_toff_disable); } else { - tmcstepper->toff(TRINAMIC_TOFF_COOLSTEP); + if (_mode == TrinamicMode::StealthChop) { + tmcstepper->toff(_toff_stealthchop); + } else { + tmcstepper->toff(_toff_coolstep); + } } } -#endif // the pin based enable could be added here. // This would be for individual motors, not the single pin for all motors. } - // =========== Reporting functions ======================== - - bool TrinamicDriver::report_open_load(TMC2130_n ::DRV_STATUS_t status) { - if (status.ola || status.olb) { - info_serial("%s Driver Open Load a:%s b:%s", - reportAxisNameMsg(axis_index(), dual_axis_index()), - status.ola ? "Y" : "N", - status.olb ? "Y" : "N"); - return true; - } - return false; // no error - } - - bool TrinamicDriver::report_short_to_ground(TMC2130_n ::DRV_STATUS_t status) { - if (status.s2ga || status.s2gb) { - info_serial("%s Driver Short Coil a:%s b:%s", - reportAxisNameMsg(axis_index(), dual_axis_index()), - status.s2ga ? "Y" : "N", - status.s2gb ? "Y" : "N"); - return true; - } - return false; // no error - } - - bool TrinamicDriver::report_over_temp(TMC2130_n ::DRV_STATUS_t status) { - if (status.ot || status.otpw) { - info_serial("%s Driver Temp Warning:%s Fault:%s", - reportAxisNameMsg(axis_index(), dual_axis_index()), - status.otpw ? "Y" : "N", - status.ot ? "Y" : "N"); - return true; - } - return false; // no error - } - - bool TrinamicDriver::report_short_to_ps(TMC2130_n ::DRV_STATUS_t status) { - // check for short to power supply - if ((status.sr & bit(12)) || (status.sr & bit(13))) { - info_serial("%s Driver Short vsa:%s vsb:%s", - reportAxisNameMsg(axis_index(), dual_axis_index()), - (status.sr & bit(12)) ? "Y" : "N", - (status.sr & bit(13)) ? "Y" : "N"); - return true; - } - return false; // no error - } - // Configuration registration namespace { MotorFactory::InstanceBuilder registration_2130("tmc_2130"); diff --git a/Grbl_Esp32/src/Motors/TrinamicDriver.h b/Grbl_Esp32/src/Motors/TrinamicDriver.h index cf51a135..b7a18c71 100644 --- a/Grbl_Esp32/src/Motors/TrinamicDriver.h +++ b/Grbl_Esp32/src/Motors/TrinamicDriver.h @@ -24,36 +24,18 @@ #include // https://github.com/teemuatlut/TMCStepper -//#define TRINAMIC_MODE_STEALTHCHOP 0 // very quiet -//#define TRINAMIC_MODE_COOLSTEP 1 // everything runs cooler so higher current possible -//#define TRINAMIC_MODE_STALLGUARD 2 // coolstep plus generates stall indication - const float TMC2130_RSENSE_DEFAULT = 0.11f; const float TMC5160_RSENSE_DEFAULT = 0.075f; const int NORMAL_TCOOLTHRS = 0xFFFFF; // 20 bit is max const int NORMAL_THIGH = 0; -const int TRINAMIC_SPI_FREQ = 100000; - -// ==== defaults OK to define them in your machine definition ==== - -#ifndef TRINAMIC_TOFF_DISABLE -# define TRINAMIC_TOFF_DISABLE 0 -#endif - -#ifndef TRINAMIC_TOFF_STEALTHCHOP -# define TRINAMIC_TOFF_STEALTHCHOP 5 -#endif - -#ifndef TRINAMIC_TOFF_COOLSTEP -# define TRINAMIC_TOFF_COOLSTEP 3 -#endif - namespace Motors { class TrinamicDriver : public TrinamicBase { private: + const int _spi_freq = 100000; + TMC2130Stepper* tmcstepper; // all other driver types are subclasses of this one Pin _cs_pin; // The chip select pin (can be the same for daisy chain) int8_t _spi_index; @@ -63,11 +45,6 @@ namespace Motors { void trinamic_test_response(); void trinamic_stepper_enable(bool enable); - bool report_open_load(TMC2130_n ::DRV_STATUS_t status); - bool report_short_to_ground(TMC2130_n ::DRV_STATUS_t status); - bool report_over_temp(TMC2130_n ::DRV_STATUS_t status); - bool report_short_to_ps(TMC2130_n ::DRV_STATUS_t status); - protected: void config_message() override; @@ -90,7 +67,10 @@ namespace Motors { StandardStepper::validate(); } - void group(Configuration::HandlerBase& handler) override { TrinamicBase::group(handler); } + void group(Configuration::HandlerBase& handler) override { + handler.item("cs", _cs_pin); + TrinamicBase::group(handler); + } // Name of the configurable. Must match the name registered in the cpp file. const char* name() const override { return "trinamic_spi"; } diff --git a/Grbl_Esp32/src/Motors/TrinamicUartDriver.cpp b/Grbl_Esp32/src/Motors/TrinamicUartDriver.cpp index 489b646c..be1276c3 100644 --- a/Grbl_Esp32/src/Motors/TrinamicUartDriver.cpp +++ b/Grbl_Esp32/src/Motors/TrinamicUartDriver.cpp @@ -34,10 +34,8 @@ namespace Motors { bool TrinamicUartDriver::_uart_started = false; - /* HW Serial Constructor. */ - TrinamicUartDriver::TrinamicUartDriver(uint16_t driver_part_number, uint8_t addr) : - TrinamicBase(driver_part_number), _addr(addr) {} + TrinamicUartDriver::TrinamicUartDriver(uint16_t driver_part_number, uint8_t addr) : TrinamicBase(driver_part_number), _addr(addr) {} void TrinamicUartDriver::init() { if (!_uart_started) { @@ -52,16 +50,16 @@ namespace Motors { link = List; List = this; + if (_has_errors) { + return; + } + // Display the stepper library version message once, before the first // TMC config message. Link is NULL for the first TMC instance. if (!link) { info_serial("TMCStepper Library Ver. 0x%06x", TMCSTEPPER_VERSION); } - if (_has_errors) { - return; - } - config_message(); tmcstepper->begin(); @@ -124,10 +122,10 @@ namespace Motors { switch (tmcstepper->test_connection()) { case 1: - info_serial("%s driver test failed. Check connection", reportAxisNameMsg(axis_index(), dual_axis_index())); + info_serial("%s Trinamic driver test failed. Check connection", reportAxisNameMsg(axis_index(), dual_axis_index())); return false; case 2: - info_serial("%s driver test failed. Check motor power", reportAxisNameMsg(axis_index(), dual_axis_index())); + info_serial("%s Trinamic driver test failed. Check motor power", reportAxisNameMsg(axis_index(), dual_axis_index())); return false; default: // driver responded, so check for other errors from the DRV_STATUS register @@ -138,23 +136,25 @@ namespace Motors { bool err = false; // look for errors - if (report_short_to_ground(status)) { + if (report_short_to_ground(status.s2ga, status.s2gb)) { err = true; } - if (report_over_temp(status)) { + if (report_over_temp(status.ot, status.otpw)) { err = true; } - if (report_short_to_ps(status)) { + if (report_short_to_ps(bit_istrue(status.sr, 12), bit_istrue(status.sr, 13))) { err = true; } + // XXX why not report_open_load(status.ola, status.olb) ? + if (err) { return false; } - info_serial("%s driver test passed", reportAxisNameMsg(axis_index(), dual_axis_index())); + info_serial("%s Trinamic driver test passed", reportAxisNameMsg(axis_index(), dual_axis_index())); return true; } } @@ -165,6 +165,7 @@ namespace Motors { uint16_t run (mA) float hold (as a percentage of run) */ + // XXX Identical to TrinamicDriver::read_settings() void TrinamicUartDriver::read_settings() { if (_has_errors) { return; @@ -177,8 +178,9 @@ namespace Motors { hold_i_percent = 0; } else { hold_i_percent = _hold_current / _run_current; - if (hold_i_percent > 1.0) + if (hold_i_percent > 1.0) { hold_i_percent = 1.0; + } } tmcstepper->microsteps(_microsteps); @@ -187,6 +189,7 @@ namespace Motors { init_step_dir_pins(); } + // XXX Identical to TrinamicDriver::set_homing_mode() bool TrinamicUartDriver::set_homing_mode(bool isHoming) { set_mode(isHoming); return true; @@ -194,7 +197,7 @@ namespace Motors { /* There are ton of settings. I'll start by grouping then into modes for now. - Many people will want quiet and stallgaurd homing. Stallguard only run in + Many people will want quiet and stallguard homing. Stallguard only run in Coolstep mode, so it will need to switch to Coolstep when homing */ void TrinamicUartDriver::set_mode(bool isHoming) { @@ -202,7 +205,7 @@ namespace Motors { return; } - TrinamicMode newMode = isHoming ? TRINAMIC_HOMING_MODE : TRINAMIC_RUN_MODE; + TrinamicMode newMode = static_cast(trinamicModes[isHoming ? _homing_mode : _run_mode].value); if (newMode == _mode) { return; @@ -244,6 +247,7 @@ namespace Motors { if (_has_errors) { return; } + uint32_t tstep = tmcstepper->TSTEP(); if (tstep == 0xFFFFF || tstep < 1) { // if axis is not moving return @@ -261,10 +265,10 @@ namespace Motors { status.sr = tmcstepper->DRV_STATUS(); // these only report if there is a fault condition - report_open_load(status); - report_short_to_ground(status); - report_over_temp(status); - report_short_to_ps(status); + report_open_load(status.ola, status.olb); + report_short_to_ground(status.s2ga, status.s2gb); + report_over_temp(status.ot, status.otpw); + report_short_to_ps(bit_istrue(status.sr, 12), bit_istrue(status.sr, 13)); // info_serial("%s Status Register %08x GSTAT %02x", // reportAxisNameMsg(axis_index(), dual_axis_index()), @@ -272,6 +276,7 @@ namespace Motors { // tmcstepper->GSTAT()); } + // XXX Identical to TrinamicDriver::set_disable() // this can use the enable feature over SPI. The dedicated pin must be in the enable mode, // but that can be hardwired that way. void TrinamicUartDriver::set_disable(bool disable) { @@ -287,68 +292,21 @@ namespace Motors { _disable_pin.write(_disabled); -#ifdef USE_TRINAMIC_ENABLE - if (_disabled) { - tmcstepper->toff(TRINAMIC_UART_TOFF_DISABLE); - } else { - if (_mode == TrinamicMode::StealthChop) { - tmcstepper->toff(TRINAMIC_UART_TOFF_STEALTHCHOP); + if (_use_enable) { + if (_disabled) { + tmcstepper->toff(_toff_disable); } else { - tmcstepper->toff(TRINAMIC_UART_TOFF_COOLSTEP); + if (_mode == TrinamicMode::StealthChop) { + tmcstepper->toff(_toff_stealthchop); + } else { + tmcstepper->toff(_toff_coolstep); + } } } -#endif // the pin based enable could be added here. // This would be for individual motors, not the single pin for all motors. } - // =========== Reporting functions ======================== - - bool TrinamicUartDriver::report_open_load(TMC2208_n ::DRV_STATUS_t status) { - if (status.ola || status.olb) { - info_serial("%s Driver Open Load a:%s b:%s", - reportAxisNameMsg(axis_index(), dual_axis_index()), - status.ola ? "Y" : "N", - status.olb ? "Y" : "N"); - return true; - } - return false; // no error - } - - bool TrinamicUartDriver::report_short_to_ground(TMC2208_n ::DRV_STATUS_t status) { - if (status.s2ga || status.s2gb) { - info_serial("%s Driver Short Coil a:%s b:%s", - reportAxisNameMsg(axis_index(), dual_axis_index()), - status.s2ga ? "Y" : "N", - status.s2gb ? "Y" : "N"); - return true; - } - return false; // no error - } - - bool TrinamicUartDriver::report_over_temp(TMC2208_n ::DRV_STATUS_t status) { - if (status.ot || status.otpw) { - info_serial("%s Driver Temp Warning:%s Fault:%s", - reportAxisNameMsg(axis_index(), dual_axis_index()), - status.otpw ? "Y" : "N", - status.ot ? "Y" : "N"); - return true; - } - return false; // no error - } - - bool TrinamicUartDriver::report_short_to_ps(TMC2208_n ::DRV_STATUS_t status) { - // check for short to power supply - if ((status.sr & bit(12)) || (status.sr & bit(13))) { - info_serial("%s Driver Short vsa:%s vsb:%s", - reportAxisNameMsg(axis_index(), dual_axis_index()), - (status.sr & bit(12)) ? "Y" : "N", - (status.sr & bit(13)) ? "Y" : "N"); - return true; - } - return false; // no error - } - // Configuration registration namespace { MotorFactory::InstanceBuilder registration_2208("tmc_2208"); diff --git a/Grbl_Esp32/src/Motors/TrinamicUartDriver.h b/Grbl_Esp32/src/Motors/TrinamicUartDriver.h index 26d32337..124cd45f 100644 --- a/Grbl_Esp32/src/Motors/TrinamicUartDriver.h +++ b/Grbl_Esp32/src/Motors/TrinamicUartDriver.h @@ -28,20 +28,6 @@ const float TMC2208_RSENSE_DEFAULT = 0.11f; const float TMC2209_RSENSE_DEFAULT = 0.11f; -// ==== defaults OK to define them in your machine definition ==== - -#ifndef TRINAMIC_UART_TOFF_DISABLE -# define TRINAMIC_UART_TOFF_DISABLE 0 -#endif - -#ifndef TRINAMIC_UART_TOFF_STEALTHCHOP -# define TRINAMIC_UART_TOFF_STEALTHCHOP 5 -#endif - -#ifndef TRINAMIC_UART_TOFF_COOLSTEP -# define TRINAMIC_UART_TOFF_COOLSTEP 3 -#endif - #ifndef TMC_UART # define TMC_UART UART_NUM_2 #endif @@ -71,11 +57,6 @@ namespace Motors { void trinamic_test_response(); void trinamic_stepper_enable(bool enable); - bool report_open_load(TMC2208_n ::DRV_STATUS_t status); - bool report_short_to_ground(TMC2208_n ::DRV_STATUS_t status); - bool report_over_temp(TMC2208_n ::DRV_STATUS_t status); - bool report_short_to_ps(TMC2208_n ::DRV_STATUS_t status); - protected: void config_message() override;