From dd2577fcf06cd2805097769b4fcad4e0feea5639 Mon Sep 17 00:00:00 2001
From: Martin Marmsoler <martin.marmsoler@gmail.com>
Date: Fri, 26 Jan 2024 20:55:53 +0100
Subject: [PATCH 1/3] use constant for the pwm clock

Description: So it can be used outside of the crate to calculate max duty
---
 embassy-nrf/src/pwm.rs | 5 +++--
 1 file 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 {
 }
 
 const MAX_SEQUENCE_LEN: usize = 32767;
+pub const PWM_CLK_HZ: u32 = 16_000_000;
 
 impl<'d, T: Instance> SequencePwm<'d, T> {
     /// Create a new 1-channel PWM
@@ -788,7 +789,7 @@ impl<'d, T: Instance> SimplePwm<'d, T> {
     /// Sets the PWM output frequency.
     #[inline(always)]
     pub fn set_period(&self, freq: u32) {
-        let clk = 16_000_000u32 >> (self.prescaler() as u8);
+        let clk = PWM_CLK_HZ >> (self.prescaler() as u8);
         let duty = clk / freq;
         self.set_max_duty(duty.min(32767) as u16);
     }
@@ -796,7 +797,7 @@ impl<'d, T: Instance> SimplePwm<'d, T> {
     /// Returns the PWM output frequency.
     #[inline(always)]
     pub fn period(&self) -> u32 {
-        let clk = 16_000_000u32 >> (self.prescaler() as u8);
+        let clk = PWM_CLK_HZ >> (self.prescaler() as u8);
         let max_duty = self.max_duty() as u32;
         clk / max_duty
     }

From c26e62e4f4a17e4c7165b7e2b9fc7c7b0f670960 Mon Sep 17 00:00:00 2001
From: Martin Marmsoler <martin.marmsoler@gmail.com>
Date: Fri, 26 Jan 2024 21:24:14 +0100
Subject: [PATCH 2/3] add documentation

---
 embassy-nrf/src/pwm.rs | 1 +
 1 file changed, 1 insertion(+)

diff --git a/embassy-nrf/src/pwm.rs b/embassy-nrf/src/pwm.rs
index 197ba640c..03354abf8 100644
--- a/embassy-nrf/src/pwm.rs
+++ b/embassy-nrf/src/pwm.rs
@@ -47,6 +47,7 @@ pub enum Error {
 }
 
 const MAX_SEQUENCE_LEN: usize = 32767;
+/// The used pwm clock frequency
 pub const PWM_CLK_HZ: u32 = 16_000_000;
 
 impl<'d, T: Instance> SequencePwm<'d, T> {

From 2809d3bd45c9d469ae398d55f8d2c4bfda33c9dd Mon Sep 17 00:00:00 2001
From: Martin Marmsoler <martin.marmsoler@gmail.com>
Date: Fri, 26 Jan 2024 22:09:49 +0100
Subject: [PATCH 3/3] add is_enabled() function

---
 embassy-nrf/src/pwm.rs | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/embassy-nrf/src/pwm.rs b/embassy-nrf/src/pwm.rs
index 03354abf8..856e12024 100644
--- a/embassy-nrf/src/pwm.rs
+++ b/embassy-nrf/src/pwm.rs
@@ -715,6 +715,13 @@ impl<'d, T: Instance> SimplePwm<'d, T> {
         pwm
     }
 
+    /// Returns the enable state of the pwm counter
+    #[inline(always)]
+    pub fn is_enabled(&self) -> bool {
+        let r = T::regs();
+        r.enable.read().enable().bit_is_set()
+    }
+
     /// Enables the PWM generator.
     #[inline(always)]
     pub fn enable(&self) {