The PWM interface appears to be only partially consistent across the various machine targets that implement it. I did a survey of the public interfaces for each of the implementations:
tinygo pwm spelunking.ods
Across implementations, there are some inconsistencies:
- The name of the PWM object type is not consistent across implementations. It is variously: timerType, PWM, pwmGroup, TCC, TIM
- The name of the exported PWM objects is not consistent. It is variously: Timerx, PWMx, TCCx, TIMx
And in specific implementations, there are some issues as well:
- machine_generic.go: Missing SetPeriod(), Period(), Counter(), and SetInverting(). Should probably be added since they seem to be part of the 'standard' interface
- machine_rp2.go: The PWM type is not exported, so references to the exported PWM objects cannot be stored in, for example, a project pin initialization list, without extra work
- machine_atsamd21.go, machine_atsamd51.go: Missing Period()
- machine_esp32xx_pwm.go: Missing SetPeriod(), Period(), and Counter()
- machine_nrf52xxx.go: Missing Period() and Counter()
- machine_stm32_tim.go: Missing Period(). Counter() is mis-named Count()
It's also not clear to me that there is a written standard for the PWM interface. I attempted to document it here: tinygo-org/tinygo-site#505
Assuming that it is desirable to regularize these, I would be happy to help out with any of the platforms that I have dev hardware for (I think everything except atsamdxx).
The PWM interface appears to be only partially consistent across the various machine targets that implement it. I did a survey of the public interfaces for each of the implementations:
tinygo pwm spelunking.ods
Across implementations, there are some inconsistencies:
And in specific implementations, there are some issues as well:
It's also not clear to me that there is a written standard for the PWM interface. I attempted to document it here: tinygo-org/tinygo-site#505
Assuming that it is desirable to regularize these, I would be happy to help out with any of the platforms that I have dev hardware for (I think everything except atsamdxx).