Merge pull request #5981 from thinkyhead/rc_tmc2130_redo
TMC2130 Library: @teemuatlut replaces @makertum
This commit is contained in:
		| @@ -47,8 +47,8 @@ install: | ||||
|   # - sudo mv TMC26XStepper /usr/local/share/arduino/libraries/TMC26XStepper | ||||
|   # | ||||
|   # Install: TMC2130 Stepper Motor Controller library | ||||
|   - git clone https://github.com/MarlinFirmware/Trinamic_TMC2130.git | ||||
|   - sudo mv Trinamic_TMC2130/Trinamic_TMC2130 /usr/local/share/arduino/libraries/Trinamic_TMC2130 | ||||
|   - git clone https://github.com/teemuatlut/TMC2130Stepper.git | ||||
|   - sudo mv TMC2130Stepper /usr/local/share/arduino/libraries/TMC2130Stepper | ||||
|   # | ||||
| before_script: | ||||
|   # | ||||
| @@ -396,7 +396,9 @@ script: | ||||
|   # TMC2130 Config | ||||
|   # | ||||
|   - restore_configs | ||||
|   - opt_enable_adv HAVE_TMC2130DRIVER X_IS_TMC2130 Y_IS_TMC2130 Z_IS_TMC2130 E0_IS_TMC2130 | ||||
|   - opt_enable_adv HAVE_TMC2130 X_IS_TMC2130 Y_IS_TMC2130 Z_IS_TMC2130 | ||||
|   - build_marlin | ||||
|   - opt_enable_adv AUTOMATIC_CURRENT_CONTROL STEALTHCHOP | ||||
|   - build_marlin | ||||
|   # | ||||
|   # tvrrug Config need to check board type for sanguino atmega644p | ||||
|   | ||||
| @@ -761,14 +761,15 @@ | ||||
|                                                      // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME. | ||||
| #endif | ||||
|  | ||||
| /******************************************************************************\ | ||||
|  * enable this section if you have TMC26X motor drivers. | ||||
|  * you need to import the TMC26XStepper library into the Arduino IDE for this | ||||
|  ******************************************************************************/ | ||||
|  | ||||
| // @section tmc | ||||
|  | ||||
| /** | ||||
|  * Enable this section if you have TMC26X motor drivers. | ||||
|  * You will need to import the TMC26XStepper library into the Arduino IDE for this | ||||
|  * (https://github.com/trinamic/TMC26XStepper.git) | ||||
|  */ | ||||
| //#define HAVE_TMCDRIVER | ||||
|  | ||||
| #if ENABLED(HAVE_TMCDRIVER) | ||||
|  | ||||
|   //#define X_IS_TMC | ||||
| @@ -826,23 +827,31 @@ | ||||
|  | ||||
| // @section TMC2130 | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * Enable this for SilentStepStick Trinamic TMC2130 SPI-configurable stepper drivers. | ||||
|  * | ||||
|  * To use TMC2130 drivers in SPI mode, you'll also need the TMC2130 Arduino library | ||||
|  * (https://github.com/makertum/Trinamic_TMC2130). | ||||
|  * You'll also need the TMC2130Stepper Arduino library | ||||
|  * (https://github.com/teemuatlut/TMC2130Stepper). | ||||
|  * | ||||
|  * To use TMC2130 stepper drivers in SPI mode connect your SPI2130 pins to | ||||
|  * the hardware SPI interface on your board and define the required CS pins | ||||
|  * in your `pins_MYBOARD.h` file. (e.g., RAMPS 1.4 uses AUX3 pins `X_CS_PIN 53`, `Y_CS_PIN 49`, etc.). | ||||
|  */ | ||||
| //#define HAVE_TMC2130 | ||||
|  | ||||
| //#define HAVE_TMC2130DRIVER | ||||
| #if ENABLED(HAVE_TMC2130) | ||||
|   #define STEALTHCHOP | ||||
|  | ||||
| #if ENABLED(HAVE_TMC2130DRIVER) | ||||
|  | ||||
|   //#define TMC2130_ADVANCED_CONFIGURATION | ||||
|   /** | ||||
|    * Let Marlin automatically control stepper current. | ||||
|    * This is still an experimental feature. | ||||
|    * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, | ||||
|    * then decrease current by CURRENT_STEP until temperature prewarn is cleared. | ||||
|    * Adjusting starts from X/Y/Z/E_MAX_CURRENT but will not increase over AUTO_ADJUST_MAX | ||||
|    */  | ||||
|   //#define AUTOMATIC_CURRENT_CONTROL | ||||
|   #define CURRENT_STEP          50  // [mA] | ||||
|   #define AUTO_ADJUST_MAX     1300  // [mA], 1300mA_rms = 1840mA_peak | ||||
|  | ||||
|   // CHOOSE YOUR MOTORS HERE, THIS IS MANDATORY | ||||
|   //#define X_IS_TMC2130 | ||||
| @@ -856,182 +865,68 @@ | ||||
|   //#define E2_IS_TMC2130 | ||||
|   //#define E3_IS_TMC2130 | ||||
|  | ||||
|   #if ENABLED(TMC2130_ADVANCED_CONFIGURATION) | ||||
|   /** | ||||
|    * Stepper driver settings | ||||
|    */ | ||||
|  | ||||
|     // If you've enabled TMC2130_ADVANCED_CONFIGURATION, define global settings below. | ||||
|     // Enabled settings will be automatically applied to all axes specified above. | ||||
|     // | ||||
|     // Please read the TMC2130 datasheet: | ||||
|     // http://www.trinamic.com/_articles/products/integrated-circuits/tmc2130/_datasheet/TMC2130_datasheet.pdf | ||||
|     // All settings here have the same (sometimes cryptic) names as in the datasheet. | ||||
|     // | ||||
|     // The following, uncommented settings are only suggestion. | ||||
|   #define R_SENSE           0.11  // R_sense resistor for SilentStepStick2130 | ||||
|   #define HOLD_MULTIPLIER    0.5  // Scales down the holding current from run current | ||||
|   #define INTERPOLATE          1  // Interpolate X/Y/Z_MICROSTEPS to 256 | ||||
|  | ||||
|     /* GENERAL CONFIGURATION */ | ||||
|   #define X_MAX_CURRENT     1000  // rms current in mA | ||||
|   #define X_MICROSTEPS        16  // FULLSTEP..256 | ||||
|   #define X_CHIP_SELECT       40  // Pin | ||||
|  | ||||
|     //#define GLOBAL_EN_PWM_MODE        0 | ||||
|     #define GLOBAL_I_SCALE_ANALOG     1 // [0,1] 0: Normal, 1: AIN | ||||
|     //#define GLOBAL_INTERNAL_RSENSE    0 // [0,1] 0: Normal, 1: Internal | ||||
|     #define GLOBAL_EN_PWM_MODE        0 // [0,1] 0: Normal, 1: stealthChop with velocity threshold | ||||
|     //#define GLOBAL_ENC_COMMUTATION    0 // [0,1] | ||||
|     #define GLOBAL_SHAFT              0 // [0,1] 0: normal, 1: invert | ||||
|     //#define GLOBAL_DIAG0_ERROR        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_OTPW         0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_STALL        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_STALL        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_INDEX        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_ONSTATE      0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_ONSTATE      0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_INT_PUSHPULL 0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_INT_PUSHPULL 0 // [0,1] | ||||
|     //#define GLOBAL_SMALL_HYSTERESIS   0 // [0,1] | ||||
|     //#define GLOBAL_STOP_ENABLE        0 // [0,1] | ||||
|     //#define GLOBAL_DIRECT_MODE        0 // [0,1] | ||||
|   #define Y_MAX_CURRENT     1000 | ||||
|   #define Y_MICROSTEPS        16 | ||||
|   #define Y_CHIP_SELECT       42 | ||||
|  | ||||
|     /* VELOCITY-DEPENDENT DRIVE FEATURES */ | ||||
|   #define Z_MAX_CURRENT     1000 | ||||
|   #define Z_MICROSTEPS        16 | ||||
|   #define Z_CHIP_SELECT       65 | ||||
|  | ||||
|     #define GLOBAL_IHOLD             22 // [0-31] 0: min, 31: max | ||||
|     #define GLOBAL_IRUN              31 // [0-31] 0: min, 31: max | ||||
|     #define GLOBAL_IHOLDDELAY        15 // [0-15] 0: min, 15: about 4 seconds | ||||
|     //#define GLOBAL_TPOWERDOWN         0 // [0-255] 0: min, 255: about 4 seconds | ||||
|     //#define GLOBAL_TPWMTHRS           0 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|     //#define GLOBAL_TCOOLTHRS          0 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|     #define GLOBAL_THIGH             10 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|   //#define X2_MAX_CURRENT  1000 | ||||
|   //#define X2_MICROSTEPS     16 | ||||
|   //#define X2_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* SPI MODE CONFIGURATION */ | ||||
|   //#define Y2_MAX_CURRENT  1000 | ||||
|   //#define Y2_MICROSTEPS     16 | ||||
|   //#define Y2_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_XDIRECT            0 | ||||
|   //#define Z2_MAX_CURRENT  1000 | ||||
|   //#define Z2_MICROSTEPS     16 | ||||
|   //#define Z2_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* DCSTEP MINIMUM VELOCITY */ | ||||
|   //#define E0_MAX_CURRENT  1000 | ||||
|   //#define E0_MICROSTEPS     16 | ||||
|   //#define E0_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_VDCMIN             0 | ||||
|   //#define E1_MAX_CURRENT  1000 | ||||
|   //#define E1_MICROSTEPS     16 | ||||
|   //#define E1_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* MOTOR DRIVER CONFIGURATION*/ | ||||
|   //#define E2_MAX_CURRENT  1000 | ||||
|   //#define E2_MICROSTEPS     16 | ||||
|   //#define E2_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_DEDGE              0 | ||||
|     //#define GLOBAL_DISS2G             0 | ||||
|     #define GLOBAL_INTPOL             1 // 0: off 1: 256 microstep interpolation | ||||
|     #define GLOBAL_MRES              16 // number of microsteps | ||||
|     #define GLOBAL_SYNC               1 // [0-15] | ||||
|     #define GLOBAL_VHIGHCHM           1 // [0,1] 0: normal, 1: high velocity stepper mode | ||||
|     #define GLOBAL_VHIGHFS            0 // [0,1] 0: normal, 1: switch to full steps for high velocities | ||||
|     // #define GLOBAL_VSENSE            0 // [0,1] 0: normal, 1: high sensitivity (not recommended) | ||||
|     #define GLOBAL_TBL                1 // 0-3: set comparator blank time to 16, 24, 36 or 54 clocks, 1 or 2 is recommended | ||||
|     #define GLOBAL_CHM                0 // [0,1] 0: spreadCycle, 1: Constant off time with fast decay time. | ||||
|     //#define GLOBAL_RNDTF              0 | ||||
|     //#define GLOBAL_DISFDCC            0 | ||||
|     //#define GLOBAL_FD                 0 | ||||
|     //#define GLOBAL_HEND               0 | ||||
|     //#define GLOBAL_HSTRT              0 | ||||
|     #define GLOBAL_TOFF              10 // 0: driver disable, 1: use only with TBL>2, 2-15: off time setting during slow decay phase | ||||
|   //#define E3_MAX_CURRENT  1000 | ||||
|   //#define E3_MICROSTEPS     16 | ||||
|   //#define E3_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_SFILT              0 | ||||
|     //#define GLOBAL_SGT                0 | ||||
|     //#define GLOBAL_SEIMIN             0 | ||||
|     //#define GLOBAL_SEDN               0 | ||||
|     //#define GLOBAL_SEMAX              0 | ||||
|     //#define GLOBAL_SEUP               0 | ||||
|     //#define GLOBAL_SEMIN              0 | ||||
|   /** | ||||
|    * You can set your own advanced settings by filling in predefined functions. | ||||
|    * A list of available functions can be found on the library github page | ||||
|    * https://github.com/teemuatlut/TMC2130Stepper | ||||
|    * | ||||
|    * Example: | ||||
|    * #define TMC2130_ADV() { \ | ||||
|    *   stepperX.diag0_temp_prewarn(1); \ | ||||
|    *   stepperX.interpolate(0); \ | ||||
|    * } | ||||
|    */ | ||||
|   #define  TMC2130_ADV() {  } | ||||
|  | ||||
|     //#define GLOBAL_DC_TIME            0 | ||||
|     //#define GLOBAL_DC_SG              0 | ||||
|  | ||||
|     //#define GLOBAL_FREEWHEEL          0 | ||||
|     //#define GLOBAL_PWM_SYMMETRIC      0 | ||||
|     //#define GLOBAL_PWM_AUTOSCALE      0 | ||||
|     //#define GLOBAL_PWM_FREQ           0 | ||||
|     //#define GLOBAL_PWM_GRAD           0 | ||||
|     //#define GLOBAL_PWM_AMPL           0 | ||||
|  | ||||
|     //#define GLOBAL_ENCM_CTRL          0 | ||||
|  | ||||
|   #else | ||||
|  | ||||
|     #define X_IHOLD          31 // [0-31] 0: min, 31: max | ||||
|     #define X_IRUN           31 // [0-31] 0: min, 31: max | ||||
|     #define X_IHOLDDELAY     15 // [0-15] 0: min, 15: about 4 seconds | ||||
|     #define X_I_SCALE_ANALOG  1 // 0: Normal, 1: AIN | ||||
|     #define X_MRES           16 // number of microsteps | ||||
|     #define X_TBL             1 // 0-3: set comparator blank time to 16, 24, 36 or 54 clocks, 1 or 2 is recommended | ||||
|     #define X_TOFF            8 // 0: driver disable, 1: use only with TBL>2, 2-15: off time setting during slow decay phase | ||||
|  | ||||
|     #define X2_IHOLD         31 | ||||
|     #define X2_IRUN          31 | ||||
|     #define X2_IHOLDDELAY    15 | ||||
|     #define X2_I_SCALE_ANALOG 1 | ||||
|     #define X2_MRES          16 | ||||
|     #define X2_TBL            1 | ||||
|     #define X2_TOFF           8 | ||||
|  | ||||
|     #define Y_IHOLD          31 | ||||
|     #define Y_IRUN           31 | ||||
|     #define Y_IHOLDDELAY     15 | ||||
|     #define Y_I_SCALE_ANALOG  1 | ||||
|     #define Y_MRES           16 | ||||
|     #define Y_TBL             1 | ||||
|     #define Y_TOFF            8 | ||||
|  | ||||
|     #define Y2_IHOLD         31 | ||||
|     #define Y2_IRUN          31 | ||||
|     #define Y2_IHOLDDELAY    15 | ||||
|     #define Y2_I_SCALE_ANALOG 1 | ||||
|     #define Y2_MRES          16 | ||||
|     #define Y2_TBL            1 | ||||
|     #define Y2_TOFF           8 | ||||
|  | ||||
|     #define Z_IHOLD          31 | ||||
|     #define Z_IRUN           31 | ||||
|     #define Z_IHOLDDELAY     15 | ||||
|     #define Z_I_SCALE_ANALOG  1 | ||||
|     #define Z_MRES           16 | ||||
|     #define Z_TBL             1 | ||||
|     #define Z_TOFF            8 | ||||
|  | ||||
|     #define Z2_IHOLD         31 | ||||
|     #define Z2_IRUN          31 | ||||
|     #define Z2_IHOLDDELAY    15 | ||||
|     #define Z2_I_SCALE_ANALOG 1 | ||||
|     #define Z2_MRES          16 | ||||
|     #define Z2_TBL            1 | ||||
|     #define Z2_TOFF           8 | ||||
|  | ||||
|     #define E0_IHOLD         31 | ||||
|     #define E0_IRUN          31 | ||||
|     #define E0_IHOLDDELAY    15 | ||||
|     #define E0_I_SCALE_ANALOG 1 | ||||
|     #define E0_MRES          16 | ||||
|     #define E0_TBL            1 | ||||
|     #define E0_TOFF           8 | ||||
|  | ||||
|     #define E1_IHOLD         31 | ||||
|     #define E1_IRUN          31 | ||||
|     #define E1_IHOLDDELAY    15 | ||||
|     #define E1_I_SCALE_ANALOG 1 | ||||
|     #define E1_MRES          16 | ||||
|     #define E1_TBL            1 | ||||
|     #define E1_TOFF           8 | ||||
|  | ||||
|     #define E2_IHOLD         31 | ||||
|     #define E2_IRUN          31 | ||||
|     #define E2_IHOLDDELAY    15 | ||||
|     #define E2_I_SCALE_ANALOG 1 | ||||
|     #define E2_MRES          16 | ||||
|     #define E2_TBL            1 | ||||
|     #define E2_TOFF           8 | ||||
|  | ||||
|     #define E3_IHOLD         31 | ||||
|     #define E3_IRUN          31 | ||||
|     #define E3_IHOLDDELAY    15 | ||||
|     #define E3_I_SCALE_ANALOG 1 | ||||
|     #define E3_MRES          16 | ||||
|     #define E3_TBL            1 | ||||
|     #define E3_TOFF           8 | ||||
|  | ||||
|   #endif // TMC2130_ADVANCED_CONFIGURATION | ||||
|  | ||||
| #endif // HAVE_TMC2130DRIVER | ||||
|  | ||||
| // @section L6470 | ||||
| #endif // ENABLED(HAVE_TMC2130) | ||||
|  | ||||
| /** | ||||
|  * Enable this section if you have L6470 motor drivers. | ||||
| @@ -1039,6 +934,8 @@ | ||||
|  * (https://github.com/ameyer/Arduino-L6470) | ||||
|  */ | ||||
|  | ||||
| // @section l6470 | ||||
|  | ||||
| //#define HAVE_L6470DRIVER | ||||
| #if ENABLED(HAVE_L6470DRIVER) | ||||
|  | ||||
|   | ||||
| @@ -61,9 +61,9 @@ | ||||
|   #include <TMC26XStepper.h> | ||||
| #endif | ||||
|  | ||||
| #if ENABLED(HAVE_TMC2130DRIVER) | ||||
| #if ENABLED(HAVE_TMC2130) | ||||
|   #include <SPI.h> | ||||
|   #include <Trinamic_TMC2130.h> | ||||
|   #include <TMC2130Stepper.h> | ||||
| #endif | ||||
|  | ||||
| #if ENABLED(HAVE_L6470DRIVER) | ||||
|   | ||||
| @@ -189,10 +189,13 @@ | ||||
|  * M666 - Set delta endstop adjustment. (Requires DELTA) | ||||
|  * M605 - Set dual x-carriage movement mode: "M605 S<mode> [X<x_offset>] [R<temp_offset>]". (Requires DUAL_X_CARRIAGE) | ||||
|  * M851 - Set Z probe's Z offset in current units. (Negative = below the nozzle.) | ||||
|  * M906 - Set or get motor current in milliamps using axis codes X, Y, Z, E. Report values if no axis codes given. (Requires HAVE_TMC2130) | ||||
|  * M907 - Set digital trimpot motor current using axis codes. (Requires a board with digital trimpots) | ||||
|  * 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 HAVE_TMC2130) | ||||
|  * M912 - Clear stepper driver overtemperature pre-warn condition flag. (Requires HAVE_TMC2130) | ||||
|  * M350 - Set microstepping mode. (Requires digital microstepping pins.) | ||||
|  * M351 - Toggle MS1 MS2 pins directly. (Requires digital microstepping pins.) | ||||
|  * | ||||
| @@ -6127,58 +6130,6 @@ inline void gcode_M120() { endstops.enable_globally(true); } | ||||
|  */ | ||||
| inline void gcode_M121() { endstops.enable_globally(false); } | ||||
|  | ||||
| #if ENABLED(HAVE_TMC2130DRIVER) | ||||
|  | ||||
|   /** | ||||
|    * M122: Output Trinamic TMC2130 status to serial output. Very bad formatting. | ||||
|    */ | ||||
|  | ||||
|   static void tmc2130_report(Trinamic_TMC2130 &stepr, const char *name) { | ||||
|     stepr.read_STAT(); | ||||
|     SERIAL_PROTOCOL(name); | ||||
|     SERIAL_PROTOCOL(": "); | ||||
|     stepr.isReset() ? SERIAL_PROTOCOLPGM("RESET ") : SERIAL_PROTOCOLPGM("----- "); | ||||
|     stepr.isError() ? SERIAL_PROTOCOLPGM("ERROR ") : SERIAL_PROTOCOLPGM("----- "); | ||||
|     stepr.isStallguard() ? SERIAL_PROTOCOLPGM("SLGRD ") : SERIAL_PROTOCOLPGM("----- "); | ||||
|     stepr.isStandstill() ? SERIAL_PROTOCOLPGM("STILL ") : SERIAL_PROTOCOLPGM("----- "); | ||||
|     SERIAL_PROTOCOLLN(stepr.debug()); | ||||
|   } | ||||
|  | ||||
|   inline void gcode_M122() { | ||||
|     SERIAL_PROTOCOLLNPGM("Reporting TMC2130 status"); | ||||
|     #if ENABLED(X_IS_TMC2130) | ||||
|       tmc2130_report(stepperX, "X"); | ||||
|     #endif | ||||
|     #if ENABLED(X2_IS_TMC2130) | ||||
|       tmc2130_report(stepperX2, "X2"); | ||||
|     #endif | ||||
|     #if ENABLED(Y_IS_TMC2130) | ||||
|       tmc2130_report(stepperY, "Y"); | ||||
|     #endif | ||||
|     #if ENABLED(Y2_IS_TMC2130) | ||||
|       tmc2130_report(stepperY2, "Y2"); | ||||
|     #endif | ||||
|     #if ENABLED(Z_IS_TMC2130) | ||||
|       tmc2130_report(stepperZ, "Z"); | ||||
|     #endif | ||||
|     #if ENABLED(Z2_IS_TMC2130) | ||||
|       tmc2130_report(stepperZ2, "Z2"); | ||||
|     #endif | ||||
|     #if ENABLED(E0_IS_TMC2130) | ||||
|       tmc2130_report(stepperE0, "E0"); | ||||
|     #endif | ||||
|     #if ENABLED(E1_IS_TMC2130) | ||||
|       tmc2130_report(stepperE1, "E1"); | ||||
|     #endif | ||||
|     #if ENABLED(E2_IS_TMC2130) | ||||
|       tmc2130_report(stepperE2, "E2"); | ||||
|     #endif | ||||
|     #if ENABLED(E3_IS_TMC2130) | ||||
|       tmc2130_report(stepperE3, "E3"); | ||||
|     #endif | ||||
|   } | ||||
| #endif // HAVE_TMC2130DRIVER | ||||
|  | ||||
| #if ENABLED(BLINKM) || ENABLED(RGB_LED) | ||||
|  | ||||
|   void set_led_color(const uint8_t r, const uint8_t g, const uint8_t b) { | ||||
| @@ -7610,7 +7561,7 @@ inline void gcode_M503() { | ||||
|     SERIAL_ECHOLNPAIR(MSG_DUPLICATION_MODE, extruder_duplication_enabled ? MSG_ON : MSG_OFF); | ||||
|   } | ||||
|  | ||||
| #endif // M605 | ||||
| #endif // DUAL_NOZZLE_DUPLICATION_MODE | ||||
|  | ||||
| #if ENABLED(LIN_ADVANCE) | ||||
|   /** | ||||
| @@ -7637,7 +7588,99 @@ inline void gcode_M503() { | ||||
|       if (ratio) SERIAL_ECHOLN(ratio); else SERIAL_ECHOLNPGM("Automatic"); | ||||
|     } | ||||
|   } | ||||
| #endif | ||||
| #endif // LIN_ADVANCE | ||||
|  | ||||
| #if ENABLED(HAVE_TMC2130) | ||||
|  | ||||
|   static void tmc2130_print_current(const int mA, const char name) { | ||||
|     SERIAL_CHAR(name); | ||||
|     SERIAL_ECHOPGM(" axis driver current: "); | ||||
|     SERIAL_ECHOLN(mA); | ||||
|   } | ||||
|   static void tmc2130_set_current(const int mA, TMC2130Stepper &st, const char name) { | ||||
|     tmc2130_print_current(mA, name); | ||||
|     st.setCurrent(mA, 0.11, 0.5); | ||||
|   } | ||||
|   static void tmc2130_get_current(TMC2130Stepper &st, const char name) { | ||||
|     tmc2130_print_current(st.getCurrent(), name); | ||||
|   } | ||||
|   static void tmc2130_report_otpw(TMC2130Stepper &st, const char name) { | ||||
|     SERIAL_CHAR(name); | ||||
|     SERIAL_ECHOPGM(" axis temperature prewarn triggered: "); | ||||
|     serialprintPGM(st.getOTPW() ? PSTR("true") : PSTR("false")); | ||||
|   } | ||||
|   static void tmc2130_clear_otpw(TMC2130Stepper &st, const char name) { | ||||
|     st.clear_otpw(); | ||||
|     SERIAL_CHAR(name); | ||||
|     SERIAL_ECHOLNPGM(" prewarn flag cleared"); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * M906: Set motor current in milliamps using axis codes X, Y, Z, E | ||||
|    * | ||||
|    * Report driver currents when no axis specified | ||||
|    */ | ||||
|   inline void gcode_M906() { | ||||
|     uint16_t values[NUM_AXIS]; | ||||
|     LOOP_XYZE(i) | ||||
|       values[i] = code_seen(axis_codes[i]) ? code_value_int() : 0; | ||||
|  | ||||
|     #if ENABLED(X_IS_TMC2130) | ||||
|       if (values[X_AXIS]) tmc2130_set_current(values[X_AXIS], stepperX, 'X'); | ||||
|       else tmc2130_get_current(stepperX, 'X'); | ||||
|     #endif | ||||
|     #if ENABLED(Y_IS_TMC2130) | ||||
|       if (values[Y_AXIS]) tmc2130_set_current(values[Y_AXIS], stepperY, 'Y'); | ||||
|       else tmc2130_get_current(stepperY, 'Y'); | ||||
|     #endif | ||||
|     #if ENABLED(Z_IS_TMC2130) | ||||
|       if (values[Z_AXIS]) tmc2130_set_current(values[Z_AXIS], stepperZ, 'Z'); | ||||
|       else tmc2130_get_current(stepperZ, 'Z'); | ||||
|     #endif | ||||
|     #if ENABLED(E0_IS_TMC2130) | ||||
|       if (values[E_AXIS]) tmc2130_set_current(values[E_AXIS], stepperE0, 'E'); | ||||
|       else tmc2130_get_current(stepperE0, 'E'); | ||||
|     #endif | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * M911: Report TMC2130 stepper driver overtemperature pre-warn flag | ||||
|    * The flag is held by the library and persist until manually cleared by M912 | ||||
|    */ | ||||
|   inline void gcode_M911() { | ||||
|     #if ENABLED(X_IS_TMC2130) | ||||
|       tmc2130_report_otpw(stepperX, 'X'); | ||||
|     #endif | ||||
|     #if ENABLED(Y_IS_TMC2130) | ||||
|       tmc2130_report_otpw(stepperY, 'Y'); | ||||
|     #endif | ||||
|     #if ENABLED(Z_IS_TMC2130) | ||||
|       tmc2130_report_otpw(stepperZ, 'Z'); | ||||
|     #endif | ||||
|     #if ENABLED(E0_IS_TMC2130) | ||||
|       tmc2130_report_otpw(stepperE0, 'E'); | ||||
|     #endif | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * M912: Clear TMC2130 stepper driver overtemperature pre-warn flag held by the library | ||||
|    */ | ||||
|   inline void gcode_M912() { | ||||
|     #if ENABLED(X_IS_TMC2130) | ||||
|       if (code_seen('X')) tmc2130_clear_otpw(stepperX, 'X'); | ||||
|     #endif | ||||
|     #if ENABLED(Y_IS_TMC2130) | ||||
|       if (code_seen('Y')) tmc2130_clear_otpw(stepperY, 'Y'); | ||||
|     #endif | ||||
|     #if ENABLED(Z_IS_TMC2130) | ||||
|       if (code_seen('Z')) tmc2130_clear_otpw(stepperZ, 'Z'); | ||||
|     #endif | ||||
|     #if ENABLED(E0_IS_TMC2130) | ||||
|       if (code_seen('E')) tmc2130_clear_otpw(stepperE0, 'E'); | ||||
|     #endif | ||||
|   } | ||||
|  | ||||
| #endif // HAVE_TMC2130 | ||||
|  | ||||
| /** | ||||
|  * M907: Set digital trimpot motor current using axis codes X, Y, Z, E, B, S | ||||
| @@ -8600,12 +8643,6 @@ void process_next_command() { | ||||
|         gcode_M121(); | ||||
|         break; | ||||
|  | ||||
|       #if ENABLED(HAVE_TMC2130DRIVER) | ||||
|         case 122: // M122: Diagnose, used to debug TMC2130 | ||||
|           gcode_M122(); | ||||
|           break; | ||||
|       #endif | ||||
|  | ||||
|       #if ENABLED(ULTIPANEL) | ||||
|  | ||||
|         case 145: // M145: Set material heatup parameters | ||||
| @@ -8882,6 +8919,12 @@ void process_next_command() { | ||||
|           break; | ||||
|       #endif | ||||
|  | ||||
|       #if ENABLED(HAVE_TMC2130) | ||||
|         case 906: // M906: Set motor current in milliamps using axis codes X, Y, Z, E | ||||
|           gcode_M906(); | ||||
|           break; | ||||
|       #endif | ||||
|  | ||||
|       case 907: // M907: Set digital trimpot motor current using axis codes. | ||||
|         gcode_M907(); | ||||
|         break; | ||||
| @@ -8906,6 +8949,16 @@ void process_next_command() { | ||||
|  | ||||
|       #endif // HAS_DIGIPOTSS || DAC_STEPPER_CURRENT | ||||
|  | ||||
|       #if ENABLED(HAVE_TMC2130) | ||||
|         case 911: // M911: Report TMC2130 prewarn triggered flags | ||||
|           gcode_M911(); | ||||
|           break; | ||||
|  | ||||
|         case 912: // M911: Clear TMC2130 prewarn triggered flags | ||||
|           gcode_M912(); | ||||
|           break; | ||||
|       #endif | ||||
|  | ||||
|       #if HAS_MICROSTEPS | ||||
|  | ||||
|         case 350: // M350: Set microstepping mode. Warning: Steps per unit remains unchanged. S code sets stepping mode for all drivers. | ||||
| @@ -10169,6 +10222,65 @@ void disable_all_steppers() { | ||||
|   disable_e3(); | ||||
| } | ||||
|  | ||||
| #if ENABLED(AUTOMATIC_CURRENT_CONTROL) | ||||
|  | ||||
|   void automatic_current_control(const TMC2130Stepper &st) { | ||||
|     #if CURRENT_STEP > 0 | ||||
|       const bool is_otpw = st.checkOT(), // Check otpw even if we don't adjust. Allows for flag inspection. | ||||
|                  is_otpw_triggered = st.getOTPW(); | ||||
|  | ||||
|       if (!is_otpw && !is_otpw_triggered) { | ||||
|         // OTPW bit not triggered yet -> Increase current | ||||
|         const uint16_t current = st.getCurrent() + CURRENT_STEP; | ||||
|         if (current <= AUTO_ADJUST_MAX) st.SilentStepStick2130(current); | ||||
|       } | ||||
|       else if (is_otpw && is_otpw_triggered) { | ||||
|         // OTPW bit triggered, triggered flag raised -> Decrease current | ||||
|         st.SilentStepStick2130((float)st.getCurrent() - CURRENT_STEP); | ||||
|       } | ||||
|       // OTPW bit cleared (we've cooled down), triggered flag still raised until manually cleared -> Do nothing, we're good | ||||
|     #endif | ||||
|   } | ||||
|  | ||||
|   void checkOverTemp() { | ||||
|     static millis_t next_cOT = 0; | ||||
|     if (ELAPSED(millis(), next_cOT)) { | ||||
|       next_cOT = millis() + 5000; | ||||
|       #if ENABLED(X_IS_TMC2130) | ||||
|         automatic_current_control(stepperX); | ||||
|       #endif | ||||
|       #if ENABLED(Y_IS_TMC2130) | ||||
|         automatic_current_control(stepperY); | ||||
|       #endif | ||||
|       #if ENABLED(Z_IS_TMC2130) | ||||
|         automatic_current_control(stepperZ); | ||||
|       #endif | ||||
|       #if ENABLED(X2_IS_TMC2130) | ||||
|         automatic_current_control(stepperX2); | ||||
|       #endif | ||||
|       #if ENABLED(Y2_IS_TMC2130) | ||||
|         automatic_current_control(stepperY2); | ||||
|       #endif | ||||
|       #if ENABLED(Z2_IS_TMC2130) | ||||
|         automatic_current_control(stepperZ2); | ||||
|       #endif | ||||
|       #if ENABLED(E0_IS_TMC2130) | ||||
|         automatic_current_control(stepperE0); | ||||
|       #endif | ||||
|       #if ENABLED(E1_IS_TMC2130) | ||||
|         automatic_current_control(stepperE1); | ||||
|       #endif | ||||
|       #if ENABLED(E2_IS_TMC2130) | ||||
|         automatic_current_control(stepperE2); | ||||
|       #endif | ||||
|       #if ENABLED(E3_IS_TMC2130) | ||||
|         automatic_current_control(stepperE3); | ||||
|       #endif | ||||
|     } | ||||
|   } | ||||
|  | ||||
| #endif // AUTOMATIC_CURRENT_CONTROL | ||||
|  | ||||
| /** | ||||
|  * Manage several activities: | ||||
|  *  - Check for Filament Runout | ||||
| @@ -10360,6 +10472,10 @@ void manage_inactivity(bool ignore_stepper_queue/*=false*/) { | ||||
|     handle_status_leds(); | ||||
|   #endif | ||||
|  | ||||
|   #if ENABLED(AUTOMATIC_CURRENT_CONTROL) | ||||
|     checkOverTemp(); | ||||
|   #endif | ||||
|  | ||||
|   planner.check_axes_activity(); | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -36,13 +36,13 @@ | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #define EEPROM_VERSION "V29" | ||||
| #define EEPROM_VERSION "V30" | ||||
|  | ||||
| // Change EEPROM version if these are changed: | ||||
| #define EEPROM_OFFSET 100 | ||||
|  | ||||
| /** | ||||
|  * V29 EEPROM Layout: | ||||
|  * V30 EEPROM Layout: | ||||
|  * | ||||
|  *  100  Version                                   (char x4) | ||||
|  *  104  EEPROM Checksum                           (uint16_t) | ||||
| @@ -128,8 +128,20 @@ | ||||
|  *  509  M200 D    volumetric_enabled               (bool) | ||||
|  *  510  M200 T D  filament_size                    (float x4) (T0..3) | ||||
|  * | ||||
|  *  526                                Minimum end-point | ||||
|  * 1847 (526 + 36 + 9 + 288 + 988)     Maximum end-point | ||||
|  * TMC2130:                                         20 bytes | ||||
|  *  526  M906 X    TMC2130  X-stepper current       (uint16_t) | ||||
|  *  528  M906 Y    TMC2130  Y-stepper current       (uint16_t) | ||||
|  *  530  M906 Z    TMC2130  Z-stepper current       (uint16_t) | ||||
|  *  532  M906 X2   TMC2130 X2-stepper current       (uint16_t) | ||||
|  *  534  M906 Y2   TMC2130 Y2-stepper current       (uint16_t) | ||||
|  *  536  M906 Z2   TMC2130 Z2-stepper current       (uint16_t) | ||||
|  *  538  M906 E0   TMC2130 E0-stepper current       (uint16_t) | ||||
|  *  540  M906 E1   TMC2130 E1-stepper current       (uint16_t) | ||||
|  *  542  M906 E2   TMC2130 E2-stepper current       (uint16_t) | ||||
|  *  544  M906 E3   TMC2130 E3-stepper current       (uint16_t) | ||||
|  * | ||||
|  *  546                                Minimum end-point | ||||
|  * 1867 (546 + 36 + 9 + 288 + 988)     Maximum end-point | ||||
|  * | ||||
|  */ | ||||
| #include "Marlin.h" | ||||
| @@ -144,6 +156,10 @@ | ||||
|   #include "mesh_bed_leveling.h" | ||||
| #endif | ||||
|  | ||||
| #if ENABLED(HAVE_TMC2130) | ||||
|   #include "stepper_indirection.h" | ||||
| #endif | ||||
|  | ||||
| #if ENABLED(ABL_BILINEAR_SUBDIVISION) | ||||
|   extern void bed_level_virt_interpolate(); | ||||
| #endif | ||||
| @@ -432,10 +448,78 @@ void Config_Postprocess() { | ||||
|       EEPROM_WRITE(dummy); | ||||
|     } | ||||
|  | ||||
|     // Save TCM2130 Configuration, and placeholder values | ||||
|     uint16_t val; | ||||
|     #if ENABLED(HAVE_TMC2130) | ||||
|       #if ENABLED(X_IS_TMC2130) | ||||
|         val = stepperX.getCurrent(); | ||||
|       #else | ||||
|         val = 0; | ||||
|       #endif | ||||
|       EEPROM_WRITE(val); | ||||
|       #if ENABLED(Y_IS_TMC2130) | ||||
|         val = stepperY.getCurrent(); | ||||
|       #else | ||||
|         val = 0; | ||||
|       #endif | ||||
|       EEPROM_WRITE(val); | ||||
|       #if ENABLED(Z_IS_TMC2130) | ||||
|         val = stepperZ.getCurrent(); | ||||
|       #else | ||||
|         val = 0; | ||||
|       #endif | ||||
|       EEPROM_WRITE(val); | ||||
|       #if ENABLED(X2_IS_TMC2130) | ||||
|         val = stepperX2.getCurrent(); | ||||
|       #else | ||||
|         val = 0; | ||||
|       #endif | ||||
|       EEPROM_WRITE(val); | ||||
|       #if ENABLED(Y2_IS_TMC2130) | ||||
|         val = stepperY2.getCurrent(); | ||||
|       #else | ||||
|         val = 0; | ||||
|       #endif | ||||
|       EEPROM_WRITE(val); | ||||
|       #if ENABLED(Z2_IS_TMC2130) | ||||
|         val = stepperZ2.getCurrent(); | ||||
|       #else | ||||
|         val = 0; | ||||
|       #endif | ||||
|       EEPROM_WRITE(val); | ||||
|       #if ENABLED(E0_IS_TMC2130) | ||||
|         val = stepperE0.getCurrent(); | ||||
|       #else | ||||
|         val = 0; | ||||
|       #endif | ||||
|       EEPROM_WRITE(val); | ||||
|       #if ENABLED(E1_IS_TMC2130) | ||||
|         val = stepperE1.getCurrent(); | ||||
|       #else | ||||
|         val = 0; | ||||
|       #endif | ||||
|       EEPROM_WRITE(val); | ||||
|       #if ENABLED(E2_IS_TMC2130) | ||||
|         val = stepperE2.getCurrent(); | ||||
|       #else | ||||
|         val = 0; | ||||
|       #endif | ||||
|       EEPROM_WRITE(val); | ||||
|       #if ENABLED(E3_IS_TMC2130) | ||||
|         val = stepperE3.getCurrent(); | ||||
|       #else | ||||
|         val = 0; | ||||
|       #endif | ||||
|       EEPROM_WRITE(val); | ||||
|     #else | ||||
|       val = 0; | ||||
|       for (uint8_t q = 0; q < 10; ++q) EEPROM_WRITE(val); | ||||
|     #endif | ||||
|  | ||||
|     if (!eeprom_write_error) { | ||||
|  | ||||
|       uint16_t final_checksum = eeprom_checksum, | ||||
|                eeprom_size = eeprom_index; | ||||
|       const uint16_t final_checksum = eeprom_checksum, | ||||
|                      eeprom_size = eeprom_index; | ||||
|  | ||||
|       // Write the EEPROM header | ||||
|       eeprom_index = EEPROM_OFFSET; | ||||
| @@ -684,6 +768,52 @@ void Config_Postprocess() { | ||||
|         if (q < COUNT(filament_size)) filament_size[q] = dummy; | ||||
|       } | ||||
|  | ||||
|       uint16_t val; | ||||
|       #if ENABLED(HAVE_TMC2130) | ||||
|         EEPROM_READ(val); | ||||
|         #if ENABLED(X_IS_TMC2130) | ||||
|           stepperX.setCurrent(val, R_SENSE, HOLD_MULTIPLIER); | ||||
|         #endif | ||||
|         EEPROM_READ(val); | ||||
|         #if ENABLED(Y_IS_TMC2130) | ||||
|           stepperY.setCurrent(val, R_SENSE, HOLD_MULTIPLIER); | ||||
|         #endif | ||||
|         EEPROM_READ(val); | ||||
|         #if ENABLED(Z_IS_TMC2130) | ||||
|           stepperZ.setCurrent(val, R_SENSE, HOLD_MULTIPLIER); | ||||
|         #endif | ||||
|         EEPROM_READ(val); | ||||
|         #if ENABLED(X2_IS_TMC2130) | ||||
|           stepperX2.setCurrent(val, R_SENSE, HOLD_MULTIPLIER); | ||||
|         #endif | ||||
|         EEPROM_READ(val); | ||||
|         #if ENABLED(Y2_IS_TMC2130) | ||||
|           stepperY2.setCurrent(val, R_SENSE, HOLD_MULTIPLIER); | ||||
|         #endif | ||||
|         EEPROM_READ(val); | ||||
|         #if ENABLED(Z2_IS_TMC2130) | ||||
|           stepperZ2.setCurrent(val, R_SENSE, HOLD_MULTIPLIER); | ||||
|         #endif | ||||
|         EEPROM_READ(val); | ||||
|         #if ENABLED(E0_IS_TMC2130) | ||||
|           stepperE0.setCurrent(val, R_SENSE, HOLD_MULTIPLIER); | ||||
|         #endif | ||||
|         EEPROM_READ(val); | ||||
|         #if ENABLED(E1_IS_TMC2130) | ||||
|           stepperE1.setCurrent(val, R_SENSE, HOLD_MULTIPLIER); | ||||
|         #endif | ||||
|         EEPROM_READ(val); | ||||
|         #if ENABLED(E2_IS_TMC2130) | ||||
|           stepperE2.setCurrent(val, R_SENSE, HOLD_MULTIPLIER); | ||||
|         #endif | ||||
|         EEPROM_READ(val); | ||||
|         #if ENABLED(E3_IS_TMC2130) | ||||
|           stepperE3.setCurrent(val, R_SENSE, HOLD_MULTIPLIER); | ||||
|         #endif | ||||
|       #else | ||||
|         for (uint8_t q = 0; q < 10; q++) EEPROM_READ(val); | ||||
|       #endif | ||||
|  | ||||
|       if (eeprom_checksum == stored_checksum) { | ||||
|         if (eeprom_read_error) | ||||
|           Config_ResetDefault(); | ||||
| @@ -852,6 +982,39 @@ void Config_ResetDefault() { | ||||
|     #endif | ||||
|   ); | ||||
|  | ||||
|   #if ENABLED(HAVE_TMC2130) | ||||
|     #if ENABLED(X_IS_TMC2130) | ||||
|       stepperX.setCurrent(X_MAX_CURRENT, R_SENSE, HOLD_MULTIPLIER); | ||||
|     #endif | ||||
|     #if ENABLED(Y_IS_TMC2130) | ||||
|       stepperY.setCurrent(Y_MAX_CURRENT, R_SENSE, HOLD_MULTIPLIER); | ||||
|     #endif | ||||
|     #if ENABLED(Z_IS_TMC2130) | ||||
|       stepperZ.setCurrent(Z_MAX_CURRENT, R_SENSE, HOLD_MULTIPLIER); | ||||
|     #endif | ||||
|     #if ENABLED(X2_IS_TMC2130) | ||||
|       stepperX2.setCurrent(X2_MAX_CURRENT, R_SENSE, HOLD_MULTIPLIER); | ||||
|     #endif | ||||
|     #if ENABLED(Y2_IS_TMC2130) | ||||
|       stepperY2.setCurrent(Y2_MAX_CURRENT, R_SENSE, HOLD_MULTIPLIER); | ||||
|     #endif | ||||
|     #if ENABLED(Z2_IS_TMC2130) | ||||
|       stepperZ2.setCurrent(Z2_MAX_CURRENT, R_SENSE, HOLD_MULTIPLIER); | ||||
|     #endif | ||||
|     #if ENABLED(E0_IS_TMC2130) | ||||
|       stepperE0.setCurrent(E0_MAX_CURRENT, R_SENSE, HOLD_MULTIPLIER); | ||||
|     #endif | ||||
|     #if ENABLED(E1_IS_TMC2130) | ||||
|       stepperE1.setCurrent(E1_MAX_CURRENT, R_SENSE, HOLD_MULTIPLIER); | ||||
|     #endif | ||||
|     #if ENABLED(E2_IS_TMC2130) | ||||
|       stepperE2.setCurrent(E2_MAX_CURRENT, R_SENSE, HOLD_MULTIPLIER); | ||||
|     #endif | ||||
|     #if ENABLED(E3_IS_TMC2130) | ||||
|       stepperE3.setCurrent(E3_MAX_CURRENT, R_SENSE, HOLD_MULTIPLIER); | ||||
|     #endif | ||||
|   #endif | ||||
|  | ||||
|   Config_Postprocess(); | ||||
|  | ||||
|   SERIAL_ECHO_START; | ||||
| @@ -1184,14 +1347,57 @@ void Config_ResetDefault() { | ||||
|      * Auto Bed Leveling | ||||
|      */ | ||||
|     #if HAS_BED_PROBE | ||||
|       if (!forReplay) { | ||||
|         CONFIG_ECHO_START; | ||||
|         SERIAL_ECHOLNPGM("Z-Probe Offset (mm):"); | ||||
|       } | ||||
|       CONFIG_ECHO_START; | ||||
|       if (!forReplay) { | ||||
|         SERIAL_ECHOLNPGM("Z-Probe Offset (mm):"); | ||||
|         CONFIG_ECHO_START; | ||||
|       } | ||||
|       SERIAL_ECHOPAIR("  M851 Z", zprobe_zoffset); | ||||
|       SERIAL_EOL; | ||||
|     #endif | ||||
|  | ||||
|     /** | ||||
|      * TMC2130 stepper driver current | ||||
|      */ | ||||
|     #if ENABLED(HAVE_TMC2130) | ||||
|       CONFIG_ECHO_START; | ||||
|       if (!forReplay) { | ||||
|         SERIAL_ECHOLNPGM("Stepper driver current:"); | ||||
|         CONFIG_ECHO_START; | ||||
|       } | ||||
|       SERIAL_ECHO("  M906"); | ||||
|       #if ENABLED(X_IS_TMC2130) | ||||
|         SERIAL_ECHOPAIR(" X", stepperX.getCurrent()); | ||||
|       #endif | ||||
|       #if ENABLED(Y_IS_TMC2130) | ||||
|         SERIAL_ECHOPAIR(" Y", stepperY.getCurrent()); | ||||
|       #endif | ||||
|       #if ENABLED(Z_IS_TMC2130) | ||||
|         SERIAL_ECHOPAIR(" Z", stepperZ.getCurrent()); | ||||
|       #endif | ||||
|       #if ENABLED(X2_IS_TMC2130) | ||||
|         SERIAL_ECHOPAIR(" X2", stepperX2.getCurrent()); | ||||
|       #endif | ||||
|       #if ENABLED(Y2_IS_TMC2130) | ||||
|         SERIAL_ECHOPAIR(" Y2", stepperY2.getCurrent()); | ||||
|       #endif | ||||
|       #if ENABLED(Z2_IS_TMC2130) | ||||
|         SERIAL_ECHOPAIR(" Z2", stepperZ2.getCurrent()); | ||||
|       #endif | ||||
|       #if ENABLED(E0_IS_TMC2130) | ||||
|         SERIAL_ECHOPAIR(" E0", stepperE0.getCurrent()); | ||||
|       #endif | ||||
|       #if ENABLED(E1_IS_TMC2130) | ||||
|         SERIAL_ECHOPAIR(" E1", stepperE1.getCurrent()); | ||||
|       #endif | ||||
|       #if ENABLED(E2_IS_TMC2130) | ||||
|         SERIAL_ECHOPAIR(" E2", stepperE2.getCurrent()); | ||||
|       #endif | ||||
|       #if ENABLED(E3_IS_TMC2130) | ||||
|         SERIAL_ECHOPAIR(" E3", stepperE3.getCurrent()); | ||||
|       #endif | ||||
|       SERIAL_EOL; | ||||
|     #endif | ||||
|   } | ||||
|  | ||||
| #endif // !DISABLE_M503 | ||||
|   | ||||
| @@ -758,14 +758,15 @@ | ||||
|                                                      // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME. | ||||
| #endif | ||||
|  | ||||
| /******************************************************************************\ | ||||
|  * enable this section if you have TMC26X motor drivers. | ||||
|  * you need to import the TMC26XStepper library into the Arduino IDE for this | ||||
|  ******************************************************************************/ | ||||
|  | ||||
| // @section tmc | ||||
|  | ||||
| /** | ||||
|  * Enable this section if you have TMC26X motor drivers. | ||||
|  * You will need to import the TMC26XStepper library into the Arduino IDE for this | ||||
|  * (https://github.com/trinamic/TMC26XStepper.git) | ||||
|  */ | ||||
| //#define HAVE_TMCDRIVER | ||||
|  | ||||
| #if ENABLED(HAVE_TMCDRIVER) | ||||
|  | ||||
|   //#define X_IS_TMC | ||||
| @@ -823,23 +824,31 @@ | ||||
|  | ||||
| // @section TMC2130 | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * Enable this for SilentStepStick Trinamic TMC2130 SPI-configurable stepper drivers. | ||||
|  * | ||||
|  * To use TMC2130 drivers in SPI mode, you'll also need the TMC2130 Arduino library | ||||
|  * (https://github.com/makertum/Trinamic_TMC2130). | ||||
|  * You'll also need the TMC2130Stepper Arduino library | ||||
|  * (https://github.com/teemuatlut/TMC2130Stepper). | ||||
|  * | ||||
|  * To use TMC2130 stepper drivers in SPI mode connect your SPI2130 pins to | ||||
|  * the hardware SPI interface on your board and define the required CS pins | ||||
|  * in your `pins_MYBOARD.h` file. (e.g., RAMPS 1.4 uses AUX3 pins `X_CS_PIN 53`, `Y_CS_PIN 49`, etc.). | ||||
|  */ | ||||
| //#define HAVE_TMC2130 | ||||
|  | ||||
| //#define HAVE_TMC2130DRIVER | ||||
| #if ENABLED(HAVE_TMC2130) | ||||
|   #define STEALTHCHOP | ||||
|  | ||||
| #if ENABLED(HAVE_TMC2130DRIVER) | ||||
|  | ||||
|   //#define TMC2130_ADVANCED_CONFIGURATION | ||||
|   /** | ||||
|    * Let Marlin automatically control stepper current. | ||||
|    * This is still an experimental feature. | ||||
|    * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, | ||||
|    * then decrease current by CURRENT_STEP until temperature prewarn is cleared. | ||||
|    * Adjusting starts from X/Y/Z/E_MAX_CURRENT but will not increase over AUTO_ADJUST_MAX | ||||
|    */  | ||||
|   //#define AUTOMATIC_CURRENT_CONTROL | ||||
|   #define CURRENT_STEP          50  // [mA] | ||||
|   #define AUTO_ADJUST_MAX     1300  // [mA], 1300mA_rms = 1840mA_peak | ||||
|  | ||||
|   // CHOOSE YOUR MOTORS HERE, THIS IS MANDATORY | ||||
|   //#define X_IS_TMC2130 | ||||
| @@ -853,180 +862,68 @@ | ||||
|   //#define E2_IS_TMC2130 | ||||
|   //#define E3_IS_TMC2130 | ||||
|  | ||||
|   #if ENABLED(TMC2130_ADVANCED_CONFIGURATION) | ||||
|   /** | ||||
|    * Stepper driver settings | ||||
|    */ | ||||
|  | ||||
|     // If you've enabled TMC2130_ADVANCED_CONFIGURATION, define global settings below. | ||||
|     // Enabled settings will be automatically applied to all axes specified above. | ||||
|     // | ||||
|     // Please read the TMC2130 datasheet: | ||||
|     // http://www.trinamic.com/_articles/products/integrated-circuits/tmc2130/_datasheet/TMC2130_datasheet.pdf | ||||
|     // All settings here have the same (sometimes cryptic) names as in the datasheet. | ||||
|     // | ||||
|     // The following, uncommented settings are only suggestion. | ||||
|   #define R_SENSE           0.11  // R_sense resistor for SilentStepStick2130 | ||||
|   #define HOLD_MULTIPLIER    0.5  // Scales down the holding current from run current | ||||
|   #define INTERPOLATE          1  // Interpolate X/Y/Z_MICROSTEPS to 256 | ||||
|  | ||||
|     /* GENERAL CONFIGURATION */ | ||||
|   #define X_MAX_CURRENT     1000  // rms current in mA | ||||
|   #define X_MICROSTEPS        16  // FULLSTEP..256 | ||||
|   #define X_CHIP_SELECT       40  // Pin | ||||
|  | ||||
|     //#define GLOBAL_EN_PWM_MODE        0 | ||||
|     #define GLOBAL_I_SCALE_ANALOG     1 // [0,1] 0: Normal, 1: AIN | ||||
|     //#define GLOBAL_INTERNAL_RSENSE    0 // [0,1] 0: Normal, 1: Internal | ||||
|     #define GLOBAL_EN_PWM_MODE        0 // [0,1] 0: Normal, 1: stealthChop with velocity threshold | ||||
|     //#define GLOBAL_ENC_COMMUTATION    0 // [0,1] | ||||
|     #define GLOBAL_SHAFT              0 // [0,1] 0: normal, 1: invert | ||||
|     //#define GLOBAL_DIAG0_ERROR        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_OTPW         0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_STALL        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_STALL        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_INDEX        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_ONSTATE      0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_ONSTATE      0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_INT_PUSHPULL 0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_INT_PUSHPULL 0 // [0,1] | ||||
|     //#define GLOBAL_SMALL_HYSTERESIS   0 // [0,1] | ||||
|     //#define GLOBAL_STOP_ENABLE        0 // [0,1] | ||||
|     //#define GLOBAL_DIRECT_MODE        0 // [0,1] | ||||
|   #define Y_MAX_CURRENT     1000 | ||||
|   #define Y_MICROSTEPS        16 | ||||
|   #define Y_CHIP_SELECT       42 | ||||
|  | ||||
|     /* VELOCITY-DEPENDENT DRIVE FEATURES */ | ||||
|   #define Z_MAX_CURRENT     1000 | ||||
|   #define Z_MICROSTEPS        16 | ||||
|   #define Z_CHIP_SELECT       65 | ||||
|  | ||||
|     #define GLOBAL_IHOLD             22 // [0-31] 0: min, 31: max | ||||
|     #define GLOBAL_IRUN              31 // [0-31] 0: min, 31: max | ||||
|     #define GLOBAL_IHOLDDELAY        15 // [0-15] 0: min, 15: about 4 seconds | ||||
|     //#define GLOBAL_TPOWERDOWN         0 // [0-255] 0: min, 255: about 4 seconds | ||||
|     //#define GLOBAL_TPWMTHRS           0 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|     //#define GLOBAL_TCOOLTHRS          0 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|     #define GLOBAL_THIGH             10 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|   //#define X2_MAX_CURRENT  1000 | ||||
|   //#define X2_MICROSTEPS     16 | ||||
|   //#define X2_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* SPI MODE CONFIGURATION */ | ||||
|   //#define Y2_MAX_CURRENT  1000 | ||||
|   //#define Y2_MICROSTEPS     16 | ||||
|   //#define Y2_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_XDIRECT            0 | ||||
|   //#define Z2_MAX_CURRENT  1000 | ||||
|   //#define Z2_MICROSTEPS     16 | ||||
|   //#define Z2_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* DCSTEP MINIMUM VELOCITY */ | ||||
|   //#define E0_MAX_CURRENT  1000 | ||||
|   //#define E0_MICROSTEPS     16 | ||||
|   //#define E0_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_VDCMIN             0 | ||||
|   //#define E1_MAX_CURRENT  1000 | ||||
|   //#define E1_MICROSTEPS     16 | ||||
|   //#define E1_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* MOTOR DRIVER CONFIGURATION*/ | ||||
|   //#define E2_MAX_CURRENT  1000 | ||||
|   //#define E2_MICROSTEPS     16 | ||||
|   //#define E2_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_DEDGE              0 | ||||
|     //#define GLOBAL_DISS2G             0 | ||||
|     #define GLOBAL_INTPOL             1 // 0: off 1: 256 microstep interpolation | ||||
|     #define GLOBAL_MRES              16 // number of microsteps | ||||
|     #define GLOBAL_SYNC               1 // [0-15] | ||||
|     #define GLOBAL_VHIGHCHM           1 // [0,1] 0: normal, 1: high velocity stepper mode | ||||
|     #define GLOBAL_VHIGHFS            0 // [0,1] 0: normal, 1: switch to full steps for high velocities | ||||
|     // #define GLOBAL_VSENSE            0 // [0,1] 0: normal, 1: high sensitivity (not recommended) | ||||
|     #define GLOBAL_TBL                1 // 0-3: set comparator blank time to 16, 24, 36 or 54 clocks, 1 or 2 is recommended | ||||
|     #define GLOBAL_CHM                0 // [0,1] 0: spreadCycle, 1: Constant off time with fast decay time. | ||||
|     //#define GLOBAL_RNDTF              0 | ||||
|     //#define GLOBAL_DISFDCC            0 | ||||
|     //#define GLOBAL_FD                 0 | ||||
|     //#define GLOBAL_HEND               0 | ||||
|     //#define GLOBAL_HSTRT              0 | ||||
|     #define GLOBAL_TOFF              10 // 0: driver disable, 1: use only with TBL>2, 2-15: off time setting during slow decay phase | ||||
|   //#define E3_MAX_CURRENT  1000 | ||||
|   //#define E3_MICROSTEPS     16 | ||||
|   //#define E3_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_SFILT              0 | ||||
|     //#define GLOBAL_SGT                0 | ||||
|     //#define GLOBAL_SEIMIN             0 | ||||
|     //#define GLOBAL_SEDN               0 | ||||
|     //#define GLOBAL_SEMAX              0 | ||||
|     //#define GLOBAL_SEUP               0 | ||||
|     //#define GLOBAL_SEMIN              0 | ||||
|   /** | ||||
|    * You can set your own advanced settings by filling in predefined functions. | ||||
|    * A list of available functions can be found on the library github page | ||||
|    * https://github.com/teemuatlut/TMC2130Stepper | ||||
|    * | ||||
|    * Example: | ||||
|    * #define TMC2130_ADV() { \ | ||||
|    *   stepperX.diag0_temp_prewarn(1); \ | ||||
|    *   stepperX.interpolate(0); \ | ||||
|    * } | ||||
|    */ | ||||
|   #define  TMC2130_ADV() {  } | ||||
|  | ||||
|     //#define GLOBAL_DC_TIME            0 | ||||
|     //#define GLOBAL_DC_SG              0 | ||||
|  | ||||
|     //#define GLOBAL_FREEWHEEL          0 | ||||
|     //#define GLOBAL_PWM_SYMMETRIC      0 | ||||
|     //#define GLOBAL_PWM_AUTOSCALE      0 | ||||
|     //#define GLOBAL_PWM_FREQ           0 | ||||
|     //#define GLOBAL_PWM_GRAD           0 | ||||
|     //#define GLOBAL_PWM_AMPL           0 | ||||
|  | ||||
|     //#define GLOBAL_ENCM_CTRL          0 | ||||
|  | ||||
|   #else | ||||
|  | ||||
|     #define X_IHOLD          31 // [0-31] 0: min, 31: max | ||||
|     #define X_IRUN           31 // [0-31] 0: min, 31: max | ||||
|     #define X_IHOLDDELAY     15 // [0-15] 0: min, 15: about 4 seconds | ||||
|     #define X_I_SCALE_ANALOG  1 // 0: Normal, 1: AIN | ||||
|     #define X_MRES           16 // number of microsteps | ||||
|     #define X_TBL             1 // 0-3: set comparator blank time to 16, 24, 36 or 54 clocks, 1 or 2 is recommended | ||||
|     #define X_TOFF            8 // 0: driver disable, 1: use only with TBL>2, 2-15: off time setting during slow decay phase | ||||
|  | ||||
|     #define X2_IHOLD         31 | ||||
|     #define X2_IRUN          31 | ||||
|     #define X2_IHOLDDELAY    15 | ||||
|     #define X2_I_SCALE_ANALOG 1 | ||||
|     #define X2_MRES          16 | ||||
|     #define X2_TBL            1 | ||||
|     #define X2_TOFF           8 | ||||
|  | ||||
|     #define Y_IHOLD          31 | ||||
|     #define Y_IRUN           31 | ||||
|     #define Y_IHOLDDELAY     15 | ||||
|     #define Y_I_SCALE_ANALOG  1 | ||||
|     #define Y_MRES           16 | ||||
|     #define Y_TBL             1 | ||||
|     #define Y_TOFF            8 | ||||
|  | ||||
|     #define Y2_IHOLD         31 | ||||
|     #define Y2_IRUN          31 | ||||
|     #define Y2_IHOLDDELAY    15 | ||||
|     #define Y2_I_SCALE_ANALOG 1 | ||||
|     #define Y2_MRES          16 | ||||
|     #define Y2_TBL            1 | ||||
|     #define Y2_TOFF           8 | ||||
|  | ||||
|     #define Z_IHOLD          31 | ||||
|     #define Z_IRUN           31 | ||||
|     #define Z_IHOLDDELAY     15 | ||||
|     #define Z_I_SCALE_ANALOG  1 | ||||
|     #define Z_MRES           16 | ||||
|     #define Z_TBL             1 | ||||
|     #define Z_TOFF            8 | ||||
|  | ||||
|     #define Z2_IHOLD         31 | ||||
|     #define Z2_IRUN          31 | ||||
|     #define Z2_IHOLDDELAY    15 | ||||
|     #define Z2_I_SCALE_ANALOG 1 | ||||
|     #define Z2_MRES          16 | ||||
|     #define Z2_TBL            1 | ||||
|     #define Z2_TOFF           8 | ||||
|  | ||||
|     #define E0_IHOLD         31 | ||||
|     #define E0_IRUN          31 | ||||
|     #define E0_IHOLDDELAY    15 | ||||
|     #define E0_I_SCALE_ANALOG 1 | ||||
|     #define E0_MRES          16 | ||||
|     #define E0_TBL            1 | ||||
|     #define E0_TOFF           8 | ||||
|  | ||||
|     #define E1_IHOLD         31 | ||||
|     #define E1_IRUN          31 | ||||
|     #define E1_IHOLDDELAY    15 | ||||
|     #define E1_I_SCALE_ANALOG 1 | ||||
|     #define E1_MRES          16 | ||||
|     #define E1_TBL            1 | ||||
|     #define E1_TOFF           8 | ||||
|  | ||||
|     #define E2_IHOLD         31 | ||||
|     #define E2_IRUN          31 | ||||
|     #define E2_IHOLDDELAY    15 | ||||
|     #define E2_I_SCALE_ANALOG 1 | ||||
|     #define E2_MRES          16 | ||||
|     #define E2_TBL            1 | ||||
|     #define E2_TOFF           8 | ||||
|  | ||||
|     #define E3_IHOLD         31 | ||||
|     #define E3_IRUN          31 | ||||
|     #define E3_IHOLDDELAY    15 | ||||
|     #define E3_I_SCALE_ANALOG 1 | ||||
|     #define E3_MRES          16 | ||||
|     #define E3_TBL            1 | ||||
|     #define E3_TOFF           8 | ||||
|  | ||||
|   #endif // TMC2130_ADVANCED_CONFIGURATION | ||||
|  | ||||
| #endif // HAVE_TMC2130DRIVER | ||||
| #endif // ENABLED(HAVE_TMC2130) | ||||
|  | ||||
| // @section L6470 | ||||
|  | ||||
|   | ||||
| @@ -758,14 +758,15 @@ | ||||
|                                                      // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME. | ||||
| #endif | ||||
|  | ||||
| /******************************************************************************\ | ||||
|  * enable this section if you have TMC26X motor drivers. | ||||
|  * you need to import the TMC26XStepper library into the Arduino IDE for this | ||||
|  ******************************************************************************/ | ||||
|  | ||||
| // @section tmc | ||||
|  | ||||
| /** | ||||
|  * Enable this section if you have TMC26X motor drivers. | ||||
|  * You will need to import the TMC26XStepper library into the Arduino IDE for this | ||||
|  * (https://github.com/trinamic/TMC26XStepper.git) | ||||
|  */ | ||||
| //#define HAVE_TMCDRIVER | ||||
|  | ||||
| #if ENABLED(HAVE_TMCDRIVER) | ||||
|  | ||||
|   //#define X_IS_TMC | ||||
| @@ -823,23 +824,31 @@ | ||||
|  | ||||
| // @section TMC2130 | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * Enable this for SilentStepStick Trinamic TMC2130 SPI-configurable stepper drivers. | ||||
|  * | ||||
|  * To use TMC2130 drivers in SPI mode, you'll also need the TMC2130 Arduino library | ||||
|  * (https://github.com/makertum/Trinamic_TMC2130). | ||||
|  * You'll also need the TMC2130Stepper Arduino library | ||||
|  * (https://github.com/teemuatlut/TMC2130Stepper). | ||||
|  * | ||||
|  * To use TMC2130 stepper drivers in SPI mode connect your SPI2130 pins to | ||||
|  * the hardware SPI interface on your board and define the required CS pins | ||||
|  * in your `pins_MYBOARD.h` file. (e.g., RAMPS 1.4 uses AUX3 pins `X_CS_PIN 53`, `Y_CS_PIN 49`, etc.). | ||||
|  */ | ||||
| //#define HAVE_TMC2130 | ||||
|  | ||||
| //#define HAVE_TMC2130DRIVER | ||||
| #if ENABLED(HAVE_TMC2130) | ||||
|   #define STEALTHCHOP | ||||
|  | ||||
| #if ENABLED(HAVE_TMC2130DRIVER) | ||||
|  | ||||
|   //#define TMC2130_ADVANCED_CONFIGURATION | ||||
|   /** | ||||
|    * Let Marlin automatically control stepper current. | ||||
|    * This is still an experimental feature. | ||||
|    * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, | ||||
|    * then decrease current by CURRENT_STEP until temperature prewarn is cleared. | ||||
|    * Adjusting starts from X/Y/Z/E_MAX_CURRENT but will not increase over AUTO_ADJUST_MAX | ||||
|    */  | ||||
|   //#define AUTOMATIC_CURRENT_CONTROL | ||||
|   #define CURRENT_STEP          50  // [mA] | ||||
|   #define AUTO_ADJUST_MAX     1300  // [mA], 1300mA_rms = 1840mA_peak | ||||
|  | ||||
|   // CHOOSE YOUR MOTORS HERE, THIS IS MANDATORY | ||||
|   //#define X_IS_TMC2130 | ||||
| @@ -853,180 +862,68 @@ | ||||
|   //#define E2_IS_TMC2130 | ||||
|   //#define E3_IS_TMC2130 | ||||
|  | ||||
|   #if ENABLED(TMC2130_ADVANCED_CONFIGURATION) | ||||
|   /** | ||||
|    * Stepper driver settings | ||||
|    */ | ||||
|  | ||||
|     // If you've enabled TMC2130_ADVANCED_CONFIGURATION, define global settings below. | ||||
|     // Enabled settings will be automatically applied to all axes specified above. | ||||
|     // | ||||
|     // Please read the TMC2130 datasheet: | ||||
|     // http://www.trinamic.com/_articles/products/integrated-circuits/tmc2130/_datasheet/TMC2130_datasheet.pdf | ||||
|     // All settings here have the same (sometimes cryptic) names as in the datasheet. | ||||
|     // | ||||
|     // The following, uncommented settings are only suggestion. | ||||
|   #define R_SENSE           0.11  // R_sense resistor for SilentStepStick2130 | ||||
|   #define HOLD_MULTIPLIER    0.5  // Scales down the holding current from run current | ||||
|   #define INTERPOLATE          1  // Interpolate X/Y/Z_MICROSTEPS to 256 | ||||
|  | ||||
|     /* GENERAL CONFIGURATION */ | ||||
|   #define X_MAX_CURRENT     1000  // rms current in mA | ||||
|   #define X_MICROSTEPS        16  // FULLSTEP..256 | ||||
|   #define X_CHIP_SELECT       40  // Pin | ||||
|  | ||||
|     //#define GLOBAL_EN_PWM_MODE        0 | ||||
|     #define GLOBAL_I_SCALE_ANALOG     1 // [0,1] 0: Normal, 1: AIN | ||||
|     //#define GLOBAL_INTERNAL_RSENSE    0 // [0,1] 0: Normal, 1: Internal | ||||
|     #define GLOBAL_EN_PWM_MODE        0 // [0,1] 0: Normal, 1: stealthChop with velocity threshold | ||||
|     //#define GLOBAL_ENC_COMMUTATION    0 // [0,1] | ||||
|     #define GLOBAL_SHAFT              0 // [0,1] 0: normal, 1: invert | ||||
|     //#define GLOBAL_DIAG0_ERROR        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_OTPW         0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_STALL        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_STALL        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_INDEX        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_ONSTATE      0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_ONSTATE      0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_INT_PUSHPULL 0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_INT_PUSHPULL 0 // [0,1] | ||||
|     //#define GLOBAL_SMALL_HYSTERESIS   0 // [0,1] | ||||
|     //#define GLOBAL_STOP_ENABLE        0 // [0,1] | ||||
|     //#define GLOBAL_DIRECT_MODE        0 // [0,1] | ||||
|   #define Y_MAX_CURRENT     1000 | ||||
|   #define Y_MICROSTEPS        16 | ||||
|   #define Y_CHIP_SELECT       42 | ||||
|  | ||||
|     /* VELOCITY-DEPENDENT DRIVE FEATURES */ | ||||
|   #define Z_MAX_CURRENT     1000 | ||||
|   #define Z_MICROSTEPS        16 | ||||
|   #define Z_CHIP_SELECT       65 | ||||
|  | ||||
|     #define GLOBAL_IHOLD             22 // [0-31] 0: min, 31: max | ||||
|     #define GLOBAL_IRUN              31 // [0-31] 0: min, 31: max | ||||
|     #define GLOBAL_IHOLDDELAY        15 // [0-15] 0: min, 15: about 4 seconds | ||||
|     //#define GLOBAL_TPOWERDOWN         0 // [0-255] 0: min, 255: about 4 seconds | ||||
|     //#define GLOBAL_TPWMTHRS           0 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|     //#define GLOBAL_TCOOLTHRS          0 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|     #define GLOBAL_THIGH             10 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|   //#define X2_MAX_CURRENT  1000 | ||||
|   //#define X2_MICROSTEPS     16 | ||||
|   //#define X2_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* SPI MODE CONFIGURATION */ | ||||
|   //#define Y2_MAX_CURRENT  1000 | ||||
|   //#define Y2_MICROSTEPS     16 | ||||
|   //#define Y2_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_XDIRECT            0 | ||||
|   //#define Z2_MAX_CURRENT  1000 | ||||
|   //#define Z2_MICROSTEPS     16 | ||||
|   //#define Z2_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* DCSTEP MINIMUM VELOCITY */ | ||||
|   //#define E0_MAX_CURRENT  1000 | ||||
|   //#define E0_MICROSTEPS     16 | ||||
|   //#define E0_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_VDCMIN             0 | ||||
|   //#define E1_MAX_CURRENT  1000 | ||||
|   //#define E1_MICROSTEPS     16 | ||||
|   //#define E1_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* MOTOR DRIVER CONFIGURATION*/ | ||||
|   //#define E2_MAX_CURRENT  1000 | ||||
|   //#define E2_MICROSTEPS     16 | ||||
|   //#define E2_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_DEDGE              0 | ||||
|     //#define GLOBAL_DISS2G             0 | ||||
|     #define GLOBAL_INTPOL             1 // 0: off 1: 256 microstep interpolation | ||||
|     #define GLOBAL_MRES              16 // number of microsteps | ||||
|     #define GLOBAL_SYNC               1 // [0-15] | ||||
|     #define GLOBAL_VHIGHCHM           1 // [0,1] 0: normal, 1: high velocity stepper mode | ||||
|     #define GLOBAL_VHIGHFS            0 // [0,1] 0: normal, 1: switch to full steps for high velocities | ||||
|     // #define GLOBAL_VSENSE            0 // [0,1] 0: normal, 1: high sensitivity (not recommended) | ||||
|     #define GLOBAL_TBL                1 // 0-3: set comparator blank time to 16, 24, 36 or 54 clocks, 1 or 2 is recommended | ||||
|     #define GLOBAL_CHM                0 // [0,1] 0: spreadCycle, 1: Constant off time with fast decay time. | ||||
|     //#define GLOBAL_RNDTF              0 | ||||
|     //#define GLOBAL_DISFDCC            0 | ||||
|     //#define GLOBAL_FD                 0 | ||||
|     //#define GLOBAL_HEND               0 | ||||
|     //#define GLOBAL_HSTRT              0 | ||||
|     #define GLOBAL_TOFF              10 // 0: driver disable, 1: use only with TBL>2, 2-15: off time setting during slow decay phase | ||||
|   //#define E3_MAX_CURRENT  1000 | ||||
|   //#define E3_MICROSTEPS     16 | ||||
|   //#define E3_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_SFILT              0 | ||||
|     //#define GLOBAL_SGT                0 | ||||
|     //#define GLOBAL_SEIMIN             0 | ||||
|     //#define GLOBAL_SEDN               0 | ||||
|     //#define GLOBAL_SEMAX              0 | ||||
|     //#define GLOBAL_SEUP               0 | ||||
|     //#define GLOBAL_SEMIN              0 | ||||
|   /** | ||||
|    * You can set your own advanced settings by filling in predefined functions. | ||||
|    * A list of available functions can be found on the library github page | ||||
|    * https://github.com/teemuatlut/TMC2130Stepper | ||||
|    * | ||||
|    * Example: | ||||
|    * #define TMC2130_ADV() { \ | ||||
|    *   stepperX.diag0_temp_prewarn(1); \ | ||||
|    *   stepperX.interpolate(0); \ | ||||
|    * } | ||||
|    */ | ||||
|   #define  TMC2130_ADV() {  } | ||||
|  | ||||
|     //#define GLOBAL_DC_TIME            0 | ||||
|     //#define GLOBAL_DC_SG              0 | ||||
|  | ||||
|     //#define GLOBAL_FREEWHEEL          0 | ||||
|     //#define GLOBAL_PWM_SYMMETRIC      0 | ||||
|     //#define GLOBAL_PWM_AUTOSCALE      0 | ||||
|     //#define GLOBAL_PWM_FREQ           0 | ||||
|     //#define GLOBAL_PWM_GRAD           0 | ||||
|     //#define GLOBAL_PWM_AMPL           0 | ||||
|  | ||||
|     //#define GLOBAL_ENCM_CTRL          0 | ||||
|  | ||||
|   #else | ||||
|  | ||||
|     #define X_IHOLD          31 // [0-31] 0: min, 31: max | ||||
|     #define X_IRUN           31 // [0-31] 0: min, 31: max | ||||
|     #define X_IHOLDDELAY     15 // [0-15] 0: min, 15: about 4 seconds | ||||
|     #define X_I_SCALE_ANALOG  1 // 0: Normal, 1: AIN | ||||
|     #define X_MRES           16 // number of microsteps | ||||
|     #define X_TBL             1 // 0-3: set comparator blank time to 16, 24, 36 or 54 clocks, 1 or 2 is recommended | ||||
|     #define X_TOFF            8 // 0: driver disable, 1: use only with TBL>2, 2-15: off time setting during slow decay phase | ||||
|  | ||||
|     #define X2_IHOLD         31 | ||||
|     #define X2_IRUN          31 | ||||
|     #define X2_IHOLDDELAY    15 | ||||
|     #define X2_I_SCALE_ANALOG 1 | ||||
|     #define X2_MRES          16 | ||||
|     #define X2_TBL            1 | ||||
|     #define X2_TOFF           8 | ||||
|  | ||||
|     #define Y_IHOLD          31 | ||||
|     #define Y_IRUN           31 | ||||
|     #define Y_IHOLDDELAY     15 | ||||
|     #define Y_I_SCALE_ANALOG  1 | ||||
|     #define Y_MRES           16 | ||||
|     #define Y_TBL             1 | ||||
|     #define Y_TOFF            8 | ||||
|  | ||||
|     #define Y2_IHOLD         31 | ||||
|     #define Y2_IRUN          31 | ||||
|     #define Y2_IHOLDDELAY    15 | ||||
|     #define Y2_I_SCALE_ANALOG 1 | ||||
|     #define Y2_MRES          16 | ||||
|     #define Y2_TBL            1 | ||||
|     #define Y2_TOFF           8 | ||||
|  | ||||
|     #define Z_IHOLD          31 | ||||
|     #define Z_IRUN           31 | ||||
|     #define Z_IHOLDDELAY     15 | ||||
|     #define Z_I_SCALE_ANALOG  1 | ||||
|     #define Z_MRES           16 | ||||
|     #define Z_TBL             1 | ||||
|     #define Z_TOFF            8 | ||||
|  | ||||
|     #define Z2_IHOLD         31 | ||||
|     #define Z2_IRUN          31 | ||||
|     #define Z2_IHOLDDELAY    15 | ||||
|     #define Z2_I_SCALE_ANALOG 1 | ||||
|     #define Z2_MRES          16 | ||||
|     #define Z2_TBL            1 | ||||
|     #define Z2_TOFF           8 | ||||
|  | ||||
|     #define E0_IHOLD         31 | ||||
|     #define E0_IRUN          31 | ||||
|     #define E0_IHOLDDELAY    15 | ||||
|     #define E0_I_SCALE_ANALOG 1 | ||||
|     #define E0_MRES          16 | ||||
|     #define E0_TBL            1 | ||||
|     #define E0_TOFF           8 | ||||
|  | ||||
|     #define E1_IHOLD         31 | ||||
|     #define E1_IRUN          31 | ||||
|     #define E1_IHOLDDELAY    15 | ||||
|     #define E1_I_SCALE_ANALOG 1 | ||||
|     #define E1_MRES          16 | ||||
|     #define E1_TBL            1 | ||||
|     #define E1_TOFF           8 | ||||
|  | ||||
|     #define E2_IHOLD         31 | ||||
|     #define E2_IRUN          31 | ||||
|     #define E2_IHOLDDELAY    15 | ||||
|     #define E2_I_SCALE_ANALOG 1 | ||||
|     #define E2_MRES          16 | ||||
|     #define E2_TBL            1 | ||||
|     #define E2_TOFF           8 | ||||
|  | ||||
|     #define E3_IHOLD         31 | ||||
|     #define E3_IRUN          31 | ||||
|     #define E3_IHOLDDELAY    15 | ||||
|     #define E3_I_SCALE_ANALOG 1 | ||||
|     #define E3_MRES          16 | ||||
|     #define E3_TBL            1 | ||||
|     #define E3_TOFF           8 | ||||
|  | ||||
|   #endif // TMC2130_ADVANCED_CONFIGURATION | ||||
|  | ||||
| #endif // HAVE_TMC2130DRIVER | ||||
| #endif // ENABLED(HAVE_TMC2130) | ||||
|  | ||||
| // @section L6470 | ||||
|  | ||||
|   | ||||
| @@ -758,14 +758,15 @@ | ||||
|                                                      // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME. | ||||
| #endif | ||||
|  | ||||
| /******************************************************************************\ | ||||
|  * enable this section if you have TMC26X motor drivers. | ||||
|  * you need to import the TMC26XStepper library into the Arduino IDE for this | ||||
|  ******************************************************************************/ | ||||
|  | ||||
| // @section tmc | ||||
|  | ||||
| /** | ||||
|  * Enable this section if you have TMC26X motor drivers. | ||||
|  * You will need to import the TMC26XStepper library into the Arduino IDE for this | ||||
|  * (https://github.com/trinamic/TMC26XStepper.git) | ||||
|  */ | ||||
| //#define HAVE_TMCDRIVER | ||||
|  | ||||
| #if ENABLED(HAVE_TMCDRIVER) | ||||
|  | ||||
|   //#define X_IS_TMC | ||||
| @@ -823,23 +824,31 @@ | ||||
|  | ||||
| // @section TMC2130 | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * Enable this for SilentStepStick Trinamic TMC2130 SPI-configurable stepper drivers. | ||||
|  * | ||||
|  * To use TMC2130 drivers in SPI mode, you'll also need the TMC2130 Arduino library | ||||
|  * (https://github.com/makertum/Trinamic_TMC2130). | ||||
|  * You'll also need the TMC2130Stepper Arduino library | ||||
|  * (https://github.com/teemuatlut/TMC2130Stepper). | ||||
|  * | ||||
|  * To use TMC2130 stepper drivers in SPI mode connect your SPI2130 pins to | ||||
|  * the hardware SPI interface on your board and define the required CS pins | ||||
|  * in your `pins_MYBOARD.h` file. (e.g., RAMPS 1.4 uses AUX3 pins `X_CS_PIN 53`, `Y_CS_PIN 49`, etc.). | ||||
|  */ | ||||
| //#define HAVE_TMC2130 | ||||
|  | ||||
| //#define HAVE_TMC2130DRIVER | ||||
| #if ENABLED(HAVE_TMC2130) | ||||
|   #define STEALTHCHOP | ||||
|  | ||||
| #if ENABLED(HAVE_TMC2130DRIVER) | ||||
|  | ||||
|   //#define TMC2130_ADVANCED_CONFIGURATION | ||||
|   /** | ||||
|    * Let Marlin automatically control stepper current. | ||||
|    * This is still an experimental feature. | ||||
|    * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, | ||||
|    * then decrease current by CURRENT_STEP until temperature prewarn is cleared. | ||||
|    * Adjusting starts from X/Y/Z/E_MAX_CURRENT but will not increase over AUTO_ADJUST_MAX | ||||
|    */  | ||||
|   //#define AUTOMATIC_CURRENT_CONTROL | ||||
|   #define CURRENT_STEP          50  // [mA] | ||||
|   #define AUTO_ADJUST_MAX     1300  // [mA], 1300mA_rms = 1840mA_peak | ||||
|  | ||||
|   // CHOOSE YOUR MOTORS HERE, THIS IS MANDATORY | ||||
|   //#define X_IS_TMC2130 | ||||
| @@ -853,180 +862,68 @@ | ||||
|   //#define E2_IS_TMC2130 | ||||
|   //#define E3_IS_TMC2130 | ||||
|  | ||||
|   #if ENABLED(TMC2130_ADVANCED_CONFIGURATION) | ||||
|   /** | ||||
|    * Stepper driver settings | ||||
|    */ | ||||
|  | ||||
|     // If you've enabled TMC2130_ADVANCED_CONFIGURATION, define global settings below. | ||||
|     // Enabled settings will be automatically applied to all axes specified above. | ||||
|     // | ||||
|     // Please read the TMC2130 datasheet: | ||||
|     // http://www.trinamic.com/_articles/products/integrated-circuits/tmc2130/_datasheet/TMC2130_datasheet.pdf | ||||
|     // All settings here have the same (sometimes cryptic) names as in the datasheet. | ||||
|     // | ||||
|     // The following, uncommented settings are only suggestion. | ||||
|   #define R_SENSE           0.11  // R_sense resistor for SilentStepStick2130 | ||||
|   #define HOLD_MULTIPLIER    0.5  // Scales down the holding current from run current | ||||
|   #define INTERPOLATE          1  // Interpolate X/Y/Z_MICROSTEPS to 256 | ||||
|  | ||||
|     /* GENERAL CONFIGURATION */ | ||||
|   #define X_MAX_CURRENT     1000  // rms current in mA | ||||
|   #define X_MICROSTEPS        16  // FULLSTEP..256 | ||||
|   #define X_CHIP_SELECT       40  // Pin | ||||
|  | ||||
|     //#define GLOBAL_EN_PWM_MODE        0 | ||||
|     #define GLOBAL_I_SCALE_ANALOG     1 // [0,1] 0: Normal, 1: AIN | ||||
|     //#define GLOBAL_INTERNAL_RSENSE    0 // [0,1] 0: Normal, 1: Internal | ||||
|     #define GLOBAL_EN_PWM_MODE        0 // [0,1] 0: Normal, 1: stealthChop with velocity threshold | ||||
|     //#define GLOBAL_ENC_COMMUTATION    0 // [0,1] | ||||
|     #define GLOBAL_SHAFT              0 // [0,1] 0: normal, 1: invert | ||||
|     //#define GLOBAL_DIAG0_ERROR        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_OTPW         0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_STALL        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_STALL        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_INDEX        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_ONSTATE      0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_ONSTATE      0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_INT_PUSHPULL 0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_INT_PUSHPULL 0 // [0,1] | ||||
|     //#define GLOBAL_SMALL_HYSTERESIS   0 // [0,1] | ||||
|     //#define GLOBAL_STOP_ENABLE        0 // [0,1] | ||||
|     //#define GLOBAL_DIRECT_MODE        0 // [0,1] | ||||
|   #define Y_MAX_CURRENT     1000 | ||||
|   #define Y_MICROSTEPS        16 | ||||
|   #define Y_CHIP_SELECT       42 | ||||
|  | ||||
|     /* VELOCITY-DEPENDENT DRIVE FEATURES */ | ||||
|   #define Z_MAX_CURRENT     1000 | ||||
|   #define Z_MICROSTEPS        16 | ||||
|   #define Z_CHIP_SELECT       65 | ||||
|  | ||||
|     #define GLOBAL_IHOLD             22 // [0-31] 0: min, 31: max | ||||
|     #define GLOBAL_IRUN              31 // [0-31] 0: min, 31: max | ||||
|     #define GLOBAL_IHOLDDELAY        15 // [0-15] 0: min, 15: about 4 seconds | ||||
|     //#define GLOBAL_TPOWERDOWN         0 // [0-255] 0: min, 255: about 4 seconds | ||||
|     //#define GLOBAL_TPWMTHRS           0 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|     //#define GLOBAL_TCOOLTHRS          0 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|     #define GLOBAL_THIGH             10 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|   //#define X2_MAX_CURRENT  1000 | ||||
|   //#define X2_MICROSTEPS     16 | ||||
|   //#define X2_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* SPI MODE CONFIGURATION */ | ||||
|   //#define Y2_MAX_CURRENT  1000 | ||||
|   //#define Y2_MICROSTEPS     16 | ||||
|   //#define Y2_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_XDIRECT            0 | ||||
|   //#define Z2_MAX_CURRENT  1000 | ||||
|   //#define Z2_MICROSTEPS     16 | ||||
|   //#define Z2_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* DCSTEP MINIMUM VELOCITY */ | ||||
|   //#define E0_MAX_CURRENT  1000 | ||||
|   //#define E0_MICROSTEPS     16 | ||||
|   //#define E0_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_VDCMIN             0 | ||||
|   //#define E1_MAX_CURRENT  1000 | ||||
|   //#define E1_MICROSTEPS     16 | ||||
|   //#define E1_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* MOTOR DRIVER CONFIGURATION*/ | ||||
|   //#define E2_MAX_CURRENT  1000 | ||||
|   //#define E2_MICROSTEPS     16 | ||||
|   //#define E2_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_DEDGE              0 | ||||
|     //#define GLOBAL_DISS2G             0 | ||||
|     #define GLOBAL_INTPOL             1 // 0: off 1: 256 microstep interpolation | ||||
|     #define GLOBAL_MRES              16 // number of microsteps | ||||
|     #define GLOBAL_SYNC               1 // [0-15] | ||||
|     #define GLOBAL_VHIGHCHM           1 // [0,1] 0: normal, 1: high velocity stepper mode | ||||
|     #define GLOBAL_VHIGHFS            0 // [0,1] 0: normal, 1: switch to full steps for high velocities | ||||
|     // #define GLOBAL_VSENSE            0 // [0,1] 0: normal, 1: high sensitivity (not recommended) | ||||
|     #define GLOBAL_TBL                1 // 0-3: set comparator blank time to 16, 24, 36 or 54 clocks, 1 or 2 is recommended | ||||
|     #define GLOBAL_CHM                0 // [0,1] 0: spreadCycle, 1: Constant off time with fast decay time. | ||||
|     //#define GLOBAL_RNDTF              0 | ||||
|     //#define GLOBAL_DISFDCC            0 | ||||
|     //#define GLOBAL_FD                 0 | ||||
|     //#define GLOBAL_HEND               0 | ||||
|     //#define GLOBAL_HSTRT              0 | ||||
|     #define GLOBAL_TOFF              10 // 0: driver disable, 1: use only with TBL>2, 2-15: off time setting during slow decay phase | ||||
|   //#define E3_MAX_CURRENT  1000 | ||||
|   //#define E3_MICROSTEPS     16 | ||||
|   //#define E3_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_SFILT              0 | ||||
|     //#define GLOBAL_SGT                0 | ||||
|     //#define GLOBAL_SEIMIN             0 | ||||
|     //#define GLOBAL_SEDN               0 | ||||
|     //#define GLOBAL_SEMAX              0 | ||||
|     //#define GLOBAL_SEUP               0 | ||||
|     //#define GLOBAL_SEMIN              0 | ||||
|   /** | ||||
|    * You can set your own advanced settings by filling in predefined functions. | ||||
|    * A list of available functions can be found on the library github page | ||||
|    * https://github.com/teemuatlut/TMC2130Stepper | ||||
|    * | ||||
|    * Example: | ||||
|    * #define TMC2130_ADV() { \ | ||||
|    *   stepperX.diag0_temp_prewarn(1); \ | ||||
|    *   stepperX.interpolate(0); \ | ||||
|    * } | ||||
|    */ | ||||
|   #define  TMC2130_ADV() {  } | ||||
|  | ||||
|     //#define GLOBAL_DC_TIME            0 | ||||
|     //#define GLOBAL_DC_SG              0 | ||||
|  | ||||
|     //#define GLOBAL_FREEWHEEL          0 | ||||
|     //#define GLOBAL_PWM_SYMMETRIC      0 | ||||
|     //#define GLOBAL_PWM_AUTOSCALE      0 | ||||
|     //#define GLOBAL_PWM_FREQ           0 | ||||
|     //#define GLOBAL_PWM_GRAD           0 | ||||
|     //#define GLOBAL_PWM_AMPL           0 | ||||
|  | ||||
|     //#define GLOBAL_ENCM_CTRL          0 | ||||
|  | ||||
|   #else | ||||
|  | ||||
|     #define X_IHOLD          31 // [0-31] 0: min, 31: max | ||||
|     #define X_IRUN           31 // [0-31] 0: min, 31: max | ||||
|     #define X_IHOLDDELAY     15 // [0-15] 0: min, 15: about 4 seconds | ||||
|     #define X_I_SCALE_ANALOG  1 // 0: Normal, 1: AIN | ||||
|     #define X_MRES           16 // number of microsteps | ||||
|     #define X_TBL             1 // 0-3: set comparator blank time to 16, 24, 36 or 54 clocks, 1 or 2 is recommended | ||||
|     #define X_TOFF            8 // 0: driver disable, 1: use only with TBL>2, 2-15: off time setting during slow decay phase | ||||
|  | ||||
|     #define X2_IHOLD         31 | ||||
|     #define X2_IRUN          31 | ||||
|     #define X2_IHOLDDELAY    15 | ||||
|     #define X2_I_SCALE_ANALOG 1 | ||||
|     #define X2_MRES          16 | ||||
|     #define X2_TBL            1 | ||||
|     #define X2_TOFF           8 | ||||
|  | ||||
|     #define Y_IHOLD          31 | ||||
|     #define Y_IRUN           31 | ||||
|     #define Y_IHOLDDELAY     15 | ||||
|     #define Y_I_SCALE_ANALOG  1 | ||||
|     #define Y_MRES           16 | ||||
|     #define Y_TBL             1 | ||||
|     #define Y_TOFF            8 | ||||
|  | ||||
|     #define Y2_IHOLD         31 | ||||
|     #define Y2_IRUN          31 | ||||
|     #define Y2_IHOLDDELAY    15 | ||||
|     #define Y2_I_SCALE_ANALOG 1 | ||||
|     #define Y2_MRES          16 | ||||
|     #define Y2_TBL            1 | ||||
|     #define Y2_TOFF           8 | ||||
|  | ||||
|     #define Z_IHOLD          31 | ||||
|     #define Z_IRUN           31 | ||||
|     #define Z_IHOLDDELAY     15 | ||||
|     #define Z_I_SCALE_ANALOG  1 | ||||
|     #define Z_MRES           16 | ||||
|     #define Z_TBL             1 | ||||
|     #define Z_TOFF            8 | ||||
|  | ||||
|     #define Z2_IHOLD         31 | ||||
|     #define Z2_IRUN          31 | ||||
|     #define Z2_IHOLDDELAY    15 | ||||
|     #define Z2_I_SCALE_ANALOG 1 | ||||
|     #define Z2_MRES          16 | ||||
|     #define Z2_TBL            1 | ||||
|     #define Z2_TOFF           8 | ||||
|  | ||||
|     #define E0_IHOLD         31 | ||||
|     #define E0_IRUN          31 | ||||
|     #define E0_IHOLDDELAY    15 | ||||
|     #define E0_I_SCALE_ANALOG 1 | ||||
|     #define E0_MRES          16 | ||||
|     #define E0_TBL            1 | ||||
|     #define E0_TOFF           8 | ||||
|  | ||||
|     #define E1_IHOLD         31 | ||||
|     #define E1_IRUN          31 | ||||
|     #define E1_IHOLDDELAY    15 | ||||
|     #define E1_I_SCALE_ANALOG 1 | ||||
|     #define E1_MRES          16 | ||||
|     #define E1_TBL            1 | ||||
|     #define E1_TOFF           8 | ||||
|  | ||||
|     #define E2_IHOLD         31 | ||||
|     #define E2_IRUN          31 | ||||
|     #define E2_IHOLDDELAY    15 | ||||
|     #define E2_I_SCALE_ANALOG 1 | ||||
|     #define E2_MRES          16 | ||||
|     #define E2_TBL            1 | ||||
|     #define E2_TOFF           8 | ||||
|  | ||||
|     #define E3_IHOLD         31 | ||||
|     #define E3_IRUN          31 | ||||
|     #define E3_IHOLDDELAY    15 | ||||
|     #define E3_I_SCALE_ANALOG 1 | ||||
|     #define E3_MRES          16 | ||||
|     #define E3_TBL            1 | ||||
|     #define E3_TOFF           8 | ||||
|  | ||||
|   #endif // TMC2130_ADVANCED_CONFIGURATION | ||||
|  | ||||
| #endif // HAVE_TMC2130DRIVER | ||||
| #endif // ENABLED(HAVE_TMC2130) | ||||
|  | ||||
| // @section L6470 | ||||
|  | ||||
|   | ||||
| @@ -741,14 +741,15 @@ | ||||
|                                                      // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME. | ||||
| #endif | ||||
|  | ||||
| /******************************************************************************\ | ||||
|  * enable this section if you have TMC26X motor drivers. | ||||
|  * you need to import the TMC26XStepper library into the Arduino IDE for this | ||||
|  ******************************************************************************/ | ||||
|  | ||||
| // @section tmc | ||||
|  | ||||
| /** | ||||
|  * Enable this section if you have TMC26X motor drivers. | ||||
|  * You will need to import the TMC26XStepper library into the Arduino IDE for this | ||||
|  * (https://github.com/trinamic/TMC26XStepper.git) | ||||
|  */ | ||||
| //#define HAVE_TMCDRIVER | ||||
|  | ||||
| #if ENABLED(HAVE_TMCDRIVER) | ||||
|  | ||||
|   //#define X_IS_TMC | ||||
| @@ -806,23 +807,31 @@ | ||||
|  | ||||
| // @section TMC2130 | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * Enable this for SilentStepStick Trinamic TMC2130 SPI-configurable stepper drivers. | ||||
|  * | ||||
|  * To use TMC2130 drivers in SPI mode, you'll also need the TMC2130 Arduino library | ||||
|  * (https://github.com/makertum/Trinamic_TMC2130). | ||||
|  * You'll also need the TMC2130Stepper Arduino library | ||||
|  * (https://github.com/teemuatlut/TMC2130Stepper). | ||||
|  * | ||||
|  * To use TMC2130 stepper drivers in SPI mode connect your SPI2130 pins to | ||||
|  * the hardware SPI interface on your board and define the required CS pins | ||||
|  * in your `pins_MYBOARD.h` file. (e.g., RAMPS 1.4 uses AUX3 pins `X_CS_PIN 53`, `Y_CS_PIN 49`, etc.). | ||||
|  */ | ||||
| //#define HAVE_TMC2130 | ||||
|  | ||||
| //#define HAVE_TMC2130DRIVER | ||||
| #if ENABLED(HAVE_TMC2130) | ||||
|   #define STEALTHCHOP | ||||
|  | ||||
| #if ENABLED(HAVE_TMC2130DRIVER) | ||||
|  | ||||
|   //#define TMC2130_ADVANCED_CONFIGURATION | ||||
|   /** | ||||
|    * Let Marlin automatically control stepper current. | ||||
|    * This is still an experimental feature. | ||||
|    * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, | ||||
|    * then decrease current by CURRENT_STEP until temperature prewarn is cleared. | ||||
|    * Adjusting starts from X/Y/Z/E_MAX_CURRENT but will not increase over AUTO_ADJUST_MAX | ||||
|    */  | ||||
|   //#define AUTOMATIC_CURRENT_CONTROL | ||||
|   #define CURRENT_STEP          50  // [mA] | ||||
|   #define AUTO_ADJUST_MAX     1300  // [mA], 1300mA_rms = 1840mA_peak | ||||
|  | ||||
|   // CHOOSE YOUR MOTORS HERE, THIS IS MANDATORY | ||||
|   //#define X_IS_TMC2130 | ||||
| @@ -836,180 +845,68 @@ | ||||
|   //#define E2_IS_TMC2130 | ||||
|   //#define E3_IS_TMC2130 | ||||
|  | ||||
|   #if ENABLED(TMC2130_ADVANCED_CONFIGURATION) | ||||
|   /** | ||||
|    * Stepper driver settings | ||||
|    */ | ||||
|  | ||||
|     // If you've enabled TMC2130_ADVANCED_CONFIGURATION, define global settings below. | ||||
|     // Enabled settings will be automatically applied to all axes specified above. | ||||
|     // | ||||
|     // Please read the TMC2130 datasheet: | ||||
|     // http://www.trinamic.com/_articles/products/integrated-circuits/tmc2130/_datasheet/TMC2130_datasheet.pdf | ||||
|     // All settings here have the same (sometimes cryptic) names as in the datasheet. | ||||
|     // | ||||
|     // The following, uncommented settings are only suggestion. | ||||
|   #define R_SENSE           0.11  // R_sense resistor for SilentStepStick2130 | ||||
|   #define HOLD_MULTIPLIER    0.5  // Scales down the holding current from run current | ||||
|   #define INTERPOLATE          1  // Interpolate X/Y/Z_MICROSTEPS to 256 | ||||
|  | ||||
|     /* GENERAL CONFIGURATION */ | ||||
|   #define X_MAX_CURRENT     1000  // rms current in mA | ||||
|   #define X_MICROSTEPS        16  // FULLSTEP..256 | ||||
|   #define X_CHIP_SELECT       40  // Pin | ||||
|  | ||||
|     //#define GLOBAL_EN_PWM_MODE        0 | ||||
|     #define GLOBAL_I_SCALE_ANALOG     1 // [0,1] 0: Normal, 1: AIN | ||||
|     //#define GLOBAL_INTERNAL_RSENSE    0 // [0,1] 0: Normal, 1: Internal | ||||
|     #define GLOBAL_EN_PWM_MODE        0 // [0,1] 0: Normal, 1: stealthChop with velocity threshold | ||||
|     //#define GLOBAL_ENC_COMMUTATION    0 // [0,1] | ||||
|     #define GLOBAL_SHAFT              0 // [0,1] 0: normal, 1: invert | ||||
|     //#define GLOBAL_DIAG0_ERROR        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_OTPW         0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_STALL        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_STALL        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_INDEX        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_ONSTATE      0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_ONSTATE      0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_INT_PUSHPULL 0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_INT_PUSHPULL 0 // [0,1] | ||||
|     //#define GLOBAL_SMALL_HYSTERESIS   0 // [0,1] | ||||
|     //#define GLOBAL_STOP_ENABLE        0 // [0,1] | ||||
|     //#define GLOBAL_DIRECT_MODE        0 // [0,1] | ||||
|   #define Y_MAX_CURRENT     1000 | ||||
|   #define Y_MICROSTEPS        16 | ||||
|   #define Y_CHIP_SELECT       42 | ||||
|  | ||||
|     /* VELOCITY-DEPENDENT DRIVE FEATURES */ | ||||
|   #define Z_MAX_CURRENT     1000 | ||||
|   #define Z_MICROSTEPS        16 | ||||
|   #define Z_CHIP_SELECT       65 | ||||
|  | ||||
|     #define GLOBAL_IHOLD             22 // [0-31] 0: min, 31: max | ||||
|     #define GLOBAL_IRUN              31 // [0-31] 0: min, 31: max | ||||
|     #define GLOBAL_IHOLDDELAY        15 // [0-15] 0: min, 15: about 4 seconds | ||||
|     //#define GLOBAL_TPOWERDOWN         0 // [0-255] 0: min, 255: about 4 seconds | ||||
|     //#define GLOBAL_TPWMTHRS           0 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|     //#define GLOBAL_TCOOLTHRS          0 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|     #define GLOBAL_THIGH             10 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|   //#define X2_MAX_CURRENT  1000 | ||||
|   //#define X2_MICROSTEPS     16 | ||||
|   //#define X2_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* SPI MODE CONFIGURATION */ | ||||
|   //#define Y2_MAX_CURRENT  1000 | ||||
|   //#define Y2_MICROSTEPS     16 | ||||
|   //#define Y2_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_XDIRECT            0 | ||||
|   //#define Z2_MAX_CURRENT  1000 | ||||
|   //#define Z2_MICROSTEPS     16 | ||||
|   //#define Z2_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* DCSTEP MINIMUM VELOCITY */ | ||||
|   //#define E0_MAX_CURRENT  1000 | ||||
|   //#define E0_MICROSTEPS     16 | ||||
|   //#define E0_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_VDCMIN             0 | ||||
|   //#define E1_MAX_CURRENT  1000 | ||||
|   //#define E1_MICROSTEPS     16 | ||||
|   //#define E1_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* MOTOR DRIVER CONFIGURATION*/ | ||||
|   //#define E2_MAX_CURRENT  1000 | ||||
|   //#define E2_MICROSTEPS     16 | ||||
|   //#define E2_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_DEDGE              0 | ||||
|     //#define GLOBAL_DISS2G             0 | ||||
|     #define GLOBAL_INTPOL             1 // 0: off 1: 256 microstep interpolation | ||||
|     #define GLOBAL_MRES              16 // number of microsteps | ||||
|     #define GLOBAL_SYNC               1 // [0-15] | ||||
|     #define GLOBAL_VHIGHCHM           1 // [0,1] 0: normal, 1: high velocity stepper mode | ||||
|     #define GLOBAL_VHIGHFS            0 // [0,1] 0: normal, 1: switch to full steps for high velocities | ||||
|     // #define GLOBAL_VSENSE            0 // [0,1] 0: normal, 1: high sensitivity (not recommended) | ||||
|     #define GLOBAL_TBL                1 // 0-3: set comparator blank time to 16, 24, 36 or 54 clocks, 1 or 2 is recommended | ||||
|     #define GLOBAL_CHM                0 // [0,1] 0: spreadCycle, 1: Constant off time with fast decay time. | ||||
|     //#define GLOBAL_RNDTF              0 | ||||
|     //#define GLOBAL_DISFDCC            0 | ||||
|     //#define GLOBAL_FD                 0 | ||||
|     //#define GLOBAL_HEND               0 | ||||
|     //#define GLOBAL_HSTRT              0 | ||||
|     #define GLOBAL_TOFF              10 // 0: driver disable, 1: use only with TBL>2, 2-15: off time setting during slow decay phase | ||||
|   //#define E3_MAX_CURRENT  1000 | ||||
|   //#define E3_MICROSTEPS     16 | ||||
|   //#define E3_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_SFILT              0 | ||||
|     //#define GLOBAL_SGT                0 | ||||
|     //#define GLOBAL_SEIMIN             0 | ||||
|     //#define GLOBAL_SEDN               0 | ||||
|     //#define GLOBAL_SEMAX              0 | ||||
|     //#define GLOBAL_SEUP               0 | ||||
|     //#define GLOBAL_SEMIN              0 | ||||
|   /** | ||||
|    * You can set your own advanced settings by filling in predefined functions. | ||||
|    * A list of available functions can be found on the library github page | ||||
|    * https://github.com/teemuatlut/TMC2130Stepper | ||||
|    * | ||||
|    * Example: | ||||
|    * #define TMC2130_ADV() { \ | ||||
|    *   stepperX.diag0_temp_prewarn(1); \ | ||||
|    *   stepperX.interpolate(0); \ | ||||
|    * } | ||||
|    */ | ||||
|   #define  TMC2130_ADV() {  } | ||||
|  | ||||
|     //#define GLOBAL_DC_TIME            0 | ||||
|     //#define GLOBAL_DC_SG              0 | ||||
|  | ||||
|     //#define GLOBAL_FREEWHEEL          0 | ||||
|     //#define GLOBAL_PWM_SYMMETRIC      0 | ||||
|     //#define GLOBAL_PWM_AUTOSCALE      0 | ||||
|     //#define GLOBAL_PWM_FREQ           0 | ||||
|     //#define GLOBAL_PWM_GRAD           0 | ||||
|     //#define GLOBAL_PWM_AMPL           0 | ||||
|  | ||||
|     //#define GLOBAL_ENCM_CTRL          0 | ||||
|  | ||||
|   #else | ||||
|  | ||||
|     #define X_IHOLD          31 // [0-31] 0: min, 31: max | ||||
|     #define X_IRUN           31 // [0-31] 0: min, 31: max | ||||
|     #define X_IHOLDDELAY     15 // [0-15] 0: min, 15: about 4 seconds | ||||
|     #define X_I_SCALE_ANALOG  1 // 0: Normal, 1: AIN | ||||
|     #define X_MRES           16 // number of microsteps | ||||
|     #define X_TBL             1 // 0-3: set comparator blank time to 16, 24, 36 or 54 clocks, 1 or 2 is recommended | ||||
|     #define X_TOFF            8 // 0: driver disable, 1: use only with TBL>2, 2-15: off time setting during slow decay phase | ||||
|  | ||||
|     #define X2_IHOLD         31 | ||||
|     #define X2_IRUN          31 | ||||
|     #define X2_IHOLDDELAY    15 | ||||
|     #define X2_I_SCALE_ANALOG 1 | ||||
|     #define X2_MRES          16 | ||||
|     #define X2_TBL            1 | ||||
|     #define X2_TOFF           8 | ||||
|  | ||||
|     #define Y_IHOLD          31 | ||||
|     #define Y_IRUN           31 | ||||
|     #define Y_IHOLDDELAY     15 | ||||
|     #define Y_I_SCALE_ANALOG  1 | ||||
|     #define Y_MRES           16 | ||||
|     #define Y_TBL             1 | ||||
|     #define Y_TOFF            8 | ||||
|  | ||||
|     #define Y2_IHOLD         31 | ||||
|     #define Y2_IRUN          31 | ||||
|     #define Y2_IHOLDDELAY    15 | ||||
|     #define Y2_I_SCALE_ANALOG 1 | ||||
|     #define Y2_MRES          16 | ||||
|     #define Y2_TBL            1 | ||||
|     #define Y2_TOFF           8 | ||||
|  | ||||
|     #define Z_IHOLD          31 | ||||
|     #define Z_IRUN           31 | ||||
|     #define Z_IHOLDDELAY     15 | ||||
|     #define Z_I_SCALE_ANALOG  1 | ||||
|     #define Z_MRES           16 | ||||
|     #define Z_TBL             1 | ||||
|     #define Z_TOFF            8 | ||||
|  | ||||
|     #define Z2_IHOLD         31 | ||||
|     #define Z2_IRUN          31 | ||||
|     #define Z2_IHOLDDELAY    15 | ||||
|     #define Z2_I_SCALE_ANALOG 1 | ||||
|     #define Z2_MRES          16 | ||||
|     #define Z2_TBL            1 | ||||
|     #define Z2_TOFF           8 | ||||
|  | ||||
|     #define E0_IHOLD         31 | ||||
|     #define E0_IRUN          31 | ||||
|     #define E0_IHOLDDELAY    15 | ||||
|     #define E0_I_SCALE_ANALOG 1 | ||||
|     #define E0_MRES          16 | ||||
|     #define E0_TBL            1 | ||||
|     #define E0_TOFF           8 | ||||
|  | ||||
|     #define E1_IHOLD         31 | ||||
|     #define E1_IRUN          31 | ||||
|     #define E1_IHOLDDELAY    15 | ||||
|     #define E1_I_SCALE_ANALOG 1 | ||||
|     #define E1_MRES          16 | ||||
|     #define E1_TBL            1 | ||||
|     #define E1_TOFF           8 | ||||
|  | ||||
|     #define E2_IHOLD         31 | ||||
|     #define E2_IRUN          31 | ||||
|     #define E2_IHOLDDELAY    15 | ||||
|     #define E2_I_SCALE_ANALOG 1 | ||||
|     #define E2_MRES          16 | ||||
|     #define E2_TBL            1 | ||||
|     #define E2_TOFF           8 | ||||
|  | ||||
|     #define E3_IHOLD         31 | ||||
|     #define E3_IRUN          31 | ||||
|     #define E3_IHOLDDELAY    15 | ||||
|     #define E3_I_SCALE_ANALOG 1 | ||||
|     #define E3_MRES          16 | ||||
|     #define E3_TBL            1 | ||||
|     #define E3_TOFF           8 | ||||
|  | ||||
|   #endif // TMC2130_ADVANCED_CONFIGURATION | ||||
|  | ||||
| #endif // HAVE_TMC2130DRIVER | ||||
| #endif // ENABLED(HAVE_TMC2130) | ||||
|  | ||||
| // @section L6470 | ||||
|  | ||||
|   | ||||
| @@ -771,14 +771,15 @@ | ||||
|                                                      // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME. | ||||
| #endif | ||||
|  | ||||
| /******************************************************************************\ | ||||
|  * enable this section if you have TMC26X motor drivers. | ||||
|  * you need to import the TMC26XStepper library into the Arduino IDE for this | ||||
|  ******************************************************************************/ | ||||
|  | ||||
| // @section tmc | ||||
|  | ||||
| /** | ||||
|  * Enable this section if you have TMC26X motor drivers. | ||||
|  * You will need to import the TMC26XStepper library into the Arduino IDE for this | ||||
|  * (https://github.com/trinamic/TMC26XStepper.git) | ||||
|  */ | ||||
| //#define HAVE_TMCDRIVER | ||||
|  | ||||
| #if ENABLED(HAVE_TMCDRIVER) | ||||
|  | ||||
|   //#define X_IS_TMC | ||||
| @@ -836,23 +837,31 @@ | ||||
|  | ||||
| // @section TMC2130 | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * Enable this for SilentStepStick Trinamic TMC2130 SPI-configurable stepper drivers. | ||||
|  * | ||||
|  * To use TMC2130 drivers in SPI mode, you'll also need the TMC2130 Arduino library | ||||
|  * (https://github.com/makertum/Trinamic_TMC2130). | ||||
|  * You'll also need the TMC2130Stepper Arduino library | ||||
|  * (https://github.com/teemuatlut/TMC2130Stepper). | ||||
|  * | ||||
|  * To use TMC2130 stepper drivers in SPI mode connect your SPI2130 pins to | ||||
|  * the hardware SPI interface on your board and define the required CS pins | ||||
|  * in your `pins_MYBOARD.h` file. (e.g., RAMPS 1.4 uses AUX3 pins `X_CS_PIN 53`, `Y_CS_PIN 49`, etc.). | ||||
|  */ | ||||
| //#define HAVE_TMC2130 | ||||
|  | ||||
| //#define HAVE_TMC2130DRIVER | ||||
| #if ENABLED(HAVE_TMC2130) | ||||
|   #define STEALTHCHOP | ||||
|  | ||||
| #if ENABLED(HAVE_TMC2130DRIVER) | ||||
|  | ||||
|   //#define TMC2130_ADVANCED_CONFIGURATION | ||||
|   /** | ||||
|    * Let Marlin automatically control stepper current. | ||||
|    * This is still an experimental feature. | ||||
|    * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, | ||||
|    * then decrease current by CURRENT_STEP until temperature prewarn is cleared. | ||||
|    * Adjusting starts from X/Y/Z/E_MAX_CURRENT but will not increase over AUTO_ADJUST_MAX | ||||
|    */  | ||||
|   //#define AUTOMATIC_CURRENT_CONTROL | ||||
|   #define CURRENT_STEP          50  // [mA] | ||||
|   #define AUTO_ADJUST_MAX     1300  // [mA], 1300mA_rms = 1840mA_peak | ||||
|  | ||||
|   // CHOOSE YOUR MOTORS HERE, THIS IS MANDATORY | ||||
|   //#define X_IS_TMC2130 | ||||
| @@ -866,180 +875,68 @@ | ||||
|   //#define E2_IS_TMC2130 | ||||
|   //#define E3_IS_TMC2130 | ||||
|  | ||||
|   #if ENABLED(TMC2130_ADVANCED_CONFIGURATION) | ||||
|   /** | ||||
|    * Stepper driver settings | ||||
|    */ | ||||
|  | ||||
|     // If you've enabled TMC2130_ADVANCED_CONFIGURATION, define global settings below. | ||||
|     // Enabled settings will be automatically applied to all axes specified above. | ||||
|     // | ||||
|     // Please read the TMC2130 datasheet: | ||||
|     // http://www.trinamic.com/_articles/products/integrated-circuits/tmc2130/_datasheet/TMC2130_datasheet.pdf | ||||
|     // All settings here have the same (sometimes cryptic) names as in the datasheet. | ||||
|     // | ||||
|     // The following, uncommented settings are only suggestion. | ||||
|   #define R_SENSE           0.11  // R_sense resistor for SilentStepStick2130 | ||||
|   #define HOLD_MULTIPLIER    0.5  // Scales down the holding current from run current | ||||
|   #define INTERPOLATE          1  // Interpolate X/Y/Z_MICROSTEPS to 256 | ||||
|  | ||||
|     /* GENERAL CONFIGURATION */ | ||||
|   #define X_MAX_CURRENT     1000  // rms current in mA | ||||
|   #define X_MICROSTEPS        16  // FULLSTEP..256 | ||||
|   #define X_CHIP_SELECT       40  // Pin | ||||
|  | ||||
|     //#define GLOBAL_EN_PWM_MODE        0 | ||||
|     #define GLOBAL_I_SCALE_ANALOG     1 // [0,1] 0: Normal, 1: AIN | ||||
|     //#define GLOBAL_INTERNAL_RSENSE    0 // [0,1] 0: Normal, 1: Internal | ||||
|     #define GLOBAL_EN_PWM_MODE        0 // [0,1] 0: Normal, 1: stealthChop with velocity threshold | ||||
|     //#define GLOBAL_ENC_COMMUTATION    0 // [0,1] | ||||
|     #define GLOBAL_SHAFT              0 // [0,1] 0: normal, 1: invert | ||||
|     //#define GLOBAL_DIAG0_ERROR        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_OTPW         0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_STALL        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_STALL        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_INDEX        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_ONSTATE      0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_ONSTATE      0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_INT_PUSHPULL 0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_INT_PUSHPULL 0 // [0,1] | ||||
|     //#define GLOBAL_SMALL_HYSTERESIS   0 // [0,1] | ||||
|     //#define GLOBAL_STOP_ENABLE        0 // [0,1] | ||||
|     //#define GLOBAL_DIRECT_MODE        0 // [0,1] | ||||
|   #define Y_MAX_CURRENT     1000 | ||||
|   #define Y_MICROSTEPS        16 | ||||
|   #define Y_CHIP_SELECT       42 | ||||
|  | ||||
|     /* VELOCITY-DEPENDENT DRIVE FEATURES */ | ||||
|   #define Z_MAX_CURRENT     1000 | ||||
|   #define Z_MICROSTEPS        16 | ||||
|   #define Z_CHIP_SELECT       65 | ||||
|  | ||||
|     #define GLOBAL_IHOLD             22 // [0-31] 0: min, 31: max | ||||
|     #define GLOBAL_IRUN              31 // [0-31] 0: min, 31: max | ||||
|     #define GLOBAL_IHOLDDELAY        15 // [0-15] 0: min, 15: about 4 seconds | ||||
|     //#define GLOBAL_TPOWERDOWN         0 // [0-255] 0: min, 255: about 4 seconds | ||||
|     //#define GLOBAL_TPWMTHRS           0 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|     //#define GLOBAL_TCOOLTHRS          0 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|     #define GLOBAL_THIGH             10 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|   //#define X2_MAX_CURRENT  1000 | ||||
|   //#define X2_MICROSTEPS     16 | ||||
|   //#define X2_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* SPI MODE CONFIGURATION */ | ||||
|   //#define Y2_MAX_CURRENT  1000 | ||||
|   //#define Y2_MICROSTEPS     16 | ||||
|   //#define Y2_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_XDIRECT            0 | ||||
|   //#define Z2_MAX_CURRENT  1000 | ||||
|   //#define Z2_MICROSTEPS     16 | ||||
|   //#define Z2_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* DCSTEP MINIMUM VELOCITY */ | ||||
|   //#define E0_MAX_CURRENT  1000 | ||||
|   //#define E0_MICROSTEPS     16 | ||||
|   //#define E0_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_VDCMIN             0 | ||||
|   //#define E1_MAX_CURRENT  1000 | ||||
|   //#define E1_MICROSTEPS     16 | ||||
|   //#define E1_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* MOTOR DRIVER CONFIGURATION*/ | ||||
|   //#define E2_MAX_CURRENT  1000 | ||||
|   //#define E2_MICROSTEPS     16 | ||||
|   //#define E2_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_DEDGE              0 | ||||
|     //#define GLOBAL_DISS2G             0 | ||||
|     #define GLOBAL_INTPOL             1 // 0: off 1: 256 microstep interpolation | ||||
|     #define GLOBAL_MRES              16 // number of microsteps | ||||
|     #define GLOBAL_SYNC               1 // [0-15] | ||||
|     #define GLOBAL_VHIGHCHM           1 // [0,1] 0: normal, 1: high velocity stepper mode | ||||
|     #define GLOBAL_VHIGHFS            0 // [0,1] 0: normal, 1: switch to full steps for high velocities | ||||
|     // #define GLOBAL_VSENSE            0 // [0,1] 0: normal, 1: high sensitivity (not recommended) | ||||
|     #define GLOBAL_TBL                1 // 0-3: set comparator blank time to 16, 24, 36 or 54 clocks, 1 or 2 is recommended | ||||
|     #define GLOBAL_CHM                0 // [0,1] 0: spreadCycle, 1: Constant off time with fast decay time. | ||||
|     //#define GLOBAL_RNDTF              0 | ||||
|     //#define GLOBAL_DISFDCC            0 | ||||
|     //#define GLOBAL_FD                 0 | ||||
|     //#define GLOBAL_HEND               0 | ||||
|     //#define GLOBAL_HSTRT              0 | ||||
|     #define GLOBAL_TOFF              10 // 0: driver disable, 1: use only with TBL>2, 2-15: off time setting during slow decay phase | ||||
|   //#define E3_MAX_CURRENT  1000 | ||||
|   //#define E3_MICROSTEPS     16 | ||||
|   //#define E3_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_SFILT              0 | ||||
|     //#define GLOBAL_SGT                0 | ||||
|     //#define GLOBAL_SEIMIN             0 | ||||
|     //#define GLOBAL_SEDN               0 | ||||
|     //#define GLOBAL_SEMAX              0 | ||||
|     //#define GLOBAL_SEUP               0 | ||||
|     //#define GLOBAL_SEMIN              0 | ||||
|   /** | ||||
|    * You can set your own advanced settings by filling in predefined functions. | ||||
|    * A list of available functions can be found on the library github page | ||||
|    * https://github.com/teemuatlut/TMC2130Stepper | ||||
|    * | ||||
|    * Example: | ||||
|    * #define TMC2130_ADV() { \ | ||||
|    *   stepperX.diag0_temp_prewarn(1); \ | ||||
|    *   stepperX.interpolate(0); \ | ||||
|    * } | ||||
|    */ | ||||
|   #define  TMC2130_ADV() {  } | ||||
|  | ||||
|     //#define GLOBAL_DC_TIME            0 | ||||
|     //#define GLOBAL_DC_SG              0 | ||||
|  | ||||
|     //#define GLOBAL_FREEWHEEL          0 | ||||
|     //#define GLOBAL_PWM_SYMMETRIC      0 | ||||
|     //#define GLOBAL_PWM_AUTOSCALE      0 | ||||
|     //#define GLOBAL_PWM_FREQ           0 | ||||
|     //#define GLOBAL_PWM_GRAD           0 | ||||
|     //#define GLOBAL_PWM_AMPL           0 | ||||
|  | ||||
|     //#define GLOBAL_ENCM_CTRL          0 | ||||
|  | ||||
|   #else | ||||
|  | ||||
|     #define X_IHOLD          31 // [0-31] 0: min, 31: max | ||||
|     #define X_IRUN           31 // [0-31] 0: min, 31: max | ||||
|     #define X_IHOLDDELAY     15 // [0-15] 0: min, 15: about 4 seconds | ||||
|     #define X_I_SCALE_ANALOG  1 // 0: Normal, 1: AIN | ||||
|     #define X_MRES           16 // number of microsteps | ||||
|     #define X_TBL             1 // 0-3: set comparator blank time to 16, 24, 36 or 54 clocks, 1 or 2 is recommended | ||||
|     #define X_TOFF            8 // 0: driver disable, 1: use only with TBL>2, 2-15: off time setting during slow decay phase | ||||
|  | ||||
|     #define X2_IHOLD         31 | ||||
|     #define X2_IRUN          31 | ||||
|     #define X2_IHOLDDELAY    15 | ||||
|     #define X2_I_SCALE_ANALOG 1 | ||||
|     #define X2_MRES          16 | ||||
|     #define X2_TBL            1 | ||||
|     #define X2_TOFF           8 | ||||
|  | ||||
|     #define Y_IHOLD          31 | ||||
|     #define Y_IRUN           31 | ||||
|     #define Y_IHOLDDELAY     15 | ||||
|     #define Y_I_SCALE_ANALOG  1 | ||||
|     #define Y_MRES           16 | ||||
|     #define Y_TBL             1 | ||||
|     #define Y_TOFF            8 | ||||
|  | ||||
|     #define Y2_IHOLD         31 | ||||
|     #define Y2_IRUN          31 | ||||
|     #define Y2_IHOLDDELAY    15 | ||||
|     #define Y2_I_SCALE_ANALOG 1 | ||||
|     #define Y2_MRES          16 | ||||
|     #define Y2_TBL            1 | ||||
|     #define Y2_TOFF           8 | ||||
|  | ||||
|     #define Z_IHOLD          31 | ||||
|     #define Z_IRUN           31 | ||||
|     #define Z_IHOLDDELAY     15 | ||||
|     #define Z_I_SCALE_ANALOG  1 | ||||
|     #define Z_MRES           16 | ||||
|     #define Z_TBL             1 | ||||
|     #define Z_TOFF            8 | ||||
|  | ||||
|     #define Z2_IHOLD         31 | ||||
|     #define Z2_IRUN          31 | ||||
|     #define Z2_IHOLDDELAY    15 | ||||
|     #define Z2_I_SCALE_ANALOG 1 | ||||
|     #define Z2_MRES          16 | ||||
|     #define Z2_TBL            1 | ||||
|     #define Z2_TOFF           8 | ||||
|  | ||||
|     #define E0_IHOLD         31 | ||||
|     #define E0_IRUN          31 | ||||
|     #define E0_IHOLDDELAY    15 | ||||
|     #define E0_I_SCALE_ANALOG 1 | ||||
|     #define E0_MRES          16 | ||||
|     #define E0_TBL            1 | ||||
|     #define E0_TOFF           8 | ||||
|  | ||||
|     #define E1_IHOLD         31 | ||||
|     #define E1_IRUN          31 | ||||
|     #define E1_IHOLDDELAY    15 | ||||
|     #define E1_I_SCALE_ANALOG 1 | ||||
|     #define E1_MRES          16 | ||||
|     #define E1_TBL            1 | ||||
|     #define E1_TOFF           8 | ||||
|  | ||||
|     #define E2_IHOLD         31 | ||||
|     #define E2_IRUN          31 | ||||
|     #define E2_IHOLDDELAY    15 | ||||
|     #define E2_I_SCALE_ANALOG 1 | ||||
|     #define E2_MRES          16 | ||||
|     #define E2_TBL            1 | ||||
|     #define E2_TOFF           8 | ||||
|  | ||||
|     #define E3_IHOLD         31 | ||||
|     #define E3_IRUN          31 | ||||
|     #define E3_IHOLDDELAY    15 | ||||
|     #define E3_I_SCALE_ANALOG 1 | ||||
|     #define E3_MRES          16 | ||||
|     #define E3_TBL            1 | ||||
|     #define E3_TOFF           8 | ||||
|  | ||||
|   #endif // TMC2130_ADVANCED_CONFIGURATION | ||||
|  | ||||
| #endif // HAVE_TMC2130DRIVER | ||||
| #endif // ENABLED(HAVE_TMC2130) | ||||
|  | ||||
| // @section L6470 | ||||
|  | ||||
|   | ||||
| @@ -758,14 +758,15 @@ | ||||
|                                                      // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME. | ||||
| #endif | ||||
|  | ||||
| /******************************************************************************\ | ||||
|  * enable this section if you have TMC26X motor drivers. | ||||
|  * you need to import the TMC26XStepper library into the Arduino IDE for this | ||||
|  ******************************************************************************/ | ||||
|  | ||||
| // @section tmc | ||||
|  | ||||
| /** | ||||
|  * Enable this section if you have TMC26X motor drivers. | ||||
|  * You will need to import the TMC26XStepper library into the Arduino IDE for this | ||||
|  * (https://github.com/trinamic/TMC26XStepper.git) | ||||
|  */ | ||||
| //#define HAVE_TMCDRIVER | ||||
|  | ||||
| #if ENABLED(HAVE_TMCDRIVER) | ||||
|  | ||||
|   //#define X_IS_TMC | ||||
| @@ -823,23 +824,31 @@ | ||||
|  | ||||
| // @section TMC2130 | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * Enable this for SilentStepStick Trinamic TMC2130 SPI-configurable stepper drivers. | ||||
|  * | ||||
|  * To use TMC2130 drivers in SPI mode, you'll also need the TMC2130 Arduino library | ||||
|  * (https://github.com/makertum/Trinamic_TMC2130). | ||||
|  * You'll also need the TMC2130Stepper Arduino library | ||||
|  * (https://github.com/teemuatlut/TMC2130Stepper). | ||||
|  * | ||||
|  * To use TMC2130 stepper drivers in SPI mode connect your SPI2130 pins to | ||||
|  * the hardware SPI interface on your board and define the required CS pins | ||||
|  * in your `pins_MYBOARD.h` file. (e.g., RAMPS 1.4 uses AUX3 pins `X_CS_PIN 53`, `Y_CS_PIN 49`, etc.). | ||||
|  */ | ||||
| //#define HAVE_TMC2130 | ||||
|  | ||||
| //#define HAVE_TMC2130DRIVER | ||||
| #if ENABLED(HAVE_TMC2130) | ||||
|   #define STEALTHCHOP | ||||
|  | ||||
| #if ENABLED(HAVE_TMC2130DRIVER) | ||||
|  | ||||
|   //#define TMC2130_ADVANCED_CONFIGURATION | ||||
|   /** | ||||
|    * Let Marlin automatically control stepper current. | ||||
|    * This is still an experimental feature. | ||||
|    * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, | ||||
|    * then decrease current by CURRENT_STEP until temperature prewarn is cleared. | ||||
|    * Adjusting starts from X/Y/Z/E_MAX_CURRENT but will not increase over AUTO_ADJUST_MAX | ||||
|    */  | ||||
|   //#define AUTOMATIC_CURRENT_CONTROL | ||||
|   #define CURRENT_STEP          50  // [mA] | ||||
|   #define AUTO_ADJUST_MAX     1300  // [mA], 1300mA_rms = 1840mA_peak | ||||
|  | ||||
|   // CHOOSE YOUR MOTORS HERE, THIS IS MANDATORY | ||||
|   //#define X_IS_TMC2130 | ||||
| @@ -853,180 +862,68 @@ | ||||
|   //#define E2_IS_TMC2130 | ||||
|   //#define E3_IS_TMC2130 | ||||
|  | ||||
|   #if ENABLED(TMC2130_ADVANCED_CONFIGURATION) | ||||
|   /** | ||||
|    * Stepper driver settings | ||||
|    */ | ||||
|  | ||||
|     // If you've enabled TMC2130_ADVANCED_CONFIGURATION, define global settings below. | ||||
|     // Enabled settings will be automatically applied to all axes specified above. | ||||
|     // | ||||
|     // Please read the TMC2130 datasheet: | ||||
|     // http://www.trinamic.com/_articles/products/integrated-circuits/tmc2130/_datasheet/TMC2130_datasheet.pdf | ||||
|     // All settings here have the same (sometimes cryptic) names as in the datasheet. | ||||
|     // | ||||
|     // The following, uncommented settings are only suggestion. | ||||
|   #define R_SENSE           0.11  // R_sense resistor for SilentStepStick2130 | ||||
|   #define HOLD_MULTIPLIER    0.5  // Scales down the holding current from run current | ||||
|   #define INTERPOLATE          1  // Interpolate X/Y/Z_MICROSTEPS to 256 | ||||
|  | ||||
|     /* GENERAL CONFIGURATION */ | ||||
|   #define X_MAX_CURRENT     1000  // rms current in mA | ||||
|   #define X_MICROSTEPS        16  // FULLSTEP..256 | ||||
|   #define X_CHIP_SELECT       40  // Pin | ||||
|  | ||||
|     //#define GLOBAL_EN_PWM_MODE        0 | ||||
|     #define GLOBAL_I_SCALE_ANALOG     1 // [0,1] 0: Normal, 1: AIN | ||||
|     //#define GLOBAL_INTERNAL_RSENSE    0 // [0,1] 0: Normal, 1: Internal | ||||
|     #define GLOBAL_EN_PWM_MODE        0 // [0,1] 0: Normal, 1: stealthChop with velocity threshold | ||||
|     //#define GLOBAL_ENC_COMMUTATION    0 // [0,1] | ||||
|     #define GLOBAL_SHAFT              0 // [0,1] 0: normal, 1: invert | ||||
|     //#define GLOBAL_DIAG0_ERROR        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_OTPW         0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_STALL        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_STALL        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_INDEX        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_ONSTATE      0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_ONSTATE      0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_INT_PUSHPULL 0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_INT_PUSHPULL 0 // [0,1] | ||||
|     //#define GLOBAL_SMALL_HYSTERESIS   0 // [0,1] | ||||
|     //#define GLOBAL_STOP_ENABLE        0 // [0,1] | ||||
|     //#define GLOBAL_DIRECT_MODE        0 // [0,1] | ||||
|   #define Y_MAX_CURRENT     1000 | ||||
|   #define Y_MICROSTEPS        16 | ||||
|   #define Y_CHIP_SELECT       42 | ||||
|  | ||||
|     /* VELOCITY-DEPENDENT DRIVE FEATURES */ | ||||
|   #define Z_MAX_CURRENT     1000 | ||||
|   #define Z_MICROSTEPS        16 | ||||
|   #define Z_CHIP_SELECT       65 | ||||
|  | ||||
|     #define GLOBAL_IHOLD             22 // [0-31] 0: min, 31: max | ||||
|     #define GLOBAL_IRUN              31 // [0-31] 0: min, 31: max | ||||
|     #define GLOBAL_IHOLDDELAY        15 // [0-15] 0: min, 15: about 4 seconds | ||||
|     //#define GLOBAL_TPOWERDOWN         0 // [0-255] 0: min, 255: about 4 seconds | ||||
|     //#define GLOBAL_TPWMTHRS           0 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|     //#define GLOBAL_TCOOLTHRS          0 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|     #define GLOBAL_THIGH             10 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|   //#define X2_MAX_CURRENT  1000 | ||||
|   //#define X2_MICROSTEPS     16 | ||||
|   //#define X2_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* SPI MODE CONFIGURATION */ | ||||
|   //#define Y2_MAX_CURRENT  1000 | ||||
|   //#define Y2_MICROSTEPS     16 | ||||
|   //#define Y2_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_XDIRECT            0 | ||||
|   //#define Z2_MAX_CURRENT  1000 | ||||
|   //#define Z2_MICROSTEPS     16 | ||||
|   //#define Z2_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* DCSTEP MINIMUM VELOCITY */ | ||||
|   //#define E0_MAX_CURRENT  1000 | ||||
|   //#define E0_MICROSTEPS     16 | ||||
|   //#define E0_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_VDCMIN             0 | ||||
|   //#define E1_MAX_CURRENT  1000 | ||||
|   //#define E1_MICROSTEPS     16 | ||||
|   //#define E1_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* MOTOR DRIVER CONFIGURATION*/ | ||||
|   //#define E2_MAX_CURRENT  1000 | ||||
|   //#define E2_MICROSTEPS     16 | ||||
|   //#define E2_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_DEDGE              0 | ||||
|     //#define GLOBAL_DISS2G             0 | ||||
|     #define GLOBAL_INTPOL             1 // 0: off 1: 256 microstep interpolation | ||||
|     #define GLOBAL_MRES              16 // number of microsteps | ||||
|     #define GLOBAL_SYNC               1 // [0-15] | ||||
|     #define GLOBAL_VHIGHCHM           1 // [0,1] 0: normal, 1: high velocity stepper mode | ||||
|     #define GLOBAL_VHIGHFS            0 // [0,1] 0: normal, 1: switch to full steps for high velocities | ||||
|     // #define GLOBAL_VSENSE            0 // [0,1] 0: normal, 1: high sensitivity (not recommended) | ||||
|     #define GLOBAL_TBL                1 // 0-3: set comparator blank time to 16, 24, 36 or 54 clocks, 1 or 2 is recommended | ||||
|     #define GLOBAL_CHM                0 // [0,1] 0: spreadCycle, 1: Constant off time with fast decay time. | ||||
|     //#define GLOBAL_RNDTF              0 | ||||
|     //#define GLOBAL_DISFDCC            0 | ||||
|     //#define GLOBAL_FD                 0 | ||||
|     //#define GLOBAL_HEND               0 | ||||
|     //#define GLOBAL_HSTRT              0 | ||||
|     #define GLOBAL_TOFF              10 // 0: driver disable, 1: use only with TBL>2, 2-15: off time setting during slow decay phase | ||||
|   //#define E3_MAX_CURRENT  1000 | ||||
|   //#define E3_MICROSTEPS     16 | ||||
|   //#define E3_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_SFILT              0 | ||||
|     //#define GLOBAL_SGT                0 | ||||
|     //#define GLOBAL_SEIMIN             0 | ||||
|     //#define GLOBAL_SEDN               0 | ||||
|     //#define GLOBAL_SEMAX              0 | ||||
|     //#define GLOBAL_SEUP               0 | ||||
|     //#define GLOBAL_SEMIN              0 | ||||
|   /** | ||||
|    * You can set your own advanced settings by filling in predefined functions. | ||||
|    * A list of available functions can be found on the library github page | ||||
|    * https://github.com/teemuatlut/TMC2130Stepper | ||||
|    * | ||||
|    * Example: | ||||
|    * #define TMC2130_ADV() { \ | ||||
|    *   stepperX.diag0_temp_prewarn(1); \ | ||||
|    *   stepperX.interpolate(0); \ | ||||
|    * } | ||||
|    */ | ||||
|   #define  TMC2130_ADV() {  } | ||||
|  | ||||
|     //#define GLOBAL_DC_TIME            0 | ||||
|     //#define GLOBAL_DC_SG              0 | ||||
|  | ||||
|     //#define GLOBAL_FREEWHEEL          0 | ||||
|     //#define GLOBAL_PWM_SYMMETRIC      0 | ||||
|     //#define GLOBAL_PWM_AUTOSCALE      0 | ||||
|     //#define GLOBAL_PWM_FREQ           0 | ||||
|     //#define GLOBAL_PWM_GRAD           0 | ||||
|     //#define GLOBAL_PWM_AMPL           0 | ||||
|  | ||||
|     //#define GLOBAL_ENCM_CTRL          0 | ||||
|  | ||||
|   #else | ||||
|  | ||||
|     #define X_IHOLD          31 // [0-31] 0: min, 31: max | ||||
|     #define X_IRUN           31 // [0-31] 0: min, 31: max | ||||
|     #define X_IHOLDDELAY     15 // [0-15] 0: min, 15: about 4 seconds | ||||
|     #define X_I_SCALE_ANALOG  1 // 0: Normal, 1: AIN | ||||
|     #define X_MRES           16 // number of microsteps | ||||
|     #define X_TBL             1 // 0-3: set comparator blank time to 16, 24, 36 or 54 clocks, 1 or 2 is recommended | ||||
|     #define X_TOFF            8 // 0: driver disable, 1: use only with TBL>2, 2-15: off time setting during slow decay phase | ||||
|  | ||||
|     #define X2_IHOLD         31 | ||||
|     #define X2_IRUN          31 | ||||
|     #define X2_IHOLDDELAY    15 | ||||
|     #define X2_I_SCALE_ANALOG 1 | ||||
|     #define X2_MRES          16 | ||||
|     #define X2_TBL            1 | ||||
|     #define X2_TOFF           8 | ||||
|  | ||||
|     #define Y_IHOLD          31 | ||||
|     #define Y_IRUN           31 | ||||
|     #define Y_IHOLDDELAY     15 | ||||
|     #define Y_I_SCALE_ANALOG  1 | ||||
|     #define Y_MRES           16 | ||||
|     #define Y_TBL             1 | ||||
|     #define Y_TOFF            8 | ||||
|  | ||||
|     #define Y2_IHOLD         31 | ||||
|     #define Y2_IRUN          31 | ||||
|     #define Y2_IHOLDDELAY    15 | ||||
|     #define Y2_I_SCALE_ANALOG 1 | ||||
|     #define Y2_MRES          16 | ||||
|     #define Y2_TBL            1 | ||||
|     #define Y2_TOFF           8 | ||||
|  | ||||
|     #define Z_IHOLD          31 | ||||
|     #define Z_IRUN           31 | ||||
|     #define Z_IHOLDDELAY     15 | ||||
|     #define Z_I_SCALE_ANALOG  1 | ||||
|     #define Z_MRES           16 | ||||
|     #define Z_TBL             1 | ||||
|     #define Z_TOFF            8 | ||||
|  | ||||
|     #define Z2_IHOLD         31 | ||||
|     #define Z2_IRUN          31 | ||||
|     #define Z2_IHOLDDELAY    15 | ||||
|     #define Z2_I_SCALE_ANALOG 1 | ||||
|     #define Z2_MRES          16 | ||||
|     #define Z2_TBL            1 | ||||
|     #define Z2_TOFF           8 | ||||
|  | ||||
|     #define E0_IHOLD         31 | ||||
|     #define E0_IRUN          31 | ||||
|     #define E0_IHOLDDELAY    15 | ||||
|     #define E0_I_SCALE_ANALOG 1 | ||||
|     #define E0_MRES          16 | ||||
|     #define E0_TBL            1 | ||||
|     #define E0_TOFF           8 | ||||
|  | ||||
|     #define E1_IHOLD         31 | ||||
|     #define E1_IRUN          31 | ||||
|     #define E1_IHOLDDELAY    15 | ||||
|     #define E1_I_SCALE_ANALOG 1 | ||||
|     #define E1_MRES          16 | ||||
|     #define E1_TBL            1 | ||||
|     #define E1_TOFF           8 | ||||
|  | ||||
|     #define E2_IHOLD         31 | ||||
|     #define E2_IRUN          31 | ||||
|     #define E2_IHOLDDELAY    15 | ||||
|     #define E2_I_SCALE_ANALOG 1 | ||||
|     #define E2_MRES          16 | ||||
|     #define E2_TBL            1 | ||||
|     #define E2_TOFF           8 | ||||
|  | ||||
|     #define E3_IHOLD         31 | ||||
|     #define E3_IRUN          31 | ||||
|     #define E3_IHOLDDELAY    15 | ||||
|     #define E3_I_SCALE_ANALOG 1 | ||||
|     #define E3_MRES          16 | ||||
|     #define E3_TBL            1 | ||||
|     #define E3_TOFF           8 | ||||
|  | ||||
|   #endif // TMC2130_ADVANCED_CONFIGURATION | ||||
|  | ||||
| #endif // HAVE_TMC2130DRIVER | ||||
| #endif // ENABLED(HAVE_TMC2130) | ||||
|  | ||||
| // @section L6470 | ||||
|  | ||||
|   | ||||
| @@ -758,14 +758,15 @@ | ||||
|                                                      // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME. | ||||
| #endif | ||||
|  | ||||
| /******************************************************************************\ | ||||
|  * enable this section if you have TMC26X motor drivers. | ||||
|  * you need to import the TMC26XStepper library into the Arduino IDE for this | ||||
|  ******************************************************************************/ | ||||
|  | ||||
| // @section tmc | ||||
|  | ||||
| /** | ||||
|  * Enable this section if you have TMC26X motor drivers. | ||||
|  * You will need to import the TMC26XStepper library into the Arduino IDE for this | ||||
|  * (https://github.com/trinamic/TMC26XStepper.git) | ||||
|  */ | ||||
| //#define HAVE_TMCDRIVER | ||||
|  | ||||
| #if ENABLED(HAVE_TMCDRIVER) | ||||
|  | ||||
|   //#define X_IS_TMC | ||||
| @@ -823,23 +824,31 @@ | ||||
|  | ||||
| // @section TMC2130 | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * Enable this for SilentStepStick Trinamic TMC2130 SPI-configurable stepper drivers. | ||||
|  * | ||||
|  * To use TMC2130 drivers in SPI mode, you'll also need the TMC2130 Arduino library | ||||
|  * (https://github.com/makertum/Trinamic_TMC2130). | ||||
|  * You'll also need the TMC2130Stepper Arduino library | ||||
|  * (https://github.com/teemuatlut/TMC2130Stepper). | ||||
|  * | ||||
|  * To use TMC2130 stepper drivers in SPI mode connect your SPI2130 pins to | ||||
|  * the hardware SPI interface on your board and define the required CS pins | ||||
|  * in your `pins_MYBOARD.h` file. (e.g., RAMPS 1.4 uses AUX3 pins `X_CS_PIN 53`, `Y_CS_PIN 49`, etc.). | ||||
|  */ | ||||
| //#define HAVE_TMC2130 | ||||
|  | ||||
| //#define HAVE_TMC2130DRIVER | ||||
| #if ENABLED(HAVE_TMC2130) | ||||
|   #define STEALTHCHOP | ||||
|  | ||||
| #if ENABLED(HAVE_TMC2130DRIVER) | ||||
|  | ||||
|   //#define TMC2130_ADVANCED_CONFIGURATION | ||||
|   /** | ||||
|    * Let Marlin automatically control stepper current. | ||||
|    * This is still an experimental feature. | ||||
|    * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, | ||||
|    * then decrease current by CURRENT_STEP until temperature prewarn is cleared. | ||||
|    * Adjusting starts from X/Y/Z/E_MAX_CURRENT but will not increase over AUTO_ADJUST_MAX | ||||
|    */  | ||||
|   //#define AUTOMATIC_CURRENT_CONTROL | ||||
|   #define CURRENT_STEP          50  // [mA] | ||||
|   #define AUTO_ADJUST_MAX     1300  // [mA], 1300mA_rms = 1840mA_peak | ||||
|  | ||||
|   // CHOOSE YOUR MOTORS HERE, THIS IS MANDATORY | ||||
|   //#define X_IS_TMC2130 | ||||
| @@ -853,180 +862,68 @@ | ||||
|   //#define E2_IS_TMC2130 | ||||
|   //#define E3_IS_TMC2130 | ||||
|  | ||||
|   #if ENABLED(TMC2130_ADVANCED_CONFIGURATION) | ||||
|   /** | ||||
|    * Stepper driver settings | ||||
|    */ | ||||
|  | ||||
|     // If you've enabled TMC2130_ADVANCED_CONFIGURATION, define global settings below. | ||||
|     // Enabled settings will be automatically applied to all axes specified above. | ||||
|     // | ||||
|     // Please read the TMC2130 datasheet: | ||||
|     // http://www.trinamic.com/_articles/products/integrated-circuits/tmc2130/_datasheet/TMC2130_datasheet.pdf | ||||
|     // All settings here have the same (sometimes cryptic) names as in the datasheet. | ||||
|     // | ||||
|     // The following, uncommented settings are only suggestion. | ||||
|   #define R_SENSE           0.11  // R_sense resistor for SilentStepStick2130 | ||||
|   #define HOLD_MULTIPLIER    0.5  // Scales down the holding current from run current | ||||
|   #define INTERPOLATE          1  // Interpolate X/Y/Z_MICROSTEPS to 256 | ||||
|  | ||||
|     /* GENERAL CONFIGURATION */ | ||||
|   #define X_MAX_CURRENT     1000  // rms current in mA | ||||
|   #define X_MICROSTEPS        16  // FULLSTEP..256 | ||||
|   #define X_CHIP_SELECT       40  // Pin | ||||
|  | ||||
|     //#define GLOBAL_EN_PWM_MODE        0 | ||||
|     #define GLOBAL_I_SCALE_ANALOG     1 // [0,1] 0: Normal, 1: AIN | ||||
|     //#define GLOBAL_INTERNAL_RSENSE    0 // [0,1] 0: Normal, 1: Internal | ||||
|     #define GLOBAL_EN_PWM_MODE        0 // [0,1] 0: Normal, 1: stealthChop with velocity threshold | ||||
|     //#define GLOBAL_ENC_COMMUTATION    0 // [0,1] | ||||
|     #define GLOBAL_SHAFT              0 // [0,1] 0: normal, 1: invert | ||||
|     //#define GLOBAL_DIAG0_ERROR        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_OTPW         0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_STALL        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_STALL        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_INDEX        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_ONSTATE      0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_ONSTATE      0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_INT_PUSHPULL 0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_INT_PUSHPULL 0 // [0,1] | ||||
|     //#define GLOBAL_SMALL_HYSTERESIS   0 // [0,1] | ||||
|     //#define GLOBAL_STOP_ENABLE        0 // [0,1] | ||||
|     //#define GLOBAL_DIRECT_MODE        0 // [0,1] | ||||
|   #define Y_MAX_CURRENT     1000 | ||||
|   #define Y_MICROSTEPS        16 | ||||
|   #define Y_CHIP_SELECT       42 | ||||
|  | ||||
|     /* VELOCITY-DEPENDENT DRIVE FEATURES */ | ||||
|   #define Z_MAX_CURRENT     1000 | ||||
|   #define Z_MICROSTEPS        16 | ||||
|   #define Z_CHIP_SELECT       65 | ||||
|  | ||||
|     #define GLOBAL_IHOLD             22 // [0-31] 0: min, 31: max | ||||
|     #define GLOBAL_IRUN              31 // [0-31] 0: min, 31: max | ||||
|     #define GLOBAL_IHOLDDELAY        15 // [0-15] 0: min, 15: about 4 seconds | ||||
|     //#define GLOBAL_TPOWERDOWN         0 // [0-255] 0: min, 255: about 4 seconds | ||||
|     //#define GLOBAL_TPWMTHRS           0 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|     //#define GLOBAL_TCOOLTHRS          0 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|     #define GLOBAL_THIGH             10 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|   //#define X2_MAX_CURRENT  1000 | ||||
|   //#define X2_MICROSTEPS     16 | ||||
|   //#define X2_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* SPI MODE CONFIGURATION */ | ||||
|   //#define Y2_MAX_CURRENT  1000 | ||||
|   //#define Y2_MICROSTEPS     16 | ||||
|   //#define Y2_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_XDIRECT            0 | ||||
|   //#define Z2_MAX_CURRENT  1000 | ||||
|   //#define Z2_MICROSTEPS     16 | ||||
|   //#define Z2_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* DCSTEP MINIMUM VELOCITY */ | ||||
|   //#define E0_MAX_CURRENT  1000 | ||||
|   //#define E0_MICROSTEPS     16 | ||||
|   //#define E0_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_VDCMIN             0 | ||||
|   //#define E1_MAX_CURRENT  1000 | ||||
|   //#define E1_MICROSTEPS     16 | ||||
|   //#define E1_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* MOTOR DRIVER CONFIGURATION*/ | ||||
|   //#define E2_MAX_CURRENT  1000 | ||||
|   //#define E2_MICROSTEPS     16 | ||||
|   //#define E2_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_DEDGE              0 | ||||
|     //#define GLOBAL_DISS2G             0 | ||||
|     #define GLOBAL_INTPOL             1 // 0: off 1: 256 microstep interpolation | ||||
|     #define GLOBAL_MRES              16 // number of microsteps | ||||
|     #define GLOBAL_SYNC               1 // [0-15] | ||||
|     #define GLOBAL_VHIGHCHM           1 // [0,1] 0: normal, 1: high velocity stepper mode | ||||
|     #define GLOBAL_VHIGHFS            0 // [0,1] 0: normal, 1: switch to full steps for high velocities | ||||
|     // #define GLOBAL_VSENSE            0 // [0,1] 0: normal, 1: high sensitivity (not recommended) | ||||
|     #define GLOBAL_TBL                1 // 0-3: set comparator blank time to 16, 24, 36 or 54 clocks, 1 or 2 is recommended | ||||
|     #define GLOBAL_CHM                0 // [0,1] 0: spreadCycle, 1: Constant off time with fast decay time. | ||||
|     //#define GLOBAL_RNDTF              0 | ||||
|     //#define GLOBAL_DISFDCC            0 | ||||
|     //#define GLOBAL_FD                 0 | ||||
|     //#define GLOBAL_HEND               0 | ||||
|     //#define GLOBAL_HSTRT              0 | ||||
|     #define GLOBAL_TOFF              10 // 0: driver disable, 1: use only with TBL>2, 2-15: off time setting during slow decay phase | ||||
|   //#define E3_MAX_CURRENT  1000 | ||||
|   //#define E3_MICROSTEPS     16 | ||||
|   //#define E3_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_SFILT              0 | ||||
|     //#define GLOBAL_SGT                0 | ||||
|     //#define GLOBAL_SEIMIN             0 | ||||
|     //#define GLOBAL_SEDN               0 | ||||
|     //#define GLOBAL_SEMAX              0 | ||||
|     //#define GLOBAL_SEUP               0 | ||||
|     //#define GLOBAL_SEMIN              0 | ||||
|   /** | ||||
|    * You can set your own advanced settings by filling in predefined functions. | ||||
|    * A list of available functions can be found on the library github page | ||||
|    * https://github.com/teemuatlut/TMC2130Stepper | ||||
|    * | ||||
|    * Example: | ||||
|    * #define TMC2130_ADV() { \ | ||||
|    *   stepperX.diag0_temp_prewarn(1); \ | ||||
|    *   stepperX.interpolate(0); \ | ||||
|    * } | ||||
|    */ | ||||
|   #define  TMC2130_ADV() {  } | ||||
|  | ||||
|     //#define GLOBAL_DC_TIME            0 | ||||
|     //#define GLOBAL_DC_SG              0 | ||||
|  | ||||
|     //#define GLOBAL_FREEWHEEL          0 | ||||
|     //#define GLOBAL_PWM_SYMMETRIC      0 | ||||
|     //#define GLOBAL_PWM_AUTOSCALE      0 | ||||
|     //#define GLOBAL_PWM_FREQ           0 | ||||
|     //#define GLOBAL_PWM_GRAD           0 | ||||
|     //#define GLOBAL_PWM_AMPL           0 | ||||
|  | ||||
|     //#define GLOBAL_ENCM_CTRL          0 | ||||
|  | ||||
|   #else | ||||
|  | ||||
|     #define X_IHOLD          31 // [0-31] 0: min, 31: max | ||||
|     #define X_IRUN           31 // [0-31] 0: min, 31: max | ||||
|     #define X_IHOLDDELAY     15 // [0-15] 0: min, 15: about 4 seconds | ||||
|     #define X_I_SCALE_ANALOG  1 // 0: Normal, 1: AIN | ||||
|     #define X_MRES           16 // number of microsteps | ||||
|     #define X_TBL             1 // 0-3: set comparator blank time to 16, 24, 36 or 54 clocks, 1 or 2 is recommended | ||||
|     #define X_TOFF            8 // 0: driver disable, 1: use only with TBL>2, 2-15: off time setting during slow decay phase | ||||
|  | ||||
|     #define X2_IHOLD         31 | ||||
|     #define X2_IRUN          31 | ||||
|     #define X2_IHOLDDELAY    15 | ||||
|     #define X2_I_SCALE_ANALOG 1 | ||||
|     #define X2_MRES          16 | ||||
|     #define X2_TBL            1 | ||||
|     #define X2_TOFF           8 | ||||
|  | ||||
|     #define Y_IHOLD          31 | ||||
|     #define Y_IRUN           31 | ||||
|     #define Y_IHOLDDELAY     15 | ||||
|     #define Y_I_SCALE_ANALOG  1 | ||||
|     #define Y_MRES           16 | ||||
|     #define Y_TBL             1 | ||||
|     #define Y_TOFF            8 | ||||
|  | ||||
|     #define Y2_IHOLD         31 | ||||
|     #define Y2_IRUN          31 | ||||
|     #define Y2_IHOLDDELAY    15 | ||||
|     #define Y2_I_SCALE_ANALOG 1 | ||||
|     #define Y2_MRES          16 | ||||
|     #define Y2_TBL            1 | ||||
|     #define Y2_TOFF           8 | ||||
|  | ||||
|     #define Z_IHOLD          31 | ||||
|     #define Z_IRUN           31 | ||||
|     #define Z_IHOLDDELAY     15 | ||||
|     #define Z_I_SCALE_ANALOG  1 | ||||
|     #define Z_MRES           16 | ||||
|     #define Z_TBL             1 | ||||
|     #define Z_TOFF            8 | ||||
|  | ||||
|     #define Z2_IHOLD         31 | ||||
|     #define Z2_IRUN          31 | ||||
|     #define Z2_IHOLDDELAY    15 | ||||
|     #define Z2_I_SCALE_ANALOG 1 | ||||
|     #define Z2_MRES          16 | ||||
|     #define Z2_TBL            1 | ||||
|     #define Z2_TOFF           8 | ||||
|  | ||||
|     #define E0_IHOLD         31 | ||||
|     #define E0_IRUN          31 | ||||
|     #define E0_IHOLDDELAY    15 | ||||
|     #define E0_I_SCALE_ANALOG 1 | ||||
|     #define E0_MRES          16 | ||||
|     #define E0_TBL            1 | ||||
|     #define E0_TOFF           8 | ||||
|  | ||||
|     #define E1_IHOLD         31 | ||||
|     #define E1_IRUN          31 | ||||
|     #define E1_IHOLDDELAY    15 | ||||
|     #define E1_I_SCALE_ANALOG 1 | ||||
|     #define E1_MRES          16 | ||||
|     #define E1_TBL            1 | ||||
|     #define E1_TOFF           8 | ||||
|  | ||||
|     #define E2_IHOLD         31 | ||||
|     #define E2_IRUN          31 | ||||
|     #define E2_IHOLDDELAY    15 | ||||
|     #define E2_I_SCALE_ANALOG 1 | ||||
|     #define E2_MRES          16 | ||||
|     #define E2_TBL            1 | ||||
|     #define E2_TOFF           8 | ||||
|  | ||||
|     #define E3_IHOLD         31 | ||||
|     #define E3_IRUN          31 | ||||
|     #define E3_IHOLDDELAY    15 | ||||
|     #define E3_I_SCALE_ANALOG 1 | ||||
|     #define E3_MRES          16 | ||||
|     #define E3_TBL            1 | ||||
|     #define E3_TOFF           8 | ||||
|  | ||||
|   #endif // TMC2130_ADVANCED_CONFIGURATION | ||||
|  | ||||
| #endif // HAVE_TMC2130DRIVER | ||||
| #endif // ENABLED(HAVE_TMC2130) | ||||
|  | ||||
| // @section L6470 | ||||
|  | ||||
|   | ||||
| @@ -758,14 +758,15 @@ | ||||
|                                                      // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME. | ||||
| #endif | ||||
|  | ||||
| /******************************************************************************\ | ||||
|  * enable this section if you have TMC26X motor drivers. | ||||
|  * you need to import the TMC26XStepper library into the Arduino IDE for this | ||||
|  ******************************************************************************/ | ||||
|  | ||||
| // @section tmc | ||||
|  | ||||
| /** | ||||
|  * Enable this section if you have TMC26X motor drivers. | ||||
|  * You will need to import the TMC26XStepper library into the Arduino IDE for this | ||||
|  * (https://github.com/trinamic/TMC26XStepper.git) | ||||
|  */ | ||||
| //#define HAVE_TMCDRIVER | ||||
|  | ||||
| #if ENABLED(HAVE_TMCDRIVER) | ||||
|  | ||||
|   //#define X_IS_TMC | ||||
| @@ -823,23 +824,31 @@ | ||||
|  | ||||
| // @section TMC2130 | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * Enable this for SilentStepStick Trinamic TMC2130 SPI-configurable stepper drivers. | ||||
|  * | ||||
|  * To use TMC2130 drivers in SPI mode, you'll also need the TMC2130 Arduino library | ||||
|  * (https://github.com/makertum/Trinamic_TMC2130). | ||||
|  * You'll also need the TMC2130Stepper Arduino library | ||||
|  * (https://github.com/teemuatlut/TMC2130Stepper). | ||||
|  * | ||||
|  * To use TMC2130 stepper drivers in SPI mode connect your SPI2130 pins to | ||||
|  * the hardware SPI interface on your board and define the required CS pins | ||||
|  * in your `pins_MYBOARD.h` file. (e.g., RAMPS 1.4 uses AUX3 pins `X_CS_PIN 53`, `Y_CS_PIN 49`, etc.). | ||||
|  */ | ||||
| //#define HAVE_TMC2130 | ||||
|  | ||||
| //#define HAVE_TMC2130DRIVER | ||||
| #if ENABLED(HAVE_TMC2130) | ||||
|   #define STEALTHCHOP | ||||
|  | ||||
| #if ENABLED(HAVE_TMC2130DRIVER) | ||||
|  | ||||
|   //#define TMC2130_ADVANCED_CONFIGURATION | ||||
|   /** | ||||
|    * Let Marlin automatically control stepper current. | ||||
|    * This is still an experimental feature. | ||||
|    * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, | ||||
|    * then decrease current by CURRENT_STEP until temperature prewarn is cleared. | ||||
|    * Adjusting starts from X/Y/Z/E_MAX_CURRENT but will not increase over AUTO_ADJUST_MAX | ||||
|    */  | ||||
|   //#define AUTOMATIC_CURRENT_CONTROL | ||||
|   #define CURRENT_STEP          50  // [mA] | ||||
|   #define AUTO_ADJUST_MAX     1300  // [mA], 1300mA_rms = 1840mA_peak | ||||
|  | ||||
|   // CHOOSE YOUR MOTORS HERE, THIS IS MANDATORY | ||||
|   //#define X_IS_TMC2130 | ||||
| @@ -853,180 +862,68 @@ | ||||
|   //#define E2_IS_TMC2130 | ||||
|   //#define E3_IS_TMC2130 | ||||
|  | ||||
|   #if ENABLED(TMC2130_ADVANCED_CONFIGURATION) | ||||
|   /** | ||||
|    * Stepper driver settings | ||||
|    */ | ||||
|  | ||||
|     // If you've enabled TMC2130_ADVANCED_CONFIGURATION, define global settings below. | ||||
|     // Enabled settings will be automatically applied to all axes specified above. | ||||
|     // | ||||
|     // Please read the TMC2130 datasheet: | ||||
|     // http://www.trinamic.com/_articles/products/integrated-circuits/tmc2130/_datasheet/TMC2130_datasheet.pdf | ||||
|     // All settings here have the same (sometimes cryptic) names as in the datasheet. | ||||
|     // | ||||
|     // The following, uncommented settings are only suggestion. | ||||
|   #define R_SENSE           0.11  // R_sense resistor for SilentStepStick2130 | ||||
|   #define HOLD_MULTIPLIER    0.5  // Scales down the holding current from run current | ||||
|   #define INTERPOLATE          1  // Interpolate X/Y/Z_MICROSTEPS to 256 | ||||
|  | ||||
|     /* GENERAL CONFIGURATION */ | ||||
|   #define X_MAX_CURRENT     1000  // rms current in mA | ||||
|   #define X_MICROSTEPS        16  // FULLSTEP..256 | ||||
|   #define X_CHIP_SELECT       40  // Pin | ||||
|  | ||||
|     //#define GLOBAL_EN_PWM_MODE        0 | ||||
|     #define GLOBAL_I_SCALE_ANALOG     1 // [0,1] 0: Normal, 1: AIN | ||||
|     //#define GLOBAL_INTERNAL_RSENSE    0 // [0,1] 0: Normal, 1: Internal | ||||
|     #define GLOBAL_EN_PWM_MODE        0 // [0,1] 0: Normal, 1: stealthChop with velocity threshold | ||||
|     //#define GLOBAL_ENC_COMMUTATION    0 // [0,1] | ||||
|     #define GLOBAL_SHAFT              0 // [0,1] 0: normal, 1: invert | ||||
|     //#define GLOBAL_DIAG0_ERROR        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_OTPW         0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_STALL        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_STALL        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_INDEX        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_ONSTATE      0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_ONSTATE      0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_INT_PUSHPULL 0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_INT_PUSHPULL 0 // [0,1] | ||||
|     //#define GLOBAL_SMALL_HYSTERESIS   0 // [0,1] | ||||
|     //#define GLOBAL_STOP_ENABLE        0 // [0,1] | ||||
|     //#define GLOBAL_DIRECT_MODE        0 // [0,1] | ||||
|   #define Y_MAX_CURRENT     1000 | ||||
|   #define Y_MICROSTEPS        16 | ||||
|   #define Y_CHIP_SELECT       42 | ||||
|  | ||||
|     /* VELOCITY-DEPENDENT DRIVE FEATURES */ | ||||
|   #define Z_MAX_CURRENT     1000 | ||||
|   #define Z_MICROSTEPS        16 | ||||
|   #define Z_CHIP_SELECT       65 | ||||
|  | ||||
|     #define GLOBAL_IHOLD             22 // [0-31] 0: min, 31: max | ||||
|     #define GLOBAL_IRUN              31 // [0-31] 0: min, 31: max | ||||
|     #define GLOBAL_IHOLDDELAY        15 // [0-15] 0: min, 15: about 4 seconds | ||||
|     //#define GLOBAL_TPOWERDOWN         0 // [0-255] 0: min, 255: about 4 seconds | ||||
|     //#define GLOBAL_TPWMTHRS           0 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|     //#define GLOBAL_TCOOLTHRS          0 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|     #define GLOBAL_THIGH             10 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|   //#define X2_MAX_CURRENT  1000 | ||||
|   //#define X2_MICROSTEPS     16 | ||||
|   //#define X2_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* SPI MODE CONFIGURATION */ | ||||
|   //#define Y2_MAX_CURRENT  1000 | ||||
|   //#define Y2_MICROSTEPS     16 | ||||
|   //#define Y2_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_XDIRECT            0 | ||||
|   //#define Z2_MAX_CURRENT  1000 | ||||
|   //#define Z2_MICROSTEPS     16 | ||||
|   //#define Z2_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* DCSTEP MINIMUM VELOCITY */ | ||||
|   //#define E0_MAX_CURRENT  1000 | ||||
|   //#define E0_MICROSTEPS     16 | ||||
|   //#define E0_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_VDCMIN             0 | ||||
|   //#define E1_MAX_CURRENT  1000 | ||||
|   //#define E1_MICROSTEPS     16 | ||||
|   //#define E1_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* MOTOR DRIVER CONFIGURATION*/ | ||||
|   //#define E2_MAX_CURRENT  1000 | ||||
|   //#define E2_MICROSTEPS     16 | ||||
|   //#define E2_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_DEDGE              0 | ||||
|     //#define GLOBAL_DISS2G             0 | ||||
|     #define GLOBAL_INTPOL             1 // 0: off 1: 256 microstep interpolation | ||||
|     #define GLOBAL_MRES              16 // number of microsteps | ||||
|     #define GLOBAL_SYNC               1 // [0-15] | ||||
|     #define GLOBAL_VHIGHCHM           1 // [0,1] 0: normal, 1: high velocity stepper mode | ||||
|     #define GLOBAL_VHIGHFS            0 // [0,1] 0: normal, 1: switch to full steps for high velocities | ||||
|     // #define GLOBAL_VSENSE            0 // [0,1] 0: normal, 1: high sensitivity (not recommended) | ||||
|     #define GLOBAL_TBL                1 // 0-3: set comparator blank time to 16, 24, 36 or 54 clocks, 1 or 2 is recommended | ||||
|     #define GLOBAL_CHM                0 // [0,1] 0: spreadCycle, 1: Constant off time with fast decay time. | ||||
|     //#define GLOBAL_RNDTF              0 | ||||
|     //#define GLOBAL_DISFDCC            0 | ||||
|     //#define GLOBAL_FD                 0 | ||||
|     //#define GLOBAL_HEND               0 | ||||
|     //#define GLOBAL_HSTRT              0 | ||||
|     #define GLOBAL_TOFF              10 // 0: driver disable, 1: use only with TBL>2, 2-15: off time setting during slow decay phase | ||||
|   //#define E3_MAX_CURRENT  1000 | ||||
|   //#define E3_MICROSTEPS     16 | ||||
|   //#define E3_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_SFILT              0 | ||||
|     //#define GLOBAL_SGT                0 | ||||
|     //#define GLOBAL_SEIMIN             0 | ||||
|     //#define GLOBAL_SEDN               0 | ||||
|     //#define GLOBAL_SEMAX              0 | ||||
|     //#define GLOBAL_SEUP               0 | ||||
|     //#define GLOBAL_SEMIN              0 | ||||
|   /** | ||||
|    * You can set your own advanced settings by filling in predefined functions. | ||||
|    * A list of available functions can be found on the library github page | ||||
|    * https://github.com/teemuatlut/TMC2130Stepper | ||||
|    * | ||||
|    * Example: | ||||
|    * #define TMC2130_ADV() { \ | ||||
|    *   stepperX.diag0_temp_prewarn(1); \ | ||||
|    *   stepperX.interpolate(0); \ | ||||
|    * } | ||||
|    */ | ||||
|   #define  TMC2130_ADV() {  } | ||||
|  | ||||
|     //#define GLOBAL_DC_TIME            0 | ||||
|     //#define GLOBAL_DC_SG              0 | ||||
|  | ||||
|     //#define GLOBAL_FREEWHEEL          0 | ||||
|     //#define GLOBAL_PWM_SYMMETRIC      0 | ||||
|     //#define GLOBAL_PWM_AUTOSCALE      0 | ||||
|     //#define GLOBAL_PWM_FREQ           0 | ||||
|     //#define GLOBAL_PWM_GRAD           0 | ||||
|     //#define GLOBAL_PWM_AMPL           0 | ||||
|  | ||||
|     //#define GLOBAL_ENCM_CTRL          0 | ||||
|  | ||||
|   #else | ||||
|  | ||||
|     #define X_IHOLD          31 // [0-31] 0: min, 31: max | ||||
|     #define X_IRUN           31 // [0-31] 0: min, 31: max | ||||
|     #define X_IHOLDDELAY     15 // [0-15] 0: min, 15: about 4 seconds | ||||
|     #define X_I_SCALE_ANALOG  1 // 0: Normal, 1: AIN | ||||
|     #define X_MRES           16 // number of microsteps | ||||
|     #define X_TBL             1 // 0-3: set comparator blank time to 16, 24, 36 or 54 clocks, 1 or 2 is recommended | ||||
|     #define X_TOFF            8 // 0: driver disable, 1: use only with TBL>2, 2-15: off time setting during slow decay phase | ||||
|  | ||||
|     #define X2_IHOLD         31 | ||||
|     #define X2_IRUN          31 | ||||
|     #define X2_IHOLDDELAY    15 | ||||
|     #define X2_I_SCALE_ANALOG 1 | ||||
|     #define X2_MRES          16 | ||||
|     #define X2_TBL            1 | ||||
|     #define X2_TOFF           8 | ||||
|  | ||||
|     #define Y_IHOLD          31 | ||||
|     #define Y_IRUN           31 | ||||
|     #define Y_IHOLDDELAY     15 | ||||
|     #define Y_I_SCALE_ANALOG  1 | ||||
|     #define Y_MRES           16 | ||||
|     #define Y_TBL             1 | ||||
|     #define Y_TOFF            8 | ||||
|  | ||||
|     #define Y2_IHOLD         31 | ||||
|     #define Y2_IRUN          31 | ||||
|     #define Y2_IHOLDDELAY    15 | ||||
|     #define Y2_I_SCALE_ANALOG 1 | ||||
|     #define Y2_MRES          16 | ||||
|     #define Y2_TBL            1 | ||||
|     #define Y2_TOFF           8 | ||||
|  | ||||
|     #define Z_IHOLD          31 | ||||
|     #define Z_IRUN           31 | ||||
|     #define Z_IHOLDDELAY     15 | ||||
|     #define Z_I_SCALE_ANALOG  1 | ||||
|     #define Z_MRES           16 | ||||
|     #define Z_TBL             1 | ||||
|     #define Z_TOFF            8 | ||||
|  | ||||
|     #define Z2_IHOLD         31 | ||||
|     #define Z2_IRUN          31 | ||||
|     #define Z2_IHOLDDELAY    15 | ||||
|     #define Z2_I_SCALE_ANALOG 1 | ||||
|     #define Z2_MRES          16 | ||||
|     #define Z2_TBL            1 | ||||
|     #define Z2_TOFF           8 | ||||
|  | ||||
|     #define E0_IHOLD         31 | ||||
|     #define E0_IRUN          31 | ||||
|     #define E0_IHOLDDELAY    15 | ||||
|     #define E0_I_SCALE_ANALOG 1 | ||||
|     #define E0_MRES          16 | ||||
|     #define E0_TBL            1 | ||||
|     #define E0_TOFF           8 | ||||
|  | ||||
|     #define E1_IHOLD         31 | ||||
|     #define E1_IRUN          31 | ||||
|     #define E1_IHOLDDELAY    15 | ||||
|     #define E1_I_SCALE_ANALOG 1 | ||||
|     #define E1_MRES          16 | ||||
|     #define E1_TBL            1 | ||||
|     #define E1_TOFF           8 | ||||
|  | ||||
|     #define E2_IHOLD         31 | ||||
|     #define E2_IRUN          31 | ||||
|     #define E2_IHOLDDELAY    15 | ||||
|     #define E2_I_SCALE_ANALOG 1 | ||||
|     #define E2_MRES          16 | ||||
|     #define E2_TBL            1 | ||||
|     #define E2_TOFF           8 | ||||
|  | ||||
|     #define E3_IHOLD         31 | ||||
|     #define E3_IRUN          31 | ||||
|     #define E3_IHOLDDELAY    15 | ||||
|     #define E3_I_SCALE_ANALOG 1 | ||||
|     #define E3_MRES          16 | ||||
|     #define E3_TBL            1 | ||||
|     #define E3_TOFF           8 | ||||
|  | ||||
|   #endif // TMC2130_ADVANCED_CONFIGURATION | ||||
|  | ||||
| #endif // HAVE_TMC2130DRIVER | ||||
| #endif // ENABLED(HAVE_TMC2130) | ||||
|  | ||||
| // @section L6470 | ||||
|  | ||||
|   | ||||
| @@ -766,14 +766,15 @@ | ||||
|                                                      // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME. | ||||
| #endif | ||||
|  | ||||
| /******************************************************************************\ | ||||
|  * enable this section if you have TMC26X motor drivers. | ||||
|  * you need to import the TMC26XStepper library into the Arduino IDE for this | ||||
|  ******************************************************************************/ | ||||
|  | ||||
| // @section tmc | ||||
|  | ||||
| /** | ||||
|  * Enable this section if you have TMC26X motor drivers. | ||||
|  * You will need to import the TMC26XStepper library into the Arduino IDE for this | ||||
|  * (https://github.com/trinamic/TMC26XStepper.git) | ||||
|  */ | ||||
| //#define HAVE_TMCDRIVER | ||||
|  | ||||
| #if ENABLED(HAVE_TMCDRIVER) | ||||
|  | ||||
|   //#define X_IS_TMC | ||||
| @@ -831,23 +832,31 @@ | ||||
|  | ||||
| // @section TMC2130 | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * Enable this for SilentStepStick Trinamic TMC2130 SPI-configurable stepper drivers. | ||||
|  * | ||||
|  * To use TMC2130 drivers in SPI mode, you'll also need the TMC2130 Arduino library | ||||
|  * (https://github.com/makertum/Trinamic_TMC2130). | ||||
|  * You'll also need the TMC2130Stepper Arduino library | ||||
|  * (https://github.com/teemuatlut/TMC2130Stepper). | ||||
|  * | ||||
|  * To use TMC2130 stepper drivers in SPI mode connect your SPI2130 pins to | ||||
|  * the hardware SPI interface on your board and define the required CS pins | ||||
|  * in your `pins_MYBOARD.h` file. (e.g., RAMPS 1.4 uses AUX3 pins `X_CS_PIN 53`, `Y_CS_PIN 49`, etc.). | ||||
|  */ | ||||
| //#define HAVE_TMC2130 | ||||
|  | ||||
| //#define HAVE_TMC2130DRIVER | ||||
| #if ENABLED(HAVE_TMC2130) | ||||
|   #define STEALTHCHOP | ||||
|  | ||||
| #if ENABLED(HAVE_TMC2130DRIVER) | ||||
|  | ||||
|   //#define TMC2130_ADVANCED_CONFIGURATION | ||||
|   /** | ||||
|    * Let Marlin automatically control stepper current. | ||||
|    * This is still an experimental feature. | ||||
|    * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, | ||||
|    * then decrease current by CURRENT_STEP until temperature prewarn is cleared. | ||||
|    * Adjusting starts from X/Y/Z/E_MAX_CURRENT but will not increase over AUTO_ADJUST_MAX | ||||
|    */  | ||||
|   //#define AUTOMATIC_CURRENT_CONTROL | ||||
|   #define CURRENT_STEP          50  // [mA] | ||||
|   #define AUTO_ADJUST_MAX     1300  // [mA], 1300mA_rms = 1840mA_peak | ||||
|  | ||||
|   // CHOOSE YOUR MOTORS HERE, THIS IS MANDATORY | ||||
|   //#define X_IS_TMC2130 | ||||
| @@ -861,180 +870,68 @@ | ||||
|   //#define E2_IS_TMC2130 | ||||
|   //#define E3_IS_TMC2130 | ||||
|  | ||||
|   #if ENABLED(TMC2130_ADVANCED_CONFIGURATION) | ||||
|   /** | ||||
|    * Stepper driver settings | ||||
|    */ | ||||
|  | ||||
|     // If you've enabled TMC2130_ADVANCED_CONFIGURATION, define global settings below. | ||||
|     // Enabled settings will be automatically applied to all axes specified above. | ||||
|     // | ||||
|     // Please read the TMC2130 datasheet: | ||||
|     // http://www.trinamic.com/_articles/products/integrated-circuits/tmc2130/_datasheet/TMC2130_datasheet.pdf | ||||
|     // All settings here have the same (sometimes cryptic) names as in the datasheet. | ||||
|     // | ||||
|     // The following, uncommented settings are only suggestion. | ||||
|   #define R_SENSE           0.11  // R_sense resistor for SilentStepStick2130 | ||||
|   #define HOLD_MULTIPLIER    0.5  // Scales down the holding current from run current | ||||
|   #define INTERPOLATE          1  // Interpolate X/Y/Z_MICROSTEPS to 256 | ||||
|  | ||||
|     /* GENERAL CONFIGURATION */ | ||||
|   #define X_MAX_CURRENT     1000  // rms current in mA | ||||
|   #define X_MICROSTEPS        16  // FULLSTEP..256 | ||||
|   #define X_CHIP_SELECT       40  // Pin | ||||
|  | ||||
|     //#define GLOBAL_EN_PWM_MODE        0 | ||||
|     #define GLOBAL_I_SCALE_ANALOG     1 // [0,1] 0: Normal, 1: AIN | ||||
|     //#define GLOBAL_INTERNAL_RSENSE    0 // [0,1] 0: Normal, 1: Internal | ||||
|     #define GLOBAL_EN_PWM_MODE        0 // [0,1] 0: Normal, 1: stealthChop with velocity threshold | ||||
|     //#define GLOBAL_ENC_COMMUTATION    0 // [0,1] | ||||
|     #define GLOBAL_SHAFT              0 // [0,1] 0: normal, 1: invert | ||||
|     //#define GLOBAL_DIAG0_ERROR        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_OTPW         0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_STALL        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_STALL        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_INDEX        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_ONSTATE      0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_ONSTATE      0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_INT_PUSHPULL 0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_INT_PUSHPULL 0 // [0,1] | ||||
|     //#define GLOBAL_SMALL_HYSTERESIS   0 // [0,1] | ||||
|     //#define GLOBAL_STOP_ENABLE        0 // [0,1] | ||||
|     //#define GLOBAL_DIRECT_MODE        0 // [0,1] | ||||
|   #define Y_MAX_CURRENT     1000 | ||||
|   #define Y_MICROSTEPS        16 | ||||
|   #define Y_CHIP_SELECT       42 | ||||
|  | ||||
|     /* VELOCITY-DEPENDENT DRIVE FEATURES */ | ||||
|   #define Z_MAX_CURRENT     1000 | ||||
|   #define Z_MICROSTEPS        16 | ||||
|   #define Z_CHIP_SELECT       65 | ||||
|  | ||||
|     #define GLOBAL_IHOLD             22 // [0-31] 0: min, 31: max | ||||
|     #define GLOBAL_IRUN              31 // [0-31] 0: min, 31: max | ||||
|     #define GLOBAL_IHOLDDELAY        15 // [0-15] 0: min, 15: about 4 seconds | ||||
|     //#define GLOBAL_TPOWERDOWN         0 // [0-255] 0: min, 255: about 4 seconds | ||||
|     //#define GLOBAL_TPWMTHRS           0 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|     //#define GLOBAL_TCOOLTHRS          0 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|     #define GLOBAL_THIGH             10 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|   //#define X2_MAX_CURRENT  1000 | ||||
|   //#define X2_MICROSTEPS     16 | ||||
|   //#define X2_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* SPI MODE CONFIGURATION */ | ||||
|   //#define Y2_MAX_CURRENT  1000 | ||||
|   //#define Y2_MICROSTEPS     16 | ||||
|   //#define Y2_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_XDIRECT            0 | ||||
|   //#define Z2_MAX_CURRENT  1000 | ||||
|   //#define Z2_MICROSTEPS     16 | ||||
|   //#define Z2_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* DCSTEP MINIMUM VELOCITY */ | ||||
|   //#define E0_MAX_CURRENT  1000 | ||||
|   //#define E0_MICROSTEPS     16 | ||||
|   //#define E0_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_VDCMIN             0 | ||||
|   //#define E1_MAX_CURRENT  1000 | ||||
|   //#define E1_MICROSTEPS     16 | ||||
|   //#define E1_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* MOTOR DRIVER CONFIGURATION*/ | ||||
|   //#define E2_MAX_CURRENT  1000 | ||||
|   //#define E2_MICROSTEPS     16 | ||||
|   //#define E2_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_DEDGE              0 | ||||
|     //#define GLOBAL_DISS2G             0 | ||||
|     #define GLOBAL_INTPOL             1 // 0: off 1: 256 microstep interpolation | ||||
|     #define GLOBAL_MRES              16 // number of microsteps | ||||
|     #define GLOBAL_SYNC               1 // [0-15] | ||||
|     #define GLOBAL_VHIGHCHM           1 // [0,1] 0: normal, 1: high velocity stepper mode | ||||
|     #define GLOBAL_VHIGHFS            0 // [0,1] 0: normal, 1: switch to full steps for high velocities | ||||
|     // #define GLOBAL_VSENSE            0 // [0,1] 0: normal, 1: high sensitivity (not recommended) | ||||
|     #define GLOBAL_TBL                1 // 0-3: set comparator blank time to 16, 24, 36 or 54 clocks, 1 or 2 is recommended | ||||
|     #define GLOBAL_CHM                0 // [0,1] 0: spreadCycle, 1: Constant off time with fast decay time. | ||||
|     //#define GLOBAL_RNDTF              0 | ||||
|     //#define GLOBAL_DISFDCC            0 | ||||
|     //#define GLOBAL_FD                 0 | ||||
|     //#define GLOBAL_HEND               0 | ||||
|     //#define GLOBAL_HSTRT              0 | ||||
|     #define GLOBAL_TOFF              10 // 0: driver disable, 1: use only with TBL>2, 2-15: off time setting during slow decay phase | ||||
|   //#define E3_MAX_CURRENT  1000 | ||||
|   //#define E3_MICROSTEPS     16 | ||||
|   //#define E3_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_SFILT              0 | ||||
|     //#define GLOBAL_SGT                0 | ||||
|     //#define GLOBAL_SEIMIN             0 | ||||
|     //#define GLOBAL_SEDN               0 | ||||
|     //#define GLOBAL_SEMAX              0 | ||||
|     //#define GLOBAL_SEUP               0 | ||||
|     //#define GLOBAL_SEMIN              0 | ||||
|   /** | ||||
|    * You can set your own advanced settings by filling in predefined functions. | ||||
|    * A list of available functions can be found on the library github page | ||||
|    * https://github.com/teemuatlut/TMC2130Stepper | ||||
|    * | ||||
|    * Example: | ||||
|    * #define TMC2130_ADV() { \ | ||||
|    *   stepperX.diag0_temp_prewarn(1); \ | ||||
|    *   stepperX.interpolate(0); \ | ||||
|    * } | ||||
|    */ | ||||
|   #define  TMC2130_ADV() {  } | ||||
|  | ||||
|     //#define GLOBAL_DC_TIME            0 | ||||
|     //#define GLOBAL_DC_SG              0 | ||||
|  | ||||
|     //#define GLOBAL_FREEWHEEL          0 | ||||
|     //#define GLOBAL_PWM_SYMMETRIC      0 | ||||
|     //#define GLOBAL_PWM_AUTOSCALE      0 | ||||
|     //#define GLOBAL_PWM_FREQ           0 | ||||
|     //#define GLOBAL_PWM_GRAD           0 | ||||
|     //#define GLOBAL_PWM_AMPL           0 | ||||
|  | ||||
|     //#define GLOBAL_ENCM_CTRL          0 | ||||
|  | ||||
|   #else | ||||
|  | ||||
|     #define X_IHOLD          31 // [0-31] 0: min, 31: max | ||||
|     #define X_IRUN           31 // [0-31] 0: min, 31: max | ||||
|     #define X_IHOLDDELAY     15 // [0-15] 0: min, 15: about 4 seconds | ||||
|     #define X_I_SCALE_ANALOG  1 // 0: Normal, 1: AIN | ||||
|     #define X_MRES           16 // number of microsteps | ||||
|     #define X_TBL             1 // 0-3: set comparator blank time to 16, 24, 36 or 54 clocks, 1 or 2 is recommended | ||||
|     #define X_TOFF            8 // 0: driver disable, 1: use only with TBL>2, 2-15: off time setting during slow decay phase | ||||
|  | ||||
|     #define X2_IHOLD         31 | ||||
|     #define X2_IRUN          31 | ||||
|     #define X2_IHOLDDELAY    15 | ||||
|     #define X2_I_SCALE_ANALOG 1 | ||||
|     #define X2_MRES          16 | ||||
|     #define X2_TBL            1 | ||||
|     #define X2_TOFF           8 | ||||
|  | ||||
|     #define Y_IHOLD          31 | ||||
|     #define Y_IRUN           31 | ||||
|     #define Y_IHOLDDELAY     15 | ||||
|     #define Y_I_SCALE_ANALOG  1 | ||||
|     #define Y_MRES           16 | ||||
|     #define Y_TBL             1 | ||||
|     #define Y_TOFF            8 | ||||
|  | ||||
|     #define Y2_IHOLD         31 | ||||
|     #define Y2_IRUN          31 | ||||
|     #define Y2_IHOLDDELAY    15 | ||||
|     #define Y2_I_SCALE_ANALOG 1 | ||||
|     #define Y2_MRES          16 | ||||
|     #define Y2_TBL            1 | ||||
|     #define Y2_TOFF           8 | ||||
|  | ||||
|     #define Z_IHOLD          31 | ||||
|     #define Z_IRUN           31 | ||||
|     #define Z_IHOLDDELAY     15 | ||||
|     #define Z_I_SCALE_ANALOG  1 | ||||
|     #define Z_MRES           16 | ||||
|     #define Z_TBL             1 | ||||
|     #define Z_TOFF            8 | ||||
|  | ||||
|     #define Z2_IHOLD         31 | ||||
|     #define Z2_IRUN          31 | ||||
|     #define Z2_IHOLDDELAY    15 | ||||
|     #define Z2_I_SCALE_ANALOG 1 | ||||
|     #define Z2_MRES          16 | ||||
|     #define Z2_TBL            1 | ||||
|     #define Z2_TOFF           8 | ||||
|  | ||||
|     #define E0_IHOLD         31 | ||||
|     #define E0_IRUN          31 | ||||
|     #define E0_IHOLDDELAY    15 | ||||
|     #define E0_I_SCALE_ANALOG 1 | ||||
|     #define E0_MRES          16 | ||||
|     #define E0_TBL            1 | ||||
|     #define E0_TOFF           8 | ||||
|  | ||||
|     #define E1_IHOLD         31 | ||||
|     #define E1_IRUN          31 | ||||
|     #define E1_IHOLDDELAY    15 | ||||
|     #define E1_I_SCALE_ANALOG 1 | ||||
|     #define E1_MRES          16 | ||||
|     #define E1_TBL            1 | ||||
|     #define E1_TOFF           8 | ||||
|  | ||||
|     #define E2_IHOLD         31 | ||||
|     #define E2_IRUN          31 | ||||
|     #define E2_IHOLDDELAY    15 | ||||
|     #define E2_I_SCALE_ANALOG 1 | ||||
|     #define E2_MRES          16 | ||||
|     #define E2_TBL            1 | ||||
|     #define E2_TOFF           8 | ||||
|  | ||||
|     #define E3_IHOLD         31 | ||||
|     #define E3_IRUN          31 | ||||
|     #define E3_IHOLDDELAY    15 | ||||
|     #define E3_I_SCALE_ANALOG 1 | ||||
|     #define E3_MRES          16 | ||||
|     #define E3_TBL            1 | ||||
|     #define E3_TOFF           8 | ||||
|  | ||||
|   #endif // TMC2130_ADVANCED_CONFIGURATION | ||||
|  | ||||
| #endif // HAVE_TMC2130DRIVER | ||||
| #endif // ENABLED(HAVE_TMC2130) | ||||
|  | ||||
| // @section L6470 | ||||
|  | ||||
|   | ||||
| @@ -758,14 +758,15 @@ | ||||
|                                                      // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME. | ||||
| #endif | ||||
|  | ||||
| /******************************************************************************\ | ||||
|  * enable this section if you have TMC26X motor drivers. | ||||
|  * you need to import the TMC26XStepper library into the Arduino IDE for this | ||||
|  ******************************************************************************/ | ||||
|  | ||||
| // @section tmc | ||||
|  | ||||
| /** | ||||
|  * Enable this section if you have TMC26X motor drivers. | ||||
|  * You will need to import the TMC26XStepper library into the Arduino IDE for this | ||||
|  * (https://github.com/trinamic/TMC26XStepper.git) | ||||
|  */ | ||||
| //#define HAVE_TMCDRIVER | ||||
|  | ||||
| #if ENABLED(HAVE_TMCDRIVER) | ||||
|  | ||||
|   //#define X_IS_TMC | ||||
| @@ -823,23 +824,31 @@ | ||||
|  | ||||
| // @section TMC2130 | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * Enable this for SilentStepStick Trinamic TMC2130 SPI-configurable stepper drivers. | ||||
|  * | ||||
|  * To use TMC2130 drivers in SPI mode, you'll also need the TMC2130 Arduino library | ||||
|  * (https://github.com/makertum/Trinamic_TMC2130). | ||||
|  * You'll also need the TMC2130Stepper Arduino library | ||||
|  * (https://github.com/teemuatlut/TMC2130Stepper). | ||||
|  * | ||||
|  * To use TMC2130 stepper drivers in SPI mode connect your SPI2130 pins to | ||||
|  * the hardware SPI interface on your board and define the required CS pins | ||||
|  * in your `pins_MYBOARD.h` file. (e.g., RAMPS 1.4 uses AUX3 pins `X_CS_PIN 53`, `Y_CS_PIN 49`, etc.). | ||||
|  */ | ||||
| //#define HAVE_TMC2130 | ||||
|  | ||||
| //#define HAVE_TMC2130DRIVER | ||||
| #if ENABLED(HAVE_TMC2130) | ||||
|   #define STEALTHCHOP | ||||
|  | ||||
| #if ENABLED(HAVE_TMC2130DRIVER) | ||||
|  | ||||
|   //#define TMC2130_ADVANCED_CONFIGURATION | ||||
|   /** | ||||
|    * Let Marlin automatically control stepper current. | ||||
|    * This is still an experimental feature. | ||||
|    * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, | ||||
|    * then decrease current by CURRENT_STEP until temperature prewarn is cleared. | ||||
|    * Adjusting starts from X/Y/Z/E_MAX_CURRENT but will not increase over AUTO_ADJUST_MAX | ||||
|    */  | ||||
|   //#define AUTOMATIC_CURRENT_CONTROL | ||||
|   #define CURRENT_STEP          50  // [mA] | ||||
|   #define AUTO_ADJUST_MAX     1300  // [mA], 1300mA_rms = 1840mA_peak | ||||
|  | ||||
|   // CHOOSE YOUR MOTORS HERE, THIS IS MANDATORY | ||||
|   //#define X_IS_TMC2130 | ||||
| @@ -853,180 +862,68 @@ | ||||
|   //#define E2_IS_TMC2130 | ||||
|   //#define E3_IS_TMC2130 | ||||
|  | ||||
|   #if ENABLED(TMC2130_ADVANCED_CONFIGURATION) | ||||
|   /** | ||||
|    * Stepper driver settings | ||||
|    */ | ||||
|  | ||||
|     // If you've enabled TMC2130_ADVANCED_CONFIGURATION, define global settings below. | ||||
|     // Enabled settings will be automatically applied to all axes specified above. | ||||
|     // | ||||
|     // Please read the TMC2130 datasheet: | ||||
|     // http://www.trinamic.com/_articles/products/integrated-circuits/tmc2130/_datasheet/TMC2130_datasheet.pdf | ||||
|     // All settings here have the same (sometimes cryptic) names as in the datasheet. | ||||
|     // | ||||
|     // The following, uncommented settings are only suggestion. | ||||
|   #define R_SENSE           0.11  // R_sense resistor for SilentStepStick2130 | ||||
|   #define HOLD_MULTIPLIER    0.5  // Scales down the holding current from run current | ||||
|   #define INTERPOLATE          1  // Interpolate X/Y/Z_MICROSTEPS to 256 | ||||
|  | ||||
|     /* GENERAL CONFIGURATION */ | ||||
|   #define X_MAX_CURRENT     1000  // rms current in mA | ||||
|   #define X_MICROSTEPS        16  // FULLSTEP..256 | ||||
|   #define X_CHIP_SELECT       40  // Pin | ||||
|  | ||||
|     //#define GLOBAL_EN_PWM_MODE        0 | ||||
|     #define GLOBAL_I_SCALE_ANALOG     1 // [0,1] 0: Normal, 1: AIN | ||||
|     //#define GLOBAL_INTERNAL_RSENSE    0 // [0,1] 0: Normal, 1: Internal | ||||
|     #define GLOBAL_EN_PWM_MODE        0 // [0,1] 0: Normal, 1: stealthChop with velocity threshold | ||||
|     //#define GLOBAL_ENC_COMMUTATION    0 // [0,1] | ||||
|     #define GLOBAL_SHAFT              0 // [0,1] 0: normal, 1: invert | ||||
|     //#define GLOBAL_DIAG0_ERROR        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_OTPW         0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_STALL        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_STALL        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_INDEX        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_ONSTATE      0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_ONSTATE      0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_INT_PUSHPULL 0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_INT_PUSHPULL 0 // [0,1] | ||||
|     //#define GLOBAL_SMALL_HYSTERESIS   0 // [0,1] | ||||
|     //#define GLOBAL_STOP_ENABLE        0 // [0,1] | ||||
|     //#define GLOBAL_DIRECT_MODE        0 // [0,1] | ||||
|   #define Y_MAX_CURRENT     1000 | ||||
|   #define Y_MICROSTEPS        16 | ||||
|   #define Y_CHIP_SELECT       42 | ||||
|  | ||||
|     /* VELOCITY-DEPENDENT DRIVE FEATURES */ | ||||
|   #define Z_MAX_CURRENT     1000 | ||||
|   #define Z_MICROSTEPS        16 | ||||
|   #define Z_CHIP_SELECT       65 | ||||
|  | ||||
|     #define GLOBAL_IHOLD             22 // [0-31] 0: min, 31: max | ||||
|     #define GLOBAL_IRUN              31 // [0-31] 0: min, 31: max | ||||
|     #define GLOBAL_IHOLDDELAY        15 // [0-15] 0: min, 15: about 4 seconds | ||||
|     //#define GLOBAL_TPOWERDOWN         0 // [0-255] 0: min, 255: about 4 seconds | ||||
|     //#define GLOBAL_TPWMTHRS           0 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|     //#define GLOBAL_TCOOLTHRS          0 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|     #define GLOBAL_THIGH             10 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|   //#define X2_MAX_CURRENT  1000 | ||||
|   //#define X2_MICROSTEPS     16 | ||||
|   //#define X2_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* SPI MODE CONFIGURATION */ | ||||
|   //#define Y2_MAX_CURRENT  1000 | ||||
|   //#define Y2_MICROSTEPS     16 | ||||
|   //#define Y2_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_XDIRECT            0 | ||||
|   //#define Z2_MAX_CURRENT  1000 | ||||
|   //#define Z2_MICROSTEPS     16 | ||||
|   //#define Z2_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* DCSTEP MINIMUM VELOCITY */ | ||||
|   //#define E0_MAX_CURRENT  1000 | ||||
|   //#define E0_MICROSTEPS     16 | ||||
|   //#define E0_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_VDCMIN             0 | ||||
|   //#define E1_MAX_CURRENT  1000 | ||||
|   //#define E1_MICROSTEPS     16 | ||||
|   //#define E1_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* MOTOR DRIVER CONFIGURATION*/ | ||||
|   //#define E2_MAX_CURRENT  1000 | ||||
|   //#define E2_MICROSTEPS     16 | ||||
|   //#define E2_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_DEDGE              0 | ||||
|     //#define GLOBAL_DISS2G             0 | ||||
|     #define GLOBAL_INTPOL             1 // 0: off 1: 256 microstep interpolation | ||||
|     #define GLOBAL_MRES              16 // number of microsteps | ||||
|     #define GLOBAL_SYNC               1 // [0-15] | ||||
|     #define GLOBAL_VHIGHCHM           1 // [0,1] 0: normal, 1: high velocity stepper mode | ||||
|     #define GLOBAL_VHIGHFS            0 // [0,1] 0: normal, 1: switch to full steps for high velocities | ||||
|     // #define GLOBAL_VSENSE            0 // [0,1] 0: normal, 1: high sensitivity (not recommended) | ||||
|     #define GLOBAL_TBL                1 // 0-3: set comparator blank time to 16, 24, 36 or 54 clocks, 1 or 2 is recommended | ||||
|     #define GLOBAL_CHM                0 // [0,1] 0: spreadCycle, 1: Constant off time with fast decay time. | ||||
|     //#define GLOBAL_RNDTF              0 | ||||
|     //#define GLOBAL_DISFDCC            0 | ||||
|     //#define GLOBAL_FD                 0 | ||||
|     //#define GLOBAL_HEND               0 | ||||
|     //#define GLOBAL_HSTRT              0 | ||||
|     #define GLOBAL_TOFF              10 // 0: driver disable, 1: use only with TBL>2, 2-15: off time setting during slow decay phase | ||||
|   //#define E3_MAX_CURRENT  1000 | ||||
|   //#define E3_MICROSTEPS     16 | ||||
|   //#define E3_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_SFILT              0 | ||||
|     //#define GLOBAL_SGT                0 | ||||
|     //#define GLOBAL_SEIMIN             0 | ||||
|     //#define GLOBAL_SEDN               0 | ||||
|     //#define GLOBAL_SEMAX              0 | ||||
|     //#define GLOBAL_SEUP               0 | ||||
|     //#define GLOBAL_SEMIN              0 | ||||
|   /** | ||||
|    * You can set your own advanced settings by filling in predefined functions. | ||||
|    * A list of available functions can be found on the library github page | ||||
|    * https://github.com/teemuatlut/TMC2130Stepper | ||||
|    * | ||||
|    * Example: | ||||
|    * #define TMC2130_ADV() { \ | ||||
|    *   stepperX.diag0_temp_prewarn(1); \ | ||||
|    *   stepperX.interpolate(0); \ | ||||
|    * } | ||||
|    */ | ||||
|   #define  TMC2130_ADV() {  } | ||||
|  | ||||
|     //#define GLOBAL_DC_TIME            0 | ||||
|     //#define GLOBAL_DC_SG              0 | ||||
|  | ||||
|     //#define GLOBAL_FREEWHEEL          0 | ||||
|     //#define GLOBAL_PWM_SYMMETRIC      0 | ||||
|     //#define GLOBAL_PWM_AUTOSCALE      0 | ||||
|     //#define GLOBAL_PWM_FREQ           0 | ||||
|     //#define GLOBAL_PWM_GRAD           0 | ||||
|     //#define GLOBAL_PWM_AMPL           0 | ||||
|  | ||||
|     //#define GLOBAL_ENCM_CTRL          0 | ||||
|  | ||||
|   #else | ||||
|  | ||||
|     #define X_IHOLD          31 // [0-31] 0: min, 31: max | ||||
|     #define X_IRUN           31 // [0-31] 0: min, 31: max | ||||
|     #define X_IHOLDDELAY     15 // [0-15] 0: min, 15: about 4 seconds | ||||
|     #define X_I_SCALE_ANALOG  1 // 0: Normal, 1: AIN | ||||
|     #define X_MRES           16 // number of microsteps | ||||
|     #define X_TBL             1 // 0-3: set comparator blank time to 16, 24, 36 or 54 clocks, 1 or 2 is recommended | ||||
|     #define X_TOFF            8 // 0: driver disable, 1: use only with TBL>2, 2-15: off time setting during slow decay phase | ||||
|  | ||||
|     #define X2_IHOLD         31 | ||||
|     #define X2_IRUN          31 | ||||
|     #define X2_IHOLDDELAY    15 | ||||
|     #define X2_I_SCALE_ANALOG 1 | ||||
|     #define X2_MRES          16 | ||||
|     #define X2_TBL            1 | ||||
|     #define X2_TOFF           8 | ||||
|  | ||||
|     #define Y_IHOLD          31 | ||||
|     #define Y_IRUN           31 | ||||
|     #define Y_IHOLDDELAY     15 | ||||
|     #define Y_I_SCALE_ANALOG  1 | ||||
|     #define Y_MRES           16 | ||||
|     #define Y_TBL             1 | ||||
|     #define Y_TOFF            8 | ||||
|  | ||||
|     #define Y2_IHOLD         31 | ||||
|     #define Y2_IRUN          31 | ||||
|     #define Y2_IHOLDDELAY    15 | ||||
|     #define Y2_I_SCALE_ANALOG 1 | ||||
|     #define Y2_MRES          16 | ||||
|     #define Y2_TBL            1 | ||||
|     #define Y2_TOFF           8 | ||||
|  | ||||
|     #define Z_IHOLD          31 | ||||
|     #define Z_IRUN           31 | ||||
|     #define Z_IHOLDDELAY     15 | ||||
|     #define Z_I_SCALE_ANALOG  1 | ||||
|     #define Z_MRES           16 | ||||
|     #define Z_TBL             1 | ||||
|     #define Z_TOFF            8 | ||||
|  | ||||
|     #define Z2_IHOLD         31 | ||||
|     #define Z2_IRUN          31 | ||||
|     #define Z2_IHOLDDELAY    15 | ||||
|     #define Z2_I_SCALE_ANALOG 1 | ||||
|     #define Z2_MRES          16 | ||||
|     #define Z2_TBL            1 | ||||
|     #define Z2_TOFF           8 | ||||
|  | ||||
|     #define E0_IHOLD         31 | ||||
|     #define E0_IRUN          31 | ||||
|     #define E0_IHOLDDELAY    15 | ||||
|     #define E0_I_SCALE_ANALOG 1 | ||||
|     #define E0_MRES          16 | ||||
|     #define E0_TBL            1 | ||||
|     #define E0_TOFF           8 | ||||
|  | ||||
|     #define E1_IHOLD         31 | ||||
|     #define E1_IRUN          31 | ||||
|     #define E1_IHOLDDELAY    15 | ||||
|     #define E1_I_SCALE_ANALOG 1 | ||||
|     #define E1_MRES          16 | ||||
|     #define E1_TBL            1 | ||||
|     #define E1_TOFF           8 | ||||
|  | ||||
|     #define E2_IHOLD         31 | ||||
|     #define E2_IRUN          31 | ||||
|     #define E2_IHOLDDELAY    15 | ||||
|     #define E2_I_SCALE_ANALOG 1 | ||||
|     #define E2_MRES          16 | ||||
|     #define E2_TBL            1 | ||||
|     #define E2_TOFF           8 | ||||
|  | ||||
|     #define E3_IHOLD         31 | ||||
|     #define E3_IRUN          31 | ||||
|     #define E3_IHOLDDELAY    15 | ||||
|     #define E3_I_SCALE_ANALOG 1 | ||||
|     #define E3_MRES          16 | ||||
|     #define E3_TBL            1 | ||||
|     #define E3_TOFF           8 | ||||
|  | ||||
|   #endif // TMC2130_ADVANCED_CONFIGURATION | ||||
|  | ||||
| #endif // HAVE_TMC2130DRIVER | ||||
| #endif // ENABLED(HAVE_TMC2130) | ||||
|  | ||||
| // @section L6470 | ||||
|  | ||||
|   | ||||
| @@ -763,14 +763,15 @@ | ||||
|                                                      // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME. | ||||
| #endif | ||||
|  | ||||
| /******************************************************************************\ | ||||
|  * enable this section if you have TMC26X motor drivers. | ||||
|  * you need to import the TMC26XStepper library into the Arduino IDE for this | ||||
|  ******************************************************************************/ | ||||
|  | ||||
| // @section tmc | ||||
|  | ||||
| /** | ||||
|  * Enable this section if you have TMC26X motor drivers. | ||||
|  * You will need to import the TMC26XStepper library into the Arduino IDE for this | ||||
|  * (https://github.com/trinamic/TMC26XStepper.git) | ||||
|  */ | ||||
| //#define HAVE_TMCDRIVER | ||||
|  | ||||
| #if ENABLED(HAVE_TMCDRIVER) | ||||
|  | ||||
|   //#define X_IS_TMC | ||||
| @@ -828,23 +829,31 @@ | ||||
|  | ||||
| // @section TMC2130 | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * Enable this for SilentStepStick Trinamic TMC2130 SPI-configurable stepper drivers. | ||||
|  * | ||||
|  * To use TMC2130 drivers in SPI mode, you'll also need the TMC2130 Arduino library | ||||
|  * (https://github.com/makertum/Trinamic_TMC2130). | ||||
|  * You'll also need the TMC2130Stepper Arduino library | ||||
|  * (https://github.com/teemuatlut/TMC2130Stepper). | ||||
|  * | ||||
|  * To use TMC2130 stepper drivers in SPI mode connect your SPI2130 pins to | ||||
|  * the hardware SPI interface on your board and define the required CS pins | ||||
|  * in your `pins_MYBOARD.h` file. (e.g., RAMPS 1.4 uses AUX3 pins `X_CS_PIN 53`, `Y_CS_PIN 49`, etc.). | ||||
|  */ | ||||
| //#define HAVE_TMC2130 | ||||
|  | ||||
| //#define HAVE_TMC2130DRIVER | ||||
| #if ENABLED(HAVE_TMC2130) | ||||
|   #define STEALTHCHOP | ||||
|  | ||||
| #if ENABLED(HAVE_TMC2130DRIVER) | ||||
|  | ||||
|   //#define TMC2130_ADVANCED_CONFIGURATION | ||||
|   /** | ||||
|    * Let Marlin automatically control stepper current. | ||||
|    * This is still an experimental feature. | ||||
|    * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, | ||||
|    * then decrease current by CURRENT_STEP until temperature prewarn is cleared. | ||||
|    * Adjusting starts from X/Y/Z/E_MAX_CURRENT but will not increase over AUTO_ADJUST_MAX | ||||
|    */  | ||||
|   //#define AUTOMATIC_CURRENT_CONTROL | ||||
|   #define CURRENT_STEP          50  // [mA] | ||||
|   #define AUTO_ADJUST_MAX     1300  // [mA], 1300mA_rms = 1840mA_peak | ||||
|  | ||||
|   // CHOOSE YOUR MOTORS HERE, THIS IS MANDATORY | ||||
|   //#define X_IS_TMC2130 | ||||
| @@ -858,180 +867,68 @@ | ||||
|   //#define E2_IS_TMC2130 | ||||
|   //#define E3_IS_TMC2130 | ||||
|  | ||||
|   #if ENABLED(TMC2130_ADVANCED_CONFIGURATION) | ||||
|   /** | ||||
|    * Stepper driver settings | ||||
|    */ | ||||
|  | ||||
|     // If you've enabled TMC2130_ADVANCED_CONFIGURATION, define global settings below. | ||||
|     // Enabled settings will be automatically applied to all axes specified above. | ||||
|     // | ||||
|     // Please read the TMC2130 datasheet: | ||||
|     // http://www.trinamic.com/_articles/products/integrated-circuits/tmc2130/_datasheet/TMC2130_datasheet.pdf | ||||
|     // All settings here have the same (sometimes cryptic) names as in the datasheet. | ||||
|     // | ||||
|     // The following, uncommented settings are only suggestion. | ||||
|   #define R_SENSE           0.11  // R_sense resistor for SilentStepStick2130 | ||||
|   #define HOLD_MULTIPLIER    0.5  // Scales down the holding current from run current | ||||
|   #define INTERPOLATE          1  // Interpolate X/Y/Z_MICROSTEPS to 256 | ||||
|  | ||||
|     /* GENERAL CONFIGURATION */ | ||||
|   #define X_MAX_CURRENT     1000  // rms current in mA | ||||
|   #define X_MICROSTEPS        16  // FULLSTEP..256 | ||||
|   #define X_CHIP_SELECT       40  // Pin | ||||
|  | ||||
|     //#define GLOBAL_EN_PWM_MODE        0 | ||||
|     #define GLOBAL_I_SCALE_ANALOG     1 // [0,1] 0: Normal, 1: AIN | ||||
|     //#define GLOBAL_INTERNAL_RSENSE    0 // [0,1] 0: Normal, 1: Internal | ||||
|     #define GLOBAL_EN_PWM_MODE        0 // [0,1] 0: Normal, 1: stealthChop with velocity threshold | ||||
|     //#define GLOBAL_ENC_COMMUTATION    0 // [0,1] | ||||
|     #define GLOBAL_SHAFT              0 // [0,1] 0: normal, 1: invert | ||||
|     //#define GLOBAL_DIAG0_ERROR        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_OTPW         0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_STALL        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_STALL        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_INDEX        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_ONSTATE      0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_ONSTATE      0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_INT_PUSHPULL 0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_INT_PUSHPULL 0 // [0,1] | ||||
|     //#define GLOBAL_SMALL_HYSTERESIS   0 // [0,1] | ||||
|     //#define GLOBAL_STOP_ENABLE        0 // [0,1] | ||||
|     //#define GLOBAL_DIRECT_MODE        0 // [0,1] | ||||
|   #define Y_MAX_CURRENT     1000 | ||||
|   #define Y_MICROSTEPS        16 | ||||
|   #define Y_CHIP_SELECT       42 | ||||
|  | ||||
|     /* VELOCITY-DEPENDENT DRIVE FEATURES */ | ||||
|   #define Z_MAX_CURRENT     1000 | ||||
|   #define Z_MICROSTEPS        16 | ||||
|   #define Z_CHIP_SELECT       65 | ||||
|  | ||||
|     #define GLOBAL_IHOLD             22 // [0-31] 0: min, 31: max | ||||
|     #define GLOBAL_IRUN              31 // [0-31] 0: min, 31: max | ||||
|     #define GLOBAL_IHOLDDELAY        15 // [0-15] 0: min, 15: about 4 seconds | ||||
|     //#define GLOBAL_TPOWERDOWN         0 // [0-255] 0: min, 255: about 4 seconds | ||||
|     //#define GLOBAL_TPWMTHRS           0 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|     //#define GLOBAL_TCOOLTHRS          0 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|     #define GLOBAL_THIGH             10 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|   //#define X2_MAX_CURRENT  1000 | ||||
|   //#define X2_MICROSTEPS     16 | ||||
|   //#define X2_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* SPI MODE CONFIGURATION */ | ||||
|   //#define Y2_MAX_CURRENT  1000 | ||||
|   //#define Y2_MICROSTEPS     16 | ||||
|   //#define Y2_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_XDIRECT            0 | ||||
|   //#define Z2_MAX_CURRENT  1000 | ||||
|   //#define Z2_MICROSTEPS     16 | ||||
|   //#define Z2_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* DCSTEP MINIMUM VELOCITY */ | ||||
|   //#define E0_MAX_CURRENT  1000 | ||||
|   //#define E0_MICROSTEPS     16 | ||||
|   //#define E0_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_VDCMIN             0 | ||||
|   //#define E1_MAX_CURRENT  1000 | ||||
|   //#define E1_MICROSTEPS     16 | ||||
|   //#define E1_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* MOTOR DRIVER CONFIGURATION*/ | ||||
|   //#define E2_MAX_CURRENT  1000 | ||||
|   //#define E2_MICROSTEPS     16 | ||||
|   //#define E2_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_DEDGE              0 | ||||
|     //#define GLOBAL_DISS2G             0 | ||||
|     #define GLOBAL_INTPOL             1 // 0: off 1: 256 microstep interpolation | ||||
|     #define GLOBAL_MRES              16 // number of microsteps | ||||
|     #define GLOBAL_SYNC               1 // [0-15] | ||||
|     #define GLOBAL_VHIGHCHM           1 // [0,1] 0: normal, 1: high velocity stepper mode | ||||
|     #define GLOBAL_VHIGHFS            0 // [0,1] 0: normal, 1: switch to full steps for high velocities | ||||
|     // #define GLOBAL_VSENSE            0 // [0,1] 0: normal, 1: high sensitivity (not recommended) | ||||
|     #define GLOBAL_TBL                1 // 0-3: set comparator blank time to 16, 24, 36 or 54 clocks, 1 or 2 is recommended | ||||
|     #define GLOBAL_CHM                0 // [0,1] 0: spreadCycle, 1: Constant off time with fast decay time. | ||||
|     //#define GLOBAL_RNDTF              0 | ||||
|     //#define GLOBAL_DISFDCC            0 | ||||
|     //#define GLOBAL_FD                 0 | ||||
|     //#define GLOBAL_HEND               0 | ||||
|     //#define GLOBAL_HSTRT              0 | ||||
|     #define GLOBAL_TOFF              10 // 0: driver disable, 1: use only with TBL>2, 2-15: off time setting during slow decay phase | ||||
|   //#define E3_MAX_CURRENT  1000 | ||||
|   //#define E3_MICROSTEPS     16 | ||||
|   //#define E3_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_SFILT              0 | ||||
|     //#define GLOBAL_SGT                0 | ||||
|     //#define GLOBAL_SEIMIN             0 | ||||
|     //#define GLOBAL_SEDN               0 | ||||
|     //#define GLOBAL_SEMAX              0 | ||||
|     //#define GLOBAL_SEUP               0 | ||||
|     //#define GLOBAL_SEMIN              0 | ||||
|   /** | ||||
|    * You can set your own advanced settings by filling in predefined functions. | ||||
|    * A list of available functions can be found on the library github page | ||||
|    * https://github.com/teemuatlut/TMC2130Stepper | ||||
|    * | ||||
|    * Example: | ||||
|    * #define TMC2130_ADV() { \ | ||||
|    *   stepperX.diag0_temp_prewarn(1); \ | ||||
|    *   stepperX.interpolate(0); \ | ||||
|    * } | ||||
|    */ | ||||
|   #define  TMC2130_ADV() {  } | ||||
|  | ||||
|     //#define GLOBAL_DC_TIME            0 | ||||
|     //#define GLOBAL_DC_SG              0 | ||||
|  | ||||
|     //#define GLOBAL_FREEWHEEL          0 | ||||
|     //#define GLOBAL_PWM_SYMMETRIC      0 | ||||
|     //#define GLOBAL_PWM_AUTOSCALE      0 | ||||
|     //#define GLOBAL_PWM_FREQ           0 | ||||
|     //#define GLOBAL_PWM_GRAD           0 | ||||
|     //#define GLOBAL_PWM_AMPL           0 | ||||
|  | ||||
|     //#define GLOBAL_ENCM_CTRL          0 | ||||
|  | ||||
|   #else | ||||
|  | ||||
|     #define X_IHOLD          31 // [0-31] 0: min, 31: max | ||||
|     #define X_IRUN           31 // [0-31] 0: min, 31: max | ||||
|     #define X_IHOLDDELAY     15 // [0-15] 0: min, 15: about 4 seconds | ||||
|     #define X_I_SCALE_ANALOG  1 // 0: Normal, 1: AIN | ||||
|     #define X_MRES           16 // number of microsteps | ||||
|     #define X_TBL             1 // 0-3: set comparator blank time to 16, 24, 36 or 54 clocks, 1 or 2 is recommended | ||||
|     #define X_TOFF            8 // 0: driver disable, 1: use only with TBL>2, 2-15: off time setting during slow decay phase | ||||
|  | ||||
|     #define X2_IHOLD         31 | ||||
|     #define X2_IRUN          31 | ||||
|     #define X2_IHOLDDELAY    15 | ||||
|     #define X2_I_SCALE_ANALOG 1 | ||||
|     #define X2_MRES          16 | ||||
|     #define X2_TBL            1 | ||||
|     #define X2_TOFF           8 | ||||
|  | ||||
|     #define Y_IHOLD          31 | ||||
|     #define Y_IRUN           31 | ||||
|     #define Y_IHOLDDELAY     15 | ||||
|     #define Y_I_SCALE_ANALOG  1 | ||||
|     #define Y_MRES           16 | ||||
|     #define Y_TBL             1 | ||||
|     #define Y_TOFF            8 | ||||
|  | ||||
|     #define Y2_IHOLD         31 | ||||
|     #define Y2_IRUN          31 | ||||
|     #define Y2_IHOLDDELAY    15 | ||||
|     #define Y2_I_SCALE_ANALOG 1 | ||||
|     #define Y2_MRES          16 | ||||
|     #define Y2_TBL            1 | ||||
|     #define Y2_TOFF           8 | ||||
|  | ||||
|     #define Z_IHOLD          31 | ||||
|     #define Z_IRUN           31 | ||||
|     #define Z_IHOLDDELAY     15 | ||||
|     #define Z_I_SCALE_ANALOG  1 | ||||
|     #define Z_MRES           16 | ||||
|     #define Z_TBL             1 | ||||
|     #define Z_TOFF            8 | ||||
|  | ||||
|     #define Z2_IHOLD         31 | ||||
|     #define Z2_IRUN          31 | ||||
|     #define Z2_IHOLDDELAY    15 | ||||
|     #define Z2_I_SCALE_ANALOG 1 | ||||
|     #define Z2_MRES          16 | ||||
|     #define Z2_TBL            1 | ||||
|     #define Z2_TOFF           8 | ||||
|  | ||||
|     #define E0_IHOLD         31 | ||||
|     #define E0_IRUN          31 | ||||
|     #define E0_IHOLDDELAY    15 | ||||
|     #define E0_I_SCALE_ANALOG 1 | ||||
|     #define E0_MRES          16 | ||||
|     #define E0_TBL            1 | ||||
|     #define E0_TOFF           8 | ||||
|  | ||||
|     #define E1_IHOLD         31 | ||||
|     #define E1_IRUN          31 | ||||
|     #define E1_IHOLDDELAY    15 | ||||
|     #define E1_I_SCALE_ANALOG 1 | ||||
|     #define E1_MRES          16 | ||||
|     #define E1_TBL            1 | ||||
|     #define E1_TOFF           8 | ||||
|  | ||||
|     #define E2_IHOLD         31 | ||||
|     #define E2_IRUN          31 | ||||
|     #define E2_IHOLDDELAY    15 | ||||
|     #define E2_I_SCALE_ANALOG 1 | ||||
|     #define E2_MRES          16 | ||||
|     #define E2_TBL            1 | ||||
|     #define E2_TOFF           8 | ||||
|  | ||||
|     #define E3_IHOLD         31 | ||||
|     #define E3_IRUN          31 | ||||
|     #define E3_IHOLDDELAY    15 | ||||
|     #define E3_I_SCALE_ANALOG 1 | ||||
|     #define E3_MRES          16 | ||||
|     #define E3_TBL            1 | ||||
|     #define E3_TOFF           8 | ||||
|  | ||||
|   #endif // TMC2130_ADVANCED_CONFIGURATION | ||||
|  | ||||
| #endif // HAVE_TMC2130DRIVER | ||||
| #endif // ENABLED(HAVE_TMC2130) | ||||
|  | ||||
| // @section L6470 | ||||
|  | ||||
|   | ||||
| @@ -760,14 +760,15 @@ | ||||
|                                                      // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME. | ||||
| #endif | ||||
|  | ||||
| /******************************************************************************\ | ||||
|  * enable this section if you have TMC26X motor drivers. | ||||
|  * you need to import the TMC26XStepper library into the Arduino IDE for this | ||||
|  ******************************************************************************/ | ||||
|  | ||||
| // @section tmc | ||||
|  | ||||
| /** | ||||
|  * Enable this section if you have TMC26X motor drivers. | ||||
|  * You will need to import the TMC26XStepper library into the Arduino IDE for this | ||||
|  * (https://github.com/trinamic/TMC26XStepper.git) | ||||
|  */ | ||||
| //#define HAVE_TMCDRIVER | ||||
|  | ||||
| #if ENABLED(HAVE_TMCDRIVER) | ||||
|  | ||||
|   //#define X_IS_TMC | ||||
| @@ -825,23 +826,31 @@ | ||||
|  | ||||
| // @section TMC2130 | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * Enable this for SilentStepStick Trinamic TMC2130 SPI-configurable stepper drivers. | ||||
|  * | ||||
|  * To use TMC2130 drivers in SPI mode, you'll also need the TMC2130 Arduino library | ||||
|  * (https://github.com/makertum/Trinamic_TMC2130). | ||||
|  * You'll also need the TMC2130Stepper Arduino library | ||||
|  * (https://github.com/teemuatlut/TMC2130Stepper). | ||||
|  * | ||||
|  * To use TMC2130 stepper drivers in SPI mode connect your SPI2130 pins to | ||||
|  * the hardware SPI interface on your board and define the required CS pins | ||||
|  * in your `pins_MYBOARD.h` file. (e.g., RAMPS 1.4 uses AUX3 pins `X_CS_PIN 53`, `Y_CS_PIN 49`, etc.). | ||||
|  */ | ||||
| //#define HAVE_TMC2130 | ||||
|  | ||||
| //#define HAVE_TMC2130DRIVER | ||||
| #if ENABLED(HAVE_TMC2130) | ||||
|   #define STEALTHCHOP | ||||
|  | ||||
| #if ENABLED(HAVE_TMC2130DRIVER) | ||||
|  | ||||
|   //#define TMC2130_ADVANCED_CONFIGURATION | ||||
|   /** | ||||
|    * Let Marlin automatically control stepper current. | ||||
|    * This is still an experimental feature. | ||||
|    * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, | ||||
|    * then decrease current by CURRENT_STEP until temperature prewarn is cleared. | ||||
|    * Adjusting starts from X/Y/Z/E_MAX_CURRENT but will not increase over AUTO_ADJUST_MAX | ||||
|    */  | ||||
|   //#define AUTOMATIC_CURRENT_CONTROL | ||||
|   #define CURRENT_STEP          50  // [mA] | ||||
|   #define AUTO_ADJUST_MAX     1300  // [mA], 1300mA_rms = 1840mA_peak | ||||
|  | ||||
|   // CHOOSE YOUR MOTORS HERE, THIS IS MANDATORY | ||||
|   //#define X_IS_TMC2130 | ||||
| @@ -855,180 +864,68 @@ | ||||
|   //#define E2_IS_TMC2130 | ||||
|   //#define E3_IS_TMC2130 | ||||
|  | ||||
|   #if ENABLED(TMC2130_ADVANCED_CONFIGURATION) | ||||
|   /** | ||||
|    * Stepper driver settings | ||||
|    */ | ||||
|  | ||||
|     // If you've enabled TMC2130_ADVANCED_CONFIGURATION, define global settings below. | ||||
|     // Enabled settings will be automatically applied to all axes specified above. | ||||
|     // | ||||
|     // Please read the TMC2130 datasheet: | ||||
|     // http://www.trinamic.com/_articles/products/integrated-circuits/tmc2130/_datasheet/TMC2130_datasheet.pdf | ||||
|     // All settings here have the same (sometimes cryptic) names as in the datasheet. | ||||
|     // | ||||
|     // The following, uncommented settings are only suggestion. | ||||
|   #define R_SENSE           0.11  // R_sense resistor for SilentStepStick2130 | ||||
|   #define HOLD_MULTIPLIER    0.5  // Scales down the holding current from run current | ||||
|   #define INTERPOLATE          1  // Interpolate X/Y/Z_MICROSTEPS to 256 | ||||
|  | ||||
|     /* GENERAL CONFIGURATION */ | ||||
|   #define X_MAX_CURRENT     1000  // rms current in mA | ||||
|   #define X_MICROSTEPS        16  // FULLSTEP..256 | ||||
|   #define X_CHIP_SELECT       40  // Pin | ||||
|  | ||||
|     //#define GLOBAL_EN_PWM_MODE        0 | ||||
|     #define GLOBAL_I_SCALE_ANALOG     1 // [0,1] 0: Normal, 1: AIN | ||||
|     //#define GLOBAL_INTERNAL_RSENSE    0 // [0,1] 0: Normal, 1: Internal | ||||
|     #define GLOBAL_EN_PWM_MODE        0 // [0,1] 0: Normal, 1: stealthChop with velocity threshold | ||||
|     //#define GLOBAL_ENC_COMMUTATION    0 // [0,1] | ||||
|     #define GLOBAL_SHAFT              0 // [0,1] 0: normal, 1: invert | ||||
|     //#define GLOBAL_DIAG0_ERROR        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_OTPW         0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_STALL        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_STALL        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_INDEX        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_ONSTATE      0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_ONSTATE      0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_INT_PUSHPULL 0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_INT_PUSHPULL 0 // [0,1] | ||||
|     //#define GLOBAL_SMALL_HYSTERESIS   0 // [0,1] | ||||
|     //#define GLOBAL_STOP_ENABLE        0 // [0,1] | ||||
|     //#define GLOBAL_DIRECT_MODE        0 // [0,1] | ||||
|   #define Y_MAX_CURRENT     1000 | ||||
|   #define Y_MICROSTEPS        16 | ||||
|   #define Y_CHIP_SELECT       42 | ||||
|  | ||||
|     /* VELOCITY-DEPENDENT DRIVE FEATURES */ | ||||
|   #define Z_MAX_CURRENT     1000 | ||||
|   #define Z_MICROSTEPS        16 | ||||
|   #define Z_CHIP_SELECT       65 | ||||
|  | ||||
|     #define GLOBAL_IHOLD             22 // [0-31] 0: min, 31: max | ||||
|     #define GLOBAL_IRUN              31 // [0-31] 0: min, 31: max | ||||
|     #define GLOBAL_IHOLDDELAY        15 // [0-15] 0: min, 15: about 4 seconds | ||||
|     //#define GLOBAL_TPOWERDOWN         0 // [0-255] 0: min, 255: about 4 seconds | ||||
|     //#define GLOBAL_TPWMTHRS           0 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|     //#define GLOBAL_TCOOLTHRS          0 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|     #define GLOBAL_THIGH             10 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|   //#define X2_MAX_CURRENT  1000 | ||||
|   //#define X2_MICROSTEPS     16 | ||||
|   //#define X2_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* SPI MODE CONFIGURATION */ | ||||
|   //#define Y2_MAX_CURRENT  1000 | ||||
|   //#define Y2_MICROSTEPS     16 | ||||
|   //#define Y2_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_XDIRECT            0 | ||||
|   //#define Z2_MAX_CURRENT  1000 | ||||
|   //#define Z2_MICROSTEPS     16 | ||||
|   //#define Z2_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* DCSTEP MINIMUM VELOCITY */ | ||||
|   //#define E0_MAX_CURRENT  1000 | ||||
|   //#define E0_MICROSTEPS     16 | ||||
|   //#define E0_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_VDCMIN             0 | ||||
|   //#define E1_MAX_CURRENT  1000 | ||||
|   //#define E1_MICROSTEPS     16 | ||||
|   //#define E1_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* MOTOR DRIVER CONFIGURATION*/ | ||||
|   //#define E2_MAX_CURRENT  1000 | ||||
|   //#define E2_MICROSTEPS     16 | ||||
|   //#define E2_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_DEDGE              0 | ||||
|     //#define GLOBAL_DISS2G             0 | ||||
|     #define GLOBAL_INTPOL             1 // 0: off 1: 256 microstep interpolation | ||||
|     #define GLOBAL_MRES              16 // number of microsteps | ||||
|     #define GLOBAL_SYNC               1 // [0-15] | ||||
|     #define GLOBAL_VHIGHCHM           1 // [0,1] 0: normal, 1: high velocity stepper mode | ||||
|     #define GLOBAL_VHIGHFS            0 // [0,1] 0: normal, 1: switch to full steps for high velocities | ||||
|     // #define GLOBAL_VSENSE            0 // [0,1] 0: normal, 1: high sensitivity (not recommended) | ||||
|     #define GLOBAL_TBL                1 // 0-3: set comparator blank time to 16, 24, 36 or 54 clocks, 1 or 2 is recommended | ||||
|     #define GLOBAL_CHM                0 // [0,1] 0: spreadCycle, 1: Constant off time with fast decay time. | ||||
|     //#define GLOBAL_RNDTF              0 | ||||
|     //#define GLOBAL_DISFDCC            0 | ||||
|     //#define GLOBAL_FD                 0 | ||||
|     //#define GLOBAL_HEND               0 | ||||
|     //#define GLOBAL_HSTRT              0 | ||||
|     #define GLOBAL_TOFF              10 // 0: driver disable, 1: use only with TBL>2, 2-15: off time setting during slow decay phase | ||||
|   //#define E3_MAX_CURRENT  1000 | ||||
|   //#define E3_MICROSTEPS     16 | ||||
|   //#define E3_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_SFILT              0 | ||||
|     //#define GLOBAL_SGT                0 | ||||
|     //#define GLOBAL_SEIMIN             0 | ||||
|     //#define GLOBAL_SEDN               0 | ||||
|     //#define GLOBAL_SEMAX              0 | ||||
|     //#define GLOBAL_SEUP               0 | ||||
|     //#define GLOBAL_SEMIN              0 | ||||
|   /** | ||||
|    * You can set your own advanced settings by filling in predefined functions. | ||||
|    * A list of available functions can be found on the library github page | ||||
|    * https://github.com/teemuatlut/TMC2130Stepper | ||||
|    * | ||||
|    * Example: | ||||
|    * #define TMC2130_ADV() { \ | ||||
|    *   stepperX.diag0_temp_prewarn(1); \ | ||||
|    *   stepperX.interpolate(0); \ | ||||
|    * } | ||||
|    */ | ||||
|   #define  TMC2130_ADV() {  } | ||||
|  | ||||
|     //#define GLOBAL_DC_TIME            0 | ||||
|     //#define GLOBAL_DC_SG              0 | ||||
|  | ||||
|     //#define GLOBAL_FREEWHEEL          0 | ||||
|     //#define GLOBAL_PWM_SYMMETRIC      0 | ||||
|     //#define GLOBAL_PWM_AUTOSCALE      0 | ||||
|     //#define GLOBAL_PWM_FREQ           0 | ||||
|     //#define GLOBAL_PWM_GRAD           0 | ||||
|     //#define GLOBAL_PWM_AMPL           0 | ||||
|  | ||||
|     //#define GLOBAL_ENCM_CTRL          0 | ||||
|  | ||||
|   #else | ||||
|  | ||||
|     #define X_IHOLD          31 // [0-31] 0: min, 31: max | ||||
|     #define X_IRUN           31 // [0-31] 0: min, 31: max | ||||
|     #define X_IHOLDDELAY     15 // [0-15] 0: min, 15: about 4 seconds | ||||
|     #define X_I_SCALE_ANALOG  1 // 0: Normal, 1: AIN | ||||
|     #define X_MRES           16 // number of microsteps | ||||
|     #define X_TBL             1 // 0-3: set comparator blank time to 16, 24, 36 or 54 clocks, 1 or 2 is recommended | ||||
|     #define X_TOFF            8 // 0: driver disable, 1: use only with TBL>2, 2-15: off time setting during slow decay phase | ||||
|  | ||||
|     #define X2_IHOLD         31 | ||||
|     #define X2_IRUN          31 | ||||
|     #define X2_IHOLDDELAY    15 | ||||
|     #define X2_I_SCALE_ANALOG 1 | ||||
|     #define X2_MRES          16 | ||||
|     #define X2_TBL            1 | ||||
|     #define X2_TOFF           8 | ||||
|  | ||||
|     #define Y_IHOLD          31 | ||||
|     #define Y_IRUN           31 | ||||
|     #define Y_IHOLDDELAY     15 | ||||
|     #define Y_I_SCALE_ANALOG  1 | ||||
|     #define Y_MRES           16 | ||||
|     #define Y_TBL             1 | ||||
|     #define Y_TOFF            8 | ||||
|  | ||||
|     #define Y2_IHOLD         31 | ||||
|     #define Y2_IRUN          31 | ||||
|     #define Y2_IHOLDDELAY    15 | ||||
|     #define Y2_I_SCALE_ANALOG 1 | ||||
|     #define Y2_MRES          16 | ||||
|     #define Y2_TBL            1 | ||||
|     #define Y2_TOFF           8 | ||||
|  | ||||
|     #define Z_IHOLD          31 | ||||
|     #define Z_IRUN           31 | ||||
|     #define Z_IHOLDDELAY     15 | ||||
|     #define Z_I_SCALE_ANALOG  1 | ||||
|     #define Z_MRES           16 | ||||
|     #define Z_TBL             1 | ||||
|     #define Z_TOFF            8 | ||||
|  | ||||
|     #define Z2_IHOLD         31 | ||||
|     #define Z2_IRUN          31 | ||||
|     #define Z2_IHOLDDELAY    15 | ||||
|     #define Z2_I_SCALE_ANALOG 1 | ||||
|     #define Z2_MRES          16 | ||||
|     #define Z2_TBL            1 | ||||
|     #define Z2_TOFF           8 | ||||
|  | ||||
|     #define E0_IHOLD         31 | ||||
|     #define E0_IRUN          31 | ||||
|     #define E0_IHOLDDELAY    15 | ||||
|     #define E0_I_SCALE_ANALOG 1 | ||||
|     #define E0_MRES          16 | ||||
|     #define E0_TBL            1 | ||||
|     #define E0_TOFF           8 | ||||
|  | ||||
|     #define E1_IHOLD         31 | ||||
|     #define E1_IRUN          31 | ||||
|     #define E1_IHOLDDELAY    15 | ||||
|     #define E1_I_SCALE_ANALOG 1 | ||||
|     #define E1_MRES          16 | ||||
|     #define E1_TBL            1 | ||||
|     #define E1_TOFF           8 | ||||
|  | ||||
|     #define E2_IHOLD         31 | ||||
|     #define E2_IRUN          31 | ||||
|     #define E2_IHOLDDELAY    15 | ||||
|     #define E2_I_SCALE_ANALOG 1 | ||||
|     #define E2_MRES          16 | ||||
|     #define E2_TBL            1 | ||||
|     #define E2_TOFF           8 | ||||
|  | ||||
|     #define E3_IHOLD         31 | ||||
|     #define E3_IRUN          31 | ||||
|     #define E3_IHOLDDELAY    15 | ||||
|     #define E3_I_SCALE_ANALOG 1 | ||||
|     #define E3_MRES          16 | ||||
|     #define E3_TBL            1 | ||||
|     #define E3_TOFF           8 | ||||
|  | ||||
|   #endif // TMC2130_ADVANCED_CONFIGURATION | ||||
|  | ||||
| #endif // HAVE_TMC2130DRIVER | ||||
| #endif // ENABLED(HAVE_TMC2130) | ||||
|  | ||||
| // @section L6470 | ||||
|  | ||||
|   | ||||
| @@ -760,14 +760,15 @@ | ||||
|                                                      // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME. | ||||
| #endif | ||||
|  | ||||
| /******************************************************************************\ | ||||
|  * enable this section if you have TMC26X motor drivers. | ||||
|  * you need to import the TMC26XStepper library into the Arduino IDE for this | ||||
|  ******************************************************************************/ | ||||
|  | ||||
| // @section tmc | ||||
|  | ||||
| /** | ||||
|  * Enable this section if you have TMC26X motor drivers. | ||||
|  * You will need to import the TMC26XStepper library into the Arduino IDE for this | ||||
|  * (https://github.com/trinamic/TMC26XStepper.git) | ||||
|  */ | ||||
| //#define HAVE_TMCDRIVER | ||||
|  | ||||
| #if ENABLED(HAVE_TMCDRIVER) | ||||
|  | ||||
|   //#define X_IS_TMC | ||||
| @@ -825,23 +826,31 @@ | ||||
|  | ||||
| // @section TMC2130 | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * Enable this for SilentStepStick Trinamic TMC2130 SPI-configurable stepper drivers. | ||||
|  * | ||||
|  * To use TMC2130 drivers in SPI mode, you'll also need the TMC2130 Arduino library | ||||
|  * (https://github.com/makertum/Trinamic_TMC2130). | ||||
|  * You'll also need the TMC2130Stepper Arduino library | ||||
|  * (https://github.com/teemuatlut/TMC2130Stepper). | ||||
|  * | ||||
|  * To use TMC2130 stepper drivers in SPI mode connect your SPI2130 pins to | ||||
|  * the hardware SPI interface on your board and define the required CS pins | ||||
|  * in your `pins_MYBOARD.h` file. (e.g., RAMPS 1.4 uses AUX3 pins `X_CS_PIN 53`, `Y_CS_PIN 49`, etc.). | ||||
|  */ | ||||
| //#define HAVE_TMC2130 | ||||
|  | ||||
| //#define HAVE_TMC2130DRIVER | ||||
| #if ENABLED(HAVE_TMC2130) | ||||
|   #define STEALTHCHOP | ||||
|  | ||||
| #if ENABLED(HAVE_TMC2130DRIVER) | ||||
|  | ||||
|   //#define TMC2130_ADVANCED_CONFIGURATION | ||||
|   /** | ||||
|    * Let Marlin automatically control stepper current. | ||||
|    * This is still an experimental feature. | ||||
|    * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, | ||||
|    * then decrease current by CURRENT_STEP until temperature prewarn is cleared. | ||||
|    * Adjusting starts from X/Y/Z/E_MAX_CURRENT but will not increase over AUTO_ADJUST_MAX | ||||
|    */  | ||||
|   //#define AUTOMATIC_CURRENT_CONTROL | ||||
|   #define CURRENT_STEP          50  // [mA] | ||||
|   #define AUTO_ADJUST_MAX     1300  // [mA], 1300mA_rms = 1840mA_peak | ||||
|  | ||||
|   // CHOOSE YOUR MOTORS HERE, THIS IS MANDATORY | ||||
|   //#define X_IS_TMC2130 | ||||
| @@ -855,180 +864,68 @@ | ||||
|   //#define E2_IS_TMC2130 | ||||
|   //#define E3_IS_TMC2130 | ||||
|  | ||||
|   #if ENABLED(TMC2130_ADVANCED_CONFIGURATION) | ||||
|   /** | ||||
|    * Stepper driver settings | ||||
|    */ | ||||
|  | ||||
|     // If you've enabled TMC2130_ADVANCED_CONFIGURATION, define global settings below. | ||||
|     // Enabled settings will be automatically applied to all axes specified above. | ||||
|     // | ||||
|     // Please read the TMC2130 datasheet: | ||||
|     // http://www.trinamic.com/_articles/products/integrated-circuits/tmc2130/_datasheet/TMC2130_datasheet.pdf | ||||
|     // All settings here have the same (sometimes cryptic) names as in the datasheet. | ||||
|     // | ||||
|     // The following, uncommented settings are only suggestion. | ||||
|   #define R_SENSE           0.11  // R_sense resistor for SilentStepStick2130 | ||||
|   #define HOLD_MULTIPLIER    0.5  // Scales down the holding current from run current | ||||
|   #define INTERPOLATE          1  // Interpolate X/Y/Z_MICROSTEPS to 256 | ||||
|  | ||||
|     /* GENERAL CONFIGURATION */ | ||||
|   #define X_MAX_CURRENT     1000  // rms current in mA | ||||
|   #define X_MICROSTEPS        16  // FULLSTEP..256 | ||||
|   #define X_CHIP_SELECT       40  // Pin | ||||
|  | ||||
|     //#define GLOBAL_EN_PWM_MODE        0 | ||||
|     #define GLOBAL_I_SCALE_ANALOG     1 // [0,1] 0: Normal, 1: AIN | ||||
|     //#define GLOBAL_INTERNAL_RSENSE    0 // [0,1] 0: Normal, 1: Internal | ||||
|     #define GLOBAL_EN_PWM_MODE        0 // [0,1] 0: Normal, 1: stealthChop with velocity threshold | ||||
|     //#define GLOBAL_ENC_COMMUTATION    0 // [0,1] | ||||
|     #define GLOBAL_SHAFT              0 // [0,1] 0: normal, 1: invert | ||||
|     //#define GLOBAL_DIAG0_ERROR        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_OTPW         0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_STALL        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_STALL        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_INDEX        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_ONSTATE      0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_ONSTATE      0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_INT_PUSHPULL 0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_INT_PUSHPULL 0 // [0,1] | ||||
|     //#define GLOBAL_SMALL_HYSTERESIS   0 // [0,1] | ||||
|     //#define GLOBAL_STOP_ENABLE        0 // [0,1] | ||||
|     //#define GLOBAL_DIRECT_MODE        0 // [0,1] | ||||
|   #define Y_MAX_CURRENT     1000 | ||||
|   #define Y_MICROSTEPS        16 | ||||
|   #define Y_CHIP_SELECT       42 | ||||
|  | ||||
|     /* VELOCITY-DEPENDENT DRIVE FEATURES */ | ||||
|   #define Z_MAX_CURRENT     1000 | ||||
|   #define Z_MICROSTEPS        16 | ||||
|   #define Z_CHIP_SELECT       65 | ||||
|  | ||||
|     #define GLOBAL_IHOLD             22 // [0-31] 0: min, 31: max | ||||
|     #define GLOBAL_IRUN              31 // [0-31] 0: min, 31: max | ||||
|     #define GLOBAL_IHOLDDELAY        15 // [0-15] 0: min, 15: about 4 seconds | ||||
|     //#define GLOBAL_TPOWERDOWN         0 // [0-255] 0: min, 255: about 4 seconds | ||||
|     //#define GLOBAL_TPWMTHRS           0 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|     //#define GLOBAL_TCOOLTHRS          0 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|     #define GLOBAL_THIGH             10 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|   //#define X2_MAX_CURRENT  1000 | ||||
|   //#define X2_MICROSTEPS     16 | ||||
|   //#define X2_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* SPI MODE CONFIGURATION */ | ||||
|   //#define Y2_MAX_CURRENT  1000 | ||||
|   //#define Y2_MICROSTEPS     16 | ||||
|   //#define Y2_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_XDIRECT            0 | ||||
|   //#define Z2_MAX_CURRENT  1000 | ||||
|   //#define Z2_MICROSTEPS     16 | ||||
|   //#define Z2_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* DCSTEP MINIMUM VELOCITY */ | ||||
|   //#define E0_MAX_CURRENT  1000 | ||||
|   //#define E0_MICROSTEPS     16 | ||||
|   //#define E0_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_VDCMIN             0 | ||||
|   //#define E1_MAX_CURRENT  1000 | ||||
|   //#define E1_MICROSTEPS     16 | ||||
|   //#define E1_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* MOTOR DRIVER CONFIGURATION*/ | ||||
|   //#define E2_MAX_CURRENT  1000 | ||||
|   //#define E2_MICROSTEPS     16 | ||||
|   //#define E2_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_DEDGE              0 | ||||
|     //#define GLOBAL_DISS2G             0 | ||||
|     #define GLOBAL_INTPOL             1 // 0: off 1: 256 microstep interpolation | ||||
|     #define GLOBAL_MRES              16 // number of microsteps | ||||
|     #define GLOBAL_SYNC               1 // [0-15] | ||||
|     #define GLOBAL_VHIGHCHM           1 // [0,1] 0: normal, 1: high velocity stepper mode | ||||
|     #define GLOBAL_VHIGHFS            0 // [0,1] 0: normal, 1: switch to full steps for high velocities | ||||
|     // #define GLOBAL_VSENSE            0 // [0,1] 0: normal, 1: high sensitivity (not recommended) | ||||
|     #define GLOBAL_TBL                1 // 0-3: set comparator blank time to 16, 24, 36 or 54 clocks, 1 or 2 is recommended | ||||
|     #define GLOBAL_CHM                0 // [0,1] 0: spreadCycle, 1: Constant off time with fast decay time. | ||||
|     //#define GLOBAL_RNDTF              0 | ||||
|     //#define GLOBAL_DISFDCC            0 | ||||
|     //#define GLOBAL_FD                 0 | ||||
|     //#define GLOBAL_HEND               0 | ||||
|     //#define GLOBAL_HSTRT              0 | ||||
|     #define GLOBAL_TOFF              10 // 0: driver disable, 1: use only with TBL>2, 2-15: off time setting during slow decay phase | ||||
|   //#define E3_MAX_CURRENT  1000 | ||||
|   //#define E3_MICROSTEPS     16 | ||||
|   //#define E3_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_SFILT              0 | ||||
|     //#define GLOBAL_SGT                0 | ||||
|     //#define GLOBAL_SEIMIN             0 | ||||
|     //#define GLOBAL_SEDN               0 | ||||
|     //#define GLOBAL_SEMAX              0 | ||||
|     //#define GLOBAL_SEUP               0 | ||||
|     //#define GLOBAL_SEMIN              0 | ||||
|   /** | ||||
|    * You can set your own advanced settings by filling in predefined functions. | ||||
|    * A list of available functions can be found on the library github page | ||||
|    * https://github.com/teemuatlut/TMC2130Stepper | ||||
|    * | ||||
|    * Example: | ||||
|    * #define TMC2130_ADV() { \ | ||||
|    *   stepperX.diag0_temp_prewarn(1); \ | ||||
|    *   stepperX.interpolate(0); \ | ||||
|    * } | ||||
|    */ | ||||
|   #define  TMC2130_ADV() {  } | ||||
|  | ||||
|     //#define GLOBAL_DC_TIME            0 | ||||
|     //#define GLOBAL_DC_SG              0 | ||||
|  | ||||
|     //#define GLOBAL_FREEWHEEL          0 | ||||
|     //#define GLOBAL_PWM_SYMMETRIC      0 | ||||
|     //#define GLOBAL_PWM_AUTOSCALE      0 | ||||
|     //#define GLOBAL_PWM_FREQ           0 | ||||
|     //#define GLOBAL_PWM_GRAD           0 | ||||
|     //#define GLOBAL_PWM_AMPL           0 | ||||
|  | ||||
|     //#define GLOBAL_ENCM_CTRL          0 | ||||
|  | ||||
|   #else | ||||
|  | ||||
|     #define X_IHOLD          31 // [0-31] 0: min, 31: max | ||||
|     #define X_IRUN           31 // [0-31] 0: min, 31: max | ||||
|     #define X_IHOLDDELAY     15 // [0-15] 0: min, 15: about 4 seconds | ||||
|     #define X_I_SCALE_ANALOG  1 // 0: Normal, 1: AIN | ||||
|     #define X_MRES           16 // number of microsteps | ||||
|     #define X_TBL             1 // 0-3: set comparator blank time to 16, 24, 36 or 54 clocks, 1 or 2 is recommended | ||||
|     #define X_TOFF            8 // 0: driver disable, 1: use only with TBL>2, 2-15: off time setting during slow decay phase | ||||
|  | ||||
|     #define X2_IHOLD         31 | ||||
|     #define X2_IRUN          31 | ||||
|     #define X2_IHOLDDELAY    15 | ||||
|     #define X2_I_SCALE_ANALOG 1 | ||||
|     #define X2_MRES          16 | ||||
|     #define X2_TBL            1 | ||||
|     #define X2_TOFF           8 | ||||
|  | ||||
|     #define Y_IHOLD          31 | ||||
|     #define Y_IRUN           31 | ||||
|     #define Y_IHOLDDELAY     15 | ||||
|     #define Y_I_SCALE_ANALOG  1 | ||||
|     #define Y_MRES           16 | ||||
|     #define Y_TBL             1 | ||||
|     #define Y_TOFF            8 | ||||
|  | ||||
|     #define Y2_IHOLD         31 | ||||
|     #define Y2_IRUN          31 | ||||
|     #define Y2_IHOLDDELAY    15 | ||||
|     #define Y2_I_SCALE_ANALOG 1 | ||||
|     #define Y2_MRES          16 | ||||
|     #define Y2_TBL            1 | ||||
|     #define Y2_TOFF           8 | ||||
|  | ||||
|     #define Z_IHOLD          31 | ||||
|     #define Z_IRUN           31 | ||||
|     #define Z_IHOLDDELAY     15 | ||||
|     #define Z_I_SCALE_ANALOG  1 | ||||
|     #define Z_MRES           16 | ||||
|     #define Z_TBL             1 | ||||
|     #define Z_TOFF            8 | ||||
|  | ||||
|     #define Z2_IHOLD         31 | ||||
|     #define Z2_IRUN          31 | ||||
|     #define Z2_IHOLDDELAY    15 | ||||
|     #define Z2_I_SCALE_ANALOG 1 | ||||
|     #define Z2_MRES          16 | ||||
|     #define Z2_TBL            1 | ||||
|     #define Z2_TOFF           8 | ||||
|  | ||||
|     #define E0_IHOLD         31 | ||||
|     #define E0_IRUN          31 | ||||
|     #define E0_IHOLDDELAY    15 | ||||
|     #define E0_I_SCALE_ANALOG 1 | ||||
|     #define E0_MRES          16 | ||||
|     #define E0_TBL            1 | ||||
|     #define E0_TOFF           8 | ||||
|  | ||||
|     #define E1_IHOLD         31 | ||||
|     #define E1_IRUN          31 | ||||
|     #define E1_IHOLDDELAY    15 | ||||
|     #define E1_I_SCALE_ANALOG 1 | ||||
|     #define E1_MRES          16 | ||||
|     #define E1_TBL            1 | ||||
|     #define E1_TOFF           8 | ||||
|  | ||||
|     #define E2_IHOLD         31 | ||||
|     #define E2_IRUN          31 | ||||
|     #define E2_IHOLDDELAY    15 | ||||
|     #define E2_I_SCALE_ANALOG 1 | ||||
|     #define E2_MRES          16 | ||||
|     #define E2_TBL            1 | ||||
|     #define E2_TOFF           8 | ||||
|  | ||||
|     #define E3_IHOLD         31 | ||||
|     #define E3_IRUN          31 | ||||
|     #define E3_IHOLDDELAY    15 | ||||
|     #define E3_I_SCALE_ANALOG 1 | ||||
|     #define E3_MRES          16 | ||||
|     #define E3_TBL            1 | ||||
|     #define E3_TOFF           8 | ||||
|  | ||||
|   #endif // TMC2130_ADVANCED_CONFIGURATION | ||||
|  | ||||
| #endif // HAVE_TMC2130DRIVER | ||||
| #endif // ENABLED(HAVE_TMC2130) | ||||
|  | ||||
| // @section L6470 | ||||
|  | ||||
|   | ||||
| @@ -765,14 +765,15 @@ | ||||
|                                                      // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME. | ||||
| #endif | ||||
|  | ||||
| /******************************************************************************\ | ||||
|  * enable this section if you have TMC26X motor drivers. | ||||
|  * you need to import the TMC26XStepper library into the Arduino IDE for this | ||||
|  ******************************************************************************/ | ||||
|  | ||||
| // @section tmc | ||||
|  | ||||
| /** | ||||
|  * Enable this section if you have TMC26X motor drivers. | ||||
|  * You will need to import the TMC26XStepper library into the Arduino IDE for this | ||||
|  * (https://github.com/trinamic/TMC26XStepper.git) | ||||
|  */ | ||||
| //#define HAVE_TMCDRIVER | ||||
|  | ||||
| #if ENABLED(HAVE_TMCDRIVER) | ||||
|  | ||||
|   //#define X_IS_TMC | ||||
| @@ -830,23 +831,31 @@ | ||||
|  | ||||
| // @section TMC2130 | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * Enable this for SilentStepStick Trinamic TMC2130 SPI-configurable stepper drivers. | ||||
|  * | ||||
|  * To use TMC2130 drivers in SPI mode, you'll also need the TMC2130 Arduino library | ||||
|  * (https://github.com/makertum/Trinamic_TMC2130). | ||||
|  * You'll also need the TMC2130Stepper Arduino library | ||||
|  * (https://github.com/teemuatlut/TMC2130Stepper). | ||||
|  * | ||||
|  * To use TMC2130 stepper drivers in SPI mode connect your SPI2130 pins to | ||||
|  * the hardware SPI interface on your board and define the required CS pins | ||||
|  * in your `pins_MYBOARD.h` file. (e.g., RAMPS 1.4 uses AUX3 pins `X_CS_PIN 53`, `Y_CS_PIN 49`, etc.). | ||||
|  */ | ||||
| //#define HAVE_TMC2130 | ||||
|  | ||||
| //#define HAVE_TMC2130DRIVER | ||||
| #if ENABLED(HAVE_TMC2130) | ||||
|   #define STEALTHCHOP | ||||
|  | ||||
| #if ENABLED(HAVE_TMC2130DRIVER) | ||||
|  | ||||
|   //#define TMC2130_ADVANCED_CONFIGURATION | ||||
|   /** | ||||
|    * Let Marlin automatically control stepper current. | ||||
|    * This is still an experimental feature. | ||||
|    * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, | ||||
|    * then decrease current by CURRENT_STEP until temperature prewarn is cleared. | ||||
|    * Adjusting starts from X/Y/Z/E_MAX_CURRENT but will not increase over AUTO_ADJUST_MAX | ||||
|    */  | ||||
|   //#define AUTOMATIC_CURRENT_CONTROL | ||||
|   #define CURRENT_STEP          50  // [mA] | ||||
|   #define AUTO_ADJUST_MAX     1300  // [mA], 1300mA_rms = 1840mA_peak | ||||
|  | ||||
|   // CHOOSE YOUR MOTORS HERE, THIS IS MANDATORY | ||||
|   //#define X_IS_TMC2130 | ||||
| @@ -860,180 +869,68 @@ | ||||
|   //#define E2_IS_TMC2130 | ||||
|   //#define E3_IS_TMC2130 | ||||
|  | ||||
|   #if ENABLED(TMC2130_ADVANCED_CONFIGURATION) | ||||
|   /** | ||||
|    * Stepper driver settings | ||||
|    */ | ||||
|  | ||||
|     // If you've enabled TMC2130_ADVANCED_CONFIGURATION, define global settings below. | ||||
|     // Enabled settings will be automatically applied to all axes specified above. | ||||
|     // | ||||
|     // Please read the TMC2130 datasheet: | ||||
|     // http://www.trinamic.com/_articles/products/integrated-circuits/tmc2130/_datasheet/TMC2130_datasheet.pdf | ||||
|     // All settings here have the same (sometimes cryptic) names as in the datasheet. | ||||
|     // | ||||
|     // The following, uncommented settings are only suggestion. | ||||
|   #define R_SENSE           0.11  // R_sense resistor for SilentStepStick2130 | ||||
|   #define HOLD_MULTIPLIER    0.5  // Scales down the holding current from run current | ||||
|   #define INTERPOLATE          1  // Interpolate X/Y/Z_MICROSTEPS to 256 | ||||
|  | ||||
|     /* GENERAL CONFIGURATION */ | ||||
|   #define X_MAX_CURRENT     1000  // rms current in mA | ||||
|   #define X_MICROSTEPS        16  // FULLSTEP..256 | ||||
|   #define X_CHIP_SELECT       40  // Pin | ||||
|  | ||||
|     //#define GLOBAL_EN_PWM_MODE        0 | ||||
|     #define GLOBAL_I_SCALE_ANALOG     1 // [0,1] 0: Normal, 1: AIN | ||||
|     //#define GLOBAL_INTERNAL_RSENSE    0 // [0,1] 0: Normal, 1: Internal | ||||
|     #define GLOBAL_EN_PWM_MODE        0 // [0,1] 0: Normal, 1: stealthChop with velocity threshold | ||||
|     //#define GLOBAL_ENC_COMMUTATION    0 // [0,1] | ||||
|     #define GLOBAL_SHAFT              0 // [0,1] 0: normal, 1: invert | ||||
|     //#define GLOBAL_DIAG0_ERROR        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_OTPW         0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_STALL        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_STALL        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_INDEX        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_ONSTATE      0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_ONSTATE      0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_INT_PUSHPULL 0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_INT_PUSHPULL 0 // [0,1] | ||||
|     //#define GLOBAL_SMALL_HYSTERESIS   0 // [0,1] | ||||
|     //#define GLOBAL_STOP_ENABLE        0 // [0,1] | ||||
|     //#define GLOBAL_DIRECT_MODE        0 // [0,1] | ||||
|   #define Y_MAX_CURRENT     1000 | ||||
|   #define Y_MICROSTEPS        16 | ||||
|   #define Y_CHIP_SELECT       42 | ||||
|  | ||||
|     /* VELOCITY-DEPENDENT DRIVE FEATURES */ | ||||
|   #define Z_MAX_CURRENT     1000 | ||||
|   #define Z_MICROSTEPS        16 | ||||
|   #define Z_CHIP_SELECT       65 | ||||
|  | ||||
|     #define GLOBAL_IHOLD             22 // [0-31] 0: min, 31: max | ||||
|     #define GLOBAL_IRUN              31 // [0-31] 0: min, 31: max | ||||
|     #define GLOBAL_IHOLDDELAY        15 // [0-15] 0: min, 15: about 4 seconds | ||||
|     //#define GLOBAL_TPOWERDOWN         0 // [0-255] 0: min, 255: about 4 seconds | ||||
|     //#define GLOBAL_TPWMTHRS           0 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|     //#define GLOBAL_TCOOLTHRS          0 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|     #define GLOBAL_THIGH             10 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|   //#define X2_MAX_CURRENT  1000 | ||||
|   //#define X2_MICROSTEPS     16 | ||||
|   //#define X2_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* SPI MODE CONFIGURATION */ | ||||
|   //#define Y2_MAX_CURRENT  1000 | ||||
|   //#define Y2_MICROSTEPS     16 | ||||
|   //#define Y2_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_XDIRECT            0 | ||||
|   //#define Z2_MAX_CURRENT  1000 | ||||
|   //#define Z2_MICROSTEPS     16 | ||||
|   //#define Z2_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* DCSTEP MINIMUM VELOCITY */ | ||||
|   //#define E0_MAX_CURRENT  1000 | ||||
|   //#define E0_MICROSTEPS     16 | ||||
|   //#define E0_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_VDCMIN             0 | ||||
|   //#define E1_MAX_CURRENT  1000 | ||||
|   //#define E1_MICROSTEPS     16 | ||||
|   //#define E1_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* MOTOR DRIVER CONFIGURATION*/ | ||||
|   //#define E2_MAX_CURRENT  1000 | ||||
|   //#define E2_MICROSTEPS     16 | ||||
|   //#define E2_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_DEDGE              0 | ||||
|     //#define GLOBAL_DISS2G             0 | ||||
|     #define GLOBAL_INTPOL             1 // 0: off 1: 256 microstep interpolation | ||||
|     #define GLOBAL_MRES              16 // number of microsteps | ||||
|     #define GLOBAL_SYNC               1 // [0-15] | ||||
|     #define GLOBAL_VHIGHCHM           1 // [0,1] 0: normal, 1: high velocity stepper mode | ||||
|     #define GLOBAL_VHIGHFS            0 // [0,1] 0: normal, 1: switch to full steps for high velocities | ||||
|     // #define GLOBAL_VSENSE            0 // [0,1] 0: normal, 1: high sensitivity (not recommended) | ||||
|     #define GLOBAL_TBL                1 // 0-3: set comparator blank time to 16, 24, 36 or 54 clocks, 1 or 2 is recommended | ||||
|     #define GLOBAL_CHM                0 // [0,1] 0: spreadCycle, 1: Constant off time with fast decay time. | ||||
|     //#define GLOBAL_RNDTF              0 | ||||
|     //#define GLOBAL_DISFDCC            0 | ||||
|     //#define GLOBAL_FD                 0 | ||||
|     //#define GLOBAL_HEND               0 | ||||
|     //#define GLOBAL_HSTRT              0 | ||||
|     #define GLOBAL_TOFF              10 // 0: driver disable, 1: use only with TBL>2, 2-15: off time setting during slow decay phase | ||||
|   //#define E3_MAX_CURRENT  1000 | ||||
|   //#define E3_MICROSTEPS     16 | ||||
|   //#define E3_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_SFILT              0 | ||||
|     //#define GLOBAL_SGT                0 | ||||
|     //#define GLOBAL_SEIMIN             0 | ||||
|     //#define GLOBAL_SEDN               0 | ||||
|     //#define GLOBAL_SEMAX              0 | ||||
|     //#define GLOBAL_SEUP               0 | ||||
|     //#define GLOBAL_SEMIN              0 | ||||
|   /** | ||||
|    * You can set your own advanced settings by filling in predefined functions. | ||||
|    * A list of available functions can be found on the library github page | ||||
|    * https://github.com/teemuatlut/TMC2130Stepper | ||||
|    * | ||||
|    * Example: | ||||
|    * #define TMC2130_ADV() { \ | ||||
|    *   stepperX.diag0_temp_prewarn(1); \ | ||||
|    *   stepperX.interpolate(0); \ | ||||
|    * } | ||||
|    */ | ||||
|   #define  TMC2130_ADV() {  } | ||||
|  | ||||
|     //#define GLOBAL_DC_TIME            0 | ||||
|     //#define GLOBAL_DC_SG              0 | ||||
|  | ||||
|     //#define GLOBAL_FREEWHEEL          0 | ||||
|     //#define GLOBAL_PWM_SYMMETRIC      0 | ||||
|     //#define GLOBAL_PWM_AUTOSCALE      0 | ||||
|     //#define GLOBAL_PWM_FREQ           0 | ||||
|     //#define GLOBAL_PWM_GRAD           0 | ||||
|     //#define GLOBAL_PWM_AMPL           0 | ||||
|  | ||||
|     //#define GLOBAL_ENCM_CTRL          0 | ||||
|  | ||||
|   #else | ||||
|  | ||||
|     #define X_IHOLD          31 // [0-31] 0: min, 31: max | ||||
|     #define X_IRUN           31 // [0-31] 0: min, 31: max | ||||
|     #define X_IHOLDDELAY     15 // [0-15] 0: min, 15: about 4 seconds | ||||
|     #define X_I_SCALE_ANALOG  1 // 0: Normal, 1: AIN | ||||
|     #define X_MRES           16 // number of microsteps | ||||
|     #define X_TBL             1 // 0-3: set comparator blank time to 16, 24, 36 or 54 clocks, 1 or 2 is recommended | ||||
|     #define X_TOFF            8 // 0: driver disable, 1: use only with TBL>2, 2-15: off time setting during slow decay phase | ||||
|  | ||||
|     #define X2_IHOLD         31 | ||||
|     #define X2_IRUN          31 | ||||
|     #define X2_IHOLDDELAY    15 | ||||
|     #define X2_I_SCALE_ANALOG 1 | ||||
|     #define X2_MRES          16 | ||||
|     #define X2_TBL            1 | ||||
|     #define X2_TOFF           8 | ||||
|  | ||||
|     #define Y_IHOLD          31 | ||||
|     #define Y_IRUN           31 | ||||
|     #define Y_IHOLDDELAY     15 | ||||
|     #define Y_I_SCALE_ANALOG  1 | ||||
|     #define Y_MRES           16 | ||||
|     #define Y_TBL             1 | ||||
|     #define Y_TOFF            8 | ||||
|  | ||||
|     #define Y2_IHOLD         31 | ||||
|     #define Y2_IRUN          31 | ||||
|     #define Y2_IHOLDDELAY    15 | ||||
|     #define Y2_I_SCALE_ANALOG 1 | ||||
|     #define Y2_MRES          16 | ||||
|     #define Y2_TBL            1 | ||||
|     #define Y2_TOFF           8 | ||||
|  | ||||
|     #define Z_IHOLD          31 | ||||
|     #define Z_IRUN           31 | ||||
|     #define Z_IHOLDDELAY     15 | ||||
|     #define Z_I_SCALE_ANALOG  1 | ||||
|     #define Z_MRES           16 | ||||
|     #define Z_TBL             1 | ||||
|     #define Z_TOFF            8 | ||||
|  | ||||
|     #define Z2_IHOLD         31 | ||||
|     #define Z2_IRUN          31 | ||||
|     #define Z2_IHOLDDELAY    15 | ||||
|     #define Z2_I_SCALE_ANALOG 1 | ||||
|     #define Z2_MRES          16 | ||||
|     #define Z2_TBL            1 | ||||
|     #define Z2_TOFF           8 | ||||
|  | ||||
|     #define E0_IHOLD         31 | ||||
|     #define E0_IRUN          31 | ||||
|     #define E0_IHOLDDELAY    15 | ||||
|     #define E0_I_SCALE_ANALOG 1 | ||||
|     #define E0_MRES          16 | ||||
|     #define E0_TBL            1 | ||||
|     #define E0_TOFF           8 | ||||
|  | ||||
|     #define E1_IHOLD         31 | ||||
|     #define E1_IRUN          31 | ||||
|     #define E1_IHOLDDELAY    15 | ||||
|     #define E1_I_SCALE_ANALOG 1 | ||||
|     #define E1_MRES          16 | ||||
|     #define E1_TBL            1 | ||||
|     #define E1_TOFF           8 | ||||
|  | ||||
|     #define E2_IHOLD         31 | ||||
|     #define E2_IRUN          31 | ||||
|     #define E2_IHOLDDELAY    15 | ||||
|     #define E2_I_SCALE_ANALOG 1 | ||||
|     #define E2_MRES          16 | ||||
|     #define E2_TBL            1 | ||||
|     #define E2_TOFF           8 | ||||
|  | ||||
|     #define E3_IHOLD         31 | ||||
|     #define E3_IRUN          31 | ||||
|     #define E3_IHOLDDELAY    15 | ||||
|     #define E3_I_SCALE_ANALOG 1 | ||||
|     #define E3_MRES          16 | ||||
|     #define E3_TBL            1 | ||||
|     #define E3_TOFF           8 | ||||
|  | ||||
|   #endif // TMC2130_ADVANCED_CONFIGURATION | ||||
|  | ||||
| #endif // HAVE_TMC2130DRIVER | ||||
| #endif // ENABLED(HAVE_TMC2130) | ||||
|  | ||||
| // @section L6470 | ||||
|  | ||||
|   | ||||
| @@ -760,14 +760,15 @@ | ||||
|                                                      // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME. | ||||
| #endif | ||||
|  | ||||
| /******************************************************************************\ | ||||
|  * enable this section if you have TMC26X motor drivers. | ||||
|  * you need to import the TMC26XStepper library into the Arduino IDE for this | ||||
|  ******************************************************************************/ | ||||
|  | ||||
| // @section tmc | ||||
|  | ||||
| /** | ||||
|  * Enable this section if you have TMC26X motor drivers. | ||||
|  * You will need to import the TMC26XStepper library into the Arduino IDE for this | ||||
|  * (https://github.com/trinamic/TMC26XStepper.git) | ||||
|  */ | ||||
| //#define HAVE_TMCDRIVER | ||||
|  | ||||
| #if ENABLED(HAVE_TMCDRIVER) | ||||
|  | ||||
|   //#define X_IS_TMC | ||||
| @@ -825,23 +826,31 @@ | ||||
|  | ||||
| // @section TMC2130 | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * Enable this for SilentStepStick Trinamic TMC2130 SPI-configurable stepper drivers. | ||||
|  * | ||||
|  * To use TMC2130 drivers in SPI mode, you'll also need the TMC2130 Arduino library | ||||
|  * (https://github.com/makertum/Trinamic_TMC2130). | ||||
|  * You'll also need the TMC2130Stepper Arduino library | ||||
|  * (https://github.com/teemuatlut/TMC2130Stepper). | ||||
|  * | ||||
|  * To use TMC2130 stepper drivers in SPI mode connect your SPI2130 pins to | ||||
|  * the hardware SPI interface on your board and define the required CS pins | ||||
|  * in your `pins_MYBOARD.h` file. (e.g., RAMPS 1.4 uses AUX3 pins `X_CS_PIN 53`, `Y_CS_PIN 49`, etc.). | ||||
|  */ | ||||
| //#define HAVE_TMC2130 | ||||
|  | ||||
| //#define HAVE_TMC2130DRIVER | ||||
| #if ENABLED(HAVE_TMC2130) | ||||
|   #define STEALTHCHOP | ||||
|  | ||||
| #if ENABLED(HAVE_TMC2130DRIVER) | ||||
|  | ||||
|   //#define TMC2130_ADVANCED_CONFIGURATION | ||||
|   /** | ||||
|    * Let Marlin automatically control stepper current. | ||||
|    * This is still an experimental feature. | ||||
|    * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, | ||||
|    * then decrease current by CURRENT_STEP until temperature prewarn is cleared. | ||||
|    * Adjusting starts from X/Y/Z/E_MAX_CURRENT but will not increase over AUTO_ADJUST_MAX | ||||
|    */  | ||||
|   //#define AUTOMATIC_CURRENT_CONTROL | ||||
|   #define CURRENT_STEP          50  // [mA] | ||||
|   #define AUTO_ADJUST_MAX     1300  // [mA], 1300mA_rms = 1840mA_peak | ||||
|  | ||||
|   // CHOOSE YOUR MOTORS HERE, THIS IS MANDATORY | ||||
|   //#define X_IS_TMC2130 | ||||
| @@ -855,180 +864,68 @@ | ||||
|   //#define E2_IS_TMC2130 | ||||
|   //#define E3_IS_TMC2130 | ||||
|  | ||||
|   #if ENABLED(TMC2130_ADVANCED_CONFIGURATION) | ||||
|   /** | ||||
|    * Stepper driver settings | ||||
|    */ | ||||
|  | ||||
|     // If you've enabled TMC2130_ADVANCED_CONFIGURATION, define global settings below. | ||||
|     // Enabled settings will be automatically applied to all axes specified above. | ||||
|     // | ||||
|     // Please read the TMC2130 datasheet: | ||||
|     // http://www.trinamic.com/_articles/products/integrated-circuits/tmc2130/_datasheet/TMC2130_datasheet.pdf | ||||
|     // All settings here have the same (sometimes cryptic) names as in the datasheet. | ||||
|     // | ||||
|     // The following, uncommented settings are only suggestion. | ||||
|   #define R_SENSE           0.11  // R_sense resistor for SilentStepStick2130 | ||||
|   #define HOLD_MULTIPLIER    0.5  // Scales down the holding current from run current | ||||
|   #define INTERPOLATE          1  // Interpolate X/Y/Z_MICROSTEPS to 256 | ||||
|  | ||||
|     /* GENERAL CONFIGURATION */ | ||||
|   #define X_MAX_CURRENT     1000  // rms current in mA | ||||
|   #define X_MICROSTEPS        16  // FULLSTEP..256 | ||||
|   #define X_CHIP_SELECT       40  // Pin | ||||
|  | ||||
|     //#define GLOBAL_EN_PWM_MODE        0 | ||||
|     #define GLOBAL_I_SCALE_ANALOG     1 // [0,1] 0: Normal, 1: AIN | ||||
|     //#define GLOBAL_INTERNAL_RSENSE    0 // [0,1] 0: Normal, 1: Internal | ||||
|     #define GLOBAL_EN_PWM_MODE        0 // [0,1] 0: Normal, 1: stealthChop with velocity threshold | ||||
|     //#define GLOBAL_ENC_COMMUTATION    0 // [0,1] | ||||
|     #define GLOBAL_SHAFT              0 // [0,1] 0: normal, 1: invert | ||||
|     //#define GLOBAL_DIAG0_ERROR        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_OTPW         0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_STALL        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_STALL        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_INDEX        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_ONSTATE      0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_ONSTATE      0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_INT_PUSHPULL 0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_INT_PUSHPULL 0 // [0,1] | ||||
|     //#define GLOBAL_SMALL_HYSTERESIS   0 // [0,1] | ||||
|     //#define GLOBAL_STOP_ENABLE        0 // [0,1] | ||||
|     //#define GLOBAL_DIRECT_MODE        0 // [0,1] | ||||
|   #define Y_MAX_CURRENT     1000 | ||||
|   #define Y_MICROSTEPS        16 | ||||
|   #define Y_CHIP_SELECT       42 | ||||
|  | ||||
|     /* VELOCITY-DEPENDENT DRIVE FEATURES */ | ||||
|   #define Z_MAX_CURRENT     1000 | ||||
|   #define Z_MICROSTEPS        16 | ||||
|   #define Z_CHIP_SELECT       65 | ||||
|  | ||||
|     #define GLOBAL_IHOLD             22 // [0-31] 0: min, 31: max | ||||
|     #define GLOBAL_IRUN              31 // [0-31] 0: min, 31: max | ||||
|     #define GLOBAL_IHOLDDELAY        15 // [0-15] 0: min, 15: about 4 seconds | ||||
|     //#define GLOBAL_TPOWERDOWN         0 // [0-255] 0: min, 255: about 4 seconds | ||||
|     //#define GLOBAL_TPWMTHRS           0 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|     //#define GLOBAL_TCOOLTHRS          0 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|     #define GLOBAL_THIGH             10 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|   //#define X2_MAX_CURRENT  1000 | ||||
|   //#define X2_MICROSTEPS     16 | ||||
|   //#define X2_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* SPI MODE CONFIGURATION */ | ||||
|   //#define Y2_MAX_CURRENT  1000 | ||||
|   //#define Y2_MICROSTEPS     16 | ||||
|   //#define Y2_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_XDIRECT            0 | ||||
|   //#define Z2_MAX_CURRENT  1000 | ||||
|   //#define Z2_MICROSTEPS     16 | ||||
|   //#define Z2_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* DCSTEP MINIMUM VELOCITY */ | ||||
|   //#define E0_MAX_CURRENT  1000 | ||||
|   //#define E0_MICROSTEPS     16 | ||||
|   //#define E0_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_VDCMIN             0 | ||||
|   //#define E1_MAX_CURRENT  1000 | ||||
|   //#define E1_MICROSTEPS     16 | ||||
|   //#define E1_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* MOTOR DRIVER CONFIGURATION*/ | ||||
|   //#define E2_MAX_CURRENT  1000 | ||||
|   //#define E2_MICROSTEPS     16 | ||||
|   //#define E2_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_DEDGE              0 | ||||
|     //#define GLOBAL_DISS2G             0 | ||||
|     #define GLOBAL_INTPOL             1 // 0: off 1: 256 microstep interpolation | ||||
|     #define GLOBAL_MRES              16 // number of microsteps | ||||
|     #define GLOBAL_SYNC               1 // [0-15] | ||||
|     #define GLOBAL_VHIGHCHM           1 // [0,1] 0: normal, 1: high velocity stepper mode | ||||
|     #define GLOBAL_VHIGHFS            0 // [0,1] 0: normal, 1: switch to full steps for high velocities | ||||
|     // #define GLOBAL_VSENSE            0 // [0,1] 0: normal, 1: high sensitivity (not recommended) | ||||
|     #define GLOBAL_TBL                1 // 0-3: set comparator blank time to 16, 24, 36 or 54 clocks, 1 or 2 is recommended | ||||
|     #define GLOBAL_CHM                0 // [0,1] 0: spreadCycle, 1: Constant off time with fast decay time. | ||||
|     //#define GLOBAL_RNDTF              0 | ||||
|     //#define GLOBAL_DISFDCC            0 | ||||
|     //#define GLOBAL_FD                 0 | ||||
|     //#define GLOBAL_HEND               0 | ||||
|     //#define GLOBAL_HSTRT              0 | ||||
|     #define GLOBAL_TOFF              10 // 0: driver disable, 1: use only with TBL>2, 2-15: off time setting during slow decay phase | ||||
|   //#define E3_MAX_CURRENT  1000 | ||||
|   //#define E3_MICROSTEPS     16 | ||||
|   //#define E3_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_SFILT              0 | ||||
|     //#define GLOBAL_SGT                0 | ||||
|     //#define GLOBAL_SEIMIN             0 | ||||
|     //#define GLOBAL_SEDN               0 | ||||
|     //#define GLOBAL_SEMAX              0 | ||||
|     //#define GLOBAL_SEUP               0 | ||||
|     //#define GLOBAL_SEMIN              0 | ||||
|   /** | ||||
|    * You can set your own advanced settings by filling in predefined functions. | ||||
|    * A list of available functions can be found on the library github page | ||||
|    * https://github.com/teemuatlut/TMC2130Stepper | ||||
|    * | ||||
|    * Example: | ||||
|    * #define TMC2130_ADV() { \ | ||||
|    *   stepperX.diag0_temp_prewarn(1); \ | ||||
|    *   stepperX.interpolate(0); \ | ||||
|    * } | ||||
|    */ | ||||
|   #define  TMC2130_ADV() {  } | ||||
|  | ||||
|     //#define GLOBAL_DC_TIME            0 | ||||
|     //#define GLOBAL_DC_SG              0 | ||||
|  | ||||
|     //#define GLOBAL_FREEWHEEL          0 | ||||
|     //#define GLOBAL_PWM_SYMMETRIC      0 | ||||
|     //#define GLOBAL_PWM_AUTOSCALE      0 | ||||
|     //#define GLOBAL_PWM_FREQ           0 | ||||
|     //#define GLOBAL_PWM_GRAD           0 | ||||
|     //#define GLOBAL_PWM_AMPL           0 | ||||
|  | ||||
|     //#define GLOBAL_ENCM_CTRL          0 | ||||
|  | ||||
|   #else | ||||
|  | ||||
|     #define X_IHOLD          31 // [0-31] 0: min, 31: max | ||||
|     #define X_IRUN           31 // [0-31] 0: min, 31: max | ||||
|     #define X_IHOLDDELAY     15 // [0-15] 0: min, 15: about 4 seconds | ||||
|     #define X_I_SCALE_ANALOG  1 // 0: Normal, 1: AIN | ||||
|     #define X_MRES           16 // number of microsteps | ||||
|     #define X_TBL             1 // 0-3: set comparator blank time to 16, 24, 36 or 54 clocks, 1 or 2 is recommended | ||||
|     #define X_TOFF            8 // 0: driver disable, 1: use only with TBL>2, 2-15: off time setting during slow decay phase | ||||
|  | ||||
|     #define X2_IHOLD         31 | ||||
|     #define X2_IRUN          31 | ||||
|     #define X2_IHOLDDELAY    15 | ||||
|     #define X2_I_SCALE_ANALOG 1 | ||||
|     #define X2_MRES          16 | ||||
|     #define X2_TBL            1 | ||||
|     #define X2_TOFF           8 | ||||
|  | ||||
|     #define Y_IHOLD          31 | ||||
|     #define Y_IRUN           31 | ||||
|     #define Y_IHOLDDELAY     15 | ||||
|     #define Y_I_SCALE_ANALOG  1 | ||||
|     #define Y_MRES           16 | ||||
|     #define Y_TBL             1 | ||||
|     #define Y_TOFF            8 | ||||
|  | ||||
|     #define Y2_IHOLD         31 | ||||
|     #define Y2_IRUN          31 | ||||
|     #define Y2_IHOLDDELAY    15 | ||||
|     #define Y2_I_SCALE_ANALOG 1 | ||||
|     #define Y2_MRES          16 | ||||
|     #define Y2_TBL            1 | ||||
|     #define Y2_TOFF           8 | ||||
|  | ||||
|     #define Z_IHOLD          31 | ||||
|     #define Z_IRUN           31 | ||||
|     #define Z_IHOLDDELAY     15 | ||||
|     #define Z_I_SCALE_ANALOG  1 | ||||
|     #define Z_MRES           16 | ||||
|     #define Z_TBL             1 | ||||
|     #define Z_TOFF            8 | ||||
|  | ||||
|     #define Z2_IHOLD         31 | ||||
|     #define Z2_IRUN          31 | ||||
|     #define Z2_IHOLDDELAY    15 | ||||
|     #define Z2_I_SCALE_ANALOG 1 | ||||
|     #define Z2_MRES          16 | ||||
|     #define Z2_TBL            1 | ||||
|     #define Z2_TOFF           8 | ||||
|  | ||||
|     #define E0_IHOLD         31 | ||||
|     #define E0_IRUN          31 | ||||
|     #define E0_IHOLDDELAY    15 | ||||
|     #define E0_I_SCALE_ANALOG 1 | ||||
|     #define E0_MRES          16 | ||||
|     #define E0_TBL            1 | ||||
|     #define E0_TOFF           8 | ||||
|  | ||||
|     #define E1_IHOLD         31 | ||||
|     #define E1_IRUN          31 | ||||
|     #define E1_IHOLDDELAY    15 | ||||
|     #define E1_I_SCALE_ANALOG 1 | ||||
|     #define E1_MRES          16 | ||||
|     #define E1_TBL            1 | ||||
|     #define E1_TOFF           8 | ||||
|  | ||||
|     #define E2_IHOLD         31 | ||||
|     #define E2_IRUN          31 | ||||
|     #define E2_IHOLDDELAY    15 | ||||
|     #define E2_I_SCALE_ANALOG 1 | ||||
|     #define E2_MRES          16 | ||||
|     #define E2_TBL            1 | ||||
|     #define E2_TOFF           8 | ||||
|  | ||||
|     #define E3_IHOLD         31 | ||||
|     #define E3_IRUN          31 | ||||
|     #define E3_IHOLDDELAY    15 | ||||
|     #define E3_I_SCALE_ANALOG 1 | ||||
|     #define E3_MRES          16 | ||||
|     #define E3_TBL            1 | ||||
|     #define E3_TOFF           8 | ||||
|  | ||||
|   #endif // TMC2130_ADVANCED_CONFIGURATION | ||||
|  | ||||
| #endif // HAVE_TMC2130DRIVER | ||||
| #endif // ENABLED(HAVE_TMC2130) | ||||
|  | ||||
| // @section L6470 | ||||
|  | ||||
|   | ||||
| @@ -758,14 +758,15 @@ | ||||
|                                                      // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME. | ||||
| #endif | ||||
|  | ||||
| /******************************************************************************\ | ||||
|  * enable this section if you have TMC26X motor drivers. | ||||
|  * you need to import the TMC26XStepper library into the Arduino IDE for this | ||||
|  ******************************************************************************/ | ||||
|  | ||||
| // @section tmc | ||||
|  | ||||
| /** | ||||
|  * Enable this section if you have TMC26X motor drivers. | ||||
|  * You will need to import the TMC26XStepper library into the Arduino IDE for this | ||||
|  * (https://github.com/trinamic/TMC26XStepper.git) | ||||
|  */ | ||||
| //#define HAVE_TMCDRIVER | ||||
|  | ||||
| #if ENABLED(HAVE_TMCDRIVER) | ||||
|  | ||||
|   //#define X_IS_TMC | ||||
| @@ -823,23 +824,31 @@ | ||||
|  | ||||
| // @section TMC2130 | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * Enable this for SilentStepStick Trinamic TMC2130 SPI-configurable stepper drivers. | ||||
|  * | ||||
|  * To use TMC2130 drivers in SPI mode, you'll also need the TMC2130 Arduino library | ||||
|  * (https://github.com/makertum/Trinamic_TMC2130). | ||||
|  * You'll also need the TMC2130Stepper Arduino library | ||||
|  * (https://github.com/teemuatlut/TMC2130Stepper). | ||||
|  * | ||||
|  * To use TMC2130 stepper drivers in SPI mode connect your SPI2130 pins to | ||||
|  * the hardware SPI interface on your board and define the required CS pins | ||||
|  * in your `pins_MYBOARD.h` file. (e.g., RAMPS 1.4 uses AUX3 pins `X_CS_PIN 53`, `Y_CS_PIN 49`, etc.). | ||||
|  */ | ||||
| //#define HAVE_TMC2130 | ||||
|  | ||||
| //#define HAVE_TMC2130DRIVER | ||||
| #if ENABLED(HAVE_TMC2130) | ||||
|   #define STEALTHCHOP | ||||
|  | ||||
| #if ENABLED(HAVE_TMC2130DRIVER) | ||||
|  | ||||
|   //#define TMC2130_ADVANCED_CONFIGURATION | ||||
|   /** | ||||
|    * Let Marlin automatically control stepper current. | ||||
|    * This is still an experimental feature. | ||||
|    * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, | ||||
|    * then decrease current by CURRENT_STEP until temperature prewarn is cleared. | ||||
|    * Adjusting starts from X/Y/Z/E_MAX_CURRENT but will not increase over AUTO_ADJUST_MAX | ||||
|    */  | ||||
|   //#define AUTOMATIC_CURRENT_CONTROL | ||||
|   #define CURRENT_STEP          50  // [mA] | ||||
|   #define AUTO_ADJUST_MAX     1300  // [mA], 1300mA_rms = 1840mA_peak | ||||
|  | ||||
|   // CHOOSE YOUR MOTORS HERE, THIS IS MANDATORY | ||||
|   //#define X_IS_TMC2130 | ||||
| @@ -853,180 +862,68 @@ | ||||
|   //#define E2_IS_TMC2130 | ||||
|   //#define E3_IS_TMC2130 | ||||
|  | ||||
|   #if ENABLED(TMC2130_ADVANCED_CONFIGURATION) | ||||
|   /** | ||||
|    * Stepper driver settings | ||||
|    */ | ||||
|  | ||||
|     // If you've enabled TMC2130_ADVANCED_CONFIGURATION, define global settings below. | ||||
|     // Enabled settings will be automatically applied to all axes specified above. | ||||
|     // | ||||
|     // Please read the TMC2130 datasheet: | ||||
|     // http://www.trinamic.com/_articles/products/integrated-circuits/tmc2130/_datasheet/TMC2130_datasheet.pdf | ||||
|     // All settings here have the same (sometimes cryptic) names as in the datasheet. | ||||
|     // | ||||
|     // The following, uncommented settings are only suggestion. | ||||
|   #define R_SENSE           0.11  // R_sense resistor for SilentStepStick2130 | ||||
|   #define HOLD_MULTIPLIER    0.5  // Scales down the holding current from run current | ||||
|   #define INTERPOLATE          1  // Interpolate X/Y/Z_MICROSTEPS to 256 | ||||
|  | ||||
|     /* GENERAL CONFIGURATION */ | ||||
|   #define X_MAX_CURRENT     1000  // rms current in mA | ||||
|   #define X_MICROSTEPS        16  // FULLSTEP..256 | ||||
|   #define X_CHIP_SELECT       40  // Pin | ||||
|  | ||||
|     //#define GLOBAL_EN_PWM_MODE        0 | ||||
|     #define GLOBAL_I_SCALE_ANALOG     1 // [0,1] 0: Normal, 1: AIN | ||||
|     //#define GLOBAL_INTERNAL_RSENSE    0 // [0,1] 0: Normal, 1: Internal | ||||
|     #define GLOBAL_EN_PWM_MODE        0 // [0,1] 0: Normal, 1: stealthChop with velocity threshold | ||||
|     //#define GLOBAL_ENC_COMMUTATION    0 // [0,1] | ||||
|     #define GLOBAL_SHAFT              0 // [0,1] 0: normal, 1: invert | ||||
|     //#define GLOBAL_DIAG0_ERROR        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_OTPW         0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_STALL        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_STALL        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_INDEX        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_ONSTATE      0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_ONSTATE      0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_INT_PUSHPULL 0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_INT_PUSHPULL 0 // [0,1] | ||||
|     //#define GLOBAL_SMALL_HYSTERESIS   0 // [0,1] | ||||
|     //#define GLOBAL_STOP_ENABLE        0 // [0,1] | ||||
|     //#define GLOBAL_DIRECT_MODE        0 // [0,1] | ||||
|   #define Y_MAX_CURRENT     1000 | ||||
|   #define Y_MICROSTEPS        16 | ||||
|   #define Y_CHIP_SELECT       42 | ||||
|  | ||||
|     /* VELOCITY-DEPENDENT DRIVE FEATURES */ | ||||
|   #define Z_MAX_CURRENT     1000 | ||||
|   #define Z_MICROSTEPS        16 | ||||
|   #define Z_CHIP_SELECT       65 | ||||
|  | ||||
|     #define GLOBAL_IHOLD             22 // [0-31] 0: min, 31: max | ||||
|     #define GLOBAL_IRUN              31 // [0-31] 0: min, 31: max | ||||
|     #define GLOBAL_IHOLDDELAY        15 // [0-15] 0: min, 15: about 4 seconds | ||||
|     //#define GLOBAL_TPOWERDOWN         0 // [0-255] 0: min, 255: about 4 seconds | ||||
|     //#define GLOBAL_TPWMTHRS           0 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|     //#define GLOBAL_TCOOLTHRS          0 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|     #define GLOBAL_THIGH             10 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|   //#define X2_MAX_CURRENT  1000 | ||||
|   //#define X2_MICROSTEPS     16 | ||||
|   //#define X2_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* SPI MODE CONFIGURATION */ | ||||
|   //#define Y2_MAX_CURRENT  1000 | ||||
|   //#define Y2_MICROSTEPS     16 | ||||
|   //#define Y2_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_XDIRECT            0 | ||||
|   //#define Z2_MAX_CURRENT  1000 | ||||
|   //#define Z2_MICROSTEPS     16 | ||||
|   //#define Z2_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* DCSTEP MINIMUM VELOCITY */ | ||||
|   //#define E0_MAX_CURRENT  1000 | ||||
|   //#define E0_MICROSTEPS     16 | ||||
|   //#define E0_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_VDCMIN             0 | ||||
|   //#define E1_MAX_CURRENT  1000 | ||||
|   //#define E1_MICROSTEPS     16 | ||||
|   //#define E1_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* MOTOR DRIVER CONFIGURATION*/ | ||||
|   //#define E2_MAX_CURRENT  1000 | ||||
|   //#define E2_MICROSTEPS     16 | ||||
|   //#define E2_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_DEDGE              0 | ||||
|     //#define GLOBAL_DISS2G             0 | ||||
|     #define GLOBAL_INTPOL             1 // 0: off 1: 256 microstep interpolation | ||||
|     #define GLOBAL_MRES              16 // number of microsteps | ||||
|     #define GLOBAL_SYNC               1 // [0-15] | ||||
|     #define GLOBAL_VHIGHCHM           1 // [0,1] 0: normal, 1: high velocity stepper mode | ||||
|     #define GLOBAL_VHIGHFS            0 // [0,1] 0: normal, 1: switch to full steps for high velocities | ||||
|     // #define GLOBAL_VSENSE            0 // [0,1] 0: normal, 1: high sensitivity (not recommended) | ||||
|     #define GLOBAL_TBL                1 // 0-3: set comparator blank time to 16, 24, 36 or 54 clocks, 1 or 2 is recommended | ||||
|     #define GLOBAL_CHM                0 // [0,1] 0: spreadCycle, 1: Constant off time with fast decay time. | ||||
|     //#define GLOBAL_RNDTF              0 | ||||
|     //#define GLOBAL_DISFDCC            0 | ||||
|     //#define GLOBAL_FD                 0 | ||||
|     //#define GLOBAL_HEND               0 | ||||
|     //#define GLOBAL_HSTRT              0 | ||||
|     #define GLOBAL_TOFF              10 // 0: driver disable, 1: use only with TBL>2, 2-15: off time setting during slow decay phase | ||||
|   //#define E3_MAX_CURRENT  1000 | ||||
|   //#define E3_MICROSTEPS     16 | ||||
|   //#define E3_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_SFILT              0 | ||||
|     //#define GLOBAL_SGT                0 | ||||
|     //#define GLOBAL_SEIMIN             0 | ||||
|     //#define GLOBAL_SEDN               0 | ||||
|     //#define GLOBAL_SEMAX              0 | ||||
|     //#define GLOBAL_SEUP               0 | ||||
|     //#define GLOBAL_SEMIN              0 | ||||
|   /** | ||||
|    * You can set your own advanced settings by filling in predefined functions. | ||||
|    * A list of available functions can be found on the library github page | ||||
|    * https://github.com/teemuatlut/TMC2130Stepper | ||||
|    * | ||||
|    * Example: | ||||
|    * #define TMC2130_ADV() { \ | ||||
|    *   stepperX.diag0_temp_prewarn(1); \ | ||||
|    *   stepperX.interpolate(0); \ | ||||
|    * } | ||||
|    */ | ||||
|   #define  TMC2130_ADV() {  } | ||||
|  | ||||
|     //#define GLOBAL_DC_TIME            0 | ||||
|     //#define GLOBAL_DC_SG              0 | ||||
|  | ||||
|     //#define GLOBAL_FREEWHEEL          0 | ||||
|     //#define GLOBAL_PWM_SYMMETRIC      0 | ||||
|     //#define GLOBAL_PWM_AUTOSCALE      0 | ||||
|     //#define GLOBAL_PWM_FREQ           0 | ||||
|     //#define GLOBAL_PWM_GRAD           0 | ||||
|     //#define GLOBAL_PWM_AMPL           0 | ||||
|  | ||||
|     //#define GLOBAL_ENCM_CTRL          0 | ||||
|  | ||||
|   #else | ||||
|  | ||||
|     #define X_IHOLD          31 // [0-31] 0: min, 31: max | ||||
|     #define X_IRUN           31 // [0-31] 0: min, 31: max | ||||
|     #define X_IHOLDDELAY     15 // [0-15] 0: min, 15: about 4 seconds | ||||
|     #define X_I_SCALE_ANALOG  1 // 0: Normal, 1: AIN | ||||
|     #define X_MRES           16 // number of microsteps | ||||
|     #define X_TBL             1 // 0-3: set comparator blank time to 16, 24, 36 or 54 clocks, 1 or 2 is recommended | ||||
|     #define X_TOFF            8 // 0: driver disable, 1: use only with TBL>2, 2-15: off time setting during slow decay phase | ||||
|  | ||||
|     #define X2_IHOLD         31 | ||||
|     #define X2_IRUN          31 | ||||
|     #define X2_IHOLDDELAY    15 | ||||
|     #define X2_I_SCALE_ANALOG 1 | ||||
|     #define X2_MRES          16 | ||||
|     #define X2_TBL            1 | ||||
|     #define X2_TOFF           8 | ||||
|  | ||||
|     #define Y_IHOLD          31 | ||||
|     #define Y_IRUN           31 | ||||
|     #define Y_IHOLDDELAY     15 | ||||
|     #define Y_I_SCALE_ANALOG  1 | ||||
|     #define Y_MRES           16 | ||||
|     #define Y_TBL             1 | ||||
|     #define Y_TOFF            8 | ||||
|  | ||||
|     #define Y2_IHOLD         31 | ||||
|     #define Y2_IRUN          31 | ||||
|     #define Y2_IHOLDDELAY    15 | ||||
|     #define Y2_I_SCALE_ANALOG 1 | ||||
|     #define Y2_MRES          16 | ||||
|     #define Y2_TBL            1 | ||||
|     #define Y2_TOFF           8 | ||||
|  | ||||
|     #define Z_IHOLD          31 | ||||
|     #define Z_IRUN           31 | ||||
|     #define Z_IHOLDDELAY     15 | ||||
|     #define Z_I_SCALE_ANALOG  1 | ||||
|     #define Z_MRES           16 | ||||
|     #define Z_TBL             1 | ||||
|     #define Z_TOFF            8 | ||||
|  | ||||
|     #define Z2_IHOLD         31 | ||||
|     #define Z2_IRUN          31 | ||||
|     #define Z2_IHOLDDELAY    15 | ||||
|     #define Z2_I_SCALE_ANALOG 1 | ||||
|     #define Z2_MRES          16 | ||||
|     #define Z2_TBL            1 | ||||
|     #define Z2_TOFF           8 | ||||
|  | ||||
|     #define E0_IHOLD         31 | ||||
|     #define E0_IRUN          31 | ||||
|     #define E0_IHOLDDELAY    15 | ||||
|     #define E0_I_SCALE_ANALOG 1 | ||||
|     #define E0_MRES          16 | ||||
|     #define E0_TBL            1 | ||||
|     #define E0_TOFF           8 | ||||
|  | ||||
|     #define E1_IHOLD         31 | ||||
|     #define E1_IRUN          31 | ||||
|     #define E1_IHOLDDELAY    15 | ||||
|     #define E1_I_SCALE_ANALOG 1 | ||||
|     #define E1_MRES          16 | ||||
|     #define E1_TBL            1 | ||||
|     #define E1_TOFF           8 | ||||
|  | ||||
|     #define E2_IHOLD         31 | ||||
|     #define E2_IRUN          31 | ||||
|     #define E2_IHOLDDELAY    15 | ||||
|     #define E2_I_SCALE_ANALOG 1 | ||||
|     #define E2_MRES          16 | ||||
|     #define E2_TBL            1 | ||||
|     #define E2_TOFF           8 | ||||
|  | ||||
|     #define E3_IHOLD         31 | ||||
|     #define E3_IRUN          31 | ||||
|     #define E3_IHOLDDELAY    15 | ||||
|     #define E3_I_SCALE_ANALOG 1 | ||||
|     #define E3_MRES          16 | ||||
|     #define E3_TBL            1 | ||||
|     #define E3_TOFF           8 | ||||
|  | ||||
|   #endif // TMC2130_ADVANCED_CONFIGURATION | ||||
|  | ||||
| #endif // HAVE_TMC2130DRIVER | ||||
| #endif // ENABLED(HAVE_TMC2130) | ||||
|  | ||||
| // @section L6470 | ||||
|  | ||||
|   | ||||
| @@ -758,14 +758,15 @@ | ||||
|                                                      // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME. | ||||
| #endif | ||||
|  | ||||
| /******************************************************************************\ | ||||
|  * enable this section if you have TMC26X motor drivers. | ||||
|  * you need to import the TMC26XStepper library into the Arduino IDE for this | ||||
|  ******************************************************************************/ | ||||
|  | ||||
| // @section tmc | ||||
|  | ||||
| /** | ||||
|  * Enable this section if you have TMC26X motor drivers. | ||||
|  * You will need to import the TMC26XStepper library into the Arduino IDE for this | ||||
|  * (https://github.com/trinamic/TMC26XStepper.git) | ||||
|  */ | ||||
| //#define HAVE_TMCDRIVER | ||||
|  | ||||
| #if ENABLED(HAVE_TMCDRIVER) | ||||
|  | ||||
|   //#define X_IS_TMC | ||||
| @@ -823,23 +824,31 @@ | ||||
|  | ||||
| // @section TMC2130 | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * Enable this for SilentStepStick Trinamic TMC2130 SPI-configurable stepper drivers. | ||||
|  * | ||||
|  * To use TMC2130 drivers in SPI mode, you'll also need the TMC2130 Arduino library | ||||
|  * (https://github.com/makertum/Trinamic_TMC2130). | ||||
|  * You'll also need the TMC2130Stepper Arduino library | ||||
|  * (https://github.com/teemuatlut/TMC2130Stepper). | ||||
|  * | ||||
|  * To use TMC2130 stepper drivers in SPI mode connect your SPI2130 pins to | ||||
|  * the hardware SPI interface on your board and define the required CS pins | ||||
|  * in your `pins_MYBOARD.h` file. (e.g., RAMPS 1.4 uses AUX3 pins `X_CS_PIN 53`, `Y_CS_PIN 49`, etc.). | ||||
|  */ | ||||
| //#define HAVE_TMC2130 | ||||
|  | ||||
| //#define HAVE_TMC2130DRIVER | ||||
| #if ENABLED(HAVE_TMC2130) | ||||
|   #define STEALTHCHOP | ||||
|  | ||||
| #if ENABLED(HAVE_TMC2130DRIVER) | ||||
|  | ||||
|   //#define TMC2130_ADVANCED_CONFIGURATION | ||||
|   /** | ||||
|    * Let Marlin automatically control stepper current. | ||||
|    * This is still an experimental feature. | ||||
|    * Increase current every 5s by CURRENT_STEP until stepper temperature prewarn gets triggered, | ||||
|    * then decrease current by CURRENT_STEP until temperature prewarn is cleared. | ||||
|    * Adjusting starts from X/Y/Z/E_MAX_CURRENT but will not increase over AUTO_ADJUST_MAX | ||||
|    */  | ||||
|   //#define AUTOMATIC_CURRENT_CONTROL | ||||
|   #define CURRENT_STEP          50  // [mA] | ||||
|   #define AUTO_ADJUST_MAX     1300  // [mA], 1300mA_rms = 1840mA_peak | ||||
|  | ||||
|   // CHOOSE YOUR MOTORS HERE, THIS IS MANDATORY | ||||
|   //#define X_IS_TMC2130 | ||||
| @@ -853,180 +862,68 @@ | ||||
|   //#define E2_IS_TMC2130 | ||||
|   //#define E3_IS_TMC2130 | ||||
|  | ||||
|   #if ENABLED(TMC2130_ADVANCED_CONFIGURATION) | ||||
|   /** | ||||
|    * Stepper driver settings | ||||
|    */ | ||||
|  | ||||
|     // If you've enabled TMC2130_ADVANCED_CONFIGURATION, define global settings below. | ||||
|     // Enabled settings will be automatically applied to all axes specified above. | ||||
|     // | ||||
|     // Please read the TMC2130 datasheet: | ||||
|     // http://www.trinamic.com/_articles/products/integrated-circuits/tmc2130/_datasheet/TMC2130_datasheet.pdf | ||||
|     // All settings here have the same (sometimes cryptic) names as in the datasheet. | ||||
|     // | ||||
|     // The following, uncommented settings are only suggestion. | ||||
|   #define R_SENSE           0.11  // R_sense resistor for SilentStepStick2130 | ||||
|   #define HOLD_MULTIPLIER    0.5  // Scales down the holding current from run current | ||||
|   #define INTERPOLATE          1  // Interpolate X/Y/Z_MICROSTEPS to 256 | ||||
|  | ||||
|     /* GENERAL CONFIGURATION */ | ||||
|   #define X_MAX_CURRENT     1000  // rms current in mA | ||||
|   #define X_MICROSTEPS        16  // FULLSTEP..256 | ||||
|   #define X_CHIP_SELECT       40  // Pin | ||||
|  | ||||
|     //#define GLOBAL_EN_PWM_MODE        0 | ||||
|     #define GLOBAL_I_SCALE_ANALOG     1 // [0,1] 0: Normal, 1: AIN | ||||
|     //#define GLOBAL_INTERNAL_RSENSE    0 // [0,1] 0: Normal, 1: Internal | ||||
|     #define GLOBAL_EN_PWM_MODE        0 // [0,1] 0: Normal, 1: stealthChop with velocity threshold | ||||
|     //#define GLOBAL_ENC_COMMUTATION    0 // [0,1] | ||||
|     #define GLOBAL_SHAFT              0 // [0,1] 0: normal, 1: invert | ||||
|     //#define GLOBAL_DIAG0_ERROR        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_OTPW         0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_STALL        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_STALL        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_INDEX        0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_ONSTATE      0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_ONSTATE      0 // [0,1] | ||||
|     //#define GLOBAL_DIAG0_INT_PUSHPULL 0 // [0,1] | ||||
|     //#define GLOBAL_DIAG1_INT_PUSHPULL 0 // [0,1] | ||||
|     //#define GLOBAL_SMALL_HYSTERESIS   0 // [0,1] | ||||
|     //#define GLOBAL_STOP_ENABLE        0 // [0,1] | ||||
|     //#define GLOBAL_DIRECT_MODE        0 // [0,1] | ||||
|   #define Y_MAX_CURRENT     1000 | ||||
|   #define Y_MICROSTEPS        16 | ||||
|   #define Y_CHIP_SELECT       42 | ||||
|  | ||||
|     /* VELOCITY-DEPENDENT DRIVE FEATURES */ | ||||
|   #define Z_MAX_CURRENT     1000 | ||||
|   #define Z_MICROSTEPS        16 | ||||
|   #define Z_CHIP_SELECT       65 | ||||
|  | ||||
|     #define GLOBAL_IHOLD             22 // [0-31] 0: min, 31: max | ||||
|     #define GLOBAL_IRUN              31 // [0-31] 0: min, 31: max | ||||
|     #define GLOBAL_IHOLDDELAY        15 // [0-15] 0: min, 15: about 4 seconds | ||||
|     //#define GLOBAL_TPOWERDOWN         0 // [0-255] 0: min, 255: about 4 seconds | ||||
|     //#define GLOBAL_TPWMTHRS           0 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|     //#define GLOBAL_TCOOLTHRS          0 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|     #define GLOBAL_THIGH             10 // [0-1048576] e.g. 20 corresponds with 2000 steps/s | ||||
|   //#define X2_MAX_CURRENT  1000 | ||||
|   //#define X2_MICROSTEPS     16 | ||||
|   //#define X2_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* SPI MODE CONFIGURATION */ | ||||
|   //#define Y2_MAX_CURRENT  1000 | ||||
|   //#define Y2_MICROSTEPS     16 | ||||
|   //#define Y2_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_XDIRECT            0 | ||||
|   //#define Z2_MAX_CURRENT  1000 | ||||
|   //#define Z2_MICROSTEPS     16 | ||||
|   //#define Z2_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* DCSTEP MINIMUM VELOCITY */ | ||||
|   //#define E0_MAX_CURRENT  1000 | ||||
|   //#define E0_MICROSTEPS     16 | ||||
|   //#define E0_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_VDCMIN             0 | ||||
|   //#define E1_MAX_CURRENT  1000 | ||||
|   //#define E1_MICROSTEPS     16 | ||||
|   //#define E1_CHIP_SELECT    -1 | ||||
|  | ||||
|     /* MOTOR DRIVER CONFIGURATION*/ | ||||
|   //#define E2_MAX_CURRENT  1000 | ||||
|   //#define E2_MICROSTEPS     16 | ||||
|   //#define E2_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_DEDGE              0 | ||||
|     //#define GLOBAL_DISS2G             0 | ||||
|     #define GLOBAL_INTPOL             1 // 0: off 1: 256 microstep interpolation | ||||
|     #define GLOBAL_MRES              16 // number of microsteps | ||||
|     #define GLOBAL_SYNC               1 // [0-15] | ||||
|     #define GLOBAL_VHIGHCHM           1 // [0,1] 0: normal, 1: high velocity stepper mode | ||||
|     #define GLOBAL_VHIGHFS            0 // [0,1] 0: normal, 1: switch to full steps for high velocities | ||||
|     // #define GLOBAL_VSENSE            0 // [0,1] 0: normal, 1: high sensitivity (not recommended) | ||||
|     #define GLOBAL_TBL                1 // 0-3: set comparator blank time to 16, 24, 36 or 54 clocks, 1 or 2 is recommended | ||||
|     #define GLOBAL_CHM                0 // [0,1] 0: spreadCycle, 1: Constant off time with fast decay time. | ||||
|     //#define GLOBAL_RNDTF              0 | ||||
|     //#define GLOBAL_DISFDCC            0 | ||||
|     //#define GLOBAL_FD                 0 | ||||
|     //#define GLOBAL_HEND               0 | ||||
|     //#define GLOBAL_HSTRT              0 | ||||
|     #define GLOBAL_TOFF              10 // 0: driver disable, 1: use only with TBL>2, 2-15: off time setting during slow decay phase | ||||
|   //#define E3_MAX_CURRENT  1000 | ||||
|   //#define E3_MICROSTEPS     16 | ||||
|   //#define E3_CHIP_SELECT    -1 | ||||
|  | ||||
|     //#define GLOBAL_SFILT              0 | ||||
|     //#define GLOBAL_SGT                0 | ||||
|     //#define GLOBAL_SEIMIN             0 | ||||
|     //#define GLOBAL_SEDN               0 | ||||
|     //#define GLOBAL_SEMAX              0 | ||||
|     //#define GLOBAL_SEUP               0 | ||||
|     //#define GLOBAL_SEMIN              0 | ||||
|   /** | ||||
|    * You can set your own advanced settings by filling in predefined functions. | ||||
|    * A list of available functions can be found on the library github page | ||||
|    * https://github.com/teemuatlut/TMC2130Stepper | ||||
|    * | ||||
|    * Example: | ||||
|    * #define TMC2130_ADV() { \ | ||||
|    *   stepperX.diag0_temp_prewarn(1); \ | ||||
|    *   stepperX.interpolate(0); \ | ||||
|    * } | ||||
|    */ | ||||
|   #define  TMC2130_ADV() {  } | ||||
|  | ||||
|     //#define GLOBAL_DC_TIME            0 | ||||
|     //#define GLOBAL_DC_SG              0 | ||||
|  | ||||
|     //#define GLOBAL_FREEWHEEL          0 | ||||
|     //#define GLOBAL_PWM_SYMMETRIC      0 | ||||
|     //#define GLOBAL_PWM_AUTOSCALE      0 | ||||
|     //#define GLOBAL_PWM_FREQ           0 | ||||
|     //#define GLOBAL_PWM_GRAD           0 | ||||
|     //#define GLOBAL_PWM_AMPL           0 | ||||
|  | ||||
|     //#define GLOBAL_ENCM_CTRL          0 | ||||
|  | ||||
|   #else | ||||
|  | ||||
|     #define X_IHOLD          31 // [0-31] 0: min, 31: max | ||||
|     #define X_IRUN           31 // [0-31] 0: min, 31: max | ||||
|     #define X_IHOLDDELAY     15 // [0-15] 0: min, 15: about 4 seconds | ||||
|     #define X_I_SCALE_ANALOG  1 // 0: Normal, 1: AIN | ||||
|     #define X_MRES           16 // number of microsteps | ||||
|     #define X_TBL             1 // 0-3: set comparator blank time to 16, 24, 36 or 54 clocks, 1 or 2 is recommended | ||||
|     #define X_TOFF            8 // 0: driver disable, 1: use only with TBL>2, 2-15: off time setting during slow decay phase | ||||
|  | ||||
|     #define X2_IHOLD         31 | ||||
|     #define X2_IRUN          31 | ||||
|     #define X2_IHOLDDELAY    15 | ||||
|     #define X2_I_SCALE_ANALOG 1 | ||||
|     #define X2_MRES          16 | ||||
|     #define X2_TBL            1 | ||||
|     #define X2_TOFF           8 | ||||
|  | ||||
|     #define Y_IHOLD          31 | ||||
|     #define Y_IRUN           31 | ||||
|     #define Y_IHOLDDELAY     15 | ||||
|     #define Y_I_SCALE_ANALOG  1 | ||||
|     #define Y_MRES           16 | ||||
|     #define Y_TBL             1 | ||||
|     #define Y_TOFF            8 | ||||
|  | ||||
|     #define Y2_IHOLD         31 | ||||
|     #define Y2_IRUN          31 | ||||
|     #define Y2_IHOLDDELAY    15 | ||||
|     #define Y2_I_SCALE_ANALOG 1 | ||||
|     #define Y2_MRES          16 | ||||
|     #define Y2_TBL            1 | ||||
|     #define Y2_TOFF           8 | ||||
|  | ||||
|     #define Z_IHOLD          31 | ||||
|     #define Z_IRUN           31 | ||||
|     #define Z_IHOLDDELAY     15 | ||||
|     #define Z_I_SCALE_ANALOG  1 | ||||
|     #define Z_MRES           16 | ||||
|     #define Z_TBL             1 | ||||
|     #define Z_TOFF            8 | ||||
|  | ||||
|     #define Z2_IHOLD         31 | ||||
|     #define Z2_IRUN          31 | ||||
|     #define Z2_IHOLDDELAY    15 | ||||
|     #define Z2_I_SCALE_ANALOG 1 | ||||
|     #define Z2_MRES          16 | ||||
|     #define Z2_TBL            1 | ||||
|     #define Z2_TOFF           8 | ||||
|  | ||||
|     #define E0_IHOLD         31 | ||||
|     #define E0_IRUN          31 | ||||
|     #define E0_IHOLDDELAY    15 | ||||
|     #define E0_I_SCALE_ANALOG 1 | ||||
|     #define E0_MRES          16 | ||||
|     #define E0_TBL            1 | ||||
|     #define E0_TOFF           8 | ||||
|  | ||||
|     #define E1_IHOLD         31 | ||||
|     #define E1_IRUN          31 | ||||
|     #define E1_IHOLDDELAY    15 | ||||
|     #define E1_I_SCALE_ANALOG 1 | ||||
|     #define E1_MRES          16 | ||||
|     #define E1_TBL            1 | ||||
|     #define E1_TOFF           8 | ||||
|  | ||||
|     #define E2_IHOLD         31 | ||||
|     #define E2_IRUN          31 | ||||
|     #define E2_IHOLDDELAY    15 | ||||
|     #define E2_I_SCALE_ANALOG 1 | ||||
|     #define E2_MRES          16 | ||||
|     #define E2_TBL            1 | ||||
|     #define E2_TOFF           8 | ||||
|  | ||||
|     #define E3_IHOLD         31 | ||||
|     #define E3_IRUN          31 | ||||
|     #define E3_IHOLDDELAY    15 | ||||
|     #define E3_I_SCALE_ANALOG 1 | ||||
|     #define E3_MRES          16 | ||||
|     #define E3_TBL            1 | ||||
|     #define E3_TOFF           8 | ||||
|  | ||||
|   #endif // TMC2130_ADVANCED_CONFIGURATION | ||||
|  | ||||
| #endif // HAVE_TMC2130DRIVER | ||||
| #endif // ENABLED(HAVE_TMC2130) | ||||
|  | ||||
| // @section L6470 | ||||
|  | ||||
|   | ||||
| @@ -894,7 +894,7 @@ void Stepper::init() { | ||||
|   #endif | ||||
|  | ||||
|   // Init TMC2130 Steppers | ||||
|   #if ENABLED(HAVE_TMC2130DRIVER) | ||||
|   #if ENABLED(HAVE_TMC2130) | ||||
|     tmc2130_init(); | ||||
|   #endif | ||||
|  | ||||
|   | ||||
| @@ -21,25 +21,15 @@ | ||||
|  */ | ||||
|  | ||||
| /** | ||||
|   stepper_indirection.c - stepper motor driver indirection | ||||
|   to allow some stepper functions to be done via SPI/I2c instead of direct pin manipulation | ||||
|   Part of Marlin | ||||
|  | ||||
|   Copyright (c) 2015 Dominik Wenger | ||||
|  | ||||
|   Marlin is free software: you can redistribute it and/or modify | ||||
|   it under the terms of the GNU General Public License as published by | ||||
|   the Free Software Foundation, either version 3 of the License, or | ||||
|   (at your option) any later version. | ||||
|  | ||||
|   Marlin is distributed in the hope that it will be useful, | ||||
|   but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|   GNU General Public License for more details. | ||||
|  | ||||
|   You should have received a copy of the GNU General Public License | ||||
|   along with Marlin.  If not, see <http://www.gnu.org/licenses/>. | ||||
| */ | ||||
|  * stepper_indirection.cpp | ||||
|  * | ||||
|  * Stepper motor driver indirection to allow some stepper functions to | ||||
|  * be done via SPI/I2c instead of direct pin manipulation. | ||||
|  * | ||||
|  * Part of Marlin | ||||
|  * | ||||
|  * Copyright (c) 2015 Dominik Wenger | ||||
|  */ | ||||
|  | ||||
| #include "stepper_indirection.h" | ||||
|  | ||||
| @@ -53,41 +43,43 @@ | ||||
|   #include <SPI.h> | ||||
|   #include <TMC26XStepper.h> | ||||
|  | ||||
|   #define _TMC_DEFINE(ST) TMC26XStepper stepper##ST(200, ST##_ENABLE_PIN, ST##_STEP_PIN, ST##_DIR_PIN, ST##_MAX_CURRENT, ST##_SENSE_RESISTOR) | ||||
|  | ||||
|   #if ENABLED(X_IS_TMC) | ||||
|     TMC26XStepper stepperX(200, X_ENABLE_PIN, X_STEP_PIN, X_DIR_PIN, X_MAX_CURRENT, X_SENSE_RESISTOR); | ||||
|     _TMC_DEFINE(X); | ||||
|   #endif | ||||
|   #if ENABLED(X2_IS_TMC) | ||||
|     TMC26XStepper stepperX2(200, X2_ENABLE_PIN, X2_STEP_PIN, X2_DIR_PIN, X2_MAX_CURRENT, X2_SENSE_RESISTOR); | ||||
|     _TMC_DEFINE(X2); | ||||
|   #endif | ||||
|   #if ENABLED(Y_IS_TMC) | ||||
|     TMC26XStepper stepperY(200, Y_ENABLE_PIN, Y_STEP_PIN, Y_DIR_PIN, Y_MAX_CURRENT, Y_SENSE_RESISTOR); | ||||
|     _TMC_DEFINE(Y); | ||||
|   #endif | ||||
|   #if ENABLED(Y2_IS_TMC) | ||||
|     TMC26XStepper stepperY2(200, Y2_ENABLE_PIN, Y2_STEP_PIN, Y2_DIR_PIN, Y2_MAX_CURRENT, Y2_SENSE_RESISTOR); | ||||
|     _TMC_DEFINE(Y2); | ||||
|   #endif | ||||
|   #if ENABLED(Z_IS_TMC) | ||||
|     TMC26XStepper stepperZ(200, Z_ENABLE_PIN, Z_STEP_PIN, Z_DIR_PIN, Z_MAX_CURRENT, Z_SENSE_RESISTOR); | ||||
|     _TMC_DEFINE(Z); | ||||
|   #endif | ||||
|   #if ENABLED(Z2_IS_TMC) | ||||
|     TMC26XStepper stepperZ2(200, Z2_ENABLE_PIN, Z2_STEP_PIN, Z2_DIR_PIN, Z2_MAX_CURRENT, Z2_SENSE_RESISTOR); | ||||
|     _TMC_DEFINE(Z2); | ||||
|   #endif | ||||
|   #if ENABLED(E0_IS_TMC) | ||||
|     TMC26XStepper stepperE0(200, E0_ENABLE_PIN, E0_STEP_PIN, E0_DIR_PIN, E0_MAX_CURRENT, E0_SENSE_RESISTOR); | ||||
|     _TMC_DEFINE(E0); | ||||
|   #endif | ||||
|   #if ENABLED(E1_IS_TMC) | ||||
|     TMC26XStepper stepperE1(200, E1_ENABLE_PIN, E1_STEP_PIN, E1_DIR_PIN, E1_MAX_CURRENT, E1_SENSE_RESISTOR); | ||||
|     _TMC_DEFINE(E1); | ||||
|   #endif | ||||
|   #if ENABLED(E2_IS_TMC) | ||||
|     TMC26XStepper stepperE2(200, E2_ENABLE_PIN, E2_STEP_PIN, E2_DIR_PIN, E2_MAX_CURRENT, E2_SENSE_RESISTOR); | ||||
|     _TMC_DEFINE(E2); | ||||
|   #endif | ||||
|   #if ENABLED(E3_IS_TMC) | ||||
|     TMC26XStepper stepperE3(200, E3_ENABLE_PIN, E3_STEP_PIN, E3_DIR_PIN, E3_MAX_CURRENT, E3_SENSE_RESISTOR); | ||||
|     _TMC_DEFINE(E3); | ||||
|   #endif | ||||
|  | ||||
|   #define _TMC_INIT(A) do{ \ | ||||
|     stepper##A.setMicrosteps(A##_MICROSTEPS); \ | ||||
|     stepper##A.start(); \ | ||||
|   } while(0) | ||||
|   }while(0) | ||||
|  | ||||
|   void tmc_init() { | ||||
|     #if ENABLED(X_IS_TMC) | ||||
| @@ -127,394 +119,70 @@ | ||||
| // | ||||
| // TMC2130 Driver objects and inits | ||||
| // | ||||
| #if ENABLED(HAVE_TMC2130DRIVER) | ||||
| #if ENABLED(HAVE_TMC2130) | ||||
|  | ||||
|   #include <SPI.h> | ||||
|   #include <Trinamic_TMC2130.h> | ||||
|   #include <TMC2130Stepper.h> | ||||
|  | ||||
|   #if ENABLED(TMC2130_ADVANCED_CONFIGURATION) | ||||
|   #define _TMC2130_DEFINE(ST) TMC2130Stepper stepper##ST(ST##_ENABLE_PIN, ST##_DIR_PIN, ST##_STEP_PIN, ST##_CHIP_SELECT) | ||||
|  | ||||
|     #ifdef GLOBAL_I_SCALE_ANALOG | ||||
|       #define _2130_set_I_scale_analog(A) stepper##A.set_I_scale_analog(GLOBAL_I_SCALE_ANALOG) | ||||
|     #else | ||||
|       #define _2130_set_I_scale_analog(A) NOOP | ||||
|     #endif | ||||
|     #ifdef GLOBAL_INTERNAL_RSENSE | ||||
|       #define _2130_set_internal_Rsense(A) stepper##A.set_internal_Rsense(GLOBAL_INTERNAL_RSENSE) | ||||
|     #else | ||||
|       #define _2130_set_internal_Rsense(A) NOOP | ||||
|     #endif | ||||
|     #ifdef GLOBAL_EN_PWM_MODE | ||||
|       #define _2130_set_en_pwm_mode(A) stepper##A.set_en_pwm_mode(GLOBAL_EN_PWM_MODE) | ||||
|     #else | ||||
|       #define _2130_set_en_pwm_mode(A) NOOP | ||||
|     #endif | ||||
|     #ifdef GLOBAL_ENC_COMMUTATION | ||||
|       #define _2130_set_enc_commutation(A) stepper##A.set_enc_commutation(GLOBAL_ENC_COMMUTATION) | ||||
|     #else | ||||
|       #define _2130_set_enc_commutation(A) NOOP | ||||
|     #endif | ||||
|     #ifdef GLOBAL_SHAFT | ||||
|       #define _2130_set_shaft(A) stepper##A.set_shaft(GLOBAL_SHAFT) | ||||
|     #else | ||||
|       #define _2130_set_shaft(A) NOOP | ||||
|     #endif | ||||
|     #ifdef GLOBAL_DIAG0_ERROR | ||||
|       #define _2130_set_diag0_error(A) stepper##A.set_diag0_error(GLOBAL_DIAG0_ERROR) | ||||
|     #else | ||||
|       #define _2130_set_diag0_error(A) NOOP | ||||
|     #endif | ||||
|     #ifdef GLOBAL_DIAG0_OTPW | ||||
|       #define _2130_set_diag0_otpw(A) stepper##A.set_diag0_otpw(GLOBAL_DIAG0_OTPW) | ||||
|     #else | ||||
|       #define _2130_set_diag0_otpw(A) NOOP | ||||
|     #endif | ||||
|     #ifdef GLOBAL_DIAG0_STALL | ||||
|       #define _2130_set_diag0_stall(A) stepper##A.set_diag0_stall(GLOBAL_DIAG0_STALL) | ||||
|     #else | ||||
|       #define _2130_set_diag0_stall(A) NOOP | ||||
|     #endif | ||||
|     #ifdef GLOBAL_DIAG1_STALL | ||||
|       #define _2130_set_diag1_stall(A) stepper##A.set_diag1_stall(GLOBAL_DIAG1_STALL) | ||||
|     #else | ||||
|       #define _2130_set_diag1_stall(A) NOOP | ||||
|     #endif | ||||
|     #ifdef GLOBAL_DIAG1_INDEX | ||||
|       #define _2130_set_diag1_index(A) stepper##A.set_diag1_index(GLOBAL_DIAG1_INDEX) | ||||
|     #else | ||||
|       #define _2130_set_diag1_index(A) NOOP | ||||
|     #endif | ||||
|     #ifdef GLOBAL_DIAG1_ONSTATE | ||||
|       #define _2130_set_diag1_onstate(A) stepper##A.set_diag1_onstate(GLOBAL_DIAG1_ONSTATE) | ||||
|     #else | ||||
|       #define _2130_set_diag1_onstate(A) NOOP | ||||
|     #endif | ||||
|     #ifdef GLOBAL_DIAG1_ONSTATE | ||||
|       #define _2130_set_diag1_steps_skipped(A) stepper##A.set_diag1_steps_skipped(GLOBAL_DIAG1_ONSTATE) | ||||
|     #else | ||||
|       #define _2130_set_diag1_steps_skipped(A) NOOP | ||||
|     #endif | ||||
|     #ifdef GLOBAL_DIAG0_INT_PUSHPULL | ||||
|       #define _2130_set_diag0_int_pushpull(A) stepper##A.set_diag0_int_pushpull(GLOBAL_DIAG0_INT_PUSHPULL) | ||||
|     #else | ||||
|       #define _2130_set_diag0_int_pushpull(A) NOOP | ||||
|     #endif | ||||
|     #ifdef GLOBAL_DIAG1_INT_PUSHPULL | ||||
|       #define _2130_set_diag1_int_pushpull(A) stepper##A.set_diag1_int_pushpull(GLOBAL_DIAG1_INT_PUSHPULL) | ||||
|     #else | ||||
|       #define _2130_set_diag1_int_pushpull(A) NOOP | ||||
|     #endif | ||||
|     #ifdef GLOBAL_SMALL_HYSTERESIS | ||||
|       #define _2130_set_small_hysteresis(A) stepper##A.set_small_hysteresis(GLOBAL_SMALL_HYSTERESIS) | ||||
|     #else | ||||
|       #define _2130_set_small_hysteresis(A) NOOP | ||||
|     #endif | ||||
|     #ifdef GLOBAL_STOP_ENABLE | ||||
|       #define _2130_set_stop_enable(A) stepper##A.set_stop_enable(GLOBAL_STOP_ENABLE) | ||||
|     #else | ||||
|       #define _2130_set_stop_enable(A) NOOP | ||||
|     #endif | ||||
|     #ifdef GLOBAL_DIRECT_MODE | ||||
|       #define _2130_set_direct_mode(A) stepper##A.set_direct_mode(GLOBAL_DIRECT_MODE) | ||||
|     #else | ||||
|       #define _2130_set_direct_mode(A) NOOP | ||||
|     #endif | ||||
|     #if defined(GLOBAL_IHOLD) && defined(GLOBAL_IRUN) && defined(GLOBAL_IHOLDDELAY) | ||||
|       #define _2130_set_IHOLD_IRUN(A) stepper##A.set_IHOLD_IRUN(GLOBAL_IHOLD, GLOBAL_IRUN, GLOBAL_IHOLDDELAY) | ||||
|     #else | ||||
|       #define _2130_set_IHOLD_IRUN(A) NOOP | ||||
|     #endif | ||||
|     #ifdef GLOBAL_TPOWERDOWN | ||||
|       #define _2130_set_TPOWERDOWN(A) stepper##A.set_TPOWERDOWN(GLOBAL_TPOWERDOWN) | ||||
|     #else | ||||
|       #define _2130_set_TPOWERDOWN(A) NOOP | ||||
|     #endif | ||||
|     #ifdef GLOBAL_TPWMTHRS | ||||
|       #define _2130_set_TPWMTHRS(A) stepper##A.set_TPWMTHRS(GLOBAL_TPWMTHRS) | ||||
|     #else | ||||
|       #define _2130_set_TPWMTHRS(A) NOOP | ||||
|     #endif | ||||
|     #ifdef GLOBAL_TCOOLTHRS | ||||
|       #define _2130_set_TCOOLTHRS(A) stepper##A.set_TCOOLTHRS(GLOBAL_TCOOLTHRS) | ||||
|     #else | ||||
|       #define _2130_set_TCOOLTHRS(A) NOOP | ||||
|     #endif | ||||
|     #ifdef GLOBAL_THIGH | ||||
|       #define _2130_set_THIGH(A) stepper##A.set_THIGH(GLOBAL_THIGH) | ||||
|     #else | ||||
|       #define _2130_set_THIGH(A) NOOP | ||||
|     #endif | ||||
|     #ifdef GLOBAL_XDIRECT | ||||
|       #define _2130_set_XDIRECT(A) stepper##A.set_XDIRECT(GLOBAL_XDIRECT) | ||||
|     #else | ||||
|       #define _2130_set_XDIRECT(A) NOOP | ||||
|     #endif | ||||
|     #ifdef GLOBAL_VDCMIN | ||||
|       #define _2130_set_VDCMIN(A) stepper##A.set_VDCMIN(GLOBAL_VDCMIN) | ||||
|     #else | ||||
|       #define _2130_set_VDCMIN(A) NOOP | ||||
|     #endif | ||||
|     #ifdef GLOBAL_DEDGE | ||||
|       #define _2130_set_dedge(A) stepper##A.set_dedge(GLOBAL_DEDGE) | ||||
|     #else | ||||
|       #define _2130_set_dedge(A) NOOP | ||||
|     #endif | ||||
|     #ifdef GLOBAL_DISS2G | ||||
|       #define _2130_set_diss2g(A) stepper##A.set_diss2g(GLOBAL_DISS2G) | ||||
|     #else | ||||
|       #define _2130_set_diss2g(A) NOOP | ||||
|     #endif | ||||
|     #ifdef GLOBAL_INTPOL | ||||
|       #define _2130_set_intpol(A) stepper##A.set_intpol(GLOBAL_INTPOL) | ||||
|     #else | ||||
|       #define _2130_set_intpol(A) NOOP | ||||
|     #endif | ||||
|     #ifdef GLOBAL_MRES | ||||
|       #define _2130_set_mres(A) stepper##A.set_mres(GLOBAL_MRES) | ||||
|     #else | ||||
|       #define _2130_set_mres(A) NOOP | ||||
|     #endif | ||||
|     #ifdef GLOBAL_SYNC | ||||
|       #define _2130_set_sync(A) stepper##A.set_sync(GLOBAL_SYNC) | ||||
|     #else | ||||
|       #define _2130_set_sync(A) NOOP | ||||
|     #endif | ||||
|     #ifdef GLOBAL_VHIGHCHM | ||||
|       #define _2130_set_vhighchm(A) stepper##A.set_vhighchm(GLOBAL_VHIGHCHM) | ||||
|     #else | ||||
|       #define _2130_set_vhighchm(A) NOOP | ||||
|     #endif | ||||
|     #ifdef GLOBAL_VHIGHFS | ||||
|       #define _2130_set_vhighfs(A) stepper##A.set_vhighfs(GLOBAL_VHIGHFS) | ||||
|     #else | ||||
|       #define _2130_set_vhighfs(A) NOOP | ||||
|     #endif | ||||
|     #ifdef GLOBAL_VSENSE | ||||
|       #define _2130_set_vsense(A) stepper##A.set_vsense(GLOBAL_VSENSE) | ||||
|     #else | ||||
|       #define _2130_set_vsense(A) NOOP | ||||
|     #endif | ||||
|     #ifdef GLOBAL_TBL | ||||
|       #define _2130_set_tbl(A) stepper##A.set_tbl(GLOBAL_TBL) | ||||
|     #else | ||||
|       #define _2130_set_tbl(A) NOOP | ||||
|     #endif | ||||
|     #ifdef GLOBAL_CHM | ||||
|       #define _2130_set_chm(A) stepper##A.set_chm(GLOBAL_CHM) | ||||
|     #else | ||||
|       #define _2130_set_chm(A) NOOP | ||||
|     #endif | ||||
|     #ifdef GLOBAL_RNDTF | ||||
|       #define _2130_set_rndtf(A) stepper##A.set_rndtf(GLOBAL_RNDTF) | ||||
|     #else | ||||
|       #define _2130_set_rndtf(A) NOOP | ||||
|     #endif | ||||
|     #ifdef GLOBAL_DISFDCC | ||||
|       #define _2130_set_disfdcc(A) stepper##A.set_disfdcc(GLOBAL_DISFDCC) | ||||
|     #else | ||||
|       #define _2130_set_disfdcc(A) NOOP | ||||
|     #endif | ||||
|     #ifdef GLOBAL_FD | ||||
|       #define _2130_set_fd(A) stepper##A.set_fd(GLOBAL_FD) | ||||
|     #else | ||||
|       #define _2130_set_fd(A) NOOP | ||||
|     #endif | ||||
|     #ifdef GLOBAL_HEND | ||||
|       #define _2130_set_hend(A) stepper##A.set_hend(GLOBAL_HEND) | ||||
|     #else | ||||
|       #define _2130_set_hend(A) NOOP | ||||
|     #endif | ||||
|     #ifdef GLOBAL_HSTRT | ||||
|       #define _2130_set_hstrt(A) stepper##A.set_hstrt(GLOBAL_HSTRT) | ||||
|     #else | ||||
|       #define _2130_set_hstrt(A) NOOP | ||||
|     #endif | ||||
|     #ifdef GLOBAL_TOFF | ||||
|       #define _2130_set_toff(A) stepper##A.set_toff(GLOBAL_TOFF) | ||||
|     #else | ||||
|       #define _2130_set_toff(A) NOOP | ||||
|     #endif | ||||
|     #ifdef GLOBAL_SFILT | ||||
|       #define _2130_set_sfilt(A) stepper##A.set_sfilt(GLOBAL_SFILT) | ||||
|     #else | ||||
|       #define _2130_set_sfilt(A) NOOP | ||||
|     #endif | ||||
|     #ifdef GLOBAL_SGT | ||||
|       #define _2130_set_sgt(A) stepper##A.set_sgt(GLOBAL_SGT) | ||||
|     #else | ||||
|       #define _2130_set_sgt(A) NOOP | ||||
|     #endif | ||||
|     #ifdef GLOBAL_SEIMIN | ||||
|       #define _2130_set_seimin(A) stepper##A.set_seimin(GLOBAL_SEIMIN) | ||||
|     #else | ||||
|       #define _2130_set_seimin(A) NOOP | ||||
|     #endif | ||||
|     #ifdef GLOBAL_SEDN | ||||
|       #define _2130_set_sedn(A) stepper##A.set_sedn(GLOBAL_SEDN) | ||||
|     #else | ||||
|       #define _2130_set_sedn(A) NOOP | ||||
|     #endif | ||||
|     #ifdef GLOBAL_SEMAX | ||||
|       #define _2130_set_semax(A) stepper##A.set_semax(GLOBAL_SEMAX) | ||||
|     #else | ||||
|       #define _2130_set_semax(A) NOOP | ||||
|     #endif | ||||
|     #ifdef GLOBAL_SEUP | ||||
|       #define _2130_set_seup(A) stepper##A.set_seup(GLOBAL_SEUP) | ||||
|     #else | ||||
|       #define _2130_set_seup(A) NOOP | ||||
|     #endif | ||||
|     #ifdef GLOBAL_SEMIN | ||||
|       #define _2130_set_semin(A) stepper##A.set_semin(GLOBAL_SEMIN) | ||||
|     #else | ||||
|       #define _2130_set_semin(A) NOOP | ||||
|     #endif | ||||
|     #if defined(GLOBAL_DC_TIME) && defined(GLOBAL_DC_SG) | ||||
|       #define _2130_set_DCCTRL(A) stepper##A.set_DCCTRL(GLOBAL_DC_TIME, GLOBAL_DC_SG) | ||||
|     #else | ||||
|       #define _2130_set_DCCTRL(A) NOOP | ||||
|     #endif | ||||
|     #ifdef GLOBAL_FREEWHEEL | ||||
|       #define _2130_set_freewheel(A) stepper##A.set_freewheel(GLOBAL_FREEWHEEL) | ||||
|     #else | ||||
|       #define _2130_set_freewheel(A) NOOP | ||||
|     #endif | ||||
|     #ifdef GLOBAL_PWM_SYMMETRIC | ||||
|       #define _2130_set_pwm_symmetric(A) stepper##A.set_pwm_symmetric(GLOBAL_PWM_SYMMETRIC) | ||||
|     #else | ||||
|       #define _2130_set_pwm_symmetric(A) NOOP | ||||
|     #endif | ||||
|     #ifdef GLOBAL_PWM_AUTOSCALE | ||||
|       #define _2130_set_pwm_autoscale(A) stepper##A.set_pwm_autoscale(GLOBAL_PWM_AUTOSCALE) | ||||
|     #else | ||||
|       #define _2130_set_pwm_autoscale(A) NOOP | ||||
|     #endif | ||||
|     #ifdef GLOBAL_PWM_FREQ | ||||
|       #define _2130_set_pwm_freq(A) stepper##A.set_pwm_freq(GLOBAL_PWM_FREQ) | ||||
|     #else | ||||
|       #define _2130_set_pwm_freq(A) NOOP | ||||
|     #endif | ||||
|     #ifdef GLOBAL_PWM_GRAD | ||||
|       #define _2130_set_PWM_GRAD(A) stepper##A.set_PWM_GRAD(GLOBAL_PWM_GRAD) | ||||
|     #else | ||||
|       #define _2130_set_PWM_GRAD(A) NOOP | ||||
|     #endif | ||||
|     #ifdef GLOBAL_PWM_AMPL | ||||
|       #define _2130_set_PWM_AMPL(A) stepper##A.set_PWM_AMPL(GLOBAL_PWM_AMPL) | ||||
|     #else | ||||
|       #define _2130_set_PWM_AMPL(A) NOOP | ||||
|     #endif | ||||
|     #ifdef GLOBAL_ENCM_CTRL | ||||
|       #define _2130_set_ENCM_CTRL(A) stepper##A.set_ENCM_CTRL(GLOBAL_ENCM_CTRL) | ||||
|     #else | ||||
|       #define _2130_set_ENCM_CTRL(A) NOOP | ||||
|     #endif | ||||
|  | ||||
|     #define _TMC2130_INIT(A) do{ \ | ||||
|       stepper##A.init(); \ | ||||
|       _2130_set_I_scale_analog(A); \ | ||||
|       _2130_set_internal_Rsense(A); \ | ||||
|       _2130_set_en_pwm_mode(A); \ | ||||
|       _2130_set_enc_commutation(A); \ | ||||
|       _2130_set_shaft(A); \ | ||||
|       _2130_set_diag0_error(A); \ | ||||
|       _2130_set_diag0_otpw(A); \ | ||||
|       _2130_set_diag0_stall(A); \ | ||||
|       _2130_set_diag1_stall(A); \ | ||||
|       _2130_set_diag1_index(A); \ | ||||
|       _2130_set_diag1_onstate(A); \ | ||||
|       _2130_set_diag1_steps_skipped(A); \ | ||||
|       _2130_set_diag0_int_pushpull(A); \ | ||||
|       _2130_set_diag1_int_pushpull(A); \ | ||||
|       _2130_set_small_hysteresis(A); \ | ||||
|       _2130_set_stop_enable(A); \ | ||||
|       _2130_set_direct_mode(A); \ | ||||
|       _2130_set_IHOLD_IRUN(A); \ | ||||
|       _2130_set_TPOWERDOWN(A); \ | ||||
|       _2130_set_TPWMTHRS(A); \ | ||||
|       _2130_set_TCOOLTHRS(A); \ | ||||
|       _2130_set_THIGH(A); \ | ||||
|       _2130_set_XDIRECT(A); \ | ||||
|       _2130_set_VDCMIN(A); \ | ||||
|       _2130_set_dedge(A); \ | ||||
|       _2130_set_diss2g(A); \ | ||||
|       _2130_set_intpol(A); \ | ||||
|       _2130_set_mres(A); \ | ||||
|       _2130_set_sync(A); \ | ||||
|       _2130_set_vhighchm(A); \ | ||||
|       _2130_set_vhighfs(A); \ | ||||
|       _2130_set_vsense(A); \ | ||||
|       _2130_set_tbl(A); \ | ||||
|       _2130_set_chm(A); \ | ||||
|       _2130_set_rndtf(A); \ | ||||
|       _2130_set_disfdcc(A); \ | ||||
|       _2130_set_fd(A); \ | ||||
|       _2130_set_hend(A); \ | ||||
|       _2130_set_hstrt(A); \ | ||||
|       _2130_set_toff(A); \ | ||||
|       _2130_set_sfilt(A); \ | ||||
|       _2130_set_sgt(A); \ | ||||
|       _2130_set_seimin(A); \ | ||||
|       _2130_set_sedn(A); \ | ||||
|       _2130_set_semax(A); \ | ||||
|       _2130_set_seup(A); \ | ||||
|       _2130_set_semin(A); \ | ||||
|       _2130_set_DCCTRL(A); \ | ||||
|       _2130_set_freewheel(A); \ | ||||
|       _2130_set_pwm_symmetric(A); \ | ||||
|       _2130_set_pwm_autoscale(A); \ | ||||
|       _2130_set_pwm_freq(A); \ | ||||
|       _2130_set_PWM_GRAD(A); \ | ||||
|       _2130_set_PWM_AMPL(A); \ | ||||
|       _2130_set_ENCM_CTRL(A); \ | ||||
|     } while(0) | ||||
|  | ||||
|   #else // !TMC2130_ADVANCED_CONFIGURATION | ||||
|  | ||||
|     #define _TMC2130_INIT(A) do{ \ | ||||
|       stepper##A.init(); \ | ||||
|       stepper##A.set_mres(A##_MRES); \ | ||||
|       stepper##A.set_IHOLD_IRUN(A##_IHOLD, A##_IRUN, A##_IHOLDDELAY); \ | ||||
|       stepper##A.set_I_scale_analog(A##_I_SCALE_ANALOG); \ | ||||
|       stepper##A.set_tbl(A##_TBL); \ | ||||
|       stepper##A.set_toff(A##_TOFF); \ | ||||
|     } while(0) | ||||
|  | ||||
|   #endif // TMC2130_ADVANCED_CONFIGURATION | ||||
|  | ||||
|   // Stepper objects of TMC2310 steppers used | ||||
|   // Stepper objects of TMC2130 steppers used | ||||
|   #if ENABLED(X_IS_TMC2130) | ||||
|     Trinamic_TMC2130 stepperX(X_CS_PIN); | ||||
|     _TMC2130_DEFINE(X); | ||||
|   #endif | ||||
|   #if ENABLED(X2_IS_TMC2130) | ||||
|     Trinamic_TMC2130 stepperX2(X2_CS_PIN); | ||||
|     _TMC2130_DEFINE(X2); | ||||
|   #endif | ||||
|   #if ENABLED(Y_IS_TMC2130) | ||||
|     Trinamic_TMC2130 stepperY(Y_CS_PIN); | ||||
|     _TMC2130_DEFINE(Y); | ||||
|   #endif | ||||
|   #if ENABLED(Y2_IS_TMC2130) | ||||
|     Trinamic_TMC2130 stepperY2(Y2_CS_PINR); | ||||
|     _TMC2130_DEFINE(Y2); | ||||
|   #endif | ||||
|   #if ENABLED(Z_IS_TMC2130) | ||||
|     Trinamic_TMC2130 stepperZ(Z_CS_PIN); | ||||
|     _TMC2130_DEFINE(Z); | ||||
|   #endif | ||||
|   #if ENABLED(Z2_IS_TMC2130) | ||||
|     Trinamic_TMC2130 stepperZ2(Z2_CS_PIN); | ||||
|     _TMC2130_DEFINE(Z2); | ||||
|   #endif | ||||
|   #if ENABLED(E0_IS_TMC2130) | ||||
|     Trinamic_TMC2130 stepperE0(E0_CS_PIN); | ||||
|     _TMC2130_DEFINE(E0); | ||||
|   #endif | ||||
|   #if ENABLED(E1_IS_TMC2130) | ||||
|     Trinamic_TMC2130 stepperE1(E1_CS_PIN); | ||||
|     _TMC2130_DEFINE(E1); | ||||
|   #endif | ||||
|   #if ENABLED(E2_IS_TMC2130) | ||||
|     Trinamic_TMC2130 stepperE2(E2_CS_PIN); | ||||
|     _TMC2130_DEFINE(E2); | ||||
|   #endif | ||||
|   #if ENABLED(E3_IS_TMC2130) | ||||
|     Trinamic_TMC2130 stepperE3(E3_CS_PIN); | ||||
|     _TMC2130_DEFINE(E3); | ||||
|   #endif | ||||
|  | ||||
|   // Use internal reference voltage for current calculations. This is the default. | ||||
|   // Following values from Trinamic's spreadsheet with values for a NEMA17 (42BYGHW609) | ||||
|   void tmc2130_init(TMC2130Stepper &st, const uint16_t max_current, const uint16_t microsteps) { | ||||
|     st.begin(); | ||||
|     st.setCurrent(st.getCurrent(), R_SENSE, HOLD_MULTIPLIER); | ||||
|     st.microsteps(microsteps); | ||||
|     st.blank_time(24); | ||||
|     st.off_time(8); | ||||
|     st.interpolate(INTERPOLATE); | ||||
|     #if ENABLED(STEALTHCHOP) | ||||
|       st.stealthChop(1); | ||||
|     #endif | ||||
|     #if ENABLED(SENSORLESS_HOMING) | ||||
|       st.coolstep_min_speed(1048575); | ||||
|       st.sg_stall_value(STALL_THRESHOLD); | ||||
|       st.sg_filter(1); | ||||
|       st.diag1_stall(1); | ||||
|       st.diag1_active_high(1); | ||||
|     #endif | ||||
|   } | ||||
|  | ||||
|   #define _TMC2130_INIT(ST) tmc2130_init(stepper##ST, ST##_MAX_CURRENT, ST##_MICROSTEPS) | ||||
|  | ||||
|   void tmc2130_init() { | ||||
|     delay(500); // Let power stabilize before configuring the steppers | ||||
|     #if ENABLED(X_IS_TMC2130) | ||||
|       _TMC2130_INIT(X); | ||||
|     #endif | ||||
| @@ -545,9 +213,11 @@ | ||||
|     #if ENABLED(E3_IS_TMC2130) | ||||
|       _TMC2130_INIT(E3); | ||||
|     #endif | ||||
|   } | ||||
|  | ||||
| #endif // HAVE_TMC2130DRIVER | ||||
|     TMC2130_ADV() | ||||
|   } | ||||
| #endif // HAVE_TMC2130 | ||||
|  | ||||
|  | ||||
| // | ||||
| // L6470 Driver objects and inits | ||||
| @@ -557,36 +227,38 @@ | ||||
|   #include <SPI.h> | ||||
|   #include <L6470.h> | ||||
|  | ||||
|   #define _L6470_DEFINE(ST) L6470 stepper##ST(ST##_ENABLE_PIN) | ||||
|  | ||||
|   // L6470 Stepper objects | ||||
|   #if ENABLED(X_IS_L6470) | ||||
|     L6470 stepperX(X_ENABLE_PIN); | ||||
|     _L6470_DEFINE(X); | ||||
|   #endif | ||||
|   #if ENABLED(X2_IS_L6470) | ||||
|     L6470 stepperX2(X2_ENABLE_PIN); | ||||
|     _L6470_DEFINE(X2); | ||||
|   #endif | ||||
|   #if ENABLED(Y_IS_L6470) | ||||
|     L6470 stepperY(Y_ENABLE_PIN); | ||||
|     _L6470_DEFINE(Y); | ||||
|   #endif | ||||
|   #if ENABLED(Y2_IS_L6470) | ||||
|     L6470 stepperY2(Y2_ENABLE_PIN); | ||||
|     _L6470_DEFINE(Y2); | ||||
|   #endif | ||||
|   #if ENABLED(Z_IS_L6470) | ||||
|     L6470 stepperZ(Z_ENABLE_PIN); | ||||
|     _L6470_DEFINE(Z); | ||||
|   #endif | ||||
|   #if ENABLED(Z2_IS_L6470) | ||||
|     L6470 stepperZ2(Z2_ENABLE_PIN); | ||||
|     _L6470_DEFINE(Z2); | ||||
|   #endif | ||||
|   #if ENABLED(E0_IS_L6470) | ||||
|     L6470 stepperE0(E0_ENABLE_PIN); | ||||
|     _L6470_DEFINE(E0); | ||||
|   #endif | ||||
|   #if ENABLED(E1_IS_L6470) | ||||
|     L6470 stepperE1(E1_ENABLE_PIN); | ||||
|     _L6470_DEFINE(E1); | ||||
|   #endif | ||||
|   #if ENABLED(E2_IS_L6470) | ||||
|     L6470 stepperE2(E2_ENABLE_PIN); | ||||
|     _L6470_DEFINE(E2); | ||||
|   #endif | ||||
|   #if ENABLED(E3_IS_L6470) | ||||
|     L6470 stepperE3(E3_ENABLE_PIN); | ||||
|     _L6470_DEFINE(E3); | ||||
|   #endif | ||||
|  | ||||
|   #define _L6470_INIT(A) do{ \ | ||||
|   | ||||
| @@ -53,10 +53,8 @@ | ||||
|   void tmc_init(); | ||||
| #endif | ||||
|  | ||||
| // TMC130 drivers have STEP/DIR/ENABLE on normal pins | ||||
| #if ENABLED(HAVE_TMC2130DRIVER) | ||||
|   #include <SPI.h> | ||||
|   #include <Trinamic_TMC2130.h> | ||||
| #if ENABLED(HAVE_TMC2130) | ||||
|   #include <TMC2130Stepper.h> | ||||
|   void tmc2130_init(); | ||||
| #endif | ||||
|  | ||||
| @@ -83,8 +81,8 @@ | ||||
|     #define X_ENABLE_WRITE(STATE) stepperX.setEnabled(STATE) | ||||
|     #define X_ENABLE_READ stepperX.isEnabled() | ||||
|   #else | ||||
|     #if ENABLED(HAVE_TMC2130DRIVER) && ENABLED(X_IS_TMC2130) | ||||
|       extern Trinamic_TMC2130 stepperX; | ||||
|     #if ENABLED(HAVE_TMC2130) && ENABLED(X_IS_TMC2130) | ||||
|       extern TMC2130Stepper stepperX; | ||||
|     #endif | ||||
|     #define X_ENABLE_INIT SET_OUTPUT(X_ENABLE_PIN) | ||||
|     #define X_ENABLE_WRITE(STATE) WRITE(X_ENABLE_PIN,STATE) | ||||
| @@ -114,8 +112,8 @@ | ||||
|     #define Y_ENABLE_WRITE(STATE) stepperY.setEnabled(STATE) | ||||
|     #define Y_ENABLE_READ stepperY.isEnabled() | ||||
|   #else | ||||
|     #if ENABLED(HAVE_TMC2130DRIVER) && ENABLED(Y_IS_TMC2130) | ||||
|       extern Trinamic_TMC2130 stepperY; | ||||
|     #if ENABLED(HAVE_TMC2130) && ENABLED(Y_IS_TMC2130) | ||||
|       extern TMC2130Stepper stepperY; | ||||
|     #endif | ||||
|     #define Y_ENABLE_INIT SET_OUTPUT(Y_ENABLE_PIN) | ||||
|     #define Y_ENABLE_WRITE(STATE) WRITE(Y_ENABLE_PIN,STATE) | ||||
| @@ -145,8 +143,8 @@ | ||||
|     #define Z_ENABLE_WRITE(STATE) stepperZ.setEnabled(STATE) | ||||
|     #define Z_ENABLE_READ stepperZ.isEnabled() | ||||
|   #else | ||||
|     #if ENABLED(HAVE_TMC2130DRIVER) && ENABLED(Z_IS_TMC2130) | ||||
|       extern Trinamic_TMC2130 stepperZ; | ||||
|     #if ENABLED(HAVE_TMC2130) && ENABLED(Z_IS_TMC2130) | ||||
|       extern TMC2130Stepper stepperZ; | ||||
|     #endif | ||||
|     #define Z_ENABLE_INIT SET_OUTPUT(Z_ENABLE_PIN) | ||||
|     #define Z_ENABLE_WRITE(STATE) WRITE(Z_ENABLE_PIN,STATE) | ||||
| @@ -177,8 +175,8 @@ | ||||
|       #define X2_ENABLE_WRITE(STATE) stepperX2.setEnabled(STATE) | ||||
|       #define X2_ENABLE_READ stepperX2.isEnabled() | ||||
|     #else | ||||
|       #if ENABLED(HAVE_TMC2130DRIVER) && ENABLED(X2_IS_TMC2130) | ||||
|         extern Trinamic_TMC2130 stepperX2; | ||||
|       #if ENABLED(HAVE_TMC2130) && ENABLED(X2_IS_TMC2130) | ||||
|         extern TMC2130Stepper stepperX2; | ||||
|       #endif | ||||
|       #define X2_ENABLE_INIT SET_OUTPUT(X2_ENABLE_PIN) | ||||
|       #define X2_ENABLE_WRITE(STATE) WRITE(X2_ENABLE_PIN,STATE) | ||||
| @@ -210,8 +208,8 @@ | ||||
|       #define Y2_ENABLE_WRITE(STATE) stepperY2.setEnabled(STATE) | ||||
|       #define Y2_ENABLE_READ stepperY2.isEnabled() | ||||
|     #else | ||||
|       #if ENABLED(HAVE_TMC2130DRIVER) && ENABLED(Y2_IS_TMC2130) | ||||
|         extern Trinamic_TMC2130 stepperY2; | ||||
|       #if ENABLED(HAVE_TMC2130) && ENABLED(Y2_IS_TMC2130) | ||||
|         extern TMC2130Stepper stepperY2; | ||||
|       #endif | ||||
|       #define Y2_ENABLE_INIT SET_OUTPUT(Y2_ENABLE_PIN) | ||||
|       #define Y2_ENABLE_WRITE(STATE) WRITE(Y2_ENABLE_PIN,STATE) | ||||
| @@ -243,8 +241,8 @@ | ||||
|       #define Z2_ENABLE_WRITE(STATE) stepperZ2.setEnabled(STATE) | ||||
|       #define Z2_ENABLE_READ stepperZ2.isEnabled() | ||||
|     #else | ||||
|       #if ENABLED(HAVE_TMC2130DRIVER) && ENABLED(Z2_IS_TMC2130) | ||||
|         extern Trinamic_TMC2130 stepperZ2; | ||||
|       #if ENABLED(HAVE_TMC2130) && ENABLED(Z2_IS_TMC2130) | ||||
|         extern TMC2130Stepper stepperZ2; | ||||
|       #endif | ||||
|       #define Z2_ENABLE_INIT SET_OUTPUT(Z2_ENABLE_PIN) | ||||
|       #define Z2_ENABLE_WRITE(STATE) WRITE(Z2_ENABLE_PIN,STATE) | ||||
| @@ -275,8 +273,8 @@ | ||||
|     #define E0_ENABLE_WRITE(STATE) stepperE0.setEnabled(STATE) | ||||
|     #define E0_ENABLE_READ stepperE0.isEnabled() | ||||
|   #else | ||||
|     #if ENABLED(HAVE_TMC2130DRIVER) && ENABLED(E0_IS_TMC2130) | ||||
|       extern Trinamic_TMC2130 stepperE0; | ||||
|     #if ENABLED(HAVE_TMC2130) && ENABLED(E0_IS_TMC2130) | ||||
|       extern TMC2130Stepper stepperE0; | ||||
|     #endif | ||||
|     #define E0_ENABLE_INIT SET_OUTPUT(E0_ENABLE_PIN) | ||||
|     #define E0_ENABLE_WRITE(STATE) WRITE(E0_ENABLE_PIN,STATE) | ||||
| @@ -306,8 +304,8 @@ | ||||
|     #define E1_ENABLE_WRITE(STATE) stepperE1.setEnabled(STATE) | ||||
|     #define E1_ENABLE_READ stepperE1.isEnabled() | ||||
|   #else | ||||
|     #if ENABLED(HAVE_TMC2130DRIVER) && ENABLED(E1_IS_TMC2130) | ||||
|       extern Trinamic_TMC2130 stepperE1; | ||||
|     #if ENABLED(HAVE_TMC2130) && ENABLED(E1_IS_TMC2130) | ||||
|       extern TMC2130Stepper stepperE1; | ||||
|     #endif | ||||
|     #define E1_ENABLE_INIT SET_OUTPUT(E1_ENABLE_PIN) | ||||
|     #define E1_ENABLE_WRITE(STATE) WRITE(E1_ENABLE_PIN,STATE) | ||||
| @@ -337,8 +335,8 @@ | ||||
|     #define E2_ENABLE_WRITE(STATE) stepperE2.setEnabled(STATE) | ||||
|     #define E2_ENABLE_READ stepperE2.isEnabled() | ||||
|   #else | ||||
|     #if ENABLED(HAVE_TMC2130DRIVER) && ENABLED(E2_IS_TMC2130) | ||||
|       extern Trinamic_TMC2130 stepperE2; | ||||
|     #if ENABLED(HAVE_TMC2130) && ENABLED(E2_IS_TMC2130) | ||||
|       extern TMC2130Stepper stepperE2; | ||||
|     #endif | ||||
|     #define E2_ENABLE_INIT SET_OUTPUT(E2_ENABLE_PIN) | ||||
|     #define E2_ENABLE_WRITE(STATE) WRITE(E2_ENABLE_PIN,STATE) | ||||
| @@ -368,8 +366,8 @@ | ||||
|     #define E3_ENABLE_WRITE(STATE) stepperE3.setEnabled(STATE) | ||||
|     #define E3_ENABLE_READ stepperE3.isEnabled() | ||||
|   #else | ||||
|     #if ENABLED(HAVE_TMC2130DRIVER) && ENABLED(E3_IS_TMC2130) | ||||
|       extern Trinamic_TMC2130 stepperE3; | ||||
|     #if ENABLED(HAVE_TMC2130) && ENABLED(E3_IS_TMC2130) | ||||
|       extern TMC2130Stepper stepperE3; | ||||
|     #endif | ||||
|     #define E3_ENABLE_INIT SET_OUTPUT(E3_ENABLE_PIN) | ||||
|     #define E3_ENABLE_WRITE(STATE) WRITE(E3_ENABLE_PIN,STATE) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user