diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index b6d0d67278..5eb7654ae1 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -1258,11 +1258,11 @@ #define E5_HYBRID_THRESHOLD 30 /** - * Use stallGuard2 to sense an obstacle and trigger an endstop. - * You need to place a wire from the driver's DIAG1 pin to the X/Y endstop pin. + * Use StallGuard2 to sense an obstacle and trigger an endstop. + * Connect the stepper driver's DIAG1 pin to the X/Y endstop pin. * X, Y, and Z homing will always be done in spreadCycle mode. * - * X/Y/Z_HOMING_SENSITIVITY is used for tuning the trigger sensitivity. + * X/Y/Z_STALL_SENSITIVITY is used for tuning the trigger sensitivity. * Higher values make the system LESS sensitive. * Lower value make the system MORE sensitive. * Too low values can lead to false positives, while too high values will collide the axis without triggering. @@ -1271,10 +1271,18 @@ */ //#define SENSORLESS_HOMING // TMC2130 only - #if ENABLED(SENSORLESS_HOMING) - #define X_HOMING_SENSITIVITY 8 - #define Y_HOMING_SENSITIVITY 8 - //#define Z_HOMING_SENSITIVITY 8 + /** + * Use StallGuard2 to probe the bed with the nozzle. + * + * CAUTION: This could cause damage to machines that use a lead screw or threaded rod + * to move the Z axis. Take extreme care when attempting to enable this feature. + */ + //#define SENSORLESS_PROBING // TMC2130 only + + #if ENABLED(SENSORLESS_HOMING) || ENABLED(SENSORLESS_PROBING) + #define X_STALL_SENSITIVITY 8 + #define Y_STALL_SENSITIVITY 8 + //#define Z_STALL_SENSITIVITY 8 #endif /** diff --git a/Marlin/src/config/default/Configuration_adv.h b/Marlin/src/config/default/Configuration_adv.h index b6d0d67278..5eb7654ae1 100755 --- a/Marlin/src/config/default/Configuration_adv.h +++ b/Marlin/src/config/default/Configuration_adv.h @@ -1258,11 +1258,11 @@ #define E5_HYBRID_THRESHOLD 30 /** - * Use stallGuard2 to sense an obstacle and trigger an endstop. - * You need to place a wire from the driver's DIAG1 pin to the X/Y endstop pin. + * Use StallGuard2 to sense an obstacle and trigger an endstop. + * Connect the stepper driver's DIAG1 pin to the X/Y endstop pin. * X, Y, and Z homing will always be done in spreadCycle mode. * - * X/Y/Z_HOMING_SENSITIVITY is used for tuning the trigger sensitivity. + * X/Y/Z_STALL_SENSITIVITY is used for tuning the trigger sensitivity. * Higher values make the system LESS sensitive. * Lower value make the system MORE sensitive. * Too low values can lead to false positives, while too high values will collide the axis without triggering. @@ -1271,10 +1271,18 @@ */ //#define SENSORLESS_HOMING // TMC2130 only - #if ENABLED(SENSORLESS_HOMING) - #define X_HOMING_SENSITIVITY 8 - #define Y_HOMING_SENSITIVITY 8 - //#define Z_HOMING_SENSITIVITY 8 + /** + * Use StallGuard2 to probe the bed with the nozzle. + * + * CAUTION: This could cause damage to machines that use a lead screw or threaded rod + * to move the Z axis. Take extreme care when attempting to enable this feature. + */ + //#define SENSORLESS_PROBING // TMC2130 only + + #if ENABLED(SENSORLESS_HOMING) || ENABLED(SENSORLESS_PROBING) + #define X_STALL_SENSITIVITY 8 + #define Y_STALL_SENSITIVITY 8 + //#define Z_STALL_SENSITIVITY 8 #endif /** diff --git a/Marlin/src/feature/tmc_util.cpp b/Marlin/src/feature/tmc_util.cpp index abfe4ba035..e4c4872e2e 100644 --- a/Marlin/src/feature/tmc_util.cpp +++ b/Marlin/src/feature/tmc_util.cpp @@ -663,9 +663,9 @@ void _tmc_say_sgt(const TMC_AxisEnum axis, const int8_t sgt) { #endif // TMC_DEBUG -#if ENABLED(SENSORLESS_HOMING) +#if USE_SENSORLESS - void tmc_sensorless_homing(TMC2130Stepper &st, const bool enable/*=true*/) { + void tmc_stallguard(TMC2130Stepper &st, const bool enable/*=true*/) { st.coolstep_min_speed(enable ? 1024UL * 1024UL - 1UL : 0); #if ENABLED(STEALTHCHOP) st.stealthChop(!enable); @@ -673,7 +673,7 @@ void _tmc_say_sgt(const TMC_AxisEnum axis, const int8_t sgt) { st.diag1_stall(enable ? 1 : 0); } -#endif // SENSORLESS_HOMING +#endif // USE_SENSORLESS #if HAS_DRIVER(TMC2130) #define SET_CS_PIN(st) OUT_WRITE(st##_CS_PIN, HIGH) diff --git a/Marlin/src/feature/tmc_util.h b/Marlin/src/feature/tmc_util.h index 514f603f18..b32da5aa3d 100644 --- a/Marlin/src/feature/tmc_util.h +++ b/Marlin/src/feature/tmc_util.h @@ -128,8 +128,8 @@ void monitor_tmc_driver(); * * Defined here because of limitations with templates and headers. */ -#if ENABLED(SENSORLESS_HOMING) - void tmc_sensorless_homing(TMC2130Stepper &st, const bool enable=true); +#if USE_SENSORLESS + void tmc_stallguard(TMC2130Stepper &st, const bool enable=true); #endif #if HAS_DRIVER(TMC2130) diff --git a/Marlin/src/gcode/feature/trinamic/M911-M915.cpp b/Marlin/src/gcode/feature/trinamic/M911-M915.cpp index b24e901f82..1ab20ea522 100644 --- a/Marlin/src/gcode/feature/trinamic/M911-M915.cpp +++ b/Marlin/src/gcode/feature/trinamic/M911-M915.cpp @@ -267,9 +267,9 @@ void GcodeSuite::M912() { #endif // HYBRID_THRESHOLD /** - * M914: Set SENSORLESS_HOMING sensitivity. + * M914: Set StallGuard sensitivity. */ -#if ENABLED(SENSORLESS_HOMING) +#if USE_SENSORLESS void GcodeSuite::M914() { #define TMC_SAY_SGT(Q) tmc_get_sgt(stepper##Q, TMC_##Q) #define TMC_SET_SGT(Q) tmc_set_sgt(stepper##Q, value) @@ -346,7 +346,7 @@ void GcodeSuite::M912() { #endif } } -#endif // SENSORLESS_HOMING +#endif // USE_SENSORLESS /** * TMC Z axis calibration routine diff --git a/Marlin/src/gcode/gcode.cpp b/Marlin/src/gcode/gcode.cpp index 09786f81aa..040a0df63c 100644 --- a/Marlin/src/gcode/gcode.cpp +++ b/Marlin/src/gcode/gcode.cpp @@ -637,8 +637,8 @@ void GcodeSuite::process_parsed_command( #if ENABLED(HYBRID_THRESHOLD) case 913: M913(); break; // M913: Set HYBRID_THRESHOLD speed. #endif - #if ENABLED(SENSORLESS_HOMING) - case 914: M914(); break; // M914: Set SENSORLESS_HOMING sensitivity. + #if USE_SENSORLESS + case 914: M914(); break; // M914: Set StallGuard sensitivity. #endif #if ENABLED(TMC_Z_CALIBRATION) case 915: M915(); break; // M915: TMC Z axis calibration. diff --git a/Marlin/src/gcode/gcode.h b/Marlin/src/gcode/gcode.h index 908ac9e2f7..50de37ab46 100644 --- a/Marlin/src/gcode/gcode.h +++ b/Marlin/src/gcode/gcode.h @@ -229,7 +229,7 @@ * M911 - Report stepper driver overtemperature pre-warn condition. (Requires at least one _DRIVER_TYPE defined as TMC2130/TMC2208/TMC2660) * M912 - Clear stepper driver overtemperature pre-warn condition flag. (Requires at least one _DRIVER_TYPE defined as TMC2130/TMC2208/TMC2660) * M913 - Set HYBRID_THRESHOLD speed. (Requires HYBRID_THRESHOLD) - * M914 - Set SENSORLESS_HOMING sensitivity. (Requires SENSORLESS_HOMING) + * M914 - Set StallGuard sensitivity. (Requires SENSORLESS_HOMING or SENSORLESS_PROBING) * * M360 - SCARA calibration: Move to cal-position ThetaA (0 deg calibration) * M361 - SCARA calibration: Move to cal-position ThetaB (90 deg calibration - steps per degree) @@ -780,7 +780,7 @@ private: #if ENABLED(HYBRID_THRESHOLD) static void M913(); #endif - #if ENABLED(SENSORLESS_HOMING) + #if USE_SENSORLESS static void M914(); #endif #if ENABLED(TMC_Z_CALIBRATION) diff --git a/Marlin/src/inc/Conditionals_LCD.h b/Marlin/src/inc/Conditionals_LCD.h index aaa6d5462d..328410e60b 100644 --- a/Marlin/src/inc/Conditionals_LCD.h +++ b/Marlin/src/inc/Conditionals_LCD.h @@ -528,7 +528,7 @@ /** * Set flags for enabled probes */ -#define HAS_BED_PROBE (ENABLED(FIX_MOUNTED_PROBE) || ENABLED(Z_PROBE_ALLEN_KEY) || HAS_Z_SERVO_PROBE || ENABLED(Z_PROBE_SLED) || ENABLED(SOLENOID_PROBE)) +#define HAS_BED_PROBE (ENABLED(FIX_MOUNTED_PROBE) || ENABLED(Z_PROBE_ALLEN_KEY) || HAS_Z_SERVO_PROBE || ENABLED(Z_PROBE_SLED) || ENABLED(SOLENOID_PROBE) || ENABLED(SENSORLESS_PROBING)) #define PROBE_SELECTED (HAS_BED_PROBE || ENABLED(PROBE_MANUALLY) || ENABLED(MESH_BED_LEVELING)) #if !HAS_BED_PROBE diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h index 2591da4913..0561c459a1 100644 --- a/Marlin/src/inc/Conditionals_post.h +++ b/Marlin/src/inc/Conditionals_post.h @@ -869,14 +869,15 @@ #define AXIS_HAS_STEALTHCHOP(ST) ( AXIS_DRIVER_TYPE(ST, TMC2130) || AXIS_DRIVER_TYPE(ST, TMC2208) ) #define AXIS_HAS_STALLGUARD(ST) AXIS_DRIVER_TYPE(ST, TMC2130) -#if ENABLED(SENSORLESS_HOMING) +#define USE_SENSORLESS (ENABLED(SENSORLESS_HOMING) || ENABLED(SENSORLESS_PROBING)) +#if USE_SENSORLESS // Disable Z axis sensorless homing if a probe is used to home the Z axis #if HOMING_Z_WITH_PROBE - #undef Z_HOMING_SENSITIVITY + #undef Z_STALL_SENSITIVITY #endif - #define X_SENSORLESS (AXIS_HAS_STALLGUARD(X) && defined(X_HOMING_SENSITIVITY)) - #define Y_SENSORLESS (AXIS_HAS_STALLGUARD(Y) && defined(Y_HOMING_SENSITIVITY)) - #define Z_SENSORLESS (AXIS_HAS_STALLGUARD(Z) && defined(Z_HOMING_SENSITIVITY)) + #define X_SENSORLESS (AXIS_HAS_STALLGUARD(X) && defined(X_STALL_SENSITIVITY)) + #define Y_SENSORLESS (AXIS_HAS_STALLGUARD(Y) && defined(Y_STALL_SENSITIVITY)) + #define Z_SENSORLESS (AXIS_HAS_STALLGUARD(Z) && defined(Z_STALL_SENSITIVITY)) #endif // Endstops and bed probe diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 1ab23b6e7e..7c8447c003 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -895,7 +895,13 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE && Y_MAX_LENGTH >= Y_BED_SIZE, /** * Require pin options and pins to be defined */ - #if ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) + #if ENABLED(SENSORLESS_PROBING) + #if ENABLED(DELTA) && (!AXIS_DRIVER_TYPE_X(TMC2130) || !AXIS_DRIVER_TYPE_Y(TMC2130) || !AXIS_DRIVER_TYPE_Z(TMC2130)) + #error "SENSORLESS_PROBING requires TMC2130 drivers on X, Y, and Z." + #elif !AXIS_DRIVER_TYPE_Z(TMC2130) + #error "SENSORLESS_PROBING requires a TMC2130 driver on Z." + #endif + #elif ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) #if ENABLED(Z_MIN_PROBE_ENDSTOP) #error "Enable only one option: Z_MIN_PROBE_ENDSTOP or Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN." #elif DISABLED(USE_ZMIN_PLUG) @@ -1746,19 +1752,18 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE && Y_MAX_LENGTH >= Y_BED_SIZE, #error "CoreYZ requires both Y and Z to use sensorless homing if either does." #endif +// Other TMC feature requirements #if ENABLED(HYBRID_THRESHOLD) && DISABLED(STEALTHCHOP) #error "Enable STEALTHCHOP to use HYBRID_THRESHOLD." -#endif -#if ENABLED(TMC_Z_CALIBRATION) && !AXIS_IS_TMC(Z) && !AXIS_IS_TMC(Z2) && !AXIS_IS_TMC(Z3) +#elif ENABLED(TMC_Z_CALIBRATION) && !AXIS_IS_TMC(Z) && !AXIS_IS_TMC(Z2) && !AXIS_IS_TMC(Z3) #error "TMC_Z_CALIBRATION requires at least one TMC driver on Z axis" -#endif - -#if ENABLED(SENSORLESS_HOMING) && !HAS_STALLGUARD - #error "SENSORLESS_HOMING requires TMC2130 or TMC2660 stepper drivers." -#endif -#if ENABLED(STEALTHCHOP) && !HAS_STEALTHCHOP +#elif ENABLED(SENSORLESS_HOMING) && !HAS_STALLGUARD + #error "SENSORLESS_HOMING requires TMC2130 stepper drivers." +#elif ENABLED(SENSORLESS_PROBING) && !HAS_STALLGUARD + #error "SENSORLESS_PROBING requires TMC2130 stepper drivers." +#elif ENABLED(STEALTHCHOP) && !HAS_STEALTHCHOP #error "STEALTHCHOP requires TMC2130 or TMC2208 stepper drivers." - #endif +#endif /** * Digipot requirement diff --git a/Marlin/src/module/configuration_store.cpp b/Marlin/src/module/configuration_store.cpp index 81dd1db206..eee30aba84 100644 --- a/Marlin/src/module/configuration_store.cpp +++ b/Marlin/src/module/configuration_store.cpp @@ -920,10 +920,10 @@ void MarlinSettings::postprocess() { EEPROM_WRITE(tmc_hybrid_threshold); // - // TMC2130 Sensorless homing threshold + // TMC2130 StallGuard threshold // int16_t tmc_sgt[XYZ] = { - #if ENABLED(SENSORLESS_HOMING) + #if USE_SENSORLESS #if X_SENSORLESS stepperX.sgt(), #else @@ -1530,16 +1530,16 @@ void MarlinSettings::postprocess() { #endif /* - * TMC2130 Sensorless homing threshold. + * TMC2130 StallGuard threshold. * X and X2 use the same value * Y and Y2 use the same value * Z, Z2 and Z3 use the same value */ int16_t tmc_sgt[XYZ]; EEPROM_READ(tmc_sgt); - #if ENABLED(SENSORLESS_HOMING) + #if USE_SENSORLESS if (!validating) { - #ifdef X_HOMING_SENSITIVITY + #ifdef X_STALL_SENSITIVITY #if AXIS_HAS_STALLGUARD(X) stepperX.sgt(tmc_sgt[0]); #endif @@ -1547,7 +1547,7 @@ void MarlinSettings::postprocess() { stepperX2.sgt(tmc_sgt[0]); #endif #endif - #ifdef Y_HOMING_SENSITIVITY + #ifdef Y_STALL_SENSITIVITY #if AXIS_HAS_STALLGUARD(Y) stepperY.sgt(tmc_sgt[1]); #endif @@ -1555,7 +1555,7 @@ void MarlinSettings::postprocess() { stepperY2.sgt(tmc_sgt[1]); #endif #endif - #ifdef Z_HOMING_SENSITIVITY + #ifdef Z_STALL_SENSITIVITY #if AXIS_HAS_STALLGUARD(Z) stepperZ.sgt(tmc_sgt[2]); #endif @@ -2120,7 +2120,7 @@ void MarlinSettings::reset(PORTARG_SOLO) { #if ENABLED(HYBRID_THRESHOLD) void say_M913(PORTARG_SOLO) { SERIAL_ECHOPGM_P(port, " M913"); } #endif - #if ENABLED(SENSORLESS_HOMING) + #if USE_SENSORLESS void say_M914(PORTARG_SOLO) { SERIAL_ECHOPGM_P(port, " M914"); } #endif #endif @@ -2824,12 +2824,12 @@ void MarlinSettings::reset(PORTARG_SOLO) { #endif // HYBRID_THRESHOLD /** - * TMC2130 Sensorless homing thresholds + * TMC2130 Sensorless homing thresholds */ - #if ENABLED(SENSORLESS_HOMING) + #if USE_SENSORLESS if (!forReplay) { CONFIG_ECHO_START; - SERIAL_ECHOLNPGM_P(port, "Sensorless homing threshold:"); + SERIAL_ECHOLNPGM_P(port, "TMC2130 StallGuard threshold:"); } CONFIG_ECHO_START; #if X_SENSORLESS || Y_SENSORLESS || Z_SENSORLESS @@ -2846,10 +2846,10 @@ void MarlinSettings::reset(PORTARG_SOLO) { SERIAL_EOL_P(port); #endif - #define HAS_X2_SENSORLESS (defined(X_HOMING_SENSITIVITY) && AXIS_HAS_STALLGUARD(X2)) - #define HAS_Y2_SENSORLESS (defined(Y_HOMING_SENSITIVITY) && AXIS_HAS_STALLGUARD(Y2)) - #define HAS_Z2_SENSORLESS (defined(Z_HOMING_SENSITIVITY) && AXIS_HAS_STALLGUARD(Z2)) - #define HAS_Z3_SENSORLESS (defined(Z_HOMING_SENSITIVITY) && AXIS_HAS_STALLGUARD(Z3)) + #define HAS_X2_SENSORLESS (defined(X_STALL_SENSITIVITY) && AXIS_HAS_STALLGUARD(X2)) + #define HAS_Y2_SENSORLESS (defined(Y_STALL_SENSITIVITY) && AXIS_HAS_STALLGUARD(Y2)) + #define HAS_Z2_SENSORLESS (defined(Z_STALL_SENSITIVITY) && AXIS_HAS_STALLGUARD(Z2)) + #define HAS_Z3_SENSORLESS (defined(Z_STALL_SENSITIVITY) && AXIS_HAS_STALLGUARD(Z3)) #if HAS_X2_SENSORLESS || HAS_Y2_SENSORLESS || HAS_Z2_SENSORLESS say_M914(PORTVAR_SOLO); SERIAL_ECHOPGM_P(port, " I1"); @@ -2871,7 +2871,7 @@ void MarlinSettings::reset(PORTARG_SOLO) { SERIAL_ECHOLNPAIR_P(port, " Z", stepperZ3.sgt()); #endif - #endif // SENSORLESS_HOMING + #endif // USE_SENSORLESS #endif // HAS_TRINAMIC diff --git a/Marlin/src/module/motion.cpp b/Marlin/src/module/motion.cpp index a08482166a..91487d28e5 100644 --- a/Marlin/src/module/motion.cpp +++ b/Marlin/src/module/motion.cpp @@ -981,31 +981,31 @@ inline float get_homing_bump_feedrate(const AxisEnum axis) { default: break; #if X_SENSORLESS case X_AXIS: - tmc_sensorless_homing(stepperX, enable); + tmc_stallguard(stepperX, enable); #if CORE_IS_XY && Y_SENSORLESS - tmc_sensorless_homing(stepperY, enable); + tmc_stallguard(stepperY, enable); #elif CORE_IS_XZ && Z_SENSORLESS - tmc_sensorless_homing(stepperZ, enable); + tmc_stallguard(stepperZ, enable); #endif break; #endif #if Y_SENSORLESS case Y_AXIS: - tmc_sensorless_homing(stepperY, enable); + tmc_stallguard(stepperY, enable); #if CORE_IS_XY && X_SENSORLESS - tmc_sensorless_homing(stepperX, enable); + tmc_stallguard(stepperX, enable); #elif CORE_IS_YZ && Z_SENSORLESS - tmc_sensorless_homing(stepperZ, enable); + tmc_stallguard(stepperZ, enable); #endif break; #endif #if Z_SENSORLESS case Z_AXIS: - tmc_sensorless_homing(stepperZ, enable); + tmc_stallguard(stepperZ, enable); #if CORE_IS_XZ && X_SENSORLESS - tmc_sensorless_homing(stepperX, enable); + tmc_stallguard(stepperX, enable); #elif CORE_IS_YZ && Y_SENSORLESS - tmc_sensorless_homing(stepperY, enable); + tmc_stallguard(stepperY, enable); #endif break; #endif diff --git a/Marlin/src/module/probe.cpp b/Marlin/src/module/probe.cpp index 251861fcfe..0ebeaaaed5 100644 --- a/Marlin/src/module/probe.cpp +++ b/Marlin/src/module/probe.cpp @@ -58,6 +58,11 @@ float zprobe_zoffset; // Initialized by settings.load() #include "../module/servo.h" #endif +#if ENABLED(SENSORLESS_PROBING) + #include "stepper.h" + #include "../feature/tmc_util.h" +#endif + #if ENABLED(Z_PROBE_SLED) #ifndef SLED_DOCKING_OFFSET @@ -527,31 +532,58 @@ static bool do_probe_move(const float z, const float fr_mm_s) { if (set_bltouch_deployed(true)) return true; #endif + // Disable stealthChop if used. Enable diag1 pin on driver. + #if ENABLED(SENSORLESS_PROBING) + #if ENABLED(DELTA) + tmc_stallguard(stepperX); + tmc_stallguard(stepperY); + #endif + tmc_stallguard(stepperZ); + #endif + #if QUIET_PROBING probing_pause(true); #endif + endstops.enable(true); + // Move down until probe triggered do_blocking_move_to_z(z, fr_mm_s); // Check to see if the probe was triggered - const bool probe_triggered = TEST(endstops.trigger_state(), - #if ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) - Z_MIN + const bool probe_triggered = + #if ENABLED(DELTA) && ENABLED(SENSORLESS_PROBING) + endstops.trigger_state() & (_BV(X_MIN) | _BV(Y_MIN) | _BV(Z_MIN)) #else - Z_MIN_PROBE + TEST(endstops.trigger_state(), + #if ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) + Z_MIN + #else + Z_MIN_PROBE + #endif + ) #endif - ); + ; #if QUIET_PROBING probing_pause(false); #endif + // Re-enable stealthChop if used. Disable diag1 pin on driver. + #if ENABLED(SENSORLESS_PROBING) + #if ENABLED(DELTA) + tmc_stallguard(stepperX, false); + tmc_stallguard(stepperY, false); + #endif + tmc_stallguard(stepperZ, false); + #endif + // Retract BLTouch immediately after a probe if it was triggered #if ENABLED(BLTOUCH) if (probe_triggered && set_bltouch_deployed(false)) return true; #endif + // Clear endstop flags endstops.hit_on_purpose(); // Get Z where the steppers were interrupted @@ -606,13 +638,11 @@ static float run_z_probe() { // move up to make clearance for the probe do_blocking_move_to_z(current_position[Z_AXIS] + Z_CLEARANCE_MULTI_PROBE, MMM_TO_MMS(Z_PROBE_SPEED_FAST)); - #else + #elif Z_PROBE_SPEED_FAST != Z_PROBE_SPEED_SLOW // If the nozzle is well over the travel height then // move down quickly before doing the slow probe - float z = Z_CLEARANCE_DEPLOY_PROBE + 5.0; - if (zprobe_zoffset < 0) z -= zprobe_zoffset; - + const float z = Z_CLEARANCE_DEPLOY_PROBE + 5.0 + (zprobe_zoffset < 0 ? -zprobe_zoffset : 0); if (current_position[Z_AXIS] > z) { // If we don't make it to the z position (i.e. the probe triggered), move up to make clearance for the probe if (!do_probe_move(z, MMM_TO_MMS(Z_PROBE_SPEED_FAST))) diff --git a/Marlin/src/module/stepper_indirection.cpp b/Marlin/src/module/stepper_indirection.cpp index 1927cad230..86cd7c3832 100644 --- a/Marlin/src/module/stepper_indirection.cpp +++ b/Marlin/src/module/stepper_indirection.cpp @@ -273,33 +273,33 @@ { constexpr uint8_t extruder = 5; _TMC2130_INIT(E5, planner.axis_steps_per_mm[E_AXIS_N]); UNUSED(extruder); } #endif - #if ENABLED(SENSORLESS_HOMING) - #define TMC_INIT_SGT(P,Q) stepper##Q.sgt(P##_HOMING_SENSITIVITY); + #if USE_SENSORLESS + #define TMC_INIT_SGT(P,Q) stepper##Q.sgt(P##_STALL_SENSITIVITY); #if X_SENSORLESS #if AXIS_DRIVER_TYPE(X, TMC2130) - stepperX.sgt(X_HOMING_SENSITIVITY); + stepperX.sgt(X_STALL_SENSITIVITY); #endif #if AXIS_DRIVER_TYPE(X2, TMC2130) - stepperX2.sgt(X_HOMING_SENSITIVITY); + stepperX2.sgt(X_STALL_SENSITIVITY); #endif #endif #if Y_SENSORLESS #if AXIS_DRIVER_TYPE(Y, TMC2130) - stepperY.sgt(Y_HOMING_SENSITIVITY); + stepperY.sgt(Y_STALL_SENSITIVITY); #endif #if AXIS_DRIVER_TYPE(Y2, TMC2130) - stepperY2.sgt(Y_HOMING_SENSITIVITY); + stepperY2.sgt(Y_STALL_SENSITIVITY); #endif #endif #if Z_SENSORLESS #if AXIS_DRIVER_TYPE(Z, TMC2130) - stepperZ.sgt(Z_HOMING_SENSITIVITY); + stepperZ.sgt(Z_STALL_SENSITIVITY); #endif #if AXIS_DRIVER_TYPE(Z2, TMC2130) - stepperZ2.sgt(Z_HOMING_SENSITIVITY); + stepperZ2.sgt(Z_STALL_SENSITIVITY); #endif #if ENABLED(Z3_IS_TMC2130) - stepperZ3.sgt(Z_HOMING_SENSITIVITY); + stepperZ3.sgt(Z_STALL_SENSITIVITY); #endif #endif #endif diff --git a/buildroot/share/tests/LPC1768_tests b/buildroot/share/tests/LPC1768_tests index b9f1e0cf45..c7c22711d4 100755 --- a/buildroot/share/tests/LPC1768_tests +++ b/buildroot/share/tests/LPC1768_tests @@ -60,5 +60,16 @@ opt_enable FAN_SOFT_PWM SDSUPPORT opt_enable USE_XMAX_PLUG exec_test $1 $2 "MKS SBASE Many less common options" +restore_configs +use_example_configs delta/generic +opt_set MOTHERBOARD BOARD_COHESION3D_REMIX +opt_enable AUTO_BED_LEVELING_UBL RESTORE_LEVELING_AFTER_G28 EEPROM_SETTINGS EEPROM_CHITCHAT +opt_disable Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN +opt_set X_DRIVER_TYPE TMC2130 +opt_set Y_DRIVER_TYPE TMC2130 +opt_set Z_DRIVER_TYPE TMC2130 +opt_enable_adv TMC_USE_SW_SPI MONITOR_DRIVER_STATUS STEALTHCHOP HYBRID_THRESHOLD TMC_DEBUG SENSORLESS_PROBING +exec_test $1 $2 "Delta Config (generic) + BOARD_COHESION3D_REMIX + UBL + EEPROM_SETTINGS + SENSORLESS_PROBING" + #clean up restore_configs diff --git a/buildroot/share/tests/megaatmega2560_tests b/buildroot/share/tests/megaatmega2560_tests index 443a5ce3df..7a625e665b 100755 --- a/buildroot/share/tests/megaatmega2560_tests +++ b/buildroot/share/tests/megaatmega2560_tests @@ -296,6 +296,7 @@ opt_set X_DRIVER_TYPE TMC2208 opt_set Y_DRIVER_TYPE TMC2208 opt_set Z_DRIVER_TYPE TMC2208 opt_set E0_DRIVER_TYPE TMC2208 +opt_disable Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN opt_enable_adv MONITOR_DRIVER_STATUS STEALTHCHOP HYBRID_THRESHOLD TMC_DEBUG exec_test $1 $2 "TMC2208 Config" #