Merge pull request #2487 from Murmele/pwm

PWM Improvements
This commit is contained in:
Dario Nieuwenhuis 2024-01-29 14:18:25 +00:00 committed by GitHub
commit 681393150d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -736,6 +736,11 @@ impl<'d, T: Instance> SimplePwm<'d, T> {
r.enable.write(|w| w.enable().disabled());
}
/// Returns the current duty of the channel
pub fn duty(&self, channel: usize) -> u16 {
self.duty[channel]
}
/// Sets duty cycle (15 bit) for a PWM channel.
pub fn set_duty(&mut self, channel: usize, duty: u16) {
let r = T::regs();
@ -755,7 +760,9 @@ impl<'d, T: Instance> SimplePwm<'d, T> {
// defensive wait until waveform is loaded after seqstart so set_duty
// can't be called again while dma is still reading
while r.events_seqend[0].read().bits() == 0 {}
if self.is_enabled() {
while r.events_seqend[0].read().bits() == 0 {}
}
}
/// Sets the PWM clock prescaler.