Parcourir la source

Add TMC2209 support (#14249)

Scott Lahteine il y a 5 ans
Parent
révision
4df4c47994
Aucun compte lié à l'adresse e-mail de l'auteur
100 fichiers modifiés avec 1427 ajouts et 397 suppressions
  1. 4
    4
      Marlin/Configuration.h
  2. 30
    7
      Marlin/Configuration_adv.h
  3. 1
    1
      Marlin/Makefile
  4. 2
    2
      Marlin/src/Marlin.cpp
  5. 9
    0
      Marlin/src/core/drivers.h
  6. 56
    28
      Marlin/src/feature/tmc_util.cpp
  7. 93
    20
      Marlin/src/feature/tmc_util.h
  8. 10
    10
      Marlin/src/gcode/feature/trinamic/M911-M914.cpp
  9. 5
    5
      Marlin/src/gcode/gcode.h
  10. 3
    3
      Marlin/src/inc/Conditionals_post.h
  11. 124
    78
      Marlin/src/inc/SanityCheck.h
  12. 6
    6
      Marlin/src/lcd/extensible_ui/ui_api.cpp
  13. 1
    1
      Marlin/src/lcd/menu/menu_tmc.cpp
  14. 17
    17
      Marlin/src/module/configuration_store.cpp
  15. 84
    39
      Marlin/src/module/stepper_indirection.cpp
  16. 4
    4
      Marlin/src/module/stepper_indirection.h
  17. 2
    2
      Marlin/src/pins/pins_BIGTREE_SKR_V1.3.h
  18. 1
    1
      Marlin/src/pins/pins_FYSETC_F6_13.h
  19. 2
    2
      Marlin/src/pins/pins_MKS_SBASE.h
  20. 1
    1
      Marlin/src/pins/pins_MKS_SGEN.h
  21. 2
    2
      Marlin/src/pins/pins_RAMPS.h
  22. 2
    2
      Marlin/src/pins/pins_RAMPS_FD_V1.h
  23. 2
    2
      Marlin/src/pins/pins_RAMPS_LINUX.h
  24. 2
    2
      Marlin/src/pins/pins_RAMPS_RE_ARM.h
  25. 3
    2
      buildroot/share/tests/megaatmega2560-tests
  26. 4
    4
      config/default/Configuration.h
  27. 23
    0
      config/default/Configuration_adv.h
  28. 4
    4
      config/examples/3DFabXYZ/Migbot/Configuration.h
  29. 23
    0
      config/examples/3DFabXYZ/Migbot/Configuration_adv.h
  30. 4
    4
      config/examples/AlephObjects/TAZ4/Configuration.h
  31. 23
    0
      config/examples/AlephObjects/TAZ4/Configuration_adv.h
  32. 4
    4
      config/examples/AliExpress/CL-260/Configuration.h
  33. 4
    4
      config/examples/AliExpress/UM2pExt/Configuration.h
  34. 23
    0
      config/examples/AliExpress/UM2pExt/Configuration_adv.h
  35. 4
    4
      config/examples/Anet/A2/Configuration.h
  36. 23
    0
      config/examples/Anet/A2/Configuration_adv.h
  37. 4
    4
      config/examples/Anet/A2plus/Configuration.h
  38. 23
    0
      config/examples/Anet/A2plus/Configuration_adv.h
  39. 4
    4
      config/examples/Anet/A6/Configuration.h
  40. 23
    0
      config/examples/Anet/A6/Configuration_adv.h
  41. 4
    4
      config/examples/Anet/A8/Configuration.h
  42. 23
    0
      config/examples/Anet/A8/Configuration_adv.h
  43. 4
    4
      config/examples/Anet/A8plus/Configuration.h
  44. 23
    0
      config/examples/Anet/A8plus/Configuration_adv.h
  45. 4
    4
      config/examples/Anet/E16/Configuration.h
  46. 23
    0
      config/examples/Anet/E16/Configuration_adv.h
  47. 4
    4
      config/examples/AnyCubic/i3/Configuration.h
  48. 23
    0
      config/examples/AnyCubic/i3/Configuration_adv.h
  49. 4
    4
      config/examples/ArmEd/Configuration.h
  50. 23
    0
      config/examples/ArmEd/Configuration_adv.h
  51. 4
    4
      config/examples/Azteeg/X5GT/Configuration.h
  52. 4
    4
      config/examples/BIBO/TouchX/cyclops/Configuration.h
  53. 23
    0
      config/examples/BIBO/TouchX/cyclops/Configuration_adv.h
  54. 4
    4
      config/examples/BIBO/TouchX/default/Configuration.h
  55. 23
    0
      config/examples/BIBO/TouchX/default/Configuration_adv.h
  56. 4
    4
      config/examples/BQ/Hephestos/Configuration.h
  57. 23
    0
      config/examples/BQ/Hephestos/Configuration_adv.h
  58. 4
    4
      config/examples/BQ/Hephestos_2/Configuration.h
  59. 23
    0
      config/examples/BQ/Hephestos_2/Configuration_adv.h
  60. 4
    4
      config/examples/BQ/WITBOX/Configuration.h
  61. 23
    0
      config/examples/BQ/WITBOX/Configuration_adv.h
  62. 4
    4
      config/examples/Cartesio/Configuration.h
  63. 23
    0
      config/examples/Cartesio/Configuration_adv.h
  64. 4
    4
      config/examples/Creality/CR-10/Configuration.h
  65. 23
    0
      config/examples/Creality/CR-10/Configuration_adv.h
  66. 4
    4
      config/examples/Creality/CR-10S/Configuration.h
  67. 23
    0
      config/examples/Creality/CR-10S/Configuration_adv.h
  68. 4
    4
      config/examples/Creality/CR-10_5S/Configuration.h
  69. 23
    0
      config/examples/Creality/CR-10_5S/Configuration_adv.h
  70. 4
    4
      config/examples/Creality/CR-10mini/Configuration.h
  71. 23
    0
      config/examples/Creality/CR-10mini/Configuration_adv.h
  72. 4
    4
      config/examples/Creality/CR-8/Configuration.h
  73. 23
    0
      config/examples/Creality/CR-8/Configuration_adv.h
  74. 4
    4
      config/examples/Creality/Ender-2/Configuration.h
  75. 23
    0
      config/examples/Creality/Ender-2/Configuration_adv.h
  76. 4
    4
      config/examples/Creality/Ender-3/Configuration.h
  77. 23
    0
      config/examples/Creality/Ender-3/Configuration_adv.h
  78. 4
    4
      config/examples/Creality/Ender-4/Configuration.h
  79. 23
    0
      config/examples/Creality/Ender-4/Configuration_adv.h
  80. 4
    4
      config/examples/Dagoma/Disco Ultimate/Configuration.h
  81. 23
    0
      config/examples/Dagoma/Disco Ultimate/Configuration_adv.h
  82. 4
    4
      config/examples/EVNOVO (Artillery)/Sidewinder X1/Configuration.h
  83. 23
    0
      config/examples/EVNOVO (Artillery)/Sidewinder X1/Configuration_adv.h
  84. 4
    4
      config/examples/Einstart-S/Configuration.h
  85. 23
    0
      config/examples/Einstart-S/Configuration_adv.h
  86. 4
    4
      config/examples/Felix/Configuration.h
  87. 23
    0
      config/examples/Felix/Configuration_adv.h
  88. 4
    4
      config/examples/Felix/DUAL/Configuration.h
  89. 4
    4
      config/examples/FlashForge/CreatorPro/Configuration.h
  90. 23
    0
      config/examples/FlashForge/CreatorPro/Configuration_adv.h
  91. 4
    4
      config/examples/FolgerTech/i3-2020/Configuration.h
  92. 23
    0
      config/examples/FolgerTech/i3-2020/Configuration_adv.h
  93. 4
    4
      config/examples/Formbot/Raptor/Configuration.h
  94. 23
    0
      config/examples/Formbot/Raptor/Configuration_adv.h
  95. 4
    4
      config/examples/Formbot/T_Rex_2+/Configuration.h
  96. 23
    0
      config/examples/Formbot/T_Rex_2+/Configuration_adv.h
  97. 4
    4
      config/examples/Formbot/T_Rex_3/Configuration.h
  98. 23
    0
      config/examples/Formbot/T_Rex_3/Configuration_adv.h
  99. 4
    4
      config/examples/Geeetech/A10/Configuration.h
  100. 0
    0
      config/examples/Geeetech/A10/Configuration_adv.h

+ 4
- 4
Marlin/Configuration.h Voir le fichier

637
  * A4988 is assumed for unspecified drivers.
637
  * A4988 is assumed for unspecified drivers.
638
  *
638
  *
639
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
639
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
640
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
640
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
641
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
641
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
642
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
642
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
643
- *          TMC5160, TMC5160_STANDALONE
644
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
643
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
644
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
645
  */
645
  */
646
 //#define X_DRIVER_TYPE  A4988
646
 //#define X_DRIVER_TYPE  A4988
647
 //#define Y_DRIVER_TYPE  A4988
647
 //#define Y_DRIVER_TYPE  A4988

+ 30
- 7
Marlin/Configuration_adv.h Voir le fichier

1716
   //#define E5_CS_PIN         -1
1716
   //#define E5_CS_PIN         -1
1717
 
1717
 
1718
   /**
1718
   /**
1719
-   * Use software SPI for TMC2130.
1720
    * Software option for SPI driven drivers (TMC2130, TMC2160, TMC2660, TMC5130 and TMC5160).
1719
    * Software option for SPI driven drivers (TMC2130, TMC2160, TMC2660, TMC5130 and TMC5160).
1721
    * The default SW SPI pins are defined the respective pins files,
1720
    * The default SW SPI pins are defined the respective pins files,
1722
    * but you can override or define them here.
1721
    * but you can override or define them here.
1727
   //#define TMC_SW_SCK        -1
1726
   //#define TMC_SW_SCK        -1
1728
 
1727
 
1729
   /**
1728
   /**
1729
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1730
+   * Set the address using jumpers on pins MS1 and MS2.
1731
+   * Address | MS1  | MS2
1732
+   *       0 | LOW  | LOW
1733
+   *       1 | HIGH | LOW
1734
+   *       2 | LOW  | HIGH
1735
+   *       3 | HIGH | HIGH
1736
+   */
1737
+  #define  X_SLAVE_ADDRESS 0
1738
+  #define  Y_SLAVE_ADDRESS 0
1739
+  #define  Z_SLAVE_ADDRESS 0
1740
+  #define X2_SLAVE_ADDRESS 0
1741
+  #define Y2_SLAVE_ADDRESS 0
1742
+  #define Z2_SLAVE_ADDRESS 0
1743
+  #define Z3_SLAVE_ADDRESS 0
1744
+  #define E0_SLAVE_ADDRESS 0
1745
+  #define E1_SLAVE_ADDRESS 0
1746
+  #define E2_SLAVE_ADDRESS 0
1747
+  #define E3_SLAVE_ADDRESS 0
1748
+  #define E4_SLAVE_ADDRESS 0
1749
+  #define E5_SLAVE_ADDRESS 0
1750
+
1751
+  /**
1730
    * Software enable
1752
    * Software enable
1731
    *
1753
    *
1732
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same
1754
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same
1735
   //#define SOFTWARE_DRIVER_ENABLE
1757
   //#define SOFTWARE_DRIVER_ENABLE
1736
 
1758
 
1737
   /**
1759
   /**
1738
-   * TMC2130, TMC2160, TMC2208, TMC5130 and TMC5160 only
1760
+   * TMC2130, TMC2160, TMC2208, TMC2209, TMC5130 and TMC5160 only
1739
    * Use Trinamic's ultra quiet stepping mode.
1761
    * Use Trinamic's ultra quiet stepping mode.
1740
    * When disabled, Marlin will use spreadCycle stepping mode.
1762
    * When disabled, Marlin will use spreadCycle stepping mode.
1741
    */
1763
    */
1761
 
1783
 
1762
   /**
1784
   /**
1763
    * Monitor Trinamic drivers for error conditions,
1785
    * Monitor Trinamic drivers for error conditions,
1764
-   * like overtemperature and short to ground. TMC2208 requires hardware serial.
1786
+   * like overtemperature and short to ground.
1765
    * In the case of overtemperature Marlin can decrease the driver current until error condition clears.
1787
    * In the case of overtemperature Marlin can decrease the driver current until error condition clears.
1766
    * Other detected conditions can be used to stop the current print.
1788
    * Other detected conditions can be used to stop the current print.
1767
    * Relevant g-codes:
1789
    * Relevant g-codes:
1779
   #endif
1801
   #endif
1780
 
1802
 
1781
   /**
1803
   /**
1782
-   * TMC2130, TMC2160, TMC2208, TMC5130 and TMC5160 only
1804
+   * TMC2130, TMC2160, TMC2208, TMC2209, TMC5130 and TMC5160 only
1783
    * The driver will switch to spreadCycle when stepper speed is over HYBRID_THRESHOLD.
1805
    * The driver will switch to spreadCycle when stepper speed is over HYBRID_THRESHOLD.
1784
    * This mode allows for faster movements at the expense of higher noise levels.
1806
    * This mode allows for faster movements at the expense of higher noise levels.
1785
    * STEALTHCHOP_(XY|Z|E) must be enabled to use HYBRID_THRESHOLD.
1807
    * STEALTHCHOP_(XY|Z|E) must be enabled to use HYBRID_THRESHOLD.
1802
   #define E5_HYBRID_THRESHOLD     30
1824
   #define E5_HYBRID_THRESHOLD     30
1803
 
1825
 
1804
   /**
1826
   /**
1805
-   * TMC2130, TMC2160, TMC2660, TMC5130, and TMC5160 only
1827
+   * TMC2130, TMC2160, TMC2209, TMC2660, TMC5130, and TMC5160 only
1806
    * Use StallGuard2 to sense an obstacle and trigger an endstop.
1828
    * Use StallGuard2 to sense an obstacle and trigger an endstop.
1807
    * Connect the stepper driver's DIAG1 pin to the X/Y endstop pin.
1829
    * Connect the stepper driver's DIAG1 pin to the X/Y endstop pin.
1808
    * X, Y, and Z homing will always be done in spreadCycle mode.
1830
    * X, Y, and Z homing will always be done in spreadCycle mode.
1814
    * It is advised to set X/Y/Z_HOME_BUMP_MM to 0.
1836
    * It is advised to set X/Y/Z_HOME_BUMP_MM to 0.
1815
    * M914 X/Y/Z to live tune the setting
1837
    * M914 X/Y/Z to live tune the setting
1816
    */
1838
    */
1817
-  //#define SENSORLESS_HOMING // TMC2130 only
1839
+  //#define SENSORLESS_HOMING // StallGuard capable drivers only
1818
 
1840
 
1819
   /**
1841
   /**
1820
    * Use StallGuard2 to probe the bed with the nozzle.
1842
    * Use StallGuard2 to probe the bed with the nozzle.
1822
    * CAUTION: This could cause damage to machines that use a lead screw or threaded rod
1844
    * CAUTION: This could cause damage to machines that use a lead screw or threaded rod
1823
    *          to move the Z axis. Take extreme care when attempting to enable this feature.
1845
    *          to move the Z axis. Take extreme care when attempting to enable this feature.
1824
    */
1846
    */
1825
-  //#define SENSORLESS_PROBING // TMC2130 only
1847
+  //#define SENSORLESS_PROBING // StallGuard capable drivers only
1826
 
1848
 
1827
   #if EITHER(SENSORLESS_HOMING, SENSORLESS_PROBING)
1849
   #if EITHER(SENSORLESS_HOMING, SENSORLESS_PROBING)
1850
+    // TMC2209: 0...255. TMC2130: -64...63
1828
     #define X_STALL_SENSITIVITY  8
1851
     #define X_STALL_SENSITIVITY  8
1829
     #define Y_STALL_SENSITIVITY  8
1852
     #define Y_STALL_SENSITIVITY  8
1830
     //#define Z_STALL_SENSITIVITY  8
1853
     //#define Z_STALL_SENSITIVITY  8

+ 1
- 1
Marlin/Makefile Voir le fichier

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

+ 2
- 2
Marlin/src/Marlin.cpp Voir le fichier

861
 
861
 
862
   setup_killpin();
862
   setup_killpin();
863
 
863
 
864
-  #if HAS_DRIVER(TMC2208)
865
-    tmc2208_serial_begin();
864
+  #if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
865
+    tmc_serial_begin();
866
   #endif
866
   #endif
867
 
867
 
868
   setup_powerhold();
868
   setup_powerhold();

+ 9
- 0
Marlin/src/core/drivers.h Voir le fichier

37
 #define _TMC2160_STANDALONE 2161
37
 #define _TMC2160_STANDALONE 2161
38
 #define _TMC2208            2208
38
 #define _TMC2208            2208
39
 #define _TMC2208_STANDALONE 0x00A
39
 #define _TMC2208_STANDALONE 0x00A
40
+#define _TMC2209            2209
41
+#define _TMC2209_STANDALONE 0x00D
40
 #define _TMC26X             0x10B
42
 #define _TMC26X             0x10B
41
 #define _TMC26X_STANDALONE  0x00B
43
 #define _TMC26X_STANDALONE  0x00B
42
 #define _TMC2660            2660
44
 #define _TMC2660            2660
77
 #define HAS_TRINAMIC (    HAS_DRIVER(TMC2130) \
79
 #define HAS_TRINAMIC (    HAS_DRIVER(TMC2130) \
78
                        || HAS_DRIVER(TMC2160) \
80
                        || HAS_DRIVER(TMC2160) \
79
                        || HAS_DRIVER(TMC2208) \
81
                        || HAS_DRIVER(TMC2208) \
82
+                       || HAS_DRIVER(TMC2209) \
80
                        || HAS_DRIVER(TMC2660) \
83
                        || HAS_DRIVER(TMC2660) \
81
                        || HAS_DRIVER(TMC5130) \
84
                        || HAS_DRIVER(TMC5130) \
82
                        || HAS_DRIVER(TMC5160) )
85
                        || HAS_DRIVER(TMC5160) )
84
 #define AXIS_IS_TMC(A)   (    AXIS_DRIVER_TYPE(A,TMC2130) \
87
 #define AXIS_IS_TMC(A)   (    AXIS_DRIVER_TYPE(A,TMC2130) \
85
                            || AXIS_DRIVER_TYPE(A,TMC2160) \
88
                            || AXIS_DRIVER_TYPE(A,TMC2160) \
86
                            || AXIS_DRIVER_TYPE(A,TMC2208) \
89
                            || AXIS_DRIVER_TYPE(A,TMC2208) \
90
+                           || AXIS_DRIVER_TYPE(A,TMC2209) \
87
                            || AXIS_DRIVER_TYPE(A,TMC2660) \
91
                            || AXIS_DRIVER_TYPE(A,TMC2660) \
88
                            || AXIS_DRIVER_TYPE(A,TMC5130) \
92
                            || AXIS_DRIVER_TYPE(A,TMC5130) \
89
                            || AXIS_DRIVER_TYPE(A,TMC5160) )
93
                            || AXIS_DRIVER_TYPE(A,TMC5160) )
96
                            || AXIS_DRIVER_TYPE(A,TMC5130) \
100
                            || AXIS_DRIVER_TYPE(A,TMC5130) \
97
                            || AXIS_DRIVER_TYPE(A,TMC5160) )
101
                            || AXIS_DRIVER_TYPE(A,TMC5160) )
98
 
102
 
103
+#define AXIS_HAS_UART(A) (    AXIS_DRIVER_TYPE(A,TMC2208) \
104
+                           || AXIS_DRIVER_TYPE(A,TMC2209) )
105
+
99
 #define AXIS_HAS_STALLGUARD(A)   (    AXIS_DRIVER_TYPE(A,TMC2130) \
106
 #define AXIS_HAS_STALLGUARD(A)   (    AXIS_DRIVER_TYPE(A,TMC2130) \
100
                                    || AXIS_DRIVER_TYPE(A,TMC2160) \
107
                                    || AXIS_DRIVER_TYPE(A,TMC2160) \
108
+                                   || AXIS_DRIVER_TYPE(A,TMC2209) \
101
                                    || AXIS_DRIVER_TYPE(A,TMC2660) \
109
                                    || AXIS_DRIVER_TYPE(A,TMC2660) \
102
                                    || AXIS_DRIVER_TYPE(A,TMC5130) \
110
                                    || AXIS_DRIVER_TYPE(A,TMC5130) \
103
                                    || AXIS_DRIVER_TYPE(A,TMC5160) )
111
                                    || AXIS_DRIVER_TYPE(A,TMC5160) )
105
 #define AXIS_HAS_STEALTHCHOP(A)  (    AXIS_DRIVER_TYPE(A,TMC2130) \
113
 #define AXIS_HAS_STEALTHCHOP(A)  (    AXIS_DRIVER_TYPE(A,TMC2130) \
106
                                    || AXIS_DRIVER_TYPE(A,TMC2160) \
114
                                    || AXIS_DRIVER_TYPE(A,TMC2160) \
107
                                    || AXIS_DRIVER_TYPE(A,TMC2208) \
115
                                    || AXIS_DRIVER_TYPE(A,TMC2208) \
116
+                                   || AXIS_DRIVER_TYPE(A,TMC2209) \
108
                                    || AXIS_DRIVER_TYPE(A,TMC5130) \
117
                                    || AXIS_DRIVER_TYPE(A,TMC5130) \
109
                                    || AXIS_DRIVER_TYPE(A,TMC5160) )
118
                                    || AXIS_DRIVER_TYPE(A,TMC5160) )

+ 56
- 28
Marlin/src/feature/tmc_util.cpp Voir le fichier

69
          #endif
69
          #endif
70
       ;
70
       ;
71
     #if ENABLED(TMC_DEBUG)
71
     #if ENABLED(TMC_DEBUG)
72
-      #if HAS_TMCX1X0 || HAS_DRIVER(TMC2208)
72
+      #if HAS_TMCX1X0 || HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
73
         uint8_t cs_actual;
73
         uint8_t cs_actual;
74
       #endif
74
       #endif
75
       #if HAS_STALLGUARD
75
       #if HAS_STALLGUARD
97
       TMC_driver_data data;
97
       TMC_driver_data data;
98
       const auto ds = data.drv_status = st.DRV_STATUS();
98
       const auto ds = data.drv_status = st.DRV_STATUS();
99
       #ifdef __AVR__
99
       #ifdef __AVR__
100
+
100
         // 8-bit optimization saves up to 70 bytes of PROGMEM per axis
101
         // 8-bit optimization saves up to 70 bytes of PROGMEM per axis
101
         uint8_t spart;
102
         uint8_t spart;
102
         #if ENABLED(TMC_DEBUG)
103
         #if ENABLED(TMC_DEBUG)
115
           data.is_standstill = TEST(spart, STST_bp - 24);
116
           data.is_standstill = TEST(spart, STST_bp - 24);
116
           data.sg_result_reasonable = !data.is_standstill; // sg_result has no reasonable meaning while standstill
117
           data.sg_result_reasonable = !data.is_standstill; // sg_result has no reasonable meaning while standstill
117
         #endif
118
         #endif
119
+
118
       #else // !__AVR__
120
       #else // !__AVR__
119
 
121
 
120
         data.is_ot = TEST(ds, OT_bp);
122
         data.is_ot = TEST(ds, OT_bp);
137
 
139
 
138
   #endif // HAS_TMCX1X0
140
   #endif // HAS_TMCX1X0
139
 
141
 
140
-  #if HAS_DRIVER(TMC2208)
142
+  #if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
141
 
143
 
142
     #if ENABLED(TMC_DEBUG)
144
     #if ENABLED(TMC_DEBUG)
143
       static uint32_t get_pwm_scale(TMC2208Stepper &st) { return st.pwm_scale_sum(); }
145
       static uint32_t get_pwm_scale(TMC2208Stepper &st) { return st.pwm_scale_sum(); }
174
       return data;
176
       return data;
175
     }
177
     }
176
 
178
 
177
-  #endif // TMC2208
179
+  #endif // TMC2208 || TMC2209
178
 
180
 
179
   #if HAS_DRIVER(TMC2660)
181
   #if HAS_DRIVER(TMC2660)
180
 
182
 
228
     SERIAL_ECHO(timestamp);
230
     SERIAL_ECHO(timestamp);
229
     SERIAL_ECHOPGM(": ");
231
     SERIAL_ECHOPGM(": ");
230
     st.printLabel();
232
     st.printLabel();
231
-    SERIAL_ECHOPGM(" driver overtemperature warning! (");
232
-    SERIAL_ECHO(st.getMilliamps());
233
-    SERIAL_ECHOLNPGM("mA)");
233
+    SERIAL_ECHOLNPAIR(" driver overtemperature warning! (", st.getMilliamps(), "mA)");
234
   }
234
   }
235
 
235
 
236
   template<typename TMC>
236
   template<typename TMC>
239
     st.printLabel();
239
     st.printLabel();
240
     SERIAL_CHAR(':'); SERIAL_PRINT(pwm_scale, DEC);
240
     SERIAL_CHAR(':'); SERIAL_PRINT(pwm_scale, DEC);
241
     #if ENABLED(TMC_DEBUG)
241
     #if ENABLED(TMC_DEBUG)
242
-      #if HAS_TMCX1X0 || HAS_DRIVER(TMC2208)
242
+      #if HAS_TMCX1X0 || HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
243
         SERIAL_CHAR('/'); SERIAL_PRINT(data.cs_actual, DEC);
243
         SERIAL_CHAR('/'); SERIAL_PRINT(data.cs_actual, DEC);
244
       #endif
244
       #endif
245
       #if HAS_STALLGUARD
245
       #if HAS_STALLGUARD
386
       if ((report_tmc_status_interval = update_interval))
386
       if ((report_tmc_status_interval = update_interval))
387
         SERIAL_ECHOLNPGM("axis:pwm_scale"
387
         SERIAL_ECHOLNPGM("axis:pwm_scale"
388
           #if HAS_STEALTHCHOP
388
           #if HAS_STEALTHCHOP
389
-            "/current_scale"
389
+            "/curr_scale"
390
           #endif
390
           #endif
391
           #if HAS_STALLGUARD
391
           #if HAS_STALLGUARD
392
             "/mech_load"
392
             "/mech_load"
398
 
398
 
399
   enum TMC_debug_enum : char {
399
   enum TMC_debug_enum : char {
400
     TMC_CODES,
400
     TMC_CODES,
401
+    TMC_UART_ADDR,
401
     TMC_ENABLED,
402
     TMC_ENABLED,
402
     TMC_CURRENT,
403
     TMC_CURRENT,
403
     TMC_RMS_CURRENT,
404
     TMC_RMS_CURRENT,
482
   #if HAS_TMCX1X0
483
   #if HAS_TMCX1X0
483
     static void _tmc_parse_drv_status(TMC2130Stepper &st, const TMC_drv_status_enum i) {
484
     static void _tmc_parse_drv_status(TMC2130Stepper &st, const TMC_drv_status_enum i) {
484
       switch (i) {
485
       switch (i) {
485
-        case TMC_STALLGUARD: if (st.stallguard()) SERIAL_CHAR('X'); break;
486
-        case TMC_SG_RESULT:  SERIAL_PRINT(st.sg_result(), DEC);   break;
487
-        case TMC_FSACTIVE:   if (st.fsactive())   SERIAL_CHAR('X'); break;
486
+        case TMC_STALLGUARD: if (st.stallguard()) SERIAL_CHAR('*'); break;
487
+        case TMC_SG_RESULT:  SERIAL_PRINT(st.sg_result(), DEC); break;
488
+        case TMC_FSACTIVE:   if (st.fsactive())   SERIAL_CHAR('*'); break;
488
         case TMC_DRV_CS_ACTUAL: SERIAL_PRINT(st.cs_actual(), DEC); break;
489
         case TMC_DRV_CS_ACTUAL: SERIAL_PRINT(st.cs_actual(), DEC); break;
489
         default: break;
490
         default: break;
490
       }
491
       }
515
     }
516
     }
516
   #endif
517
   #endif
517
 
518
 
518
-  #if HAS_DRIVER(TMC2208)
519
+  #if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
519
     static void _tmc_status(TMC2208Stepper &st, const TMC_debug_enum i) {
520
     static void _tmc_status(TMC2208Stepper &st, const TMC_debug_enum i) {
520
       switch (i) {
521
       switch (i) {
521
         case TMC_PWM_SCALE: SERIAL_PRINT(st.pwm_scale_sum(), DEC); break;
522
         case TMC_PWM_SCALE: SERIAL_PRINT(st.pwm_scale_sum(), DEC); break;
522
         case TMC_STEALTHCHOP: serialprint_truefalse(st.stealth()); break;
523
         case TMC_STEALTHCHOP: serialprint_truefalse(st.stealth()); break;
523
-        case TMC_S2VSA: if (st.s2vsa()) SERIAL_CHAR('X'); break;
524
-        case TMC_S2VSB: if (st.s2vsb()) SERIAL_CHAR('X'); break;
524
+        case TMC_S2VSA: if (st.s2vsa()) SERIAL_CHAR('*'); break;
525
+        case TMC_S2VSB: if (st.s2vsb()) SERIAL_CHAR('*'); break;
525
         default: break;
526
         default: break;
526
       }
527
       }
527
     }
528
     }
529
+
530
+    #if HAS_DRIVER(TMC2209)
531
+      template<char AXIS_LETTER, char DRIVER_ID, AxisEnum AXIS_ID>
532
+      static void _tmc_status(TMCMarlin<TMC2209Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID> &st, const TMC_debug_enum i) {
533
+        switch (i) {
534
+          case TMC_SGT:       SERIAL_PRINT(st.SGTHRS(), DEC); break;
535
+          case TMC_UART_ADDR: SERIAL_PRINT(st.get_address(), DEC); break;
536
+          default:
537
+            TMC2208Stepper *parent = &st;
538
+            _tmc_status(*parent, i);
539
+            break;
540
+        }
541
+      }
542
+    #endif
543
+
528
     static void _tmc_parse_drv_status(TMC2208Stepper &st, const TMC_drv_status_enum i) {
544
     static void _tmc_parse_drv_status(TMC2208Stepper &st, const TMC_drv_status_enum i) {
529
       switch (i) {
545
       switch (i) {
530
-        case TMC_T157: if (st.t157()) SERIAL_CHAR('X'); break;
531
-        case TMC_T150: if (st.t150()) SERIAL_CHAR('X'); break;
532
-        case TMC_T143: if (st.t143()) SERIAL_CHAR('X'); break;
533
-        case TMC_T120: if (st.t120()) SERIAL_CHAR('X'); break;
546
+        case TMC_T157: if (st.t157()) SERIAL_CHAR('*'); break;
547
+        case TMC_T150: if (st.t150()) SERIAL_CHAR('*'); break;
548
+        case TMC_T143: if (st.t143()) SERIAL_CHAR('*'); break;
549
+        case TMC_T120: if (st.t120()) SERIAL_CHAR('*'); break;
534
         case TMC_DRV_CS_ACTUAL: SERIAL_PRINT(st.cs_actual(), DEC); break;
550
         case TMC_DRV_CS_ACTUAL: SERIAL_PRINT(st.cs_actual(), DEC); break;
535
         default: break;
551
         default: break;
536
       }
552
       }
620
     SERIAL_CHAR('\t');
636
     SERIAL_CHAR('\t');
621
     switch (i) {
637
     switch (i) {
622
       case TMC_DRV_CODES:     st.printLabel();  break;
638
       case TMC_DRV_CODES:     st.printLabel();  break;
623
-      case TMC_STST:          if (st.stst())         SERIAL_CHAR('X'); break;
624
-      case TMC_OLB:           if (st.olb())          SERIAL_CHAR('X'); break;
625
-      case TMC_OLA:           if (st.ola())          SERIAL_CHAR('X'); break;
626
-      case TMC_S2GB:          if (st.s2gb())         SERIAL_CHAR('X'); break;
627
-      case TMC_S2GA:          if (st.s2ga())         SERIAL_CHAR('X'); break;
628
-      case TMC_DRV_OTPW:      if (st.otpw())         SERIAL_CHAR('X'); break;
629
-      case TMC_OT:            if (st.ot())           SERIAL_CHAR('X'); break;
639
+      case TMC_STST:          if (st.stst())         SERIAL_CHAR('*'); break;
640
+      case TMC_OLB:           if (st.olb())          SERIAL_CHAR('*'); break;
641
+      case TMC_OLA:           if (st.ola())          SERIAL_CHAR('*'); break;
642
+      case TMC_S2GB:          if (st.s2gb())         SERIAL_CHAR('*'); break;
643
+      case TMC_S2GA:          if (st.s2ga())         SERIAL_CHAR('*'); break;
644
+      case TMC_DRV_OTPW:      if (st.otpw())         SERIAL_CHAR('*'); break;
645
+      case TMC_OT:            if (st.ot())           SERIAL_CHAR('*'); break;
630
       case TMC_DRV_STATUS_HEX: {
646
       case TMC_DRV_STATUS_HEX: {
631
         const uint32_t drv_status = st.DRV_STATUS();
647
         const uint32_t drv_status = st.DRV_STATUS();
632
         SERIAL_CHAR('\t');
648
         SERIAL_CHAR('\t');
759
     #define TMC_REPORT(LABEL, ITEM) do{ SERIAL_ECHOPGM(LABEL);  tmc_debug_loop(ITEM, print_x, print_y, print_z, print_e); }while(0)
775
     #define TMC_REPORT(LABEL, ITEM) do{ SERIAL_ECHOPGM(LABEL);  tmc_debug_loop(ITEM, print_x, print_y, print_z, print_e); }while(0)
760
     #define DRV_REPORT(LABEL, ITEM) do{ SERIAL_ECHOPGM(LABEL); drv_status_loop(ITEM, print_x, print_y, print_z, print_e); }while(0)
776
     #define DRV_REPORT(LABEL, ITEM) do{ SERIAL_ECHOPGM(LABEL); drv_status_loop(ITEM, print_x, print_y, print_z, print_e); }while(0)
761
     TMC_REPORT("\t",                 TMC_CODES);
777
     TMC_REPORT("\t",                 TMC_CODES);
778
+    #if HAS_DRIVER(TMC2209)
779
+      TMC_REPORT("Address\t",        TMC_UART_ADDR);
780
+    #endif
762
     TMC_REPORT("Enabled\t",          TMC_ENABLED);
781
     TMC_REPORT("Enabled\t",          TMC_ENABLED);
763
     TMC_REPORT("Set current",        TMC_CURRENT);
782
     TMC_REPORT("Set current",        TMC_CURRENT);
764
     TMC_REPORT("RMS current",        TMC_RMS_CURRENT);
783
     TMC_REPORT("RMS current",        TMC_RMS_CURRENT);
770
     #endif
789
     #endif
771
     TMC_REPORT("CS actual\t",        TMC_CS_ACTUAL);
790
     TMC_REPORT("CS actual\t",        TMC_CS_ACTUAL);
772
     TMC_REPORT("PWM scale",          TMC_PWM_SCALE);
791
     TMC_REPORT("PWM scale",          TMC_PWM_SCALE);
773
-    #if HAS_DRIVER(TMC2130) || HAS_DRIVER(TMC2224) || HAS_DRIVER(TMC2660) || HAS_DRIVER(TMC2208)
792
+    #if HAS_DRIVER(TMC2130) || HAS_DRIVER(TMC2224) || HAS_DRIVER(TMC2660) || HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
774
       TMC_REPORT("vsense\t",         TMC_VSENSE);
793
       TMC_REPORT("vsense\t",         TMC_VSENSE);
775
     #endif
794
     #endif
776
     TMC_REPORT("stealthChop",        TMC_STEALTHCHOP);
795
     TMC_REPORT("stealthChop",        TMC_STEALTHCHOP);
802
     DRV_REPORT("s2ga\t",             TMC_S2GA);
821
     DRV_REPORT("s2ga\t",             TMC_S2GA);
803
     DRV_REPORT("otpw\t",             TMC_DRV_OTPW);
822
     DRV_REPORT("otpw\t",             TMC_DRV_OTPW);
804
     DRV_REPORT("ot\t",               TMC_OT);
823
     DRV_REPORT("ot\t",               TMC_OT);
805
-    #if HAS_DRIVER(TMC2208)
824
+    #if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
806
       DRV_REPORT("157C\t",           TMC_T157);
825
       DRV_REPORT("157C\t",           TMC_T157);
807
       DRV_REPORT("150C\t",           TMC_T150);
826
       DRV_REPORT("150C\t",           TMC_T150);
808
       DRV_REPORT("143C\t",           TMC_T143);
827
       DRV_REPORT("143C\t",           TMC_T143);
826
       }
845
       }
827
     }
846
     }
828
   #endif
847
   #endif
829
-  #if HAS_DRIVER(TMC2208)
848
+  #if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
830
     static void tmc_get_ic_registers(TMC2208Stepper, const TMC_get_registers_enum) { SERIAL_CHAR('\t'); }
849
     static void tmc_get_ic_registers(TMC2208Stepper, const TMC_get_registers_enum) { SERIAL_CHAR('\t'); }
831
   #endif
850
   #endif
832
 
851
 
961
     st.en_pwm_mode(restore_stealth);
980
     st.en_pwm_mode(restore_stealth);
962
     st.diag1_stall(false);
981
     st.diag1_stall(false);
963
   }
982
   }
983
+
984
+  bool tmc_enable_stallguard(TMC2209Stepper &st) {
985
+    st.TCOOLTHRS(0xFFFFF);
986
+    return true;
987
+  }
988
+  void tmc_disable_stallguard(TMC2209Stepper &st, const bool restore_stealth) {
989
+    st.TCOOLTHRS(0);
990
+  }
991
+
964
   bool tmc_enable_stallguard(TMC2660Stepper) {
992
   bool tmc_enable_stallguard(TMC2660Stepper) {
965
     // TODO
993
     // TODO
966
     return false;
994
     return false;

+ 93
- 20
Marlin/src/feature/tmc_util.h Voir le fichier

92
         uint8_t hybrid_thrs = 0;
92
         uint8_t hybrid_thrs = 0;
93
       #endif
93
       #endif
94
       #if USE_SENSORLESS
94
       #if USE_SENSORLESS
95
-        int8_t homing_thrs = 0;
95
+        int16_t homing_thrs = 0;
96
       #endif
96
       #endif
97
     } stored;
97
     } stored;
98
 };
98
 };
100
 template<class TMC, char AXIS_LETTER, char DRIVER_ID, AxisEnum AXIS_ID>
100
 template<class TMC, char AXIS_LETTER, char DRIVER_ID, AxisEnum AXIS_ID>
101
 class TMCMarlin : public TMC, public TMCStorage<AXIS_LETTER, DRIVER_ID> {
101
 class TMCMarlin : public TMC, public TMCStorage<AXIS_LETTER, DRIVER_ID> {
102
   public:
102
   public:
103
-    TMCMarlin(uint16_t cs_pin, float RS) :
103
+    TMCMarlin(const uint16_t cs_pin, const float RS) :
104
       TMC(cs_pin, RS)
104
       TMC(cs_pin, RS)
105
       {}
105
       {}
106
-    TMCMarlin(uint16_t CS, float RS, uint16_t pinMOSI, uint16_t pinMISO, uint16_t pinSCK) :
106
+    TMCMarlin(const uint16_t CS, const float RS, const uint16_t pinMOSI, const uint16_t pinMISO, const uint16_t pinSCK) :
107
       TMC(CS, RS, pinMOSI, pinMISO, pinSCK)
107
       TMC(CS, RS, pinMOSI, pinMISO, pinSCK)
108
       {}
108
       {}
109
     inline uint16_t rms_current() { return TMC::rms_current(); }
109
     inline uint16_t rms_current() { return TMC::rms_current(); }
111
       this->val_mA = mA;
111
       this->val_mA = mA;
112
       TMC::rms_current(mA);
112
       TMC::rms_current(mA);
113
     }
113
     }
114
-    inline void rms_current(uint16_t mA, float mult) {
114
+    inline void rms_current(const uint16_t mA, const float mult) {
115
       this->val_mA = mA;
115
       this->val_mA = mA;
116
       TMC::rms_current(mA, mult);
116
       TMC::rms_current(mA, mult);
117
     }
117
     }
132
       }
132
       }
133
     #endif
133
     #endif
134
     #if USE_SENSORLESS
134
     #if USE_SENSORLESS
135
-      inline int8_t sgt() { return TMC::sgt(); }
136
-      void sgt(const int8_t sgt_val) {
135
+      inline int16_t homing_threshold() { return TMC::sgt(); }
136
+      void homing_threshold(int16_t sgt_val) {
137
+        sgt_val = (int16_t)constrain(sgt_val, sgt_min, sgt_max);
137
         TMC::sgt(sgt_val);
138
         TMC::sgt(sgt_val);
138
         #if HAS_LCD_MENU
139
         #if HAS_LCD_MENU
139
           this->stored.homing_thrs = sgt_val;
140
           this->stored.homing_thrs = sgt_val;
148
         inline void refresh_hybrid_thrs() { set_pwm_thrs(this->stored.hybrid_thrs); }
149
         inline void refresh_hybrid_thrs() { set_pwm_thrs(this->stored.hybrid_thrs); }
149
       #endif
150
       #endif
150
       #if USE_SENSORLESS
151
       #if USE_SENSORLESS
151
-        inline void refresh_homing_thrs() { sgt(this->stored.homing_thrs); }
152
+        inline void refresh_homing_thrs() { homing_threshold(this->stored.homing_thrs); }
152
       #endif
153
       #endif
153
     #endif
154
     #endif
155
+
156
+    static constexpr int8_t sgt_min = -64,
157
+                            sgt_max =  63;
154
 };
158
 };
155
 template<char AXIS_LETTER, char DRIVER_ID, AxisEnum AXIS_ID>
159
 template<char AXIS_LETTER, char DRIVER_ID, AxisEnum AXIS_ID>
156
 class TMCMarlin<TMC2208Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID> : public TMC2208Stepper, public TMCStorage<AXIS_LETTER, DRIVER_ID> {
160
 class TMCMarlin<TMC2208Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID> : public TMC2208Stepper, public TMCStorage<AXIS_LETTER, DRIVER_ID> {
157
   public:
161
   public:
158
-    TMCMarlin(Stream * SerialPort, float RS, bool has_rx=true) :
159
-      TMC2208Stepper(SerialPort, RS, has_rx=true)
162
+    TMCMarlin(Stream * SerialPort, const float RS, const uint8_t) :
163
+      TMC2208Stepper(SerialPort, RS, /*has_rx=*/true)
160
       {}
164
       {}
161
-    TMCMarlin(uint16_t RX, uint16_t TX, float RS, bool has_rx=true) :
162
-      TMC2208Stepper(RX, TX, RS, has_rx=true)
165
+    TMCMarlin(const uint16_t RX, const uint16_t TX, const float RS, const uint8_t, const bool has_rx=true) :
166
+      TMC2208Stepper(RX, TX, RS, has_rx)
163
       {}
167
       {}
164
     uint16_t rms_current() { return TMC2208Stepper::rms_current(); }
168
     uint16_t rms_current() { return TMC2208Stepper::rms_current(); }
165
-    inline void rms_current(uint16_t mA) {
169
+    inline void rms_current(const uint16_t mA) {
166
       this->val_mA = mA;
170
       this->val_mA = mA;
167
       TMC2208Stepper::rms_current(mA);
171
       TMC2208Stepper::rms_current(mA);
168
     }
172
     }
169
-    inline void rms_current(uint16_t mA, float mult) {
173
+    inline void rms_current(const uint16_t mA, const float mult) {
170
       this->val_mA = mA;
174
       this->val_mA = mA;
171
       TMC2208Stepper::rms_current(mA, mult);
175
       TMC2208Stepper::rms_current(mA, mult);
172
     }
176
     }
195
       #endif
199
       #endif
196
     #endif
200
     #endif
197
 };
201
 };
202
+
203
+template<char AXIS_LETTER, char DRIVER_ID, AxisEnum AXIS_ID>
204
+class TMCMarlin<TMC2209Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID> : public TMC2209Stepper, public TMCStorage<AXIS_LETTER, DRIVER_ID> {
205
+  public:
206
+    TMCMarlin(Stream * SerialPort, const float RS, const uint8_t addr) :
207
+      TMC2209Stepper(SerialPort, RS, addr)
208
+      {}
209
+    TMCMarlin(const uint16_t RX, const uint16_t TX, const float RS, const uint8_t addr, const bool) :
210
+      TMC2209Stepper(RX, TX, RS, addr)
211
+      {}
212
+    uint8_t get_address() { return slave_address; }
213
+    uint16_t rms_current() { return TMC2209Stepper::rms_current(); }
214
+    inline void rms_current(const uint16_t mA) {
215
+      this->val_mA = mA;
216
+      TMC2209Stepper::rms_current(mA);
217
+    }
218
+    inline void rms_current(const uint16_t mA, const float mult) {
219
+      this->val_mA = mA;
220
+      TMC2209Stepper::rms_current(mA, mult);
221
+    }
222
+
223
+    #if HAS_STEALTHCHOP
224
+      inline void refresh_stepping_mode() { en_spreadCycle(!this->stored.stealthChop_enabled); }
225
+      inline bool get_stealthChop_status() { return !this->en_spreadCycle(); }
226
+    #endif
227
+    #if ENABLED(HYBRID_THRESHOLD)
228
+      uint32_t get_pwm_thrs() {
229
+        return _tmc_thrs(this->microsteps(), this->TPWMTHRS(), planner.settings.axis_steps_per_mm[AXIS_ID]);
230
+      }
231
+      void set_pwm_thrs(const uint32_t thrs) {
232
+        TMC2209Stepper::TPWMTHRS(_tmc_thrs(this->microsteps(), thrs, planner.settings.axis_steps_per_mm[AXIS_ID]));
233
+        #if HAS_LCD_MENU
234
+          this->stored.hybrid_thrs = thrs;
235
+        #endif
236
+      }
237
+    #endif
238
+    #if USE_SENSORLESS
239
+      inline int16_t homing_threshold() { return TMC2209Stepper::SGTHRS(); }
240
+      void homing_threshold(int16_t sgt_val) {
241
+        sgt_val = (int16_t)constrain(sgt_val, sgt_min, sgt_max);
242
+        TMC2209Stepper::SGTHRS(sgt_val);
243
+        #if HAS_LCD_MENU
244
+          this->stored.homing_thrs = sgt_val;
245
+        #endif
246
+      }
247
+    #endif
248
+
249
+    #if HAS_LCD_MENU
250
+      inline void refresh_stepper_current() { rms_current(this->val_mA); }
251
+
252
+      #if ENABLED(HYBRID_THRESHOLD)
253
+        inline void refresh_hybrid_thrs() { set_pwm_thrs(this->stored.hybrid_thrs); }
254
+      #endif
255
+      #if USE_SENSORLESS
256
+        inline void refresh_homing_thrs() { homing_threshold(this->stored.homing_thrs); }
257
+      #endif
258
+    #endif
259
+
260
+    static constexpr uint8_t sgt_min = 0,
261
+                             sgt_max = 255;
262
+};
263
+
198
 template<char AXIS_LETTER, char DRIVER_ID, AxisEnum AXIS_ID>
264
 template<char AXIS_LETTER, char DRIVER_ID, AxisEnum AXIS_ID>
199
 class TMCMarlin<TMC2660Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID> : public TMC2660Stepper, public TMCStorage<AXIS_LETTER, DRIVER_ID> {
265
 class TMCMarlin<TMC2660Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID> : public TMC2660Stepper, public TMCStorage<AXIS_LETTER, DRIVER_ID> {
200
   public:
266
   public:
201
-    TMCMarlin(uint16_t cs_pin, float RS) :
267
+    TMCMarlin(const uint16_t cs_pin, const float RS) :
202
       TMC2660Stepper(cs_pin, RS)
268
       TMC2660Stepper(cs_pin, RS)
203
       {}
269
       {}
204
-    TMCMarlin(uint16_t CS, float RS, uint16_t pinMOSI, uint16_t pinMISO, uint16_t pinSCK) :
270
+    TMCMarlin(const uint16_t CS, const float RS, const uint16_t pinMOSI, const uint16_t pinMISO, const uint16_t pinSCK) :
205
       TMC2660Stepper(CS, RS, pinMOSI, pinMISO, pinSCK)
271
       TMC2660Stepper(CS, RS, pinMOSI, pinMISO, pinSCK)
206
       {}
272
       {}
207
     inline uint16_t rms_current() { return TMC2660Stepper::rms_current(); }
273
     inline uint16_t rms_current() { return TMC2660Stepper::rms_current(); }
208
-    inline void rms_current(uint16_t mA) {
274
+    inline void rms_current(const uint16_t mA) {
209
       this->val_mA = mA;
275
       this->val_mA = mA;
210
       TMC2660Stepper::rms_current(mA);
276
       TMC2660Stepper::rms_current(mA);
211
     }
277
     }
212
 
278
 
213
     #if USE_SENSORLESS
279
     #if USE_SENSORLESS
214
-      inline int8_t sgt() { return TMC2660Stepper::sgt(); }
215
-      void sgt(const int8_t sgt_val) {
280
+      inline int16_t homing_threshold() { return TMC2660Stepper::sgt(); }
281
+      void homing_threshold(int16_t sgt_val) {
282
+        sgt_val = (int16_t)constrain(sgt_val, sgt_min, sgt_max);
216
         TMC2660Stepper::sgt(sgt_val);
283
         TMC2660Stepper::sgt(sgt_val);
217
         #if HAS_LCD_MENU
284
         #if HAS_LCD_MENU
218
           this->stored.homing_thrs = sgt_val;
285
           this->stored.homing_thrs = sgt_val;
224
       inline void refresh_stepper_current() { rms_current(this->val_mA); }
291
       inline void refresh_stepper_current() { rms_current(this->val_mA); }
225
 
292
 
226
       #if USE_SENSORLESS
293
       #if USE_SENSORLESS
227
-        inline void refresh_homing_thrs() { sgt(this->stored.homing_thrs); }
294
+        inline void refresh_homing_thrs() { homing_threshold(this->stored.homing_thrs); }
228
       #endif
295
       #endif
229
     #endif
296
     #endif
297
+
298
+    static constexpr int8_t sgt_min = -64,
299
+                            sgt_max =  63;
230
 };
300
 };
231
 
301
 
232
 template<typename TMC>
302
 template<typename TMC>
262
   void tmc_print_sgt(TMC &st) {
332
   void tmc_print_sgt(TMC &st) {
263
     st.printLabel();
333
     st.printLabel();
264
     SERIAL_ECHOPGM(" homing sensitivity: ");
334
     SERIAL_ECHOPGM(" homing sensitivity: ");
265
-    SERIAL_PRINTLN(st.sgt(), DEC);
335
+    SERIAL_PRINTLN(st.homing_threshold(), DEC);
266
   }
336
   }
267
 #endif
337
 #endif
268
 
338
 
293
   bool tmc_enable_stallguard(TMC2130Stepper &st);
363
   bool tmc_enable_stallguard(TMC2130Stepper &st);
294
   void tmc_disable_stallguard(TMC2130Stepper &st, const bool restore_stealth);
364
   void tmc_disable_stallguard(TMC2130Stepper &st, const bool restore_stealth);
295
 
365
 
366
+  bool tmc_enable_stallguard(TMC2209Stepper &st);
367
+  void tmc_disable_stallguard(TMC2209Stepper &st, const bool restore_stealth);
368
+
296
   bool tmc_enable_stallguard(TMC2660Stepper);
369
   bool tmc_enable_stallguard(TMC2660Stepper);
297
   void tmc_disable_stallguard(TMC2660Stepper, const bool);
370
   void tmc_disable_stallguard(TMC2660Stepper, const bool);
298
 #endif
371
 #endif

+ 10
- 10
Marlin/src/gcode/feature/trinamic/M911-M914.cpp Voir le fichier

32
 
32
 
33
 #if ENABLED(MONITOR_DRIVER_STATUS)
33
 #if ENABLED(MONITOR_DRIVER_STATUS)
34
 
34
 
35
-  #define M91x_USE(ST) (AXIS_DRIVER_TYPE(ST, TMC2130) || AXIS_DRIVER_TYPE(ST, TMC2160) || AXIS_DRIVER_TYPE(ST, TMC2208) || AXIS_DRIVER_TYPE(ST, TMC2660) || AXIS_DRIVER_TYPE(ST, TMC5130) || AXIS_DRIVER_TYPE(ST, TMC5160))
35
+  #define M91x_USE(ST) (AXIS_DRIVER_TYPE(ST, TMC2130) || AXIS_DRIVER_TYPE(ST, TMC2160) || AXIS_DRIVER_TYPE(ST, TMC2208) || AXIS_DRIVER_TYPE(ST, TMC2209) || AXIS_DRIVER_TYPE(ST, TMC2660) || AXIS_DRIVER_TYPE(ST, TMC5130) || AXIS_DRIVER_TYPE(ST, TMC5160))
36
   #define M91x_USE_E(N) (E_STEPPERS > N && M91x_USE(E##N))
36
   #define M91x_USE_E(N) (E_STEPPERS > N && M91x_USE(E##N))
37
 
37
 
38
   #define M91x_SOME_X (M91x_USE(X) || M91x_USE(X2))
38
   #define M91x_SOME_X (M91x_USE(X) || M91x_USE(X2))
41
   #define M91x_SOME_E (M91x_USE_E(0) || M91x_USE_E(1) || M91x_USE_E(2) || M91x_USE_E(3) || M91x_USE_E(4) || M91x_USE_E(5))
41
   #define M91x_SOME_E (M91x_USE_E(0) || M91x_USE_E(1) || M91x_USE_E(2) || M91x_USE_E(3) || M91x_USE_E(4) || M91x_USE_E(5))
42
 
42
 
43
   #if !M91x_SOME_X && !M91x_SOME_Y && !M91x_SOME_Z && !M91x_SOME_E
43
   #if !M91x_SOME_X && !M91x_SOME_Y && !M91x_SOME_Z && !M91x_SOME_E
44
-    #error "MONITOR_DRIVER_STATUS requires at least one TMC2130, TMC2208, or TMC2660."
44
+    #error "MONITOR_DRIVER_STATUS requires at least one TMC2130, 2160, 2208, 2209, 2660, 5130, or 5160."
45
   #endif
45
   #endif
46
 
46
 
47
   /**
47
   /**
313
     bool report = true;
313
     bool report = true;
314
     const uint8_t index = parser.byteval('I');
314
     const uint8_t index = parser.byteval('I');
315
     LOOP_XYZ(i) if (parser.seen(axis_codes[i])) {
315
     LOOP_XYZ(i) if (parser.seen(axis_codes[i])) {
316
-      const int8_t value = (int8_t)constrain(parser.value_int(), -64, 63);
316
+      const int16_t value = parser.value_int();
317
       report = false;
317
       report = false;
318
       switch (i) {
318
       switch (i) {
319
         #if X_SENSORLESS
319
         #if X_SENSORLESS
320
           case X_AXIS:
320
           case X_AXIS:
321
             #if AXIS_HAS_STALLGUARD(X)
321
             #if AXIS_HAS_STALLGUARD(X)
322
-              if (index < 2) stepperX.sgt(value);
322
+              if (index < 2) stepperX.homing_threshold(value);
323
             #endif
323
             #endif
324
             #if AXIS_HAS_STALLGUARD(X2)
324
             #if AXIS_HAS_STALLGUARD(X2)
325
-              if (!(index & 1)) stepperX2.sgt(value);
325
+              if (!(index & 1)) stepperX2.homing_threshold(value);
326
             #endif
326
             #endif
327
             break;
327
             break;
328
         #endif
328
         #endif
329
         #if Y_SENSORLESS
329
         #if Y_SENSORLESS
330
           case Y_AXIS:
330
           case Y_AXIS:
331
             #if AXIS_HAS_STALLGUARD(Y)
331
             #if AXIS_HAS_STALLGUARD(Y)
332
-              if (index < 2) stepperY.sgt(value);
332
+              if (index < 2) stepperY.homing_threshold(value);
333
             #endif
333
             #endif
334
             #if AXIS_HAS_STALLGUARD(Y2)
334
             #if AXIS_HAS_STALLGUARD(Y2)
335
-              if (!(index & 1)) stepperY2.sgt(value);
335
+              if (!(index & 1)) stepperY2.homing_threshold(value);
336
             #endif
336
             #endif
337
             break;
337
             break;
338
         #endif
338
         #endif
339
         #if Z_SENSORLESS
339
         #if Z_SENSORLESS
340
           case Z_AXIS:
340
           case Z_AXIS:
341
             #if AXIS_HAS_STALLGUARD(Z)
341
             #if AXIS_HAS_STALLGUARD(Z)
342
-              if (index < 2) stepperZ.sgt(value);
342
+              if (index < 2) stepperZ.homing_threshold(value);
343
             #endif
343
             #endif
344
             #if AXIS_HAS_STALLGUARD(Z2)
344
             #if AXIS_HAS_STALLGUARD(Z2)
345
-              if (index == 0 || index == 2) stepperZ2.sgt(value);
345
+              if (index == 0 || index == 2) stepperZ2.homing_threshold(value);
346
             #endif
346
             #endif
347
             #if AXIS_HAS_STALLGUARD(Z3)
347
             #if AXIS_HAS_STALLGUARD(Z3)
348
-              if (index == 0 || index == 3) stepperZ3.sgt(value);
348
+              if (index == 0 || index == 3) stepperZ3.homing_threshold(value);
349
             #endif
349
             #endif
350
             break;
350
             break;
351
         #endif
351
         #endif

+ 5
- 5
Marlin/src/gcode/gcode.h Voir le fichier

139
  * M119 - Report endstops status.
139
  * M119 - Report endstops status.
140
  * M120 - Enable endstops detection.
140
  * M120 - Enable endstops detection.
141
  * M121 - Disable endstops detection.
141
  * M121 - Disable endstops detection.
142
- * M122 - Debug stepper (Requires at least one _DRIVER_TYPE defined as TMC2130/TMC2208/TMC2660 or L6470)
142
+ * M122 - Debug stepper (Requires at least one _DRIVER_TYPE defined as TMC2130/2160/5130/5160/2208/2209/2660 or L6470)
143
  * M125 - Save current position and move to filament change position. (Requires PARK_HEAD_ON_PAUSE)
143
  * M125 - Save current position and move to filament change position. (Requires PARK_HEAD_ON_PAUSE)
144
  * M126 - Solenoid Air Valve Open. (Requires BARICUDA)
144
  * M126 - Solenoid Air Valve Open. (Requires BARICUDA)
145
  * M127 - Solenoid Air Valve Closed. (Requires BARICUDA)
145
  * M127 - Solenoid Air Valve Closed. (Requires BARICUDA)
218
  * M504 - Validate EEPROM contents. (Requires EEPROM_SETTINGS)
218
  * M504 - Validate EEPROM contents. (Requires EEPROM_SETTINGS)
219
  * M524 - Abort the current SD print job started with M24. (Requires SDSUPPORT)
219
  * M524 - Abort the current SD print job started with M24. (Requires SDSUPPORT)
220
  * M540 - Enable/disable SD card abort on endstop hit: "M540 S<state>". (Requires SD_ABORT_ON_ENDSTOP_HIT)
220
  * M540 - Enable/disable SD card abort on endstop hit: "M540 S<state>". (Requires SD_ABORT_ON_ENDSTOP_HIT)
221
- * M569 - Enable stealthChop on an axis. (Requires at least one _DRIVER_TYPE to be TMC2130 or TMC2208)
221
+ * M569 - Enable stealthChop on an axis. (Requires at least one _DRIVER_TYPE to be TMC2130/2160/2208/2209/5130/5160)
222
  * M600 - Pause for filament change: "M600 X<pos> Y<pos> Z<raise> E<first_retract> L<later_retract>". (Requires ADVANCED_PAUSE_FEATURE)
222
  * M600 - Pause for filament change: "M600 X<pos> Y<pos> Z<raise> E<first_retract> L<later_retract>". (Requires ADVANCED_PAUSE_FEATURE)
223
  * M603 - Configure filament change: "M603 T<tool> U<unload_length> L<load_length>". (Requires ADVANCED_PAUSE_FEATURE)
223
  * M603 - Configure filament change: "M603 T<tool> U<unload_length> L<load_length>". (Requires ADVANCED_PAUSE_FEATURE)
224
  * M605 - Set Dual X-Carriage movement mode: "M605 S<mode> [X<x_offset>] [R<temp_offset>]". (Requires DUAL_X_CARRIAGE)
224
  * M605 - Set Dual X-Carriage movement mode: "M605 S<mode> [X<x_offset>] [R<temp_offset>]". (Requires DUAL_X_CARRIAGE)
241
  * M869 - Report position encoder module error.
241
  * M869 - Report position encoder module error.
242
  * M876 - Handle Prompt Response. (Requires HOST_PROMPT_SUPPORT and not EMERGENCY_PARSER)
242
  * M876 - Handle Prompt Response. (Requires HOST_PROMPT_SUPPORT and not EMERGENCY_PARSER)
243
  * M900 - Get or Set Linear Advance K-factor. (Requires LIN_ADVANCE)
243
  * M900 - Get or Set Linear Advance K-factor. (Requires LIN_ADVANCE)
244
- * M906 - Set or get motor current in milliamps using axis codes X, Y, Z, E. Report values if no axis codes given. (Requires at least one _DRIVER_TYPE defined as TMC2130/TMC2208/TMC2660 or L6470)
244
+ * M906 - Set or get motor current in milliamps using axis codes X, Y, Z, E. Report values if no axis codes given. (Requires at least one _DRIVER_TYPE defined as TMC2130/2160/5130/5160/2208/2209/2660 or L6470)
245
  * M907 - Set digital trimpot motor current using axis codes. (Requires a board with digital trimpots)
245
  * M907 - Set digital trimpot motor current using axis codes. (Requires a board with digital trimpots)
246
  * M908 - Control digital trimpot directly. (Requires DAC_STEPPER_CURRENT or DIGIPOTSS_PIN)
246
  * M908 - Control digital trimpot directly. (Requires DAC_STEPPER_CURRENT or DIGIPOTSS_PIN)
247
  * M909 - Print digipot/DAC current value. (Requires DAC_STEPPER_CURRENT)
247
  * M909 - Print digipot/DAC current value. (Requires DAC_STEPPER_CURRENT)
248
  * M910 - Commit digipot/DAC value to external EEPROM via I2C. (Requires DAC_STEPPER_CURRENT)
248
  * M910 - Commit digipot/DAC value to external EEPROM via I2C. (Requires DAC_STEPPER_CURRENT)
249
- * M911 - Report stepper driver overtemperature pre-warn condition. (Requires at least one _DRIVER_TYPE defined as TMC2130/TMC2208/TMC2660)
250
- * M912 - Clear stepper driver overtemperature pre-warn condition flag. (Requires at least one _DRIVER_TYPE defined as TMC2130/TMC2208/TMC2660)
249
+ * M911 - Report stepper driver overtemperature pre-warn condition. (Requires at least one _DRIVER_TYPE defined as TMC2130/2160/5130/5160/2208/2209/2660)
250
+ * M912 - Clear stepper driver overtemperature pre-warn condition flag. (Requires at least one _DRIVER_TYPE defined as TMC2130/2160/5130/5160/2208/2209/2660)
251
  * M913 - Set HYBRID_THRESHOLD speed. (Requires HYBRID_THRESHOLD)
251
  * M913 - Set HYBRID_THRESHOLD speed. (Requires HYBRID_THRESHOLD)
252
  * M914 - Set StallGuard sensitivity. (Requires SENSORLESS_HOMING or SENSORLESS_PROBING)
252
  * M914 - Set StallGuard sensitivity. (Requires SENSORLESS_HOMING or SENSORLESS_PROBING)
253
  * M916 - L6470 tuning: Increase KVAL_HOLD until thermal warning. (Requires at least one _DRIVER_TYPE L6470)
253
  * M916 - L6470 tuning: Increase KVAL_HOLD until thermal warning. (Requires at least one _DRIVER_TYPE L6470)

+ 3
- 3
Marlin/src/inc/Conditionals_post.h Voir le fichier

493
  *       Preserve this ordering when adding new drivers.
493
  *       Preserve this ordering when adding new drivers.
494
  */
494
  */
495
 
495
 
496
-#define TRINAMICS (HAS_TRINAMIC || HAS_DRIVER(TMC2130_STANDALONE) || HAS_DRIVER(TMC2208_STANDALONE) || HAS_DRIVER(TMC26X_STANDALONE) || HAS_DRIVER(TMC2660_STANDALONE) || HAS_DRIVER(TMC5130_STANDALONE) || HAS_DRIVER(TMC5160_STANDALONE) || HAS_DRIVER(TMC2160_STANDALONE))
496
+#define TRINAMICS (HAS_TRINAMIC || HAS_DRIVER(TMC2130_STANDALONE) || HAS_DRIVER(TMC2208_STANDALONE) || HAS_DRIVER(TMC2209_STANDALONE) || HAS_DRIVER(TMC26X_STANDALONE) || HAS_DRIVER(TMC2660_STANDALONE) || HAS_DRIVER(TMC5130_STANDALONE) || HAS_DRIVER(TMC5160_STANDALONE) || HAS_DRIVER(TMC2160_STANDALONE))
497
 
497
 
498
 #ifndef MINIMUM_STEPPER_DIR_DELAY
498
 #ifndef MINIMUM_STEPPER_DIR_DELAY
499
   #if HAS_DRIVER(TB6560)
499
   #if HAS_DRIVER(TB6560)
905
 #if HAS_TRINAMIC
905
 #if HAS_TRINAMIC
906
   #define HAS_TMCX1X0       (HAS_DRIVER(TMC2130) || HAS_DRIVER(TMC2160) || HAS_DRIVER(TMC5130) || HAS_DRIVER(TMC5160))
906
   #define HAS_TMCX1X0       (HAS_DRIVER(TMC2130) || HAS_DRIVER(TMC2160) || HAS_DRIVER(TMC5130) || HAS_DRIVER(TMC5160))
907
   #define TMC_HAS_SPI       (HAS_TMCX1X0 || HAS_DRIVER(TMC2660))
907
   #define TMC_HAS_SPI       (HAS_TMCX1X0 || HAS_DRIVER(TMC2660))
908
-  #define HAS_STALLGUARD    (HAS_TMCX1X0 || HAS_DRIVER(TMC2660))
909
-  #define HAS_STEALTHCHOP   (HAS_TMCX1X0 || HAS_DRIVER(TMC2208))
908
+  #define HAS_STALLGUARD    (HAS_TMCX1X0 || HAS_DRIVER(TMC2209) || HAS_DRIVER(TMC2660))
909
+  #define HAS_STEALTHCHOP   (HAS_TMCX1X0 || HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209))
910
 
910
 
911
   #define STEALTHCHOP_ENABLED ANY(STEALTHCHOP_XY, STEALTHCHOP_Z, STEALTHCHOP_E)
911
   #define STEALTHCHOP_ENABLED ANY(STEALTHCHOP_XY, STEALTHCHOP_Z, STEALTHCHOP_E)
912
   #define USE_SENSORLESS EITHER(SENSORLESS_HOMING, SENSORLESS_PROBING)
912
   #define USE_SENSORLESS EITHER(SENSORLESS_HOMING, SENSORLESS_PROBING)

+ 124
- 78
Marlin/src/inc/SanityCheck.h Voir le fichier

275
   #error "HAVE_TMC26X is now [AXIS]_DRIVER_TYPE TMC26X. Please update your Configuration.h."
275
   #error "HAVE_TMC26X is now [AXIS]_DRIVER_TYPE TMC26X. Please update your Configuration.h."
276
 #elif defined(HAVE_TMC2130)
276
 #elif defined(HAVE_TMC2130)
277
   #error "HAVE_TMC2130 is now [AXIS]_DRIVER_TYPE TMC2130. Please update your Configuration.h."
277
   #error "HAVE_TMC2130 is now [AXIS]_DRIVER_TYPE TMC2130. Please update your Configuration.h."
278
+#elif defined(HAVE_TMC2208)
279
+  #error "HAVE_TMC2208 is now [AXIS]_DRIVER_TYPE TMC2208. Please update your Configuration.h."
278
 #elif defined(HAVE_L6470DRIVER)
280
 #elif defined(HAVE_L6470DRIVER)
279
   #error "HAVE_L6470DRIVER is now [AXIS]_DRIVER_TYPE L6470. Please update your Configuration.h."
281
   #error "HAVE_L6470DRIVER is now [AXIS]_DRIVER_TYPE L6470. Please update your Configuration.h."
280
 #elif defined(X_IS_TMC) || defined(X2_IS_TMC) || defined(Y_IS_TMC) || defined(Y2_IS_TMC) || defined(Z_IS_TMC) || defined(Z2_IS_TMC) || defined(Z3_IS_TMC) \
282
 #elif defined(X_IS_TMC) || defined(X2_IS_TMC) || defined(Y_IS_TMC) || defined(Y2_IS_TMC) || defined(Z_IS_TMC) || defined(Z2_IS_TMC) || defined(Z3_IS_TMC) \
1070
    * Require pin options and pins to be defined
1072
    * Require pin options and pins to be defined
1071
    */
1073
    */
1072
   #if ENABLED(SENSORLESS_PROBING)
1074
   #if ENABLED(SENSORLESS_PROBING)
1073
-    #if ENABLED(DELTA) && (!AXIS_DRIVER_TYPE_X(TMC2130) || !AXIS_DRIVER_TYPE_Y(TMC2130) || !AXIS_DRIVER_TYPE_Z(TMC2130))
1074
-      #error "SENSORLESS_PROBING requires TMC2130 drivers on X, Y, and Z."
1075
-    #elif !AXIS_DRIVER_TYPE_Z(TMC2130)
1076
-      #error "SENSORLESS_PROBING requires a TMC2130 driver on Z."
1075
+    #if ENABLED(DELTA) && !(AXIS_HAS_STALLGUARD(X) && AXIS_HAS_STALLGUARD(Y) && AXIS_HAS_STALLGUARD(Z))
1076
+      #error "SENSORLESS_PROBING requires TMC2130/2160/2209/5130/5160 drivers on X, Y, and Z."
1077
+    #elif !AXIS_HAS_STALLGUARD(Z)
1078
+      #error "SENSORLESS_PROBING requires a TMC2130/2160/2209/5130/5160 driver on Z."
1077
     #endif
1079
     #endif
1078
   #elif ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN)
1080
   #elif ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN)
1079
     #if DISABLED(USE_ZMIN_PLUG)
1081
     #if DISABLED(USE_ZMIN_PLUG)
1876
 /**
1878
 /**
1877
  * Check existing CS pins against enabled TMC SPI drivers.
1879
  * Check existing CS pins against enabled TMC SPI drivers.
1878
  */
1880
  */
1879
-#define INVALID_TMC2130(ST) (AXIS_DRIVER_TYPE(ST, TMC2130) && !PIN_EXISTS(ST##_CS))
1880
-#if INVALID_TMC2130(X)
1881
-  #error "TMC2130 on X requires X_CS_PIN."
1882
-#elif INVALID_TMC2130(X2)
1883
-  #error "TMC2130 on X2 requires X2_CS_PIN."
1884
-#elif INVALID_TMC2130(Y)
1885
-  #error "TMC2130 on Y requires Y_CS_PIN."
1886
-#elif INVALID_TMC2130(Y2)
1887
-  #error "TMC2130 on Y2 requires Y2_CS_PIN."
1888
-#elif INVALID_TMC2130(Z)
1889
-  #error "TMC2130 on Z requires Z_CS_PIN."
1890
-#elif INVALID_TMC2130(Z2)
1891
-  #error "TMC2130 on Z2 requires Z2_CS_PIN."
1892
-#elif INVALID_TMC2130(Z3)
1893
-  #error "TMC2130 on Z3 requires Z3_CS_PIN."
1894
-#elif INVALID_TMC2130(E0)
1895
-  #error "TMC2130 on E0 requires E0_CS_PIN."
1896
-#elif INVALID_TMC2130(E1)
1897
-  #error "TMC2130 on E1 requires E1_CS_PIN."
1898
-#elif INVALID_TMC2130(E2)
1899
-  #error "TMC2130 on E2 requires E2_CS_PIN."
1900
-#elif INVALID_TMC2130(E3)
1901
-  #error "TMC2130 on E3 requires E3_CS_PIN."
1902
-#elif INVALID_TMC2130(E4)
1903
-  #error "TMC2130 on E4 requires E4_CS_PIN."
1904
-#elif INVALID_TMC2130(E5)
1905
-  #error "TMC2130 on E5 requires E5_CS_PIN."
1906
-#endif
1907
-#undef INVALID_TMC2130
1881
+#define INVALID_TMC_SPI(ST) (AXIS_HAS_SPI && !PIN_EXISTS(ST##_CS))
1882
+#if INVALID_TMC_SPI(X)
1883
+  #error "An SPI driven TMC driver on X requires X_CS_PIN."
1884
+#elif INVALID_TMC_SPI(X2)
1885
+  #error "An SPI driven TMC driver on X2 requires X2_CS_PIN."
1886
+#elif INVALID_TMC_SPI(Y)
1887
+  #error "An SPI driven TMC driver on Y requires Y_CS_PIN."
1888
+#elif INVALID_TMC_SPI(Y2)
1889
+  #error "An SPI driven TMC driver on Y2 requires Y2_CS_PIN."
1890
+#elif INVALID_TMC_SPI(Z)
1891
+  #error "An SPI driven TMC driver on Z requires Z_CS_PIN."
1892
+#elif INVALID_TMC_SPI(Z2)
1893
+  #error "An SPI driven TMC driver on Z2 requires Z2_CS_PIN."
1894
+#elif INVALID_TMC_SPI(Z3)
1895
+  #error "An SPI driven TMC driver on Z3 requires Z3_CS_PIN."
1896
+#elif INVALID_TMC_SPI(E0)
1897
+  #error "An SPI driven TMC driver on E0 requires E0_CS_PIN."
1898
+#elif INVALID_TMC_SPI(E1)
1899
+  #error "An SPI driven TMC driver on E1 requires E1_CS_PIN."
1900
+#elif INVALID_TMC_SPI(E2)
1901
+  #error "An SPI driven TMC driver on E2 requires E2_CS_PIN."
1902
+#elif INVALID_TMC_SPI(E3)
1903
+  #error "An SPI driven TMC driver on E3 requires E3_CS_PIN."
1904
+#elif INVALID_TMC_SPI(E4)
1905
+  #error "An SPI driven TMC driver on E4 requires E4_CS_PIN."
1906
+#elif INVALID_TMC_SPI(E5)
1907
+  #error "An SPI driven TMC driver on E5 requires E5_CS_PIN."
1908
+#endif
1909
+#undef INVALID_TMC_SPI
1908
 
1910
 
1909
 /**
1911
 /**
1910
  * Check existing RX/TX pins against enable TMC UART drivers.
1912
  * Check existing RX/TX pins against enable TMC UART drivers.
1911
  */
1913
  */
1912
-#define INVALID_TMC2208(ST) (AXIS_DRIVER_TYPE(ST, TMC2208) && !(defined(ST##_HARDWARE_SERIAL) || (PIN_EXISTS(ST##_SERIAL_RX, ST##_SERIAL_TX))))
1913
-#if INVALID_TMC2208(X)
1914
-  #error "TMC2208 on X requires X_HARDWARE_SERIAL or X_SERIAL_(RX|TX)_PIN."
1915
-#elif INVALID_TMC2208(X2)
1916
-  #error "TMC2208 on X2 requires X2_HARDWARE_SERIAL or X2_SERIAL_(RX|TX)_PIN."
1917
-#elif INVALID_TMC2208(Y)
1918
-  #error "TMC2208 on Y requires Y_HARDWARE_SERIAL or Y_SERIAL_(RX|TX)_PIN."
1919
-#elif INVALID_TMC2208(Y2)
1920
-  #error "TMC2208 on Y2 requires Y2_HARDWARE_SERIAL or Y2_SERIAL_(RX|TX)_PIN."
1921
-#elif INVALID_TMC2208(Z)
1922
-  #error "TMC2208 on Z requires Z_HARDWARE_SERIAL or Z_SERIAL_(RX|TX)_PIN."
1923
-#elif INVALID_TMC2208(Z2)
1924
-  #error "TMC2208 on Z2 requires Z2_HARDWARE_SERIAL or Z2_SERIAL_(RX|TX)_PIN."
1925
-#elif INVALID_TMC2208(Z3)
1926
-  #error "TMC2208 on Z3 requires Z3_HARDWARE_SERIAL or Z3_SERIAL_(RX|TX)_PIN."
1927
-#elif INVALID_TMC2208(E0)
1928
-  #error "TMC2208 on E0 requires E0_HARDWARE_SERIAL or E0_SERIAL_(RX|TX)_PIN."
1929
-#elif INVALID_TMC2208(E1)
1930
-  #error "TMC2208 on E1 requires E1_HARDWARE_SERIAL or E1_SERIAL_(RX|TX)_PIN."
1931
-#elif INVALID_TMC2208(E2)
1932
-  #error "TMC2208 on E2 requires E2_HARDWARE_SERIAL or E2_SERIAL_(RX|TX)_PIN."
1933
-#elif INVALID_TMC2208(E3)
1934
-  #error "TMC2208 on E3 requires E3_HARDWARE_SERIAL or E3_SERIAL_(RX|TX)_PIN."
1935
-#elif INVALID_TMC2208(E4)
1936
-  #error "TMC2208 on E4 requires E4_HARDWARE_SERIAL or E4_SERIAL_(RX|TX)_PIN."
1937
-#elif INVALID_TMC2208(E5)
1938
-  #error "TMC2208 on E5 requires E5_HARDWARE_SERIAL or E5_SERIAL_(RX|TX)_PIN."
1939
-#endif
1940
-#undef INVALID_TMC2208
1941
-
1942
-/**
1943
- * TMC2208 software UART and ENDSTOP_INTERRUPTS both use pin change interrupts (PCI)
1944
- */
1945
-#if HAS_DRIVER(TMC2208) && ENABLED(ENDSTOP_INTERRUPTS_FEATURE) && !( \
1914
+#define INVALID_TMC_UART(ST) (AXIS_HAS_UART(ST) && !(defined(ST##_HARDWARE_SERIAL) || (PIN_EXISTS(ST##_SERIAL_RX, ST##_SERIAL_TX))))
1915
+#if INVALID_TMC_UART(X)
1916
+  #error "TMC2208 or TMC2209 on X requires X_HARDWARE_SERIAL or X_SERIAL_(RX|TX)_PIN."
1917
+#elif INVALID_TMC_UART(X2)
1918
+  #error "TMC2208 or TMC2209 on X2 requires X2_HARDWARE_SERIAL or X2_SERIAL_(RX|TX)_PIN."
1919
+#elif INVALID_TMC_UART(Y)
1920
+  #error "TMC2208 or TMC2209 on Y requires Y_HARDWARE_SERIAL or Y_SERIAL_(RX|TX)_PIN."
1921
+#elif INVALID_TMC_UART(Y2)
1922
+  #error "TMC2208 or TMC2209 on Y2 requires Y2_HARDWARE_SERIAL or Y2_SERIAL_(RX|TX)_PIN."
1923
+#elif INVALID_TMC_UART(Z)
1924
+  #error "TMC2208 or TMC2209 on Z requires Z_HARDWARE_SERIAL or Z_SERIAL_(RX|TX)_PIN."
1925
+#elif INVALID_TMC_UART(Z2)
1926
+  #error "TMC2208 or TMC2209 on Z2 requires Z2_HARDWARE_SERIAL or Z2_SERIAL_(RX|TX)_PIN."
1927
+#elif INVALID_TMC_UART(Z3)
1928
+  #error "TMC2208 or TMC2209 on Z3 requires Z3_HARDWARE_SERIAL or Z3_SERIAL_(RX|TX)_PIN."
1929
+#elif INVALID_TMC_UART(E0)
1930
+  #error "TMC2208 or TMC2209 on E0 requires E0_HARDWARE_SERIAL or E0_SERIAL_(RX|TX)_PIN."
1931
+#elif INVALID_TMC_UART(E1)
1932
+  #error "TMC2208 or TMC2209 on E1 requires E1_HARDWARE_SERIAL or E1_SERIAL_(RX|TX)_PIN."
1933
+#elif INVALID_TMC_UART(E2)
1934
+  #error "TMC2208 or TMC2209 on E2 requires E2_HARDWARE_SERIAL or E2_SERIAL_(RX|TX)_PIN."
1935
+#elif INVALID_TMC_UART(E3)
1936
+  #error "TMC2208 or TMC2209 on E3 requires E3_HARDWARE_SERIAL or E3_SERIAL_(RX|TX)_PIN."
1937
+#elif INVALID_TMC_UART(E4)
1938
+  #error "TMC2208 or TMC2209 on E4 requires E4_HARDWARE_SERIAL or E4_SERIAL_(RX|TX)_PIN."
1939
+#elif INVALID_TMC_UART(E5)
1940
+  #error "TMC2208 or TMC2209 on E5 requires E5_HARDWARE_SERIAL or E5_SERIAL_(RX|TX)_PIN."
1941
+#endif
1942
+#undef INVALID_TMC_UART
1943
+
1944
+/**
1945
+ * TMC2209 slave address values
1946
+ */
1947
+#define INVALID_TMC_ADDRESS(ST) static_assert(0 <= ST##_SLAVE_ADDRESS && ST##_SLAVE_ADDRESS <= 3, "TMC2209 slave address must be 0, 1, 2 or 3")
1948
+#if AXIS_DRIVER_TYPE_X(TMC2209)
1949
+  INVALID_TMC_ADDRESS(X);
1950
+#elif AXIS_DRIVER_TYPE_X2(TMC2209)
1951
+  INVALID_TMC_ADDRESS(X2);
1952
+#elif AXIS_DRIVER_TYPE_Y(TMC2209)
1953
+  INVALID_TMC_ADDRESS(Y);
1954
+#elif AXIS_DRIVER_TYPE_Y2(TMC2209)
1955
+  INVALID_TMC_ADDRESS(Y2);
1956
+#elif AXIS_DRIVER_TYPE_Z(TMC2209)
1957
+  INVALID_TMC_ADDRESS(Z);
1958
+#elif AXIS_DRIVER_TYPE_Z2(TMC2209)
1959
+  INVALID_TMC_ADDRESS(Z2);
1960
+#elif AXIS_DRIVER_TYPE_Z3(TMC2209)
1961
+  INVALID_TMC_ADDRESS(Z3);
1962
+#elif AXIS_DRIVER_TYPE_E0(TMC2209)
1963
+  INVALID_TMC_ADDRESS(E0);
1964
+#elif AXIS_DRIVER_TYPE_E1(TMC2209)
1965
+  INVALID_TMC_ADDRESS(E1);
1966
+#elif AXIS_DRIVER_TYPE_E2(TMC2209)
1967
+  INVALID_TMC_ADDRESS(E2);
1968
+#elif AXIS_DRIVER_TYPE_E3(TMC2209)
1969
+  INVALID_TMC_ADDRESS(E3);
1970
+#elif AXIS_DRIVER_TYPE_E4(TMC2209)
1971
+  INVALID_TMC_ADDRESS(E4);
1972
+#elif AXIS_DRIVER_TYPE_E5(TMC2209)
1973
+  INVALID_TMC_ADDRESS(E5);
1974
+#endif
1975
+#undef INVALID_TMC_ADDRESS
1976
+
1977
+/**
1978
+ * TMC2208/2209 software UART and ENDSTOP_INTERRUPTS both use pin change interrupts (PCI)
1979
+ */
1980
+#if (HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)) && ENABLED(ENDSTOP_INTERRUPTS_FEATURE) && !( \
1946
        defined(X_HARDWARE_SERIAL ) \
1981
        defined(X_HARDWARE_SERIAL ) \
1947
     || defined(X2_HARDWARE_SERIAL) \
1982
     || defined(X2_HARDWARE_SERIAL) \
1948
     || defined(Y_HARDWARE_SERIAL ) \
1983
     || defined(Y_HARDWARE_SERIAL ) \
1960
 #endif
1995
 #endif
1961
 
1996
 
1962
 /**
1997
 /**
1963
- * TMC2208 software UART is only supported on AVR
1998
+ * TMC2208/2209 software UART is only supported on AVR and LPC
1964
  */
1999
  */
1965
-#if HAS_DRIVER(TMC2208) && !defined(__AVR__) && !defined(TARGET_LPC1768) && !( \
2000
+#if (HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)) && !defined(__AVR__) && !defined(TARGET_LPC1768) && !( \
1966
        defined(X_HARDWARE_SERIAL ) \
2001
        defined(X_HARDWARE_SERIAL ) \
1967
     || defined(X2_HARDWARE_SERIAL) \
2002
     || defined(X2_HARDWARE_SERIAL) \
1968
     || defined(Y_HARDWARE_SERIAL ) \
2003
     || defined(Y_HARDWARE_SERIAL ) \
1983
   // is necessary in order to reset the stallGuard indication between the initial movement of all three
2018
   // is necessary in order to reset the stallGuard indication between the initial movement of all three
1984
   // towers to +Z and the individual homing of each tower. This restriction can be removed once a means of
2019
   // towers to +Z and the individual homing of each tower. This restriction can be removed once a means of
1985
   // clearing the stallGuard activated status is found.
2020
   // clearing the stallGuard activated status is found.
2021
+
2022
+  // Stall detection DIAG = HIGH : TMC2209
2023
+  // Stall detection DIAG = LOW  : TMC2130/TMC2160/TMC2660/TMC5130/TMC5160
2024
+  #define X_ENDSTOP_INVERTING !AXIS_DRIVER_TYPE(X,TMC2209)
2025
+  #define Y_ENDSTOP_INVERTING !AXIS_DRIVER_TYPE(Y,TMC2209)
2026
+  #define Z_ENDSTOP_INVERTING !AXIS_DRIVER_TYPE(Z,TMC2209)
2027
+
1986
   #if ENABLED(DELTA) && !BOTH(STEALTHCHOP_XY, STEALTHCHOP_Z)
2028
   #if ENABLED(DELTA) && !BOTH(STEALTHCHOP_XY, STEALTHCHOP_Z)
1987
     #error "SENSORLESS_HOMING on DELTA currently requires STEALTHCHOP_XY and STEALTHCHOP_Z."
2029
     #error "SENSORLESS_HOMING on DELTA currently requires STEALTHCHOP_XY and STEALTHCHOP_Z."
1988
-  #elif X_SENSORLESS && X_HOME_DIR == -1 && (!X_MIN_ENDSTOP_INVERTING || DISABLED(ENDSTOPPULLUP_XMIN))
2030
+  #elif X_SENSORLESS && X_HOME_DIR == -1 && (X_MIN_ENDSTOP_INVERTING != X_ENDSTOP_INVERTING || DISABLED(ENDSTOPPULLUP_XMIN))
1989
     #error "SENSORLESS_HOMING requires X_MIN_ENDSTOP_INVERTING and ENDSTOPPULLUP_XMIN when homing to X_MIN."
2031
     #error "SENSORLESS_HOMING requires X_MIN_ENDSTOP_INVERTING and ENDSTOPPULLUP_XMIN when homing to X_MIN."
1990
-  #elif X_SENSORLESS && X_HOME_DIR ==  1 && (!X_MAX_ENDSTOP_INVERTING || DISABLED(ENDSTOPPULLUP_XMAX))
2032
+  #elif X_SENSORLESS && X_HOME_DIR ==  1 && (X_MAX_ENDSTOP_INVERTING != X_ENDSTOP_INVERTING || DISABLED(ENDSTOPPULLUP_XMAX))
1991
     #error "SENSORLESS_HOMING requires X_MAX_ENDSTOP_INVERTING and ENDSTOPPULLUP_XMAX when homing to X_MAX."
2033
     #error "SENSORLESS_HOMING requires X_MAX_ENDSTOP_INVERTING and ENDSTOPPULLUP_XMAX when homing to X_MAX."
1992
-  #elif Y_SENSORLESS && Y_HOME_DIR == -1 && (!Y_MIN_ENDSTOP_INVERTING || DISABLED(ENDSTOPPULLUP_YMIN))
2034
+  #elif Y_SENSORLESS && Y_HOME_DIR == -1 && (Y_MIN_ENDSTOP_INVERTING != Y_ENDSTOP_INVERTING || DISABLED(ENDSTOPPULLUP_YMIN))
1993
     #error "SENSORLESS_HOMING requires Y_MIN_ENDSTOP_INVERTING and ENDSTOPPULLUP_YMIN when homing to Y_MIN."
2035
     #error "SENSORLESS_HOMING requires Y_MIN_ENDSTOP_INVERTING and ENDSTOPPULLUP_YMIN when homing to Y_MIN."
1994
-  #elif Y_SENSORLESS && Y_HOME_DIR ==  1 && (!Y_MAX_ENDSTOP_INVERTING || DISABLED(ENDSTOPPULLUP_YMAX))
2036
+  #elif Y_SENSORLESS && Y_HOME_DIR ==  1 && (Y_MAX_ENDSTOP_INVERTING != Y_ENDSTOP_INVERTING || DISABLED(ENDSTOPPULLUP_YMAX))
1995
     #error "SENSORLESS_HOMING requires Y_MAX_ENDSTOP_INVERTING and ENDSTOPPULLUP_YMAX when homing to Y_MAX."
2037
     #error "SENSORLESS_HOMING requires Y_MAX_ENDSTOP_INVERTING and ENDSTOPPULLUP_YMAX when homing to Y_MAX."
1996
-  #elif Z_SENSORLESS && Z_HOME_DIR == -1 && (!Z_MIN_ENDSTOP_INVERTING || DISABLED(ENDSTOPPULLUP_ZMIN))
2038
+  #elif Z_SENSORLESS && Z_HOME_DIR == -1 && (Z_MIN_ENDSTOP_INVERTING != Z_ENDSTOP_INVERTING || DISABLED(ENDSTOPPULLUP_ZMIN))
1997
     #error "SENSORLESS_HOMING requires Z_MIN_ENDSTOP_INVERTING and ENDSTOPPULLUP_ZMIN when homing to Z_MIN."
2039
     #error "SENSORLESS_HOMING requires Z_MIN_ENDSTOP_INVERTING and ENDSTOPPULLUP_ZMIN when homing to Z_MIN."
1998
-  #elif Z_SENSORLESS && Z_HOME_DIR ==  1 && (!Z_MAX_ENDSTOP_INVERTING || DISABLED(ENDSTOPPULLUP_ZMAX))
2040
+  #elif Z_SENSORLESS && Z_HOME_DIR ==  1 && (Z_MAX_ENDSTOP_INVERTING != Z_ENDSTOP_INVERTING || DISABLED(ENDSTOPPULLUP_ZMAX))
1999
     #error "SENSORLESS_HOMING requires Z_MAX_ENDSTOP_INVERTING and ENDSTOPPULLUP_ZMAX when homing to Z_MAX."
2041
     #error "SENSORLESS_HOMING requires Z_MAX_ENDSTOP_INVERTING and ENDSTOPPULLUP_ZMAX when homing to Z_MAX."
2000
   #elif ENDSTOP_NOISE_THRESHOLD
2042
   #elif ENDSTOP_NOISE_THRESHOLD
2001
     #error "SENSORLESS_HOMING is incompatible with ENDSTOP_NOISE_THRESHOLD."
2043
     #error "SENSORLESS_HOMING is incompatible with ENDSTOP_NOISE_THRESHOLD."
2002
   #elif !(X_SENSORLESS || Y_SENSORLESS || Z_SENSORLESS)
2044
   #elif !(X_SENSORLESS || Y_SENSORLESS || Z_SENSORLESS)
2003
     #error "SENSORLESS_HOMING requires a TMC stepper driver with StallGuard on X, Y, or Z axes."
2045
     #error "SENSORLESS_HOMING requires a TMC stepper driver with StallGuard on X, Y, or Z axes."
2004
   #endif
2046
   #endif
2047
+
2048
+  #undef X_ENDSTOP_INVERTING
2049
+  #undef Y_ENDSTOP_INVERTING
2050
+  #undef Z_ENDSTOP_INVERTING
2005
 #endif
2051
 #endif
2006
 
2052
 
2007
 // Sensorless probing requirements
2053
 // Sensorless probing requirements
2026
 #if ENABLED(HYBRID_THRESHOLD) && !STEALTHCHOP_ENABLED
2072
 #if ENABLED(HYBRID_THRESHOLD) && !STEALTHCHOP_ENABLED
2027
   #error "Enable STEALTHCHOP_(XY|Z|E) to use HYBRID_THRESHOLD."
2073
   #error "Enable STEALTHCHOP_(XY|Z|E) to use HYBRID_THRESHOLD."
2028
 #elif ENABLED(SENSORLESS_HOMING) && !HAS_STALLGUARD
2074
 #elif ENABLED(SENSORLESS_HOMING) && !HAS_STALLGUARD
2029
-  #error "SENSORLESS_HOMING requires TMC2130 or TMC2160 or TMC5160 stepper drivers."
2075
+  #error "SENSORLESS_HOMING requires TMC2130, TMC2160, TMC2209, TMC2660, or TMC5160 stepper drivers."
2030
 #elif ENABLED(SENSORLESS_PROBING) && !HAS_STALLGUARD
2076
 #elif ENABLED(SENSORLESS_PROBING) && !HAS_STALLGUARD
2031
-  #error "SENSORLESS_PROBING requires TMC2130 stepper drivers."
2077
+  #error "SENSORLESS_PROBING requires TMC2130, TMC2160, TMC2209, TMC2660, or TMC5160 stepper drivers."
2032
 #elif STEALTHCHOP_ENABLED && !HAS_STEALTHCHOP
2078
 #elif STEALTHCHOP_ENABLED && !HAS_STEALTHCHOP
2033
-  #error "STEALTHCHOP requires TMC2130 or TMC2160 or TMC2208 or TMC5160 stepper drivers."
2079
+  #error "STEALTHCHOP requires TMC2130, TMC2160, TMC2208, TMC2209, or TMC5160 stepper drivers."
2034
 #endif
2080
 #endif
2035
 
2081
 
2036
 #if ENABLED(DELTA) && (ENABLED(STEALTHCHOP_XY) != ENABLED(STEALTHCHOP_Z))
2082
 #if ENABLED(DELTA) && (ENABLED(STEALTHCHOP_XY) != ENABLED(STEALTHCHOP_Z))

+ 6
- 6
Marlin/src/lcd/extensible_ui/ui_api.cpp Voir le fichier

473
     int getTMCBumpSensitivity(const axis_t axis) {
473
     int getTMCBumpSensitivity(const axis_t axis) {
474
       switch (axis) {
474
       switch (axis) {
475
         #if X_SENSORLESS && AXIS_HAS_STALLGUARD(X)
475
         #if X_SENSORLESS && AXIS_HAS_STALLGUARD(X)
476
-          case X: return stepperX.sgt();
476
+          case X: return stepperX.homing_threshold();
477
         #endif
477
         #endif
478
         #if Y_SENSORLESS && AXIS_HAS_STALLGUARD(Y)
478
         #if Y_SENSORLESS && AXIS_HAS_STALLGUARD(Y)
479
-          case Y: return stepperY.sgt();
479
+          case Y: return stepperY.homing_threshold();
480
         #endif
480
         #endif
481
         #if Z_SENSORLESS && AXIS_HAS_STALLGUARD(Z)
481
         #if Z_SENSORLESS && AXIS_HAS_STALLGUARD(Z)
482
-          case Z: return stepperZ.sgt();
482
+          case Z: return stepperZ.homing_threshold();
483
         #endif
483
         #endif
484
         default: return 0;
484
         default: return 0;
485
       }
485
       }
488
     void setTMCBumpSensitivity(const float value, const axis_t axis) {
488
     void setTMCBumpSensitivity(const float value, const axis_t axis) {
489
       switch (axis) {
489
       switch (axis) {
490
         #if X_SENSORLESS && AXIS_HAS_STALLGUARD(X)
490
         #if X_SENSORLESS && AXIS_HAS_STALLGUARD(X)
491
-          case X: stepperX.sgt(clamp(value, -64, 63)); break;
491
+          case X: stepperX.homing_threshold(value); break;
492
         #endif
492
         #endif
493
         #if Y_SENSORLESS && AXIS_HAS_STALLGUARD(Y)
493
         #if Y_SENSORLESS && AXIS_HAS_STALLGUARD(Y)
494
-          case Y: stepperY.sgt(clamp(value, -64, 63)); break;
494
+          case Y: stepperY.homing_threshold(value); break;
495
         #endif
495
         #endif
496
         #if Z_SENSORLESS && AXIS_HAS_STALLGUARD(Z)
496
         #if Z_SENSORLESS && AXIS_HAS_STALLGUARD(Z)
497
-          case Z: stepperZ.sgt(clamp(value, -64, 63)); break;
497
+          case Z: stepperZ.homing_threshold(value); break;
498
         #endif
498
         #endif
499
         default: break;
499
         default: break;
500
       }
500
       }

+ 1
- 1
Marlin/src/lcd/menu/menu_tmc.cpp Voir le fichier

212
 
212
 
213
 #if ENABLED(SENSORLESS_HOMING)
213
 #if ENABLED(SENSORLESS_HOMING)
214
 
214
 
215
-  #define TMC_EDIT_STORED_SGT(ST) MENU_ITEM_EDIT_CALLBACK(int8, MSG_##ST, &stepper##ST.stored.homing_thrs, -64, 63, refresh_homing_thrs_##ST);
215
+  #define TMC_EDIT_STORED_SGT(ST) MENU_ITEM_EDIT_CALLBACK(int4, MSG_##ST, &stepper##ST.stored.homing_thrs, stepper##ST.sgt_min, stepper##ST.sgt_max, refresh_homing_thrs_##ST);
216
 
216
 
217
   #if X_SENSORLESS
217
   #if X_SENSORLESS
218
     void refresh_homing_thrs_X()  { stepperX.refresh_homing_thrs();  }
218
     void refresh_homing_thrs_X()  { stepperX.refresh_homing_thrs();  }

+ 17
- 17
Marlin/src/module/configuration_store.cpp Voir le fichier

1051
       tmc_sgt_t tmc_sgt = { 0, 0, 0 };
1051
       tmc_sgt_t tmc_sgt = { 0, 0, 0 };
1052
       #if USE_SENSORLESS
1052
       #if USE_SENSORLESS
1053
         #if X_SENSORLESS
1053
         #if X_SENSORLESS
1054
-          tmc_sgt.X = stepperX.sgt();
1054
+          tmc_sgt.X = stepperX.homing_threshold();
1055
         #endif
1055
         #endif
1056
         #if Y_SENSORLESS
1056
         #if Y_SENSORLESS
1057
-          tmc_sgt.Y = stepperY.sgt();
1057
+          tmc_sgt.Y = stepperY.homing_threshold();
1058
         #endif
1058
         #endif
1059
         #if Z_SENSORLESS
1059
         #if Z_SENSORLESS
1060
-          tmc_sgt.Z = stepperZ.sgt();
1060
+          tmc_sgt.Z = stepperZ.homing_threshold();
1061
         #endif
1061
         #endif
1062
       #endif
1062
       #endif
1063
       EEPROM_WRITE(tmc_sgt);
1063
       EEPROM_WRITE(tmc_sgt);
1834
           if (!validating) {
1834
           if (!validating) {
1835
             #ifdef X_STALL_SENSITIVITY
1835
             #ifdef X_STALL_SENSITIVITY
1836
               #if AXIS_HAS_STALLGUARD(X)
1836
               #if AXIS_HAS_STALLGUARD(X)
1837
-                stepperX.sgt(tmc_sgt.X);
1837
+                stepperX.homing_threshold(tmc_sgt.X);
1838
               #endif
1838
               #endif
1839
               #if AXIS_HAS_STALLGUARD(X2)
1839
               #if AXIS_HAS_STALLGUARD(X2)
1840
-                stepperX2.sgt(tmc_sgt.X);
1840
+                stepperX2.homing_threshold(tmc_sgt.X);
1841
               #endif
1841
               #endif
1842
             #endif
1842
             #endif
1843
             #ifdef Y_STALL_SENSITIVITY
1843
             #ifdef Y_STALL_SENSITIVITY
1844
               #if AXIS_HAS_STALLGUARD(Y)
1844
               #if AXIS_HAS_STALLGUARD(Y)
1845
-                stepperY.sgt(tmc_sgt.Y);
1845
+                stepperY.homing_threshold(tmc_sgt.Y);
1846
               #endif
1846
               #endif
1847
               #if AXIS_HAS_STALLGUARD(Y2)
1847
               #if AXIS_HAS_STALLGUARD(Y2)
1848
-                stepperY2.sgt(tmc_sgt.Y);
1848
+                stepperY2.homing_threshold(tmc_sgt.Y);
1849
               #endif
1849
               #endif
1850
             #endif
1850
             #endif
1851
             #ifdef Z_STALL_SENSITIVITY
1851
             #ifdef Z_STALL_SENSITIVITY
1852
               #if AXIS_HAS_STALLGUARD(Z)
1852
               #if AXIS_HAS_STALLGUARD(Z)
1853
-                stepperZ.sgt(tmc_sgt.Z);
1853
+                stepperZ.homing_threshold(tmc_sgt.Z);
1854
               #endif
1854
               #endif
1855
               #if AXIS_HAS_STALLGUARD(Z2)
1855
               #if AXIS_HAS_STALLGUARD(Z2)
1856
-                stepperZ2.sgt(tmc_sgt.Z);
1856
+                stepperZ2.homing_threshold(tmc_sgt.Z);
1857
               #endif
1857
               #endif
1858
               #if AXIS_HAS_STALLGUARD(Z3)
1858
               #if AXIS_HAS_STALLGUARD(Z3)
1859
-                stepperZ3.sgt(tmc_sgt.Z);
1859
+                stepperZ3.homing_threshold(tmc_sgt.Z);
1860
               #endif
1860
               #endif
1861
             #endif
1861
             #endif
1862
           }
1862
           }
3259
         #if X_SENSORLESS || Y_SENSORLESS || Z_SENSORLESS
3259
         #if X_SENSORLESS || Y_SENSORLESS || Z_SENSORLESS
3260
           say_M914();
3260
           say_M914();
3261
           #if X_SENSORLESS
3261
           #if X_SENSORLESS
3262
-            SERIAL_ECHOPAIR(" X", stepperX.sgt());
3262
+            SERIAL_ECHOPAIR(" X", stepperX.homing_threshold());
3263
           #endif
3263
           #endif
3264
           #if Y_SENSORLESS
3264
           #if Y_SENSORLESS
3265
-            SERIAL_ECHOPAIR(" Y", stepperY.sgt());
3265
+            SERIAL_ECHOPAIR(" Y", stepperY.homing_threshold());
3266
           #endif
3266
           #endif
3267
           #if Z_SENSORLESS
3267
           #if Z_SENSORLESS
3268
-            SERIAL_ECHOPAIR(" Z", stepperZ.sgt());
3268
+            SERIAL_ECHOPAIR(" Z", stepperZ.homing_threshold());
3269
           #endif
3269
           #endif
3270
           SERIAL_EOL();
3270
           SERIAL_EOL();
3271
         #endif
3271
         #endif
3278
           say_M914();
3278
           say_M914();
3279
           SERIAL_ECHOPGM(" I1");
3279
           SERIAL_ECHOPGM(" I1");
3280
           #if HAS_X2_SENSORLESS
3280
           #if HAS_X2_SENSORLESS
3281
-            SERIAL_ECHOPAIR(" X", stepperX2.sgt());
3281
+            SERIAL_ECHOPAIR(" X", stepperX2.homing_threshold());
3282
           #endif
3282
           #endif
3283
           #if HAS_Y2_SENSORLESS
3283
           #if HAS_Y2_SENSORLESS
3284
-            SERIAL_ECHOPAIR(" Y", stepperY2.sgt());
3284
+            SERIAL_ECHOPAIR(" Y", stepperY2.homing_threshold());
3285
           #endif
3285
           #endif
3286
           #if HAS_Z2_SENSORLESS
3286
           #if HAS_Z2_SENSORLESS
3287
-            SERIAL_ECHOPAIR(" Z", stepperZ2.sgt());
3287
+            SERIAL_ECHOPAIR(" Z", stepperZ2.homing_threshold());
3288
           #endif
3288
           #endif
3289
           SERIAL_EOL();
3289
           SERIAL_EOL();
3290
         #endif
3290
         #endif
3291
 
3291
 
3292
         #if HAS_Z3_SENSORLESS
3292
         #if HAS_Z3_SENSORLESS
3293
           say_M914();
3293
           say_M914();
3294
-          SERIAL_ECHOLNPAIR(" I2 Z", stepperZ3.sgt());
3294
+          SERIAL_ECHOLNPAIR(" I2 Z", stepperZ3.homing_threshold());
3295
         #endif
3295
         #endif
3296
 
3296
 
3297
       #endif // USE_SENSORLESS
3297
       #endif // USE_SENSORLESS

+ 84
- 39
Marlin/src/module/stepper_indirection.cpp Voir le fichier

163
     #define __TMC_SPI_DEFINE(IC, ST, L, AI) TMCMarlin<IC##Stepper, L, AI> stepper##ST(ST##_CS_PIN, ST##_RSENSE)
163
     #define __TMC_SPI_DEFINE(IC, ST, L, AI) TMCMarlin<IC##Stepper, L, AI> stepper##ST(ST##_CS_PIN, ST##_RSENSE)
164
   #endif
164
   #endif
165
 
165
 
166
-  #define TMC_UART_HW_DEFINE(IC, ST, L, AI) TMCMarlin<IC##Stepper, L, AI> stepper##ST(&ST##_HARDWARE_SERIAL, ST##_RSENSE)
167
-  #define TMC_UART_SW_DEFINE(IC, ST, L, AI) TMCMarlin<IC##Stepper, L, AI> stepper##ST(ST##_SERIAL_RX_PIN, ST##_SERIAL_TX_PIN, ST##_RSENSE, ST##_SERIAL_RX_PIN > -1)
166
+  #define TMC_UART_HW_DEFINE(IC, ST, L, AI) TMCMarlin<IC##Stepper, L, AI> stepper##ST(&ST##_HARDWARE_SERIAL, ST##_RSENSE, ST##_SLAVE_ADDRESS)
167
+  #define TMC_UART_SW_DEFINE(IC, ST, L, AI) TMCMarlin<IC##Stepper, L, AI> stepper##ST(ST##_SERIAL_RX_PIN, ST##_SERIAL_TX_PIN, ST##_RSENSE, ST##_SLAVE_ADDRESS, ST##_SERIAL_RX_PIN > -1)
168
 
168
 
169
   #define _TMC_SPI_DEFINE(IC, ST, AI) __TMC_SPI_DEFINE(IC, ST, TMC_##ST##_LABEL, AI)
169
   #define _TMC_SPI_DEFINE(IC, ST, AI) __TMC_SPI_DEFINE(IC, ST, TMC_##ST##_LABEL, AI)
170
   #define TMC_SPI_DEFINE(ST, AI) _TMC_SPI_DEFINE(ST##_DRIVER_TYPE, ST, AI##_AXIS)
170
   #define TMC_SPI_DEFINE(ST, AI) _TMC_SPI_DEFINE(ST##_DRIVER_TYPE, ST, AI##_AXIS)
318
 #endif // TMC2160
318
 #endif // TMC2160
319
 
319
 
320
 //
320
 //
321
-// TMC2208 Driver objects and inits
321
+// TMC2208/2209 Driver objects and inits
322
 //
322
 //
323
-#if HAS_DRIVER(TMC2208)
324
-  // Stepper objects of TMC2208 steppers used
325
-  #if AXIS_DRIVER_TYPE_X(TMC2208)
323
+#if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
324
+  #if AXIS_HAS_UART(X)
326
     #ifdef X_HARDWARE_SERIAL
325
     #ifdef X_HARDWARE_SERIAL
327
       TMC_UART_DEFINE(HW, X, X);
326
       TMC_UART_DEFINE(HW, X, X);
328
     #else
327
     #else
329
       TMC_UART_DEFINE(SW, X, X);
328
       TMC_UART_DEFINE(SW, X, X);
330
     #endif
329
     #endif
331
   #endif
330
   #endif
332
-  #if AXIS_DRIVER_TYPE_X2(TMC2208)
331
+  #if AXIS_HAS_UART(X2)
333
     #ifdef X2_HARDWARE_SERIAL
332
     #ifdef X2_HARDWARE_SERIAL
334
       TMC_UART_DEFINE(HW, X2, X);
333
       TMC_UART_DEFINE(HW, X2, X);
335
     #else
334
     #else
336
       TMC_UART_DEFINE(SW, X2, X);
335
       TMC_UART_DEFINE(SW, X2, X);
337
     #endif
336
     #endif
338
   #endif
337
   #endif
339
-  #if AXIS_DRIVER_TYPE_Y(TMC2208)
338
+  #if AXIS_HAS_UART(Y)
340
     #ifdef Y_HARDWARE_SERIAL
339
     #ifdef Y_HARDWARE_SERIAL
341
       TMC_UART_DEFINE(HW, Y, Y);
340
       TMC_UART_DEFINE(HW, Y, Y);
342
     #else
341
     #else
343
       TMC_UART_DEFINE(SW, Y, Y);
342
       TMC_UART_DEFINE(SW, Y, Y);
344
     #endif
343
     #endif
345
   #endif
344
   #endif
346
-  #if AXIS_DRIVER_TYPE_Y2(TMC2208)
345
+  #if AXIS_HAS_UART(Y2)
347
     #ifdef Y2_HARDWARE_SERIAL
346
     #ifdef Y2_HARDWARE_SERIAL
348
       TMC_UART_DEFINE(HW, Y2, Y);
347
       TMC_UART_DEFINE(HW, Y2, Y);
349
     #else
348
     #else
350
       TMC_UART_DEFINE(SW, Y2, Y);
349
       TMC_UART_DEFINE(SW, Y2, Y);
351
     #endif
350
     #endif
352
   #endif
351
   #endif
353
-  #if AXIS_DRIVER_TYPE_Z(TMC2208)
352
+  #if AXIS_HAS_UART(Z)
354
     #ifdef Z_HARDWARE_SERIAL
353
     #ifdef Z_HARDWARE_SERIAL
355
       TMC_UART_DEFINE(HW, Z, Z);
354
       TMC_UART_DEFINE(HW, Z, Z);
356
     #else
355
     #else
357
       TMC_UART_DEFINE(SW, Z, Z);
356
       TMC_UART_DEFINE(SW, Z, Z);
358
     #endif
357
     #endif
359
   #endif
358
   #endif
360
-  #if AXIS_DRIVER_TYPE_Z2(TMC2208)
359
+  #if AXIS_HAS_UART(Z2)
361
     #ifdef Z2_HARDWARE_SERIAL
360
     #ifdef Z2_HARDWARE_SERIAL
362
       TMC_UART_DEFINE(HW, Z2, Z);
361
       TMC_UART_DEFINE(HW, Z2, Z);
363
     #else
362
     #else
364
       TMC_UART_DEFINE(SW, Z2, Z);
363
       TMC_UART_DEFINE(SW, Z2, Z);
365
     #endif
364
     #endif
366
   #endif
365
   #endif
367
-  #if AXIS_DRIVER_TYPE_Z3(TMC2208)
366
+  #if AXIS_HAS_UART(Z3)
368
     #ifdef Z3_HARDWARE_SERIAL
367
     #ifdef Z3_HARDWARE_SERIAL
369
       TMC_UART_DEFINE(HW, Z3, Z);
368
       TMC_UART_DEFINE(HW, Z3, Z);
370
     #else
369
     #else
371
       TMC_UART_DEFINE(SW, Z3, Z);
370
       TMC_UART_DEFINE(SW, Z3, Z);
372
     #endif
371
     #endif
373
   #endif
372
   #endif
374
-  #if AXIS_DRIVER_TYPE_E0(TMC2208)
373
+  #if AXIS_HAS_UART(E0)
375
     #ifdef E0_HARDWARE_SERIAL
374
     #ifdef E0_HARDWARE_SERIAL
376
       TMC_UART_DEFINE_E(HW, 0);
375
       TMC_UART_DEFINE_E(HW, 0);
377
     #else
376
     #else
378
       TMC_UART_DEFINE_E(SW, 0);
377
       TMC_UART_DEFINE_E(SW, 0);
379
     #endif
378
     #endif
380
   #endif
379
   #endif
381
-  #if AXIS_DRIVER_TYPE_E1(TMC2208)
380
+  #if AXIS_HAS_UART(E1)
382
     #ifdef E1_HARDWARE_SERIAL
381
     #ifdef E1_HARDWARE_SERIAL
383
       TMC_UART_DEFINE_E(HW, 1);
382
       TMC_UART_DEFINE_E(HW, 1);
384
     #else
383
     #else
385
       TMC_UART_DEFINE_E(SW, 1);
384
       TMC_UART_DEFINE_E(SW, 1);
386
     #endif
385
     #endif
387
   #endif
386
   #endif
388
-  #if AXIS_DRIVER_TYPE_E2(TMC2208)
387
+  #if AXIS_HAS_UART(E2)
389
     #ifdef E2_HARDWARE_SERIAL
388
     #ifdef E2_HARDWARE_SERIAL
390
       TMC_UART_DEFINE_E(HW, 2);
389
       TMC_UART_DEFINE_E(HW, 2);
391
     #else
390
     #else
392
       TMC_UART_DEFINE_E(SW, 2);
391
       TMC_UART_DEFINE_E(SW, 2);
393
     #endif
392
     #endif
394
   #endif
393
   #endif
395
-  #if AXIS_DRIVER_TYPE_E3(TMC2208)
394
+  #if AXIS_HAS_UART(E3)
396
     #ifdef E3_HARDWARE_SERIAL
395
     #ifdef E3_HARDWARE_SERIAL
397
       TMC_UART_DEFINE_E(HW, 3);
396
       TMC_UART_DEFINE_E(HW, 3);
398
     #else
397
     #else
399
       TMC_UART_DEFINE_E(SW, 3);
398
       TMC_UART_DEFINE_E(SW, 3);
400
     #endif
399
     #endif
401
   #endif
400
   #endif
402
-  #if AXIS_DRIVER_TYPE_E4(TMC2208)
401
+  #if AXIS_HAS_UART(E4)
403
     #ifdef E4_HARDWARE_SERIAL
402
     #ifdef E4_HARDWARE_SERIAL
404
       TMC_UART_DEFINE_E(HW, 4);
403
       TMC_UART_DEFINE_E(HW, 4);
405
     #else
404
     #else
406
       TMC_UART_DEFINE_E(SW, 4);
405
       TMC_UART_DEFINE_E(SW, 4);
407
     #endif
406
     #endif
408
   #endif
407
   #endif
409
-  #if AXIS_DRIVER_TYPE_E5(TMC2208)
408
+  #if AXIS_HAS_UART(E5)
410
     #ifdef E5_HARDWARE_SERIAL
409
     #ifdef E5_HARDWARE_SERIAL
411
       TMC_UART_DEFINE_E(HW, 5);
410
       TMC_UART_DEFINE_E(HW, 5);
412
     #else
411
     #else
414
     #endif
413
     #endif
415
   #endif
414
   #endif
416
 
415
 
417
-  void tmc2208_serial_begin() {
418
-    #if AXIS_DRIVER_TYPE_X(TMC2208)
416
+  void tmc_serial_begin() {
417
+    #if AXIS_HAS_UART(X)
419
       #ifdef X_HARDWARE_SERIAL
418
       #ifdef X_HARDWARE_SERIAL
420
         X_HARDWARE_SERIAL.begin(115200);
419
         X_HARDWARE_SERIAL.begin(115200);
421
       #else
420
       #else
422
         stepperX.beginSerial(115200);
421
         stepperX.beginSerial(115200);
423
       #endif
422
       #endif
424
     #endif
423
     #endif
425
-    #if AXIS_DRIVER_TYPE_X2(TMC2208)
424
+    #if AXIS_HAS_UART(X2)
426
       #ifdef X2_HARDWARE_SERIAL
425
       #ifdef X2_HARDWARE_SERIAL
427
         X2_HARDWARE_SERIAL.begin(115200);
426
         X2_HARDWARE_SERIAL.begin(115200);
428
       #else
427
       #else
429
         stepperX2.beginSerial(115200);
428
         stepperX2.beginSerial(115200);
430
       #endif
429
       #endif
431
     #endif
430
     #endif
432
-    #if AXIS_DRIVER_TYPE_Y(TMC2208)
431
+    #if AXIS_HAS_UART(Y)
433
       #ifdef Y_HARDWARE_SERIAL
432
       #ifdef Y_HARDWARE_SERIAL
434
         Y_HARDWARE_SERIAL.begin(115200);
433
         Y_HARDWARE_SERIAL.begin(115200);
435
       #else
434
       #else
436
         stepperY.beginSerial(115200);
435
         stepperY.beginSerial(115200);
437
       #endif
436
       #endif
438
     #endif
437
     #endif
439
-    #if AXIS_DRIVER_TYPE_Y2(TMC2208)
438
+    #if AXIS_HAS_UART(Y2)
440
       #ifdef Y2_HARDWARE_SERIAL
439
       #ifdef Y2_HARDWARE_SERIAL
441
         Y2_HARDWARE_SERIAL.begin(115200);
440
         Y2_HARDWARE_SERIAL.begin(115200);
442
       #else
441
       #else
443
         stepperY2.beginSerial(115200);
442
         stepperY2.beginSerial(115200);
444
       #endif
443
       #endif
445
     #endif
444
     #endif
446
-    #if AXIS_DRIVER_TYPE_Z(TMC2208)
445
+    #if AXIS_HAS_UART(Z)
447
       #ifdef Z_HARDWARE_SERIAL
446
       #ifdef Z_HARDWARE_SERIAL
448
         Z_HARDWARE_SERIAL.begin(115200);
447
         Z_HARDWARE_SERIAL.begin(115200);
449
       #else
448
       #else
450
         stepperZ.beginSerial(115200);
449
         stepperZ.beginSerial(115200);
451
       #endif
450
       #endif
452
     #endif
451
     #endif
453
-    #if AXIS_DRIVER_TYPE_Z2(TMC2208)
452
+    #if AXIS_HAS_UART(Z2)
454
       #ifdef Z2_HARDWARE_SERIAL
453
       #ifdef Z2_HARDWARE_SERIAL
455
         Z2_HARDWARE_SERIAL.begin(115200);
454
         Z2_HARDWARE_SERIAL.begin(115200);
456
       #else
455
       #else
457
         stepperZ2.beginSerial(115200);
456
         stepperZ2.beginSerial(115200);
458
       #endif
457
       #endif
459
     #endif
458
     #endif
460
-    #if AXIS_DRIVER_TYPE_Z3(TMC2208)
459
+    #if AXIS_HAS_UART(Z3)
461
       #ifdef Z3_HARDWARE_SERIAL
460
       #ifdef Z3_HARDWARE_SERIAL
462
         Z3_HARDWARE_SERIAL.begin(115200);
461
         Z3_HARDWARE_SERIAL.begin(115200);
463
       #else
462
       #else
464
         stepperZ3.beginSerial(115200);
463
         stepperZ3.beginSerial(115200);
465
       #endif
464
       #endif
466
     #endif
465
     #endif
467
-    #if AXIS_DRIVER_TYPE_E0(TMC2208)
466
+    #if AXIS_HAS_UART(E0)
468
       #ifdef E0_HARDWARE_SERIAL
467
       #ifdef E0_HARDWARE_SERIAL
469
         E0_HARDWARE_SERIAL.begin(115200);
468
         E0_HARDWARE_SERIAL.begin(115200);
470
       #else
469
       #else
471
         stepperE0.beginSerial(115200);
470
         stepperE0.beginSerial(115200);
472
       #endif
471
       #endif
473
     #endif
472
     #endif
474
-    #if AXIS_DRIVER_TYPE_E1(TMC2208)
473
+    #if AXIS_HAS_UART(E1)
475
       #ifdef E1_HARDWARE_SERIAL
474
       #ifdef E1_HARDWARE_SERIAL
476
         E1_HARDWARE_SERIAL.begin(115200);
475
         E1_HARDWARE_SERIAL.begin(115200);
477
       #else
476
       #else
478
         stepperE1.beginSerial(115200);
477
         stepperE1.beginSerial(115200);
479
       #endif
478
       #endif
480
     #endif
479
     #endif
481
-    #if AXIS_DRIVER_TYPE_E2(TMC2208)
480
+    #if AXIS_HAS_UART(E2)
482
       #ifdef E2_HARDWARE_SERIAL
481
       #ifdef E2_HARDWARE_SERIAL
483
         E2_HARDWARE_SERIAL.begin(115200);
482
         E2_HARDWARE_SERIAL.begin(115200);
484
       #else
483
       #else
485
         stepperE2.beginSerial(115200);
484
         stepperE2.beginSerial(115200);
486
       #endif
485
       #endif
487
     #endif
486
     #endif
488
-    #if AXIS_DRIVER_TYPE_E3(TMC2208)
487
+    #if AXIS_HAS_UART(E3)
489
       #ifdef E3_HARDWARE_SERIAL
488
       #ifdef E3_HARDWARE_SERIAL
490
         E3_HARDWARE_SERIAL.begin(115200);
489
         E3_HARDWARE_SERIAL.begin(115200);
491
       #else
490
       #else
492
         stepperE3.beginSerial(115200);
491
         stepperE3.beginSerial(115200);
493
       #endif
492
       #endif
494
     #endif
493
     #endif
495
-    #if AXIS_DRIVER_TYPE_E4(TMC2208)
494
+    #if AXIS_HAS_UART(E4)
496
       #ifdef E4_HARDWARE_SERIAL
495
       #ifdef E4_HARDWARE_SERIAL
497
         E4_HARDWARE_SERIAL.begin(115200);
496
         E4_HARDWARE_SERIAL.begin(115200);
498
       #else
497
       #else
499
         stepperE4.beginSerial(115200);
498
         stepperE4.beginSerial(115200);
500
       #endif
499
       #endif
501
     #endif
500
     #endif
502
-    #if AXIS_DRIVER_TYPE_E5(TMC2208)
501
+    #if AXIS_HAS_UART(E5)
503
       #ifdef E5_HARDWARE_SERIAL
502
       #ifdef E5_HARDWARE_SERIAL
504
         E5_HARDWARE_SERIAL.begin(115200);
503
         E5_HARDWARE_SERIAL.begin(115200);
505
       #else
504
       #else
507
       #endif
506
       #endif
508
     #endif
507
     #endif
509
   }
508
   }
509
+#endif
510
 
510
 
511
+#if HAS_DRIVER(TMC2208)
511
   template<char AXIS_LETTER, char DRIVER_ID, AxisEnum AXIS_ID>
512
   template<char AXIS_LETTER, char DRIVER_ID, AxisEnum AXIS_ID>
512
   void tmc_init(TMCMarlin<TMC2208Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID> &st, const uint16_t mA, const uint16_t microsteps, const uint32_t thrs, const bool stealth) {
513
   void tmc_init(TMCMarlin<TMC2208Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID> &st, const uint16_t mA, const uint16_t microsteps, const uint32_t thrs, const bool stealth) {
513
     TMC2208_n::GCONF_t gconf{0};
514
     TMC2208_n::GCONF_t gconf{0};
555
   }
556
   }
556
 #endif // TMC2208
557
 #endif // TMC2208
557
 
558
 
559
+#if HAS_DRIVER(TMC2209)
560
+  template<char AXIS_LETTER, char DRIVER_ID, AxisEnum AXIS_ID>
561
+  void tmc_init(TMCMarlin<TMC2209Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID> &st, const uint16_t mA, const uint16_t microsteps, const uint32_t thrs, const bool stealth) {
562
+    TMC2208_n::GCONF_t gconf{0};
563
+    gconf.pdn_disable = true; // Use UART
564
+    gconf.mstep_reg_select = true; // Select microsteps with UART
565
+    gconf.i_scale_analog = false;
566
+    gconf.en_spreadcycle = !stealth;
567
+    st.GCONF(gconf.sr);
568
+    st.stored.stealthChop_enabled = stealth;
569
+
570
+    TMC2208_n::CHOPCONF_t chopconf{0};
571
+    chopconf.tbl = 0b01; // blank_time = 24
572
+    chopconf.toff = chopper_timing.toff;
573
+    chopconf.intpol = INTERPOLATE;
574
+    chopconf.hend = chopper_timing.hend + 3;
575
+    chopconf.hstrt = chopper_timing.hstrt - 1;
576
+    st.CHOPCONF(chopconf.sr);
577
+
578
+    st.rms_current(mA, HOLD_MULTIPLIER);
579
+    st.microsteps(microsteps);
580
+    st.iholddelay(10);
581
+    st.TPOWERDOWN(128); // ~2s until driver lowers to hold current
582
+
583
+    TMC2208_n::PWMCONF_t pwmconf{0};
584
+    pwmconf.pwm_lim = 12;
585
+    pwmconf.pwm_reg = 8;
586
+    pwmconf.pwm_autograd = true;
587
+    pwmconf.pwm_autoscale = true;
588
+    pwmconf.pwm_freq = 0b01;
589
+    pwmconf.pwm_grad = 14;
590
+    pwmconf.pwm_ofs = 36;
591
+    st.PWMCONF(pwmconf.sr);
592
+
593
+    #if ENABLED(HYBRID_THRESHOLD)
594
+      st.set_pwm_thrs(thrs);
595
+    #else
596
+      UNUSED(thrs);
597
+    #endif
598
+
599
+    st.GSTAT(0b111); // Clear
600
+  }
601
+#endif // TMC2209
602
+
558
 #if HAS_DRIVER(TMC2660)
603
 #if HAS_DRIVER(TMC2660)
559
   template<char AXIS_LETTER, char DRIVER_ID, AxisEnum AXIS_ID>
604
   template<char AXIS_LETTER, char DRIVER_ID, AxisEnum AXIS_ID>
560
   void tmc_init(TMCMarlin<TMC2660Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID> &st, const uint16_t mA, const uint16_t microsteps, const uint32_t, const bool) {
605
   void tmc_init(TMCMarlin<TMC2660Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID> &st, const uint16_t mA, const uint16_t microsteps, const uint32_t, const bool) {
791
   #if USE_SENSORLESS
836
   #if USE_SENSORLESS
792
     #if X_SENSORLESS
837
     #if X_SENSORLESS
793
       #if AXIS_HAS_STALLGUARD(X)
838
       #if AXIS_HAS_STALLGUARD(X)
794
-        stepperX.sgt(X_STALL_SENSITIVITY);
839
+        stepperX.homing_threshold(X_STALL_SENSITIVITY);
795
       #endif
840
       #endif
796
       #if AXIS_HAS_STALLGUARD(X2)
841
       #if AXIS_HAS_STALLGUARD(X2)
797
-        stepperX2.sgt(X_STALL_SENSITIVITY);
842
+        stepperX2.homing_threshold(X_STALL_SENSITIVITY);
798
       #endif
843
       #endif
799
     #endif
844
     #endif
800
     #if Y_SENSORLESS
845
     #if Y_SENSORLESS
801
       #if AXIS_HAS_STALLGUARD(Y)
846
       #if AXIS_HAS_STALLGUARD(Y)
802
-        stepperY.sgt(Y_STALL_SENSITIVITY);
847
+        stepperY.homing_threshold(Y_STALL_SENSITIVITY);
803
       #endif
848
       #endif
804
       #if AXIS_HAS_STALLGUARD(Y2)
849
       #if AXIS_HAS_STALLGUARD(Y2)
805
-        stepperY2.sgt(Y_STALL_SENSITIVITY);
850
+        stepperY2.homing_threshold(Y_STALL_SENSITIVITY);
806
       #endif
851
       #endif
807
     #endif
852
     #endif
808
     #if Z_SENSORLESS
853
     #if Z_SENSORLESS
809
       #if AXIS_HAS_STALLGUARD(Z)
854
       #if AXIS_HAS_STALLGUARD(Z)
810
-        stepperZ.sgt(Z_STALL_SENSITIVITY);
855
+        stepperZ.homing_threshold(Z_STALL_SENSITIVITY);
811
       #endif
856
       #endif
812
       #if AXIS_HAS_STALLGUARD(Z2)
857
       #if AXIS_HAS_STALLGUARD(Z2)
813
-        stepperZ2.sgt(Z_STALL_SENSITIVITY);
858
+        stepperZ2.homing_threshold(Z_STALL_SENSITIVITY);
814
       #endif
859
       #endif
815
       #if AXIS_HAS_STALLGUARD(Z3)
860
       #if AXIS_HAS_STALLGUARD(Z3)
816
-        stepperZ3.sgt(Z_STALL_SENSITIVITY);
861
+        stepperZ3.homing_threshold(Z_STALL_SENSITIVITY);
817
       #endif
862
       #endif
818
     #endif
863
     #endif
819
   #endif
864
   #endif

+ 4
- 4
Marlin/src/module/stepper_indirection.h Voir le fichier

58
 #if HAS_TRINAMIC
58
 #if HAS_TRINAMIC
59
   #include <TMCStepper.h>
59
   #include <TMCStepper.h>
60
   #include "../feature/tmc_util.h"
60
   #include "../feature/tmc_util.h"
61
-  #if TMCSTEPPER_VERSION < 0x000401
62
-    #error "Update TMCStepper library to 0.4.1 or newer."
61
+  #if TMCSTEPPER_VERSION < 0x000405
62
+    #error "Update TMCStepper library to 0.4.5 or newer."
63
   #endif
63
   #endif
64
 
64
 
65
   #define ____TMC_CLASS(MODEL, A, I, E) TMCMarlin<TMC##MODEL##Stepper, A, I, E>
65
   #define ____TMC_CLASS(MODEL, A, I, E) TMCMarlin<TMC##MODEL##Stepper, A, I, E>
81
 
81
 
82
   static constexpr chopper_timing_t chopper_timing = CHOPPER_TIMING;
82
   static constexpr chopper_timing_t chopper_timing = CHOPPER_TIMING;
83
 
83
 
84
-  #if HAS_DRIVER(TMC2208)
85
-    void tmc2208_serial_begin();
84
+  #if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
85
+    void tmc_serial_begin();
86
   #endif
86
   #endif
87
 #endif
87
 #endif
88
 
88
 

+ 2
- 2
Marlin/src/pins/pins_BIGTREE_SKR_V1.3.h Voir le fichier

107
   #define TMC_SW_SCK       P0_04
107
   #define TMC_SW_SCK       P0_04
108
 #endif
108
 #endif
109
 
109
 
110
-#if HAS_DRIVER(TMC2208)
110
+#if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
111
     /**
111
     /**
112
-   * TMC2208 stepper drivers
112
+   * TMC2208/TMC2209 stepper drivers
113
    *
113
    *
114
    * Hardware serial communication ports.
114
    * Hardware serial communication ports.
115
    * If undefined software serial is used according to the pins below
115
    * If undefined software serial is used according to the pins below

+ 1
- 1
Marlin/src/pins/pins_FYSETC_F6_13.h Voir le fichier

116
 // the jumper next to the limit switch socket when using sensorless homing.
116
 // the jumper next to the limit switch socket when using sensorless homing.
117
 //
117
 //
118
 
118
 
119
-#if HAS_DRIVER(TMC2208)
119
+#if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
120
   // Software serial
120
   // Software serial
121
   #define X_SERIAL_RX_PIN  71
121
   #define X_SERIAL_RX_PIN  71
122
   #define X_SERIAL_TX_PIN  72
122
   #define X_SERIAL_TX_PIN  72

+ 2
- 2
Marlin/src/pins/pins_MKS_SBASE.h Voir le fichier

288
 
288
 
289
 /**
289
 /**
290
  * Example for trinamic drivers using the J8 connector on MKs Sbase.
290
  * Example for trinamic drivers using the J8 connector on MKs Sbase.
291
- * 2130s need 1 pin for each driver. 2208s need 2 pins for serial control.
291
+ * 2130s need 1 pin for each driver. 2208/2209s need 2 pins for serial control.
292
  * This board does not have enough pins to use hardware serial.
292
  * This board does not have enough pins to use hardware serial.
293
  */
293
  */
294
 
294
 
316
  #endif
316
  #endif
317
 #endif
317
 #endif
318
 
318
 
319
-#if MB(MKS_SBASE) && HAS_DRIVER(TMC2208)
319
+#if MB(MKS_SBASE) && (HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209))
320
   // The shortage of pins becomes apparent.
320
   // The shortage of pins becomes apparent.
321
   // Worst case you may have to give up the LCD
321
   // Worst case you may have to give up the LCD
322
   // RX pins need to be interrupt capable
322
   // RX pins need to be interrupt capable

+ 1
- 1
Marlin/src/pins/pins_MKS_SGEN.h Voir le fichier

42
 //#define BTN_EN1        P1_23   // EXP2.5
42
 //#define BTN_EN1        P1_23   // EXP2.5
43
 //#define BTN_EN2        P1_22   // EXP2.3
43
 //#define BTN_EN2        P1_22   // EXP2.3
44
 
44
 
45
-#if HAS_DRIVER(TMC2208)
45
+#if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
46
   // The shortage of pins becomes apparent.
46
   // The shortage of pins becomes apparent.
47
   // In the worst case you may have to give up the LCD.
47
   // In the worst case you may have to give up the LCD.
48
   // RX pins must be interrupt-capable.
48
   // RX pins must be interrupt-capable.

+ 2
- 2
Marlin/src/pins/pins_RAMPS.h Voir le fichier

293
   #endif
293
   #endif
294
 #endif
294
 #endif
295
 
295
 
296
-#if HAS_DRIVER(TMC2208)
296
+#if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
297
   /**
297
   /**
298
-   * TMC2208 stepper drivers
298
+   * TMC2208/TMC2209 stepper drivers
299
    *
299
    *
300
    * Hardware serial communication ports.
300
    * Hardware serial communication ports.
301
    * If undefined software serial is used according to the pins below
301
    * If undefined software serial is used according to the pins below

+ 2
- 2
Marlin/src/pins/pins_RAMPS_FD_V1.h Voir le fichier

204
 
204
 
205
 #endif // ULTRA_LCD
205
 #endif // ULTRA_LCD
206
 
206
 
207
-#if HAS_DRIVER(TMC2208)
207
+#if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
208
   /**
208
   /**
209
-   * TMC2208 stepper drivers
209
+   * TMC2208/TMC2209 stepper drivers
210
    *
210
    *
211
    * Hardware serial communication ports.
211
    * Hardware serial communication ports.
212
    * If undefined software serial is used according to the pins below
212
    * If undefined software serial is used according to the pins below

+ 2
- 2
Marlin/src/pins/pins_RAMPS_LINUX.h Voir le fichier

268
   #endif
268
   #endif
269
 #endif
269
 #endif
270
 
270
 
271
-#if ENABLED(HAVE_TMC2208)
271
+#if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
272
   /**
272
   /**
273
-   * TMC2208 stepper drivers
273
+   * TMC2208/TMC2209 stepper drivers
274
    *
274
    *
275
    * Hardware serial communication ports.
275
    * Hardware serial communication ports.
276
    * If undefined software serial is used according to the pins below
276
    * If undefined software serial is used according to the pins below

+ 2
- 2
Marlin/src/pins/pins_RAMPS_RE_ARM.h Voir le fichier

106
   #define TMC_SW_SCK       P1_09   // ETH
106
   #define TMC_SW_SCK       P1_09   // ETH
107
 #endif
107
 #endif
108
 
108
 
109
-#if HAS_DRIVER(TMC2208)
109
+#if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
110
   /**
110
   /**
111
-   * TMC2208 stepper drivers
111
+   * TMC2208/TMC2209 stepper drivers
112
    *
112
    *
113
    * Hardware serial communication ports.
113
    * Hardware serial communication ports.
114
    * If undefined software serial is used according to the pins below
114
    * If undefined software serial is used according to the pins below

+ 3
- 2
buildroot/share/tests/megaatmega2560-tests Voir le fichier

298
 opt_enable USE_ZMIN_PLUG FIX_MOUNTED_PROBE AUTO_BED_LEVELING_BILINEAR PAUSE_BEFORE_DEPLOY_STOW \
298
 opt_enable USE_ZMIN_PLUG FIX_MOUNTED_PROBE AUTO_BED_LEVELING_BILINEAR PAUSE_BEFORE_DEPLOY_STOW \
299
            EEPROM_SETTINGS EEPROM_CHITCHAT ULTIMAKERCONTROLLER \
299
            EEPROM_SETTINGS EEPROM_CHITCHAT ULTIMAKERCONTROLLER \
300
            MONITOR_DRIVER_STATUS STEALTHCHOP_XY STEALTHCHOP_Z STEALTHCHOP_E HYBRID_THRESHOLD SENSORLESS_HOMING SQUARE_WAVE_STEPPING
300
            MONITOR_DRIVER_STATUS STEALTHCHOP_XY STEALTHCHOP_Z STEALTHCHOP_E HYBRID_THRESHOLD SENSORLESS_HOMING SQUARE_WAVE_STEPPING
301
-opt_set X_DRIVER_TYPE TMC2130
301
+opt_set X_MAX_ENDSTOP_INVERTING false
302
+opt_set X_DRIVER_TYPE TMC2209
302
 opt_set Y_DRIVER_TYPE TMC2130
303
 opt_set Y_DRIVER_TYPE TMC2130
303
 opt_set Z_DRIVER_TYPE TMC2130
304
 opt_set Z_DRIVER_TYPE TMC2130
304
 opt_set E0_DRIVER_TYPE TMC2660
305
 opt_set E0_DRIVER_TYPE TMC2660
305
-exec_test $1 $2 "SCARA with TMC2130 and TMC2660"
306
+exec_test $1 $2 "SCARA with TMC2130, TMC2209, and TMC2660"
306
 #
307
 #
307
 # Test mixed TMC config
308
 # Test mixed TMC config
308
 #
309
 #

+ 4
- 4
config/default/Configuration.h Voir le fichier

637
  * A4988 is assumed for unspecified drivers.
637
  * A4988 is assumed for unspecified drivers.
638
  *
638
  *
639
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
639
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
640
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
640
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
641
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
641
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
642
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
642
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
643
- *          TMC5160, TMC5160_STANDALONE
644
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
643
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
644
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
645
  */
645
  */
646
 //#define X_DRIVER_TYPE  A4988
646
 //#define X_DRIVER_TYPE  A4988
647
 //#define Y_DRIVER_TYPE  A4988
647
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/default/Configuration_adv.h Voir le fichier

1727
   //#define TMC_SW_SCK        -1
1727
   //#define TMC_SW_SCK        -1
1728
 
1728
 
1729
   /**
1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730
    * Software enable
1753
    * Software enable
1731
    *
1754
    *
1732
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same
1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/3DFabXYZ/Migbot/Configuration.h Voir le fichier

642
  * A4988 is assumed for unspecified drivers.
642
  * A4988 is assumed for unspecified drivers.
643
  *
643
  *
644
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
644
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
645
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
645
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
646
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
646
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
647
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
647
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
648
- *          TMC5160, TMC5160_STANDALONE
649
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
648
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
649
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
650
  */
650
  */
651
 //#define X_DRIVER_TYPE  A4988
651
 //#define X_DRIVER_TYPE  A4988
652
 //#define Y_DRIVER_TYPE  A4988
652
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/3DFabXYZ/Migbot/Configuration_adv.h Voir le fichier

1727
   //#define TMC_SW_SCK        -1
1727
   //#define TMC_SW_SCK        -1
1728
 
1728
 
1729
   /**
1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730
    * Software enable
1753
    * Software enable
1731
    *
1754
    *
1732
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same
1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/AlephObjects/TAZ4/Configuration.h Voir le fichier

657
  * A4988 is assumed for unspecified drivers.
657
  * A4988 is assumed for unspecified drivers.
658
  *
658
  *
659
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
659
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
660
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
660
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
661
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
661
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
662
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
662
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
663
- *          TMC5160, TMC5160_STANDALONE
664
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
663
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
664
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
665
  */
665
  */
666
 //#define X_DRIVER_TYPE  A4988
666
 //#define X_DRIVER_TYPE  A4988
667
 //#define Y_DRIVER_TYPE  A4988
667
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/AlephObjects/TAZ4/Configuration_adv.h Voir le fichier

1727
   //#define TMC_SW_SCK        -1
1727
   //#define TMC_SW_SCK        -1
1728
 
1728
 
1729
   /**
1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730
    * Software enable
1753
    * Software enable
1731
    *
1754
    *
1732
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same
1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/AliExpress/CL-260/Configuration.h Voir le fichier

637
  * A4988 is assumed for unspecified drivers.
637
  * A4988 is assumed for unspecified drivers.
638
  *
638
  *
639
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
639
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
640
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
640
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
641
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
641
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
642
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
642
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
643
- *          TMC5160, TMC5160_STANDALONE
644
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
643
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
644
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
645
  */
645
  */
646
 //#define X_DRIVER_TYPE  A4988
646
 //#define X_DRIVER_TYPE  A4988
647
 //#define Y_DRIVER_TYPE  A4988
647
 //#define Y_DRIVER_TYPE  A4988

+ 4
- 4
config/examples/AliExpress/UM2pExt/Configuration.h Voir le fichier

648
  * A4988 is assumed for unspecified drivers.
648
  * A4988 is assumed for unspecified drivers.
649
  *
649
  *
650
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
650
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
651
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
651
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
652
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
652
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
653
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
653
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
654
- *          TMC5160, TMC5160_STANDALONE
655
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
654
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
655
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
656
  */
656
  */
657
 //#define X_DRIVER_TYPE  A4988
657
 //#define X_DRIVER_TYPE  A4988
658
 //#define Y_DRIVER_TYPE  A4988
658
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/AliExpress/UM2pExt/Configuration_adv.h Voir le fichier

1729
   //#define TMC_SW_SCK        -1
1729
   //#define TMC_SW_SCK        -1
1730
 
1730
 
1731
   /**
1731
   /**
1732
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1733
+   * Set the address using jumpers on pins MS1 and MS2.
1734
+   * Address | MS1  | MS2
1735
+   *       0 | LOW  | LOW
1736
+   *       1 | HIGH | LOW
1737
+   *       2 | LOW  | HIGH
1738
+   *       3 | HIGH | HIGH
1739
+   */
1740
+  #define  X_SLAVE_ADDRESS 0
1741
+  #define  Y_SLAVE_ADDRESS 0
1742
+  #define  Z_SLAVE_ADDRESS 0
1743
+  #define X2_SLAVE_ADDRESS 0
1744
+  #define Y2_SLAVE_ADDRESS 0
1745
+  #define Z2_SLAVE_ADDRESS 0
1746
+  #define Z3_SLAVE_ADDRESS 0
1747
+  #define E0_SLAVE_ADDRESS 0
1748
+  #define E1_SLAVE_ADDRESS 0
1749
+  #define E2_SLAVE_ADDRESS 0
1750
+  #define E3_SLAVE_ADDRESS 0
1751
+  #define E4_SLAVE_ADDRESS 0
1752
+  #define E5_SLAVE_ADDRESS 0
1753
+
1754
+  /**
1732
    * Software enable
1755
    * Software enable
1733
    *
1756
    *
1734
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same
1757
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/Anet/A2/Configuration.h Voir le fichier

637
  * A4988 is assumed for unspecified drivers.
637
  * A4988 is assumed for unspecified drivers.
638
  *
638
  *
639
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
639
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
640
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
640
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
641
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
641
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
642
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
642
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
643
- *          TMC5160, TMC5160_STANDALONE
644
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
643
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
644
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
645
  */
645
  */
646
 //#define X_DRIVER_TYPE  A4988
646
 //#define X_DRIVER_TYPE  A4988
647
 //#define Y_DRIVER_TYPE  A4988
647
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/Anet/A2/Configuration_adv.h Voir le fichier

1727
   //#define TMC_SW_SCK        -1
1727
   //#define TMC_SW_SCK        -1
1728
 
1728
 
1729
   /**
1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730
    * Software enable
1753
    * Software enable
1731
    *
1754
    *
1732
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same
1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/Anet/A2plus/Configuration.h Voir le fichier

637
  * A4988 is assumed for unspecified drivers.
637
  * A4988 is assumed for unspecified drivers.
638
  *
638
  *
639
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
639
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
640
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
640
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
641
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
641
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
642
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
642
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
643
- *          TMC5160, TMC5160_STANDALONE
644
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
643
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
644
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
645
  */
645
  */
646
 //#define X_DRIVER_TYPE  A4988
646
 //#define X_DRIVER_TYPE  A4988
647
 //#define Y_DRIVER_TYPE  A4988
647
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/Anet/A2plus/Configuration_adv.h Voir le fichier

1727
   //#define TMC_SW_SCK        -1
1727
   //#define TMC_SW_SCK        -1
1728
 
1728
 
1729
   /**
1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730
    * Software enable
1753
    * Software enable
1731
    *
1754
    *
1732
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same
1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/Anet/A6/Configuration.h Voir le fichier

657
  * A4988 is assumed for unspecified drivers.
657
  * A4988 is assumed for unspecified drivers.
658
  *
658
  *
659
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
659
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
660
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
660
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
661
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
661
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
662
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
662
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
663
- *          TMC5160, TMC5160_STANDALONE
664
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
663
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
664
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
665
  */
665
  */
666
 //#define X_DRIVER_TYPE  A4988
666
 //#define X_DRIVER_TYPE  A4988
667
 //#define Y_DRIVER_TYPE  A4988
667
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/Anet/A6/Configuration_adv.h Voir le fichier

1727
   //#define TMC_SW_SCK        -1
1727
   //#define TMC_SW_SCK        -1
1728
 
1728
 
1729
   /**
1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730
    * Software enable
1753
    * Software enable
1731
    *
1754
    *
1732
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same
1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/Anet/A8/Configuration.h Voir le fichier

650
  * A4988 is assumed for unspecified drivers.
650
  * A4988 is assumed for unspecified drivers.
651
  *
651
  *
652
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
652
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
653
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
653
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
654
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
654
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
655
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
655
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
656
- *          TMC5160, TMC5160_STANDALONE
657
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
656
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
657
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
658
  */
658
  */
659
 //#define X_DRIVER_TYPE  A4988
659
 //#define X_DRIVER_TYPE  A4988
660
 //#define Y_DRIVER_TYPE  A4988
660
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/Anet/A8/Configuration_adv.h Voir le fichier

1727
   //#define TMC_SW_SCK        -1
1727
   //#define TMC_SW_SCK        -1
1728
 
1728
 
1729
   /**
1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730
    * Software enable
1753
    * Software enable
1731
    *
1754
    *
1732
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same
1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/Anet/A8plus/Configuration.h Voir le fichier

648
  * A4988 is assumed for unspecified drivers.
648
  * A4988 is assumed for unspecified drivers.
649
  *
649
  *
650
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
650
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
651
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
651
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
652
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
652
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
653
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
653
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
654
- *          TMC5160, TMC5160_STANDALONE
655
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
654
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
655
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
656
  */
656
  */
657
 #define X_DRIVER_TYPE  A4988
657
 #define X_DRIVER_TYPE  A4988
658
 #define Y_DRIVER_TYPE  A4988
658
 #define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/Anet/A8plus/Configuration_adv.h Voir le fichier

1727
   //#define TMC_SW_SCK        -1
1727
   //#define TMC_SW_SCK        -1
1728
 
1728
 
1729
   /**
1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730
    * Software enable
1753
    * Software enable
1731
    *
1754
    *
1732
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same
1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/Anet/E16/Configuration.h Voir le fichier

649
  * A4988 is assumed for unspecified drivers.
649
  * A4988 is assumed for unspecified drivers.
650
  *
650
  *
651
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
651
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
652
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
652
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
653
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
653
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
654
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
654
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
655
- *          TMC5160, TMC5160_STANDALONE
656
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
655
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
656
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
657
  */
657
  */
658
 #define X_DRIVER_TYPE  A4988
658
 #define X_DRIVER_TYPE  A4988
659
 #define Y_DRIVER_TYPE  A4988
659
 #define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/Anet/E16/Configuration_adv.h Voir le fichier

1727
   //#define TMC_SW_SCK        -1
1727
   //#define TMC_SW_SCK        -1
1728
 
1728
 
1729
   /**
1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730
    * Software enable
1753
    * Software enable
1731
    *
1754
    *
1732
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same
1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/AnyCubic/i3/Configuration.h Voir le fichier

647
  * A4988 is assumed for unspecified drivers.
647
  * A4988 is assumed for unspecified drivers.
648
  *
648
  *
649
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
649
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
650
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
650
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
651
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
651
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
652
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
652
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
653
- *          TMC5160, TMC5160_STANDALONE
654
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
653
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
654
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
655
  */
655
  */
656
 //#define X_DRIVER_TYPE  A4988
656
 //#define X_DRIVER_TYPE  A4988
657
 //#define Y_DRIVER_TYPE  A4988
657
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/AnyCubic/i3/Configuration_adv.h Voir le fichier

1727
   //#define TMC_SW_SCK        -1
1727
   //#define TMC_SW_SCK        -1
1728
 
1728
 
1729
   /**
1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730
    * Software enable
1753
    * Software enable
1731
    *
1754
    *
1732
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same
1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/ArmEd/Configuration.h Voir le fichier

638
  * A4988 is assumed for unspecified drivers.
638
  * A4988 is assumed for unspecified drivers.
639
  *
639
  *
640
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
640
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
641
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
641
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
642
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
642
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
643
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
643
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
644
- *          TMC5160, TMC5160_STANDALONE
645
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
644
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
645
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
646
  */
646
  */
647
 //#define X_DRIVER_TYPE  A4988
647
 //#define X_DRIVER_TYPE  A4988
648
 //#define Y_DRIVER_TYPE  A4988
648
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/ArmEd/Configuration_adv.h Voir le fichier

1731
   //#define TMC_SW_SCK        -1
1731
   //#define TMC_SW_SCK        -1
1732
 
1732
 
1733
   /**
1733
   /**
1734
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1735
+   * Set the address using jumpers on pins MS1 and MS2.
1736
+   * Address | MS1  | MS2
1737
+   *       0 | LOW  | LOW
1738
+   *       1 | HIGH | LOW
1739
+   *       2 | LOW  | HIGH
1740
+   *       3 | HIGH | HIGH
1741
+   */
1742
+  #define  X_SLAVE_ADDRESS 0
1743
+  #define  Y_SLAVE_ADDRESS 0
1744
+  #define  Z_SLAVE_ADDRESS 0
1745
+  #define X2_SLAVE_ADDRESS 0
1746
+  #define Y2_SLAVE_ADDRESS 0
1747
+  #define Z2_SLAVE_ADDRESS 0
1748
+  #define Z3_SLAVE_ADDRESS 0
1749
+  #define E0_SLAVE_ADDRESS 0
1750
+  #define E1_SLAVE_ADDRESS 0
1751
+  #define E2_SLAVE_ADDRESS 0
1752
+  #define E3_SLAVE_ADDRESS 0
1753
+  #define E4_SLAVE_ADDRESS 0
1754
+  #define E5_SLAVE_ADDRESS 0
1755
+
1756
+  /**
1734
    * Software enable
1757
    * Software enable
1735
    *
1758
    *
1736
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same
1759
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/Azteeg/X5GT/Configuration.h Voir le fichier

637
  * A4988 is assumed for unspecified drivers.
637
  * A4988 is assumed for unspecified drivers.
638
  *
638
  *
639
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
639
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
640
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
640
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
641
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
641
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
642
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
642
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
643
- *          TMC5160, TMC5160_STANDALONE
644
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
643
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
644
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
645
  */
645
  */
646
 //#define X_DRIVER_TYPE  A4988
646
 //#define X_DRIVER_TYPE  A4988
647
 //#define Y_DRIVER_TYPE  A4988
647
 //#define Y_DRIVER_TYPE  A4988

+ 4
- 4
config/examples/BIBO/TouchX/cyclops/Configuration.h Voir le fichier

637
  * A4988 is assumed for unspecified drivers.
637
  * A4988 is assumed for unspecified drivers.
638
  *
638
  *
639
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
639
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
640
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
640
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
641
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
641
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
642
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
642
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
643
- *          TMC5160, TMC5160_STANDALONE
644
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
643
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
644
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
645
  */
645
  */
646
 //#define X_DRIVER_TYPE  A4988
646
 //#define X_DRIVER_TYPE  A4988
647
 //#define Y_DRIVER_TYPE  A4988
647
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/BIBO/TouchX/cyclops/Configuration_adv.h Voir le fichier

1727
   //#define TMC_SW_SCK        -1
1727
   //#define TMC_SW_SCK        -1
1728
 
1728
 
1729
   /**
1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730
    * Software enable
1753
    * Software enable
1731
    *
1754
    *
1732
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same
1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/BIBO/TouchX/default/Configuration.h Voir le fichier

637
  * A4988 is assumed for unspecified drivers.
637
  * A4988 is assumed for unspecified drivers.
638
  *
638
  *
639
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
639
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
640
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
640
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
641
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
641
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
642
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
642
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
643
- *          TMC5160, TMC5160_STANDALONE
644
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
643
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
644
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
645
  */
645
  */
646
 //#define X_DRIVER_TYPE  A4988
646
 //#define X_DRIVER_TYPE  A4988
647
 //#define Y_DRIVER_TYPE  A4988
647
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/BIBO/TouchX/default/Configuration_adv.h Voir le fichier

1727
   //#define TMC_SW_SCK        -1
1727
   //#define TMC_SW_SCK        -1
1728
 
1728
 
1729
   /**
1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730
    * Software enable
1753
    * Software enable
1731
    *
1754
    *
1732
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same
1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/BQ/Hephestos/Configuration.h Voir le fichier

625
  * A4988 is assumed for unspecified drivers.
625
  * A4988 is assumed for unspecified drivers.
626
  *
626
  *
627
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
627
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
628
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
628
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
629
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
629
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
630
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
630
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
631
- *          TMC5160, TMC5160_STANDALONE
632
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
631
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
632
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
633
  */
633
  */
634
 //#define X_DRIVER_TYPE  A4988
634
 //#define X_DRIVER_TYPE  A4988
635
 //#define Y_DRIVER_TYPE  A4988
635
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/BQ/Hephestos/Configuration_adv.h Voir le fichier

1727
   //#define TMC_SW_SCK        -1
1727
   //#define TMC_SW_SCK        -1
1728
 
1728
 
1729
   /**
1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730
    * Software enable
1753
    * Software enable
1731
    *
1754
    *
1732
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same
1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/BQ/Hephestos_2/Configuration.h Voir le fichier

638
  * A4988 is assumed for unspecified drivers.
638
  * A4988 is assumed for unspecified drivers.
639
  *
639
  *
640
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
640
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
641
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
641
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
642
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
642
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
643
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
643
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
644
- *          TMC5160, TMC5160_STANDALONE
645
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
644
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
645
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
646
  */
646
  */
647
 //#define X_DRIVER_TYPE  A4988
647
 //#define X_DRIVER_TYPE  A4988
648
 //#define Y_DRIVER_TYPE  A4988
648
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/BQ/Hephestos_2/Configuration_adv.h Voir le fichier

1735
   //#define TMC_SW_SCK        -1
1735
   //#define TMC_SW_SCK        -1
1736
 
1736
 
1737
   /**
1737
   /**
1738
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1739
+   * Set the address using jumpers on pins MS1 and MS2.
1740
+   * Address | MS1  | MS2
1741
+   *       0 | LOW  | LOW
1742
+   *       1 | HIGH | LOW
1743
+   *       2 | LOW  | HIGH
1744
+   *       3 | HIGH | HIGH
1745
+   */
1746
+  #define  X_SLAVE_ADDRESS 0
1747
+  #define  Y_SLAVE_ADDRESS 0
1748
+  #define  Z_SLAVE_ADDRESS 0
1749
+  #define X2_SLAVE_ADDRESS 0
1750
+  #define Y2_SLAVE_ADDRESS 0
1751
+  #define Z2_SLAVE_ADDRESS 0
1752
+  #define Z3_SLAVE_ADDRESS 0
1753
+  #define E0_SLAVE_ADDRESS 0
1754
+  #define E1_SLAVE_ADDRESS 0
1755
+  #define E2_SLAVE_ADDRESS 0
1756
+  #define E3_SLAVE_ADDRESS 0
1757
+  #define E4_SLAVE_ADDRESS 0
1758
+  #define E5_SLAVE_ADDRESS 0
1759
+
1760
+  /**
1738
    * Software enable
1761
    * Software enable
1739
    *
1762
    *
1740
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same
1763
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/BQ/WITBOX/Configuration.h Voir le fichier

625
  * A4988 is assumed for unspecified drivers.
625
  * A4988 is assumed for unspecified drivers.
626
  *
626
  *
627
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
627
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
628
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
628
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
629
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
629
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
630
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
630
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
631
- *          TMC5160, TMC5160_STANDALONE
632
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
631
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
632
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
633
  */
633
  */
634
 //#define X_DRIVER_TYPE  A4988
634
 //#define X_DRIVER_TYPE  A4988
635
 //#define Y_DRIVER_TYPE  A4988
635
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/BQ/WITBOX/Configuration_adv.h Voir le fichier

1727
   //#define TMC_SW_SCK        -1
1727
   //#define TMC_SW_SCK        -1
1728
 
1728
 
1729
   /**
1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730
    * Software enable
1753
    * Software enable
1731
    *
1754
    *
1732
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same
1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/Cartesio/Configuration.h Voir le fichier

636
  * A4988 is assumed for unspecified drivers.
636
  * A4988 is assumed for unspecified drivers.
637
  *
637
  *
638
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
638
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
639
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
639
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
640
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
640
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
641
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
641
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
642
- *          TMC5160, TMC5160_STANDALONE
643
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
642
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
643
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
644
  */
644
  */
645
 //#define X_DRIVER_TYPE  A4988
645
 //#define X_DRIVER_TYPE  A4988
646
 //#define Y_DRIVER_TYPE  A4988
646
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/Cartesio/Configuration_adv.h Voir le fichier

1727
   //#define TMC_SW_SCK        -1
1727
   //#define TMC_SW_SCK        -1
1728
 
1728
 
1729
   /**
1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730
    * Software enable
1753
    * Software enable
1731
    *
1754
    *
1732
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same
1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/Creality/CR-10/Configuration.h Voir le fichier

647
  * A4988 is assumed for unspecified drivers.
647
  * A4988 is assumed for unspecified drivers.
648
  *
648
  *
649
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
649
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
650
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
650
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
651
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
651
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
652
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
652
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
653
- *          TMC5160, TMC5160_STANDALONE
654
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
653
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
654
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
655
  */
655
  */
656
 //#define X_DRIVER_TYPE  A4988
656
 //#define X_DRIVER_TYPE  A4988
657
 //#define Y_DRIVER_TYPE  A4988
657
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/Creality/CR-10/Configuration_adv.h Voir le fichier

1727
   //#define TMC_SW_SCK        -1
1727
   //#define TMC_SW_SCK        -1
1728
 
1728
 
1729
   /**
1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730
    * Software enable
1753
    * Software enable
1731
    *
1754
    *
1732
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same
1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/Creality/CR-10S/Configuration.h Voir le fichier

637
  * A4988 is assumed for unspecified drivers.
637
  * A4988 is assumed for unspecified drivers.
638
  *
638
  *
639
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
639
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
640
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
640
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
641
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
641
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
642
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
642
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
643
- *          TMC5160, TMC5160_STANDALONE
644
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
643
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
644
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
645
  */
645
  */
646
 //#define X_DRIVER_TYPE  A4988
646
 //#define X_DRIVER_TYPE  A4988
647
 //#define Y_DRIVER_TYPE  A4988
647
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/Creality/CR-10S/Configuration_adv.h Voir le fichier

1727
   //#define TMC_SW_SCK        -1
1727
   //#define TMC_SW_SCK        -1
1728
 
1728
 
1729
   /**
1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730
    * Software enable
1753
    * Software enable
1731
    *
1754
    *
1732
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same
1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/Creality/CR-10_5S/Configuration.h Voir le fichier

637
  * A4988 is assumed for unspecified drivers.
637
  * A4988 is assumed for unspecified drivers.
638
  *
638
  *
639
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
639
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
640
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
640
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
641
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
641
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
642
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
642
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
643
- *          TMC5160, TMC5160_STANDALONE
644
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
643
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
644
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
645
  */
645
  */
646
 //#define X_DRIVER_TYPE  A4988
646
 //#define X_DRIVER_TYPE  A4988
647
 //#define Y_DRIVER_TYPE  A4988
647
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/Creality/CR-10_5S/Configuration_adv.h Voir le fichier

1727
   //#define TMC_SW_SCK        -1
1727
   //#define TMC_SW_SCK        -1
1728
 
1728
 
1729
   /**
1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730
    * Software enable
1753
    * Software enable
1731
    *
1754
    *
1732
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same
1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/Creality/CR-10mini/Configuration.h Voir le fichier

656
  * A4988 is assumed for unspecified drivers.
656
  * A4988 is assumed for unspecified drivers.
657
  *
657
  *
658
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
658
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
659
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
659
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
660
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
660
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
661
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
661
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
662
- *          TMC5160, TMC5160_STANDALONE
663
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
662
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
663
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
664
  */
664
  */
665
 //#define X_DRIVER_TYPE  A4988
665
 //#define X_DRIVER_TYPE  A4988
666
 //#define Y_DRIVER_TYPE  A4988
666
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/Creality/CR-10mini/Configuration_adv.h Voir le fichier

1727
   //#define TMC_SW_SCK        -1
1727
   //#define TMC_SW_SCK        -1
1728
 
1728
 
1729
   /**
1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730
    * Software enable
1753
    * Software enable
1731
    *
1754
    *
1732
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same
1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/Creality/CR-8/Configuration.h Voir le fichier

647
  * A4988 is assumed for unspecified drivers.
647
  * A4988 is assumed for unspecified drivers.
648
  *
648
  *
649
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
649
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
650
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
650
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
651
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
651
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
652
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
652
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
653
- *          TMC5160, TMC5160_STANDALONE
654
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
653
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
654
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
655
  */
655
  */
656
 //#define X_DRIVER_TYPE  A4988
656
 //#define X_DRIVER_TYPE  A4988
657
 //#define Y_DRIVER_TYPE  A4988
657
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/Creality/CR-8/Configuration_adv.h Voir le fichier

1727
   //#define TMC_SW_SCK        -1
1727
   //#define TMC_SW_SCK        -1
1728
 
1728
 
1729
   /**
1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730
    * Software enable
1753
    * Software enable
1731
    *
1754
    *
1732
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same
1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/Creality/Ender-2/Configuration.h Voir le fichier

641
  * A4988 is assumed for unspecified drivers.
641
  * A4988 is assumed for unspecified drivers.
642
  *
642
  *
643
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
643
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
644
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
644
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
645
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
645
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
646
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
646
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
647
- *          TMC5160, TMC5160_STANDALONE
648
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
647
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
648
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
649
  */
649
  */
650
 //#define X_DRIVER_TYPE  A4988
650
 //#define X_DRIVER_TYPE  A4988
651
 //#define Y_DRIVER_TYPE  A4988
651
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/Creality/Ender-2/Configuration_adv.h Voir le fichier

1727
   //#define TMC_SW_SCK        -1
1727
   //#define TMC_SW_SCK        -1
1728
 
1728
 
1729
   /**
1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730
    * Software enable
1753
    * Software enable
1731
    *
1754
    *
1732
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same
1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/Creality/Ender-3/Configuration.h Voir le fichier

641
  * A4988 is assumed for unspecified drivers.
641
  * A4988 is assumed for unspecified drivers.
642
  *
642
  *
643
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
643
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
644
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
644
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
645
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
645
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
646
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
646
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
647
- *          TMC5160, TMC5160_STANDALONE
648
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
647
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
648
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
649
  */
649
  */
650
 //#define X_DRIVER_TYPE  A4988
650
 //#define X_DRIVER_TYPE  A4988
651
 //#define Y_DRIVER_TYPE  A4988
651
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/Creality/Ender-3/Configuration_adv.h Voir le fichier

1727
   //#define TMC_SW_SCK        -1
1727
   //#define TMC_SW_SCK        -1
1728
 
1728
 
1729
   /**
1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730
    * Software enable
1753
    * Software enable
1731
    *
1754
    *
1732
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same
1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/Creality/Ender-4/Configuration.h Voir le fichier

647
  * A4988 is assumed for unspecified drivers.
647
  * A4988 is assumed for unspecified drivers.
648
  *
648
  *
649
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
649
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
650
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
650
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
651
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
651
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
652
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
652
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
653
- *          TMC5160, TMC5160_STANDALONE
654
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
653
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
654
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
655
  */
655
  */
656
 //#define X_DRIVER_TYPE  A4988
656
 //#define X_DRIVER_TYPE  A4988
657
 //#define Y_DRIVER_TYPE  A4988
657
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/Creality/Ender-4/Configuration_adv.h Voir le fichier

1727
   //#define TMC_SW_SCK        -1
1727
   //#define TMC_SW_SCK        -1
1728
 
1728
 
1729
   /**
1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730
    * Software enable
1753
    * Software enable
1731
    *
1754
    *
1732
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same
1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/Dagoma/Disco Ultimate/Configuration.h Voir le fichier

637
  * A4988 is assumed for unspecified drivers.
637
  * A4988 is assumed for unspecified drivers.
638
  *
638
  *
639
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
639
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
640
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
640
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
641
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
641
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
642
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
642
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
643
- *          TMC5160, TMC5160_STANDALONE
644
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
643
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
644
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
645
  */
645
  */
646
 #define X_DRIVER_TYPE  A5984
646
 #define X_DRIVER_TYPE  A5984
647
 #define Y_DRIVER_TYPE  A5984
647
 #define Y_DRIVER_TYPE  A5984

+ 23
- 0
config/examples/Dagoma/Disco Ultimate/Configuration_adv.h Voir le fichier

1727
   //#define TMC_SW_SCK        -1
1727
   //#define TMC_SW_SCK        -1
1728
 
1728
 
1729
   /**
1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730
    * Software enable
1753
    * Software enable
1731
    *
1754
    *
1732
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same
1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/EVNOVO (Artillery)/Sidewinder X1/Configuration.h Voir le fichier

642
  * A4988 is assumed for unspecified drivers.
642
  * A4988 is assumed for unspecified drivers.
643
  *
643
  *
644
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
644
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
645
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
645
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
646
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
646
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
647
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
647
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
648
- *          TMC5160, TMC5160_STANDALONE
649
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
648
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
649
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
650
  */
650
  */
651
 #define X_DRIVER_TYPE  TMC2100
651
 #define X_DRIVER_TYPE  TMC2100
652
 #define Y_DRIVER_TYPE  TMC2100
652
 #define Y_DRIVER_TYPE  TMC2100

+ 23
- 0
config/examples/EVNOVO (Artillery)/Sidewinder X1/Configuration_adv.h Voir le fichier

1727
   //#define TMC_SW_SCK        -1
1727
   //#define TMC_SW_SCK        -1
1728
 
1728
 
1729
   /**
1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730
    * Software enable
1753
    * Software enable
1731
    *
1754
    *
1732
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same
1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/Einstart-S/Configuration.h Voir le fichier

647
  * A4988 is assumed for unspecified drivers.
647
  * A4988 is assumed for unspecified drivers.
648
  *
648
  *
649
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
649
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
650
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
650
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
651
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
651
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
652
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
652
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
653
- *          TMC5160, TMC5160_STANDALONE
654
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
653
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
654
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
655
  */
655
  */
656
 //#define X_DRIVER_TYPE  A4988
656
 //#define X_DRIVER_TYPE  A4988
657
 //#define Y_DRIVER_TYPE  A4988
657
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/Einstart-S/Configuration_adv.h Voir le fichier

1727
   //#define TMC_SW_SCK        -1
1727
   //#define TMC_SW_SCK        -1
1728
 
1728
 
1729
   /**
1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730
    * Software enable
1753
    * Software enable
1731
    *
1754
    *
1732
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same
1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/Felix/Configuration.h Voir le fichier

618
  * A4988 is assumed for unspecified drivers.
618
  * A4988 is assumed for unspecified drivers.
619
  *
619
  *
620
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
620
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
621
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
621
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
622
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
622
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
623
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
623
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
624
- *          TMC5160, TMC5160_STANDALONE
625
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
624
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
625
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
626
  */
626
  */
627
 //#define X_DRIVER_TYPE  A4988
627
 //#define X_DRIVER_TYPE  A4988
628
 //#define Y_DRIVER_TYPE  A4988
628
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/Felix/Configuration_adv.h Voir le fichier

1727
   //#define TMC_SW_SCK        -1
1727
   //#define TMC_SW_SCK        -1
1728
 
1728
 
1729
   /**
1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730
    * Software enable
1753
    * Software enable
1731
    *
1754
    *
1732
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same
1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/Felix/DUAL/Configuration.h Voir le fichier

618
  * A4988 is assumed for unspecified drivers.
618
  * A4988 is assumed for unspecified drivers.
619
  *
619
  *
620
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
620
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
621
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
621
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
622
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
622
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
623
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
623
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
624
- *          TMC5160, TMC5160_STANDALONE
625
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
624
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
625
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
626
  */
626
  */
627
 //#define X_DRIVER_TYPE  A4988
627
 //#define X_DRIVER_TYPE  A4988
628
 //#define Y_DRIVER_TYPE  A4988
628
 //#define Y_DRIVER_TYPE  A4988

+ 4
- 4
config/examples/FlashForge/CreatorPro/Configuration.h Voir le fichier

627
  * A4988 is assumed for unspecified drivers.
627
  * A4988 is assumed for unspecified drivers.
628
  *
628
  *
629
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
629
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
630
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
630
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
631
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
631
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
632
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
632
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
633
- *          TMC5160, TMC5160_STANDALONE
634
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
633
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
634
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
635
  */
635
  */
636
 //#define X_DRIVER_TYPE  A4988
636
 //#define X_DRIVER_TYPE  A4988
637
 //#define Y_DRIVER_TYPE  A4988
637
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/FlashForge/CreatorPro/Configuration_adv.h Voir le fichier

1726
   //#define TMC_SW_SCK        -1
1726
   //#define TMC_SW_SCK        -1
1727
 
1727
 
1728
   /**
1728
   /**
1729
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1730
+   * Set the address using jumpers on pins MS1 and MS2.
1731
+   * Address | MS1  | MS2
1732
+   *       0 | LOW  | LOW
1733
+   *       1 | HIGH | LOW
1734
+   *       2 | LOW  | HIGH
1735
+   *       3 | HIGH | HIGH
1736
+   */
1737
+  #define  X_SLAVE_ADDRESS 0
1738
+  #define  Y_SLAVE_ADDRESS 0
1739
+  #define  Z_SLAVE_ADDRESS 0
1740
+  #define X2_SLAVE_ADDRESS 0
1741
+  #define Y2_SLAVE_ADDRESS 0
1742
+  #define Z2_SLAVE_ADDRESS 0
1743
+  #define Z3_SLAVE_ADDRESS 0
1744
+  #define E0_SLAVE_ADDRESS 0
1745
+  #define E1_SLAVE_ADDRESS 0
1746
+  #define E2_SLAVE_ADDRESS 0
1747
+  #define E3_SLAVE_ADDRESS 0
1748
+  #define E4_SLAVE_ADDRESS 0
1749
+  #define E5_SLAVE_ADDRESS 0
1750
+
1751
+  /**
1729
    * Software enable
1752
    * Software enable
1730
    *
1753
    *
1731
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same
1754
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/FolgerTech/i3-2020/Configuration.h Voir le fichier

642
  * A4988 is assumed for unspecified drivers.
642
  * A4988 is assumed for unspecified drivers.
643
  *
643
  *
644
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
644
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
645
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
645
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
646
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
646
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
647
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
647
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
648
- *          TMC5160, TMC5160_STANDALONE
649
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
648
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
649
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
650
  */
650
  */
651
 //#define X_DRIVER_TYPE  A4988
651
 //#define X_DRIVER_TYPE  A4988
652
 //#define Y_DRIVER_TYPE  A4988
652
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/FolgerTech/i3-2020/Configuration_adv.h Voir le fichier

1727
   //#define TMC_SW_SCK        -1
1727
   //#define TMC_SW_SCK        -1
1728
 
1728
 
1729
   /**
1729
   /**
1730
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1731
+   * Set the address using jumpers on pins MS1 and MS2.
1732
+   * Address | MS1  | MS2
1733
+   *       0 | LOW  | LOW
1734
+   *       1 | HIGH | LOW
1735
+   *       2 | LOW  | HIGH
1736
+   *       3 | HIGH | HIGH
1737
+   */
1738
+  #define  X_SLAVE_ADDRESS 0
1739
+  #define  Y_SLAVE_ADDRESS 0
1740
+  #define  Z_SLAVE_ADDRESS 0
1741
+  #define X2_SLAVE_ADDRESS 0
1742
+  #define Y2_SLAVE_ADDRESS 0
1743
+  #define Z2_SLAVE_ADDRESS 0
1744
+  #define Z3_SLAVE_ADDRESS 0
1745
+  #define E0_SLAVE_ADDRESS 0
1746
+  #define E1_SLAVE_ADDRESS 0
1747
+  #define E2_SLAVE_ADDRESS 0
1748
+  #define E3_SLAVE_ADDRESS 0
1749
+  #define E4_SLAVE_ADDRESS 0
1750
+  #define E5_SLAVE_ADDRESS 0
1751
+
1752
+  /**
1730
    * Software enable
1753
    * Software enable
1731
    *
1754
    *
1732
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same
1755
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/Formbot/Raptor/Configuration.h Voir le fichier

689
  * A4988 is assumed for unspecified drivers.
689
  * A4988 is assumed for unspecified drivers.
690
  *
690
  *
691
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
691
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
692
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
692
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
693
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
693
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
694
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
694
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
695
- *          TMC5160, TMC5160_STANDALONE
696
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
695
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
696
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
697
  */
697
  */
698
 //#define X_DRIVER_TYPE  A4988
698
 //#define X_DRIVER_TYPE  A4988
699
 //#define Y_DRIVER_TYPE  A4988
699
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/Formbot/Raptor/Configuration_adv.h Voir le fichier

1729
   //#define TMC_SW_SCK        -1
1729
   //#define TMC_SW_SCK        -1
1730
 
1730
 
1731
   /**
1731
   /**
1732
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1733
+   * Set the address using jumpers on pins MS1 and MS2.
1734
+   * Address | MS1  | MS2
1735
+   *       0 | LOW  | LOW
1736
+   *       1 | HIGH | LOW
1737
+   *       2 | LOW  | HIGH
1738
+   *       3 | HIGH | HIGH
1739
+   */
1740
+  #define  X_SLAVE_ADDRESS 0
1741
+  #define  Y_SLAVE_ADDRESS 0
1742
+  #define  Z_SLAVE_ADDRESS 0
1743
+  #define X2_SLAVE_ADDRESS 0
1744
+  #define Y2_SLAVE_ADDRESS 0
1745
+  #define Z2_SLAVE_ADDRESS 0
1746
+  #define Z3_SLAVE_ADDRESS 0
1747
+  #define E0_SLAVE_ADDRESS 0
1748
+  #define E1_SLAVE_ADDRESS 0
1749
+  #define E2_SLAVE_ADDRESS 0
1750
+  #define E3_SLAVE_ADDRESS 0
1751
+  #define E4_SLAVE_ADDRESS 0
1752
+  #define E5_SLAVE_ADDRESS 0
1753
+
1754
+  /**
1732
    * Software enable
1755
    * Software enable
1733
    *
1756
    *
1734
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same
1757
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/Formbot/T_Rex_2+/Configuration.h Voir le fichier

666
  * A4988 is assumed for unspecified drivers.
666
  * A4988 is assumed for unspecified drivers.
667
  *
667
  *
668
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
668
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
669
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
669
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
670
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
670
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
671
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
671
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
672
- *          TMC5160, TMC5160_STANDALONE
673
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
672
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
673
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
674
  */
674
  */
675
 //#define X_DRIVER_TYPE  A4988
675
 //#define X_DRIVER_TYPE  A4988
676
 //#define Y_DRIVER_TYPE  A4988
676
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/Formbot/T_Rex_2+/Configuration_adv.h Voir le fichier

1731
   //#define TMC_SW_SCK        -1
1731
   //#define TMC_SW_SCK        -1
1732
 
1732
 
1733
   /**
1733
   /**
1734
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1735
+   * Set the address using jumpers on pins MS1 and MS2.
1736
+   * Address | MS1  | MS2
1737
+   *       0 | LOW  | LOW
1738
+   *       1 | HIGH | LOW
1739
+   *       2 | LOW  | HIGH
1740
+   *       3 | HIGH | HIGH
1741
+   */
1742
+  #define  X_SLAVE_ADDRESS 0
1743
+  #define  Y_SLAVE_ADDRESS 0
1744
+  #define  Z_SLAVE_ADDRESS 0
1745
+  #define X2_SLAVE_ADDRESS 0
1746
+  #define Y2_SLAVE_ADDRESS 0
1747
+  #define Z2_SLAVE_ADDRESS 0
1748
+  #define Z3_SLAVE_ADDRESS 0
1749
+  #define E0_SLAVE_ADDRESS 0
1750
+  #define E1_SLAVE_ADDRESS 0
1751
+  #define E2_SLAVE_ADDRESS 0
1752
+  #define E3_SLAVE_ADDRESS 0
1753
+  #define E4_SLAVE_ADDRESS 0
1754
+  #define E5_SLAVE_ADDRESS 0
1755
+
1756
+  /**
1734
    * Software enable
1757
    * Software enable
1735
    *
1758
    *
1736
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same
1759
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/Formbot/T_Rex_3/Configuration.h Voir le fichier

646
  * A4988 is assumed for unspecified drivers.
646
  * A4988 is assumed for unspecified drivers.
647
  *
647
  *
648
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
648
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
649
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
649
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
650
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
650
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
651
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
651
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
652
- *          TMC5160, TMC5160_STANDALONE
653
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
652
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
653
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
654
  */
654
  */
655
 //#define X_DRIVER_TYPE  A4988
655
 //#define X_DRIVER_TYPE  A4988
656
 //#define Y_DRIVER_TYPE  A4988
656
 //#define Y_DRIVER_TYPE  A4988

+ 23
- 0
config/examples/Formbot/T_Rex_3/Configuration_adv.h Voir le fichier

1731
   //#define TMC_SW_SCK        -1
1731
   //#define TMC_SW_SCK        -1
1732
 
1732
 
1733
   /**
1733
   /**
1734
+   * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
1735
+   * Set the address using jumpers on pins MS1 and MS2.
1736
+   * Address | MS1  | MS2
1737
+   *       0 | LOW  | LOW
1738
+   *       1 | HIGH | LOW
1739
+   *       2 | LOW  | HIGH
1740
+   *       3 | HIGH | HIGH
1741
+   */
1742
+  #define  X_SLAVE_ADDRESS 0
1743
+  #define  Y_SLAVE_ADDRESS 0
1744
+  #define  Z_SLAVE_ADDRESS 0
1745
+  #define X2_SLAVE_ADDRESS 0
1746
+  #define Y2_SLAVE_ADDRESS 0
1747
+  #define Z2_SLAVE_ADDRESS 0
1748
+  #define Z3_SLAVE_ADDRESS 0
1749
+  #define E0_SLAVE_ADDRESS 0
1750
+  #define E1_SLAVE_ADDRESS 0
1751
+  #define E2_SLAVE_ADDRESS 0
1752
+  #define E3_SLAVE_ADDRESS 0
1753
+  #define E4_SLAVE_ADDRESS 0
1754
+  #define E5_SLAVE_ADDRESS 0
1755
+
1756
+  /**
1734
    * Software enable
1757
    * Software enable
1735
    *
1758
    *
1736
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same
1759
    * Use for drivers that do not use a dedicated enable pin, but rather handle the same

+ 4
- 4
config/examples/Geeetech/A10/Configuration.h Voir le fichier

620
  * A4988 is assumed for unspecified drivers.
620
  * A4988 is assumed for unspecified drivers.
621
  *
621
  *
622
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
622
  * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
623
- *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
623
+ *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
624
+ *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
624
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
625
  *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
625
- *          TMC2160, TMC2160_STANDALONE, TMC5130, TMC5130_STANDALONE,
626
- *          TMC5160, TMC5160_STANDALONE
627
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
626
+ *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
627
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
628
  */
628
  */
629
 //#define X_DRIVER_TYPE  A4988
629
 //#define X_DRIVER_TYPE  A4988
630
 //#define Y_DRIVER_TYPE  A4988
630
 //#define Y_DRIVER_TYPE  A4988

+ 0
- 0
config/examples/Geeetech/A10/Configuration_adv.h Voir le fichier


Certains fichiers n'ont pas été affichés car il y a eu trop de fichiers modifiés dans ce diff

Chargement…
Annuler
Enregistrer