
This commit refactors PWM support in the machine package to be more flexible. The new API can be used to produce tones at a specific frequency and control servos in a portable way, by abstracting over counter widths and prescalers.
21 строка
598 Б
Go
21 строка
598 Б
Go
package machine
|
|
|
|
import "errors"
|
|
|
|
var (
|
|
ErrPWMPeriodTooLong = errors.New("pwm: period too long")
|
|
)
|
|
|
|
// PWMConfig allows setting some configuration while configuring a PWM
|
|
// peripheral. A zero PWMConfig is ready to use for simple applications such as
|
|
// dimming LEDs.
|
|
type PWMConfig struct {
|
|
// PWM period in nanosecond. Leaving this zero will pick a reasonable period
|
|
// value for use with LEDs.
|
|
// If you want to configure a frequency instead of a period, you can use the
|
|
// following formula to calculate a period from a frequency:
|
|
//
|
|
// period = 1e9 / frequency
|
|
//
|
|
Period uint64
|
|
}
|