diff --git a/Marlin/src/gcode/feature/trinamic/M911-M915.cpp b/Marlin/src/gcode/feature/trinamic/M911-M915.cpp index c156cef2b8..69bf070a92 100644 --- a/Marlin/src/gcode/feature/trinamic/M911-M915.cpp +++ b/Marlin/src/gcode/feature/trinamic/M911-M915.cpp @@ -131,8 +131,8 @@ void GcodeSuite::M912() { #endif #endif - #if M91x_USE_E(0) || M91x_USE_E(1) || M91x_USE_E(2) || M91x_USE_E(3) || M91x_USE_E(4) - const int8_t eval = int8_t(parser.byteval(axis_codes[E_AXIS], 0xFF)); + #if M91x_USE_E(0) || M91x_USE_E(1) || M91x_USE_E(2) || M91x_USE_E(3) || M91x_USE_E(4) || M91x_USE_E(5) + const uint8_t eval = int8_t(parser.byteval(axis_codes[E_AXIS], 0xFF)); #if M91x_USE_E(0) if (hasNone || eval == 0 || (hasE && eval < 0)) tmc_clear_otpw(stepperE0, TMC_E0); #endif @@ -149,7 +149,7 @@ void GcodeSuite::M912() { if (hasNone || eval == 4 || (hasE && eval < 0)) tmc_clear_otpw(stepperE4, TMC_E4); #endif #if M91x_USE_E(5) - if (hasNone || eval == 5 || (hasE && eval == 10)) tmc_clear_otpw(stepperE5, TMC_E5); + if (hasNone || eval == 5 || (hasE && eval < 0)) tmc_clear_otpw(stepperE5, TMC_E5); #endif #endif } diff --git a/Marlin/src/module/stepper_indirection.cpp b/Marlin/src/module/stepper_indirection.cpp index a0ec490d77..e6bd0abf2d 100644 --- a/Marlin/src/module/stepper_indirection.cpp +++ b/Marlin/src/module/stepper_indirection.cpp @@ -87,6 +87,9 @@ #if AXIS_DRIVER_TYPE(E4, TMC26X) _TMC26X_DEFINE(E4); #endif + #if AXIS_DRIVER_TYPE(E5, TMC26X) + _TMC26X_DEFINE(E5); + #endif #define _TMC26X_INIT(A) do{ \ stepper##A.setMicrosteps(A##_MICROSTEPS); \ @@ -130,6 +133,9 @@ #if AXIS_DRIVER_TYPE(E4, TMC26X) _TMC26X_INIT(E4); #endif + #if AXIS_DRIVER_TYPE(E5, TMC26X) + _TMC26X_INIT(E5); + #endif } #endif // TMC26X @@ -190,6 +196,9 @@ #if AXIS_DRIVER_TYPE(E4, TMC2130) _TMC2130_DEFINE(E4); #endif + #if AXIS_DRIVER_TYPE(E5, TMC2130) + _TMC2130_DEFINE(E5); + #endif // Use internal reference voltage for current calculations. This is the default. // Following values from Trinamic's spreadsheet with values for a NEMA17 (42BYGHW609) @@ -394,6 +403,13 @@ _TMC2208_DEFINE_SOFTWARE(E4); #endif #endif + #if AXIS_DRIVER_TYPE(E5, TMC2208) + #ifdef E5_HARDWARE_SERIAL + _TMC2208_DEFINE_HARDWARE(E5); + #else + _TMC2208_DEFINE_SOFTWARE(E5); + #endif + #endif void tmc2208_serial_begin() { #if AXIS_DRIVER_TYPE(X, TMC2208) @@ -480,6 +496,13 @@ stepperE4.beginSerial(115200); #endif #endif + #if AXIS_DRIVER_TYPE(E5, TMC2208) + #ifdef E5_HARDWARE_SERIAL + E5_HARDWARE_SERIAL.begin(115200); + #else + stepperE5.beginSerial(115200); + #endif + #endif } // Use internal reference voltage for current calculations. This is the default. @@ -597,6 +620,9 @@ void restore_stepper_drivers() { #if AXIS_IS_TMC(E4) stepperE4.push(); #endif + #if AXIS_IS_TMC(E5) + stepperE5.push(); + #endif } void reset_stepper_drivers() { @@ -667,6 +693,9 @@ void reset_stepper_drivers() { #if AXIS_DRIVER_TYPE(E4, L6470) _L6470_DEFINE(E4); #endif + #if AXIS_DRIVER_TYPE(E5, L6470) + _L6470_DEFINE(E5); + #endif #define _L6470_INIT(A) do{ \ stepper##A.init(); \ @@ -713,6 +742,9 @@ void reset_stepper_drivers() { #if AXIS_DRIVER_TYPE(E4, L6470) _L6470_INIT(E4); #endif + #if AXIS_DRIVER_TYPE(E5, L6470) + _L6470_INIT(E5); + #endif } #endif // L6470