diff --git a/Marlin/src/MarlinCore.cpp b/Marlin/src/MarlinCore.cpp index 0171690d4e6e..9a3de3f1ac67 100644 --- a/Marlin/src/MarlinCore.cpp +++ b/Marlin/src/MarlinCore.cpp @@ -193,7 +193,7 @@ #include "feature/runout.h" #endif -#if HAS_Z_SERVO_PROBE +#if EITHER(PROBE_TARE, HAS_Z_SERVO_PROBE) #include "module/probe.h" #endif @@ -1119,6 +1119,10 @@ void setup() { SETUP_RUN(ui.reset_status()); // Load welcome message early. (Retained if no errors exist.) #endif + #if ENABLED(PROBE_TARE) + SETUP_RUN(probe.tare_init()); + #endif + #if BOTH(SDSUPPORT, SDCARD_EEPROM_EMULATION) SETUP_RUN(card.mount()); // Mount media with settings before first_load #endif diff --git a/Marlin/src/module/probe.cpp b/Marlin/src/module/probe.cpp index df014bdc28a7..53c35d69f236 100644 --- a/Marlin/src/module/probe.cpp +++ b/Marlin/src/module/probe.cpp @@ -510,6 +510,16 @@ bool Probe::probe_down_to_z(const float z, const feedRate_t fr_mm_s) { } #if ENABLED(PROBE_TARE) + + /** + * @brief Init the tare pin + * + * @details Init tare pin to ON state for a strain gauge, otherwise OFF + */ + void Probe::tare_init() { + OUT_WRITE(PROBE_TARE_PIN, !PROBE_TARE_STATE); + } + /** * @brief Tare the Z probe * @@ -526,9 +536,9 @@ bool Probe::probe_down_to_z(const float z, const feedRate_t fr_mm_s) { #endif SERIAL_ECHOLNPGM("Taring probe"); - OUT_WRITE(PROBE_TARE_PIN, PROBE_TARE_STATE); + WRITE(PROBE_TARE_PIN, PROBE_TARE_STATE); delay(PROBE_TARE_TIME); - OUT_WRITE(PROBE_TARE_PIN, !PROBE_TARE_STATE); + WRITE(PROBE_TARE_PIN, !PROBE_TARE_STATE); delay(PROBE_TARE_DELAY); endstops.hit_on_purpose(); diff --git a/Marlin/src/module/probe.h b/Marlin/src/module/probe.h index 49520eb3344c..527f1190fa9c 100644 --- a/Marlin/src/module/probe.h +++ b/Marlin/src/module/probe.h @@ -211,6 +211,7 @@ class Probe { #endif #if ENABLED(PROBE_TARE) + static void tare_init(); static bool tare(); #endif