From 607d094cd51fad02a4c4b73fca4d414471465602 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 13 Apr 2023 20:33:24 -0500 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A7=20Edge=20Stepping=20sanity-check?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/inc/Conditionals_adv.h | 3 +++ Marlin/src/inc/SanityCheck.h | 34 ++++++++++++++++++++++++++++ Marlin/src/module/stepper/trinamic.h | 2 -- 3 files changed, 37 insertions(+), 2 deletions(-) diff --git a/Marlin/src/inc/Conditionals_adv.h b/Marlin/src/inc/Conditionals_adv.h index edee5e9bd245..3a3daa84acf4 100644 --- a/Marlin/src/inc/Conditionals_adv.h +++ b/Marlin/src/inc/Conditionals_adv.h @@ -1133,6 +1133,9 @@ #endif #endif +// Test for edge stepping on any axis +#define AXIS_HAS_DEDGE(A) (ENABLED(EDGE_STEPPING) && AXIS_IS_TMC(A)) + #if ENABLED(DIRECT_STEPPING) #ifndef STEPPER_PAGES #define STEPPER_PAGES 16 diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 84118729a2de..30b5963e4429 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -4313,6 +4313,40 @@ static_assert(_PLUS_TEST(4), "HOMING_FEEDRATE_MM_M values must be positive."); #error "MONITOR_DRIVER_STATUS and SDSUPPORT cannot be used together on boards with shared SPI." #endif +// Although it just toggles STEP, EDGE_STEPPING requires HIGH state for logic +#if ENABLED(EDGE_STEPPING) + #if AXIS_HAS_DEDGE(X) && STEP_STATE_X != HIGH + #error "STEP_STATE_X must be HIGH for EDGE_STEPPING." + #endif + #if AXIS_HAS_DEDGE(Y) && STEP_STATE_Y != HIGH + #error "STEP_STATE_Y must be HIGH for EDGE_STEPPING." + #endif + #if AXIS_HAS_DEDGE(Z) && STEP_STATE_Z != HIGH + #error "STEP_STATE_Z must be HIGH for EDGE_STEPPING." + #endif + #if AXIS_HAS_DEDGE(I) && STEP_STATE_I != HIGH + #error "STEP_STATE_I must be HIGH for EDGE_STEPPING." + #endif + #if AXIS_HAS_DEDGE(J) && STEP_STATE_J != HIGH + #error "STEP_STATE_J must be HIGH for EDGE_STEPPING." + #endif + #if AXIS_HAS_DEDGE(K) && STEP_STATE_K != HIGH + #error "STEP_STATE_K must be HIGH for EDGE_STEPPING." + #endif + #if AXIS_HAS_DEDGE(U) && STEP_STATE_U != HIGH + #error "STEP_STATE_U must be HIGH for EDGE_STEPPING." + #endif + #if AXIS_HAS_DEDGE(V) && STEP_STATE_V != HIGH + #error "STEP_STATE_V must be HIGH for EDGE_STEPPING." + #endif + #if AXIS_HAS_DEDGE(W) && STEP_STATE_W != HIGH + #error "STEP_STATE_W must be HIGH for EDGE_STEPPING." + #endif + #if AXIS_HAS_DEDGE(E0) && STEP_STATE_E != HIGH + #error "STEP_STATE_E must be HIGH for EDGE_STEPPING." + #endif +#endif + // G60/G61 Position Save #if SAVED_POSITIONS > 256 #error "SAVED_POSITIONS must be an integer from 0 to 256." diff --git a/Marlin/src/module/stepper/trinamic.h b/Marlin/src/module/stepper/trinamic.h index 3705543c9904..88c0686fc37b 100644 --- a/Marlin/src/module/stepper/trinamic.h +++ b/Marlin/src/module/stepper/trinamic.h @@ -115,8 +115,6 @@ void restore_trinamic_drivers(); void reset_trinamic_drivers(); -#define AXIS_HAS_DEDGE(A) (AXIS_IS_TMC(A) && ENABLED(EDGE_STEPPING)) - // X Stepper #if AXIS_IS_TMC(X) extern TMC_CLASS(X, X) stepperX;