From bf13eee9a2f32238f181ad9c495a1af63a483dc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Raphael=20H=C3=B6ser?= Date: Mon, 12 Dec 2022 10:35:36 +0100 Subject: [PATCH] #180 ledcdriver redundand timer config (#188) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: #180 Remove redundant info in LedcDriver::new This is an implementation of one of the possible solutions to the issue. Signed-off-by: Raphael Höser * Remove speed_mode method from LedcTimerDriver as it's not needed. * Fix rustfmt issues Signed-off-by: Raphael Höser --- examples/ledc-simple.rs | 7 ++++--- examples/ledc-threads.rs | 8 +------- src/ledc.rs | 8 ++++---- 3 files changed, 9 insertions(+), 14 deletions(-) diff --git a/examples/ledc-simple.rs b/examples/ledc-simple.rs index fd4c59170..cd53c06d7 100644 --- a/examples/ledc-simple.rs +++ b/examples/ledc-simple.rs @@ -9,12 +9,13 @@ fn main() -> anyhow::Result<()> { println!("Configuring output channel"); let peripherals = Peripherals::take().unwrap(); - let config = config::TimerConfig::new().frequency(25.kHz().into()); let mut channel = LedcDriver::new( peripherals.ledc.channel0, - LedcTimerDriver::new(peripherals.ledc.timer0, &config)?, + LedcTimerDriver::new( + peripherals.ledc.timer0, + &config::TimerConfig::new().frequency(25.kHz().into()), + )?, peripherals.pins.gpio4, - &config, )?; println!("Starting duty-cycle loop"); diff --git a/examples/ledc-threads.rs b/examples/ledc-threads.rs index 91edbc942..22a535720 100644 --- a/examples/ledc-threads.rs +++ b/examples/ledc-threads.rs @@ -20,14 +20,8 @@ fn main() -> anyhow::Result<()> { peripherals.ledc.channel0, timer.clone(), peripherals.pins.gpio4, - &config, - )?; - let channel1 = LedcDriver::new( - peripherals.ledc.channel1, - timer, - peripherals.pins.gpio5, - &config, )?; + let channel1 = LedcDriver::new(peripherals.ledc.channel1, timer, peripherals.pins.gpio5)?; println!("Spawning PWM threads"); diff --git a/src/ledc.rs b/src/ledc.rs index 9ac38e634..e714f10cd 100644 --- a/src/ledc.rs +++ b/src/ledc.rs @@ -10,12 +10,13 @@ //! //! Create a 25 kHz PWM signal with 75 % duty cycle on GPIO 1 //! ``` -//! use esp_idf_hal::ledc::{config::TimerConfig, Channel, LedcDriver, Timer}; +//! use esp_idf_hal::ledc::{config::TimerConfig, Channel, LedcDriver, LedcTimerDriver, Timer}; //! use esp_idf_hal::peripherals::Peripherals; //! use esp_idf_hal::prelude::*; //! //! let peripherals = Peripherals::take().unwrap(); -//! let mut driver = LedcDriver::new(peripherals.ledc.channel0, peripherals.ledc.timer0, peripherals.pins.gpio1, &TimerConfig::default().frequency(25.kHz().into()))?; +//! let timer_driver = LedcTimerDriver::new(peripherals.ledc.timer0, &TimerConfig::default().frequency(25.kHz().into())); +//! let mut driver = LedcDriver::new(peripherals.ledc.channel0, timer_driver, peripherals.pins.gpio1)?; //! //! let max_duty = driver.get_max_duty()?; //! driver.set_duty(max_duty * 3 / 4)?; @@ -179,7 +180,6 @@ impl<'d> LedcDriver<'d> { _channel: impl Peripheral

+ 'd, timer_driver: B, pin: impl Peripheral

+ 'd, - config: &config::TimerConfig, ) -> Result { crate::into_ref!(pin); @@ -187,7 +187,7 @@ impl<'d> LedcDriver<'d> { let hpoint = 0; let channel_config = ledc_channel_config_t { - speed_mode: config.speed_mode.into(), + speed_mode: timer_driver.borrow().speed_mode.into(), channel: C::channel(), timer_sel: timer_driver.borrow().timer(), intr_type: ledc_intr_type_t_LEDC_INTR_DISABLE,