소스 검색

Add TMC micro-steps sanity check (#17044)

Co-authored-by: Scott Lahteine <github@thinkyhead.com>
Jason Smith 4 년 전
부모
커밋
66334820ca
No account linked to committer's email address
1개의 변경된 파일41개의 추가작업 그리고 0개의 파일을 삭제
  1. 41
    0
      Marlin/src/inc/SanityCheck.h

+ 41
- 0
Marlin/src/inc/SanityCheck.h 파일 보기

@@ -2150,6 +2150,47 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
2150 2150
 #endif
2151 2151
 #undef INVALID_TMC_ADDRESS
2152 2152
 
2153
+#define _TMC_MICROSTEP_IS_VALID(MS) (MS == 0 || MS == 2 || MS == 4 || MS == 8 || MS == 16 || MS == 32 || MS == 64 || MS == 128 || MS == 256)
2154
+#define TMC_MICROSTEP_IS_VALID(M) (!AXIS_IS_TMC(M) || _TMC_MICROSTEP_IS_VALID(M##_MICROSTEPS))
2155
+#define INVALID_TMC_MS(ST) static_assert(0, "Invalid " STRINGIFY(ST) "_MICROSTEPS. Valid values are 0, 2, 4, 8, 16, 32, 64, 128, and 256.")
2156
+
2157
+#if !TMC_MICROSTEP_IS_VALID(X)
2158
+  INVALID_TMC_MS(X);
2159
+#elif !TMC_MICROSTEP_IS_VALID(Y)
2160
+  INVALID_TMC_MS(Y)
2161
+#elif !TMC_MICROSTEP_IS_VALID(Z)
2162
+  INVALID_TMC_MS(Z)
2163
+#elif !TMC_MICROSTEP_IS_VALID(X2)
2164
+  INVALID_TMC_MS(X2);
2165
+#elif !TMC_MICROSTEP_IS_VALID(Y2)
2166
+  INVALID_TMC_MS(Y2)
2167
+#elif !TMC_MICROSTEP_IS_VALID(Z2)
2168
+  INVALID_TMC_MS(Z2)
2169
+#elif !TMC_MICROSTEP_IS_VALID(Z3)
2170
+  INVALID_TMC_MS(Z3)
2171
+#elif !TMC_MICROSTEP_IS_VALID(Z4)
2172
+  INVALID_TMC_MS(Z4)
2173
+#elif !TMC_MICROSTEP_IS_VALID(E0)
2174
+  INVALID_TMC_MS(E0)
2175
+#elif !TMC_MICROSTEP_IS_VALID(E1)
2176
+  INVALID_TMC_MS(E1)
2177
+#elif !TMC_MICROSTEP_IS_VALID(E2)
2178
+  INVALID_TMC_MS(E2)
2179
+#elif !TMC_MICROSTEP_IS_VALID(E3)
2180
+  INVALID_TMC_MS(E3)
2181
+#elif !TMC_MICROSTEP_IS_VALID(E4)
2182
+  INVALID_TMC_MS(E4)
2183
+#elif !TMC_MICROSTEP_IS_VALID(E5)
2184
+  INVALID_TMC_MS(E5)
2185
+#elif !TMC_MICROSTEP_IS_VALID(E6)
2186
+  INVALID_TMC_MS(E6)
2187
+#elif !TMC_MICROSTEP_IS_VALID(E7)
2188
+  INVALID_TMC_MS(E7)
2189
+#endif
2190
+#undef INVALID_TMC_MS
2191
+#undef TMC_MICROSTEP_IS_VALID
2192
+#undef _TMC_MICROSTEP_IS_VALID
2193
+
2153 2194
 #if ENABLED(DELTA) && (ENABLED(STEALTHCHOP_XY) != ENABLED(STEALTHCHOP_Z))
2154 2195
   #error "STEALTHCHOP_XY and STEALTHCHOP_Z must be the same on DELTA."
2155 2196
 #endif

Loading…
취소
저장