From bbe755fb69f3c42cb79d19d10a58fda54aabfd42 Mon Sep 17 00:00:00 2001 From: soypat Date: Fri, 2 Jun 2023 20:42:47 -0300 Subject: [PATCH] fix bug in rp2040 SetPeriod implementation --- src/machine/machine_rp2040_pwm.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/machine/machine_rp2040_pwm.go b/src/machine/machine_rp2040_pwm.go index cc2f2f5d..f72d6dd0 100644 --- a/src/machine/machine_rp2040_pwm.go +++ b/src/machine/machine_rp2040_pwm.go @@ -260,7 +260,9 @@ func (pwm *pwmGroup) setPeriod(period uint64) error { maxTop = math.MaxUint16 // start algorithm at 95% Top. This allows us to undershoot period with prescale. topStart = 95 * maxTop / 100 - milliseconds = 1_000_000_000 + nanosecond = 1 // 1e-9 [s] + microsecond = 1000 * nanosecond // 1e-6 [s] + milliseconds = 1000 * microsecond // 1e-3 [s] // Maximum Period is 268369920ns on rp2040, given by (16*255+15)*8*(1+0xffff)*(1+1)/16 // With no phase shift max period is half of this value. maxPeriod = 268 * milliseconds