align pwm.set_duty with embedded hal to not be one shot
This commit is contained in:
parent
5285179218
commit
f2cfbe4262
@ -282,8 +282,15 @@ impl<'d, T: Instance> Pwm<'d, T> {
|
|||||||
let s = T::state();
|
let s = T::state();
|
||||||
unsafe { (*s.duty.get())[channel] = duty & 0x7FFF };
|
unsafe { (*s.duty.get())[channel] = duty & 0x7FFF };
|
||||||
|
|
||||||
|
// todo justify? should i fence elsehwere we task start? or
|
||||||
compiler_fence(Ordering::SeqCst);
|
compiler_fence(Ordering::SeqCst);
|
||||||
T::regs().tasks_seqstart[0].write(|w| unsafe { w.bits(1) });
|
|
||||||
|
// play duty cycle infinitely
|
||||||
|
let r = T::regs();
|
||||||
|
r.loop_.write(|w| unsafe { w.cnt().bits(0x1) });
|
||||||
|
r.shorts.write(|w| w.loopsdone_seqstart0().enabled());
|
||||||
|
// tasks_seqstart doesnt exist in all svds so write its bit instead
|
||||||
|
r.tasks_seqstart[0].write(|w| unsafe { w.bits(1) });
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Sets the PWM clock prescaler.
|
/// Sets the PWM clock prescaler.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user