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 =