aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Marmsoler <[email protected]>2024-01-26 20:55:53 +0100
committerMartin Marmsoler <[email protected]>2024-01-26 20:55:53 +0100
commitdd2577fcf06cd2805097769b4fcad4e0feea5639 (patch)
treeb663457f7c8006f5a96267623b4e0dc4ba76fc37
parent31fa0aebd8825fa2faf8ec988f0eda2e62ad4dad (diff)
use constant for the pwm clock
Description: So it can be used outside of the crate to calculate max duty
-rw-r--r--embassy-nrf/src/pwm.rs5
1 files changed, 3 insertions, 2 deletions
diff --git a/embassy-nrf/src/pwm.rs b/embassy-nrf/src/pwm.rs
index 2f0397632..197ba640c 100644
--- a/embassy-nrf/src/pwm.rs
+++ b/embassy-nrf/src/pwm.rs
@@ -47,6 +47,7 @@ pub enum Error {
47} 47}
48 48
49const MAX_SEQUENCE_LEN: usize = 32767; 49const MAX_SEQUENCE_LEN: usize = 32767;
50pub const PWM_CLK_HZ: u32 = 16_000_000;
50 51
51impl<'d, T: Instance> SequencePwm<'d, T> { 52impl<'d, T: Instance> SequencePwm<'d, T> {
52 /// Create a new 1-channel PWM 53 /// Create a new 1-channel PWM
@@ -788,7 +789,7 @@ impl<'d, T: Instance> SimplePwm<'d, T> {
788 /// Sets the PWM output frequency. 789 /// Sets the PWM output frequency.
789 #[inline(always)] 790 #[inline(always)]
790 pub fn set_period(&self, freq: u32) { 791 pub fn set_period(&self, freq: u32) {
791 let clk = 16_000_000u32 >> (self.prescaler() as u8); 792 let clk = PWM_CLK_HZ >> (self.prescaler() as u8);
792 let duty = clk / freq; 793 let duty = clk / freq;
793 self.set_max_duty(duty.min(32767) as u16); 794 self.set_max_duty(duty.min(32767) as u16);
794 } 795 }
@@ -796,7 +797,7 @@ impl<'d, T: Instance> SimplePwm<'d, T> {
796 /// Returns the PWM output frequency. 797 /// Returns the PWM output frequency.
797 #[inline(always)] 798 #[inline(always)]
798 pub fn period(&self) -> u32 { 799 pub fn period(&self) -> u32 {
799 let clk = 16_000_000u32 >> (self.prescaler() as u8); 800 let clk = PWM_CLK_HZ >> (self.prescaler() as u8);
800 let max_duty = self.max_duty() as u32; 801 let max_duty = self.max_duty() as u32;
801 clk / max_duty 802 clk / max_duty
802 } 803 }