From a9625747db85f22cb583d4fdc4c4f0dc2706e687 Mon Sep 17 00:00:00 2001 From: Yuri D'Elia Date: Tue, 26 Jan 2021 19:37:14 +0100 Subject: [PATCH] Reinstate the nop instruction as delay in non-DEDGE When TMC2130_MINIMUM_PULSE is 0 a minimum delay is implied. In this case, use a single "nop" instruction. --- Firmware/stepper.cpp | 3 ++- Firmware/tmc2130.h | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/Firmware/stepper.cpp b/Firmware/stepper.cpp index d47dd2dc0..fc8d9f44d 100644 --- a/Firmware/stepper.cpp +++ b/Firmware/stepper.cpp @@ -83,7 +83,8 @@ uint16_t SP_min = 0x21FF; #endif #ifdef TMC2130_DEDGE_STEPPING -static_assert(TMC2130_MINIMUM_PULSE == 0, "DEDGE requires/implies TMC2130_MINIMUM_PULSE == 0"); +static_assert(TMC2130_MINIMUM_DELAY 1, // this will fail to compile when non-empty + "DEDGE implies/requires an empty TMC2130_MINIMUM_DELAY"); #define STEP_NC_HI(axis) TOGGLE(_STEP_PIN_##axis) #define STEP_NC_LO(axis) //NOP #else diff --git a/Firmware/tmc2130.h b/Firmware/tmc2130.h index 36ba55522..485bf41cc 100644 --- a/Firmware/tmc2130.h +++ b/Firmware/tmc2130.h @@ -33,8 +33,10 @@ extern uint8_t tmc2130_sg_homing_axes_mask; #define TMC2130_SET_DIR_DELAY 20 // minimum delay after setting direction in uS #define TMC2130_SET_PWR_DELAY 0 // minimum delay after changing pwr mode in uS -#if TMC2130_MINIMUM_PULSE == 0 +#ifdef TMC2130_DEDGE_STEPPING #define TMC2130_MINIMUM_DELAY //NOP +#elif TMC2130_MINIMUM_PULSE == 0 +#define TMC2130_MINIMUM_DELAY asm("nop") #else #define TMC2130_MINIMUM_DELAY delayMicroseconds(TMC2130_MINIMUM_PULSE) #endif