Browse Source

Simplify TMC sanity-checks

Scott Lahteine 6 years ago
parent
commit
3eb9838dca
2 changed files with 46 additions and 42 deletions
  1. 2
    2
      Marlin/src/gcode/feature/trinamic/M911-M915.cpp
  2. 44
    40
      Marlin/src/inc/SanityCheck.h

+ 2
- 2
Marlin/src/gcode/feature/trinamic/M911-M915.cpp View File

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, TMC2208) && PIN_EXISTS(ST##_SERIAL_RX)))
35
+  #define M91x_USE(ST) (AXIS_DRIVER_TYPE(ST, TMC2130) || AXIS_DRIVER_TYPE(ST, TMC2208))
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 or serial-connected TMC2208."
44
+    #error "MONITOR_DRIVER_STATUS requires at least one TMC2130 or TMC2208."
45
   #endif
45
   #endif
46
 
46
 
47
   /**
47
   /**

+ 44
- 40
Marlin/src/inc/SanityCheck.h View File

1704
 /**
1704
 /**
1705
  * Check existing CS pins against enabled TMC SPI drivers.
1705
  * Check existing CS pins against enabled TMC SPI drivers.
1706
  */
1706
  */
1707
-#if AXIS_DRIVER_TYPE(X, TMC2130) && !PIN_EXISTS(X_CS)
1707
+#define INVALID_TMC2130(ST) (AXIS_DRIVER_TYPE(ST, TMC2130) && !PIN_EXISTS(ST##_CS))
1708
+#if INVALID_TMC2130(X)
1708
   #error "TMC2130 on X requires X_CS_PIN."
1709
   #error "TMC2130 on X requires X_CS_PIN."
1709
-#elif AXIS_DRIVER_TYPE(X2, TMC2130) && !PIN_EXISTS(X2_CS)
1710
+#elif INVALID_TMC2130(X2)
1710
   #error "TMC2130 on X2 requires X2_CS_PIN."
1711
   #error "TMC2130 on X2 requires X2_CS_PIN."
1711
-#elif AXIS_DRIVER_TYPE(Y, TMC2130) && !PIN_EXISTS(Y_CS)
1712
+#elif INVALID_TMC2130(Y)
1712
   #error "TMC2130 on Y requires Y_CS_PIN."
1713
   #error "TMC2130 on Y requires Y_CS_PIN."
1713
-#elif AXIS_DRIVER_TYPE(Y2, TMC2130) && !PIN_EXISTS(Y2_CS)
1714
+#elif INVALID_TMC2130(Y2)
1714
   #error "TMC2130 on Y2 requires Y2_CS_PIN."
1715
   #error "TMC2130 on Y2 requires Y2_CS_PIN."
1715
-#elif AXIS_DRIVER_TYPE(Z, TMC2130) && !PIN_EXISTS(Z_CS)
1716
+#elif INVALID_TMC2130(Z)
1716
   #error "TMC2130 on Z requires Z_CS_PIN."
1717
   #error "TMC2130 on Z requires Z_CS_PIN."
1717
-#elif AXIS_DRIVER_TYPE(Z2, TMC2130) && !PIN_EXISTS(Z2_CS)
1718
+#elif INVALID_TMC2130(Z2)
1718
   #error "TMC2130 on Z2 requires Z2_CS_PIN."
1719
   #error "TMC2130 on Z2 requires Z2_CS_PIN."
1719
-#elif AXIS_DRIVER_TYPE(Z3, TMC2130) && !PIN_EXISTS(Z3_CS)
1720
+#elif INVALID_TMC2130(Z3)
1720
   #error "TMC2130 on Z3 requires Z3_CS_PIN."
1721
   #error "TMC2130 on Z3 requires Z3_CS_PIN."
1721
-#elif AXIS_DRIVER_TYPE(E0, TMC2130) && !PIN_EXISTS(E0_CS)
1722
+#elif INVALID_TMC2130(E0)
1722
   #error "TMC2130 on E0 requires E0_CS_PIN."
1723
   #error "TMC2130 on E0 requires E0_CS_PIN."
1723
-#elif AXIS_DRIVER_TYPE(E1, TMC2130) && !PIN_EXISTS(E1_CS)
1724
+#elif INVALID_TMC2130(E1)
1724
   #error "TMC2130 on E1 requires E1_CS_PIN."
1725
   #error "TMC2130 on E1 requires E1_CS_PIN."
1725
-#elif AXIS_DRIVER_TYPE(E2, TMC2130) && !PIN_EXISTS(E2_CS)
1726
+#elif INVALID_TMC2130(E2)
1726
   #error "TMC2130 on E2 requires E2_CS_PIN."
1727
   #error "TMC2130 on E2 requires E2_CS_PIN."
1727
-#elif AXIS_DRIVER_TYPE(E3, TMC2130) && !PIN_EXISTS(E3_CS)
1728
+#elif INVALID_TMC2130(E3)
1728
   #error "TMC2130 on E3 requires E3_CS_PIN."
1729
   #error "TMC2130 on E3 requires E3_CS_PIN."
1729
-#elif AXIS_DRIVER_TYPE(E4, TMC2130) && !PIN_EXISTS(E4_CS)
1730
+#elif INVALID_TMC2130(E4)
1730
   #error "TMC2130 on E4 requires E4_CS_PIN."
1731
   #error "TMC2130 on E4 requires E4_CS_PIN."
1731
-#elif AXIS_DRIVER_TYPE(E5, TMC2130) && !PIN_EXISTS(E5_CS)
1732
+#elif INVALID_TMC2130(E5)
1732
   #error "TMC2130 on E5 requires E5_CS_PIN."
1733
   #error "TMC2130 on E5 requires E5_CS_PIN."
1733
 #endif
1734
 #endif
1735
+#undef INVALID_TMC2130
1734
 
1736
 
1735
 /**
1737
 /**
1736
  * Check existing RX/TX pins against enable TMC UART drivers.
1738
  * Check existing RX/TX pins against enable TMC UART drivers.
1737
  */
1739
  */
1738
-#if AXIS_DRIVER_TYPE(X, TMC2208) && !(defined(X_HARDWARE_SERIAL) || (PIN_EXISTS(X_SERIAL_RX) && PIN_EXISTS(X_SERIAL_TX)))
1739
-  #error "TMC2208 on X requires X_HARDWARE_SERIAL or both X_SERIAL_RX_PIN and X_SERIAL_TX_PIN."
1740
-#elif AXIS_DRIVER_TYPE(X2, TMC2208) && !(defined(X2_HARDWARE_SERIAL) || (PIN_EXISTS(X2_SERIAL_RX) && PIN_EXISTS(X2_SERIAL_TX)))
1741
-  #error "TMC2208 on X2 requires X2_HARDWARE_SERIAL or both X2_SERIAL_RX_PIN and X2_SERIAL_TX_PIN."
1742
-#elif AXIS_DRIVER_TYPE(Y, TMC2208) && !(defined(Y_HARDWARE_SERIAL) || (PIN_EXISTS(Y_SERIAL_RX) && PIN_EXISTS(Y_SERIAL_TX)))
1743
-  #error "TMC2208 on Y requires Y_HARDWARE_SERIAL or both Y_SERIAL_RX_PIN and Y_SERIAL_TX_PIN."
1744
-#elif AXIS_DRIVER_TYPE(Y2, TMC2208) && !(defined(Y2_HARDWARE_SERIAL) || (PIN_EXISTS(Y2_SERIAL_RX) && PIN_EXISTS(Y2_SERIAL_TX)))
1745
-  #error "TMC2208 on Y2 requires Y2_HARDWARE_SERIAL or both Y2_SERIAL_RX_PIN and Y2_SERIAL_TX_PIN."
1746
-#elif AXIS_DRIVER_TYPE(Z, TMC2208) && !(defined(Z_HARDWARE_SERIAL) || (PIN_EXISTS(Z_SERIAL_RX) && PIN_EXISTS(Z_SERIAL_TX)))
1747
-  #error "TMC2208 on Z requires Z_HARDWARE_SERIAL or both Z_SERIAL_RX_PIN and Z_SERIAL_TX_PIN."
1748
-#elif AXIS_DRIVER_TYPE(Z2, TMC2208) && !(defined(Z2_HARDWARE_SERIAL) || (PIN_EXISTS(Z2_SERIAL_RX) && PIN_EXISTS(Z2_SERIAL_TX)))
1749
-  #error "TMC2208 on Z2 requires Z2_HARDWARE_SERIAL or both Z2_SERIAL_RX_PIN and Z2_SERIAL_TX_PIN."
1750
-#elif AXIS_DRIVER_TYPE(Z3, TMC2208) && !(defined(Z3_HARDWARE_SERIAL) || (PIN_EXISTS(Z3_SERIAL_RX) && PIN_EXISTS(Z3_SERIAL_TX)))
1751
-  #error "TMC2208 on Z3 requires Z3_HARDWARE_SERIAL or both Z3_SERIAL_RX_PIN and Z3_SERIAL_TX_PIN."
1752
-#elif AXIS_DRIVER_TYPE(E0, TMC2208) && !(defined(E0_HARDWARE_SERIAL) || (PIN_EXISTS(E0_SERIAL_RX) && PIN_EXISTS(E0_SERIAL_TX)))
1753
-  #error "TMC2208 on E0 requires E0_HARDWARE_SERIAL or both E0_SERIAL_RX_PIN and E0_SERIAL_TX_PIN."
1754
-#elif AXIS_DRIVER_TYPE(E1, TMC2208) && !(defined(E1_HARDWARE_SERIAL) || (PIN_EXISTS(E1_SERIAL_RX) && PIN_EXISTS(E1_SERIAL_TX)))
1755
-  #error "TMC2208 on E1 requires E1_HARDWARE_SERIAL or both E1_SERIAL_RX_PIN and E1_SERIAL_TX_PIN."
1756
-#elif AXIS_DRIVER_TYPE(E2, TMC2208) && !(defined(E2_HARDWARE_SERIAL) || (PIN_EXISTS(E2_SERIAL_RX) && PIN_EXISTS(E2_SERIAL_TX)))
1757
-  #error "TMC2208 on E2 requires E2_HARDWARE_SERIAL or both E2_SERIAL_RX_PIN and E2_SERIAL_TX_PIN."
1758
-#elif AXIS_DRIVER_TYPE(E3, TMC2208) && !(defined(E3_HARDWARE_SERIAL) || (PIN_EXISTS(E3_SERIAL_RX) && PIN_EXISTS(E3_SERIAL_TX)))
1759
-  #error "TMC2208 on E3 requires E3_HARDWARE_SERIAL or both E3_SERIAL_RX_PIN and E3_SERIAL_TX_PIN."
1760
-#elif AXIS_DRIVER_TYPE(E4, TMC2208) && !(defined(E4_HARDWARE_SERIAL) || (PIN_EXISTS(E4_SERIAL_RX) && PIN_EXISTS(E4_SERIAL_TX)))
1761
-  #error "TMC2208 on E4 requires E4_HARDWARE_SERIAL or both E4_SERIAL_RX_PIN and E4_SERIAL_TX_PIN."
1762
-#elif AXIS_DRIVER_TYPE(E5, TMC2208) && !(defined(E5_HARDWARE_SERIAL) || (PIN_EXISTS(E5_SERIAL_RX) && PIN_EXISTS(E5_SERIAL_TX)))
1763
-  #error "TMC2208 on E5 requires E5_HARDWARE_SERIAL or both E5_SERIAL_RX_PIN and E5_SERIAL_TX_PIN."
1764
-#endif
1740
+#define INVALID_TMC2208(ST) (AXIS_DRIVER_TYPE(ST, TMC2208) && !(defined(ST##_HARDWARE_SERIAL) || (PIN_EXISTS(ST##_SERIAL_RX) && PIN_EXISTS(ST##_SERIAL_TX))))
1741
+#if INVALID_TMC2208(X)
1742
+  #error "TMC2208 on X requires X_HARDWARE_SERIAL or X_SERIAL_(RX|TX)_PIN."
1743
+#elif INVALID_TMC2208(X2)
1744
+  #error "TMC2208 on X2 requires X2_HARDWARE_SERIAL or X2_SERIAL_(RX|TX)_PIN."
1745
+#elif INVALID_TMC2208(Y)
1746
+  #error "TMC2208 on Y requires Y_HARDWARE_SERIAL or Y_SERIAL_(RX|TX)_PIN."
1747
+#elif INVALID_TMC2208(Y2)
1748
+  #error "TMC2208 on Y2 requires Y2_HARDWARE_SERIAL or Y2_SERIAL_(RX|TX)_PIN."
1749
+#elif INVALID_TMC2208(Z)
1750
+  #error "TMC2208 on Z requires Z_HARDWARE_SERIAL or Z_SERIAL_(RX|TX)_PIN."
1751
+#elif INVALID_TMC2208(Z2)
1752
+  #error "TMC2208 on Z2 requires Z2_HARDWARE_SERIAL or Z2_SERIAL_(RX|TX)_PIN."
1753
+#elif INVALID_TMC2208(Z3)
1754
+  #error "TMC2208 on Z3 requires Z3_HARDWARE_SERIAL or Z3_SERIAL_(RX|TX)_PIN."
1755
+#elif INVALID_TMC2208(E0)
1756
+  #error "TMC2208 on E0 requires E0_HARDWARE_SERIAL or E0_SERIAL_(RX|TX)_PIN."
1757
+#elif INVALID_TMC2208(E1)
1758
+  #error "TMC2208 on E1 requires E1_HARDWARE_SERIAL or E1_SERIAL_(RX|TX)_PIN."
1759
+#elif INVALID_TMC2208(E2)
1760
+  #error "TMC2208 on E2 requires E2_HARDWARE_SERIAL or E2_SERIAL_(RX|TX)_PIN."
1761
+#elif INVALID_TMC2208(E3)
1762
+  #error "TMC2208 on E3 requires E3_HARDWARE_SERIAL or E3_SERIAL_(RX|TX)_PIN."
1763
+#elif INVALID_TMC2208(E4)
1764
+  #error "TMC2208 on E4 requires E4_HARDWARE_SERIAL or E4_SERIAL_(RX|TX)_PIN."
1765
+#elif INVALID_TMC2208(E5)
1766
+  #error "TMC2208 on E5 requires E5_HARDWARE_SERIAL or E5_SERIAL_(RX|TX)_PIN."
1767
+#endif
1768
+#undef INVALID_TMC2208
1765
 
1769
 
1766
 /**
1770
 /**
1767
  * TMC2208 software UART and ENDSTOP_INTERRUPTS both use pin change interrupts (PCI)
1771
  * TMC2208 software UART and ENDSTOP_INTERRUPTS both use pin change interrupts (PCI)

Loading…
Cancel
Save