machine/rp2040: whole now correctly set at minimum 1 value for high frequency PWM

Этот коммит содержится в:
soypat 2022-01-29 14:10:05 -03:00 коммит произвёл Ron Evans
родитель 98a6ed8059
коммит 367fb9d40e

Просмотреть файл

@ -278,8 +278,14 @@ func (pwm *pwmGroup) setPeriod(period uint64) error {
rhs := 16 * period / ((1 + phc) * periodPerCycle * (1 + topStart)) // right-hand-side of equation, scaled so frac is not divided rhs := 16 * period / ((1 + phc) * periodPerCycle * (1 + topStart)) // right-hand-side of equation, scaled so frac is not divided
whole := rhs / 16 whole := rhs / 16
frac := rhs % 16 frac := rhs % 16
if whole > 0xff { switch {
case whole > 0xff:
whole = 0xff whole = 0xff
case whole == 0:
// whole calculation underflowed so setting to minimum
// permissible value in DIV_INT register.
whole = 1
frac = 0
} }
// Step 2 is acquiring a better top value. Clearing the equation: // Step 2 is acquiring a better top value. Clearing the equation: