From 016047ab233ee38d963685a0873a942cbdfa3606 Mon Sep 17 00:00:00 2001 From: Empire Phoenix Date: Sun, 26 Apr 2026 21:24:51 +0200 Subject: [PATCH] Update `Water` HAL: enhance GPIO config with drive mode and input settings - Added `DriveMode` configuration and input enablement for `one_wire_pin`. - Improved GPIO initialization with `InputConfig` and default pull settings. --- Software/MainBoard/rust/src/hal/water.rs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/Software/MainBoard/rust/src/hal/water.rs b/Software/MainBoard/rust/src/hal/water.rs index 0c58f55..44036c7 100644 --- a/Software/MainBoard/rust/src/hal/water.rs +++ b/Software/MainBoard/rust/src/hal/water.rs @@ -4,7 +4,7 @@ use crate::hal::{ADC1, TANK_MULTI_SAMPLE}; use embassy_time::Timer; use esp_hal::analog::adc::{Adc, AdcCalLine, AdcConfig, AdcPin, Attenuation}; use esp_hal::delay::Delay; -use esp_hal::gpio::{Flex, Input, Output, OutputConfig, Pull}; +use esp_hal::gpio::{DriveMode, Flex, Input, InputConfig, Output, OutputConfig, Pull}; use esp_hal::pcnt::channel::CtrlMode::Keep; use esp_hal::pcnt::channel::EdgeMode::{Hold, Increment}; use esp_hal::pcnt::unit::Unit; @@ -32,7 +32,15 @@ impl<'a> TankSensor<'a> { flow_sensor: Input, pcnt1: Unit<'a, 1>, ) -> Result, FatError> { - one_wire_pin.apply_output_config(&OutputConfig::default().with_pull(Pull::None)); + one_wire_pin.apply_output_config( + &OutputConfig::default() + .with_drive_mode(DriveMode::OpenDrain) + .with_pull(Pull::None), + ); + one_wire_pin.apply_input_config(&InputConfig::default().with_pull(Pull::None)); + one_wire_pin.set_high(); + one_wire_pin.set_input_enable(true); + one_wire_pin.set_output_enable(true); let mut adc1_config = AdcConfig::new(); let tank_pin =