37 PWMPin(
HardwareTimer *p_timer,
int channel,
int pin,
int maxValue,
39 this->p_timer = p_timer;
40 this->channel = channel;
42 this->max_value = maxValue;
48 p_timer->setPWM(channel, pin, pwm_frequency,
53 void setRate(
int rate) {
55 uint16_t sample = 100.0 * rate / max_value;
56 p_timer->setCaptureCompare(channel, sample,
68 this->pwm_frequency = pwm_frequency;
69 this->max_value = maxValue;
76 bool addPin(
int pin) {
77 LOGI(
"addPin: %d", pin);
82 PWMPin
pwm_pin{p_timer, channel, pin, max_value, pwm_frequency};
85 if (p_timer->getHandle()->Instance !=
p_instance) {
86 LOGE(
"Invalid pin %d with timer %s for timer %s", pin,
88 getTimerStr(p_timer->getHandle()->Instance));
92 pins[pins.size() - 1].begin();
96 void setRate(
int idx,
int rate) {
97 if (idx < pins.size()) {
98 pins[idx].setRate(rate);
100 LOGE(
"Invalid index: %d", idx);
133 virtual void end()
override {
183 LOGD(
"Processing channel %d -> pin: %d",
ch++, gpio);
200 pwm.setRate(channel, value);
#define TRACEI()
Definition AudioLoggerIDF.h:32
#define TRACED()
Definition AudioLoggerIDF.h:31
#define LOGI(...)
Definition AudioLoggerIDF.h:28
#define LOGD(...)
Definition AudioLoggerIDF.h:27
#define LOGE(...)
Definition AudioLoggerIDF.h:30
@ US
Definition AudioTypes.h:48
PWMDriverAVR PWMDriver
Platform-specific PWM driver alias for AVR.
Definition PWMDriverAVR.h:13
#define PWM_DEFAULT_TIMER
Definition stm32.h:16
#define PWM_FREQ_TIMER_NO
Definition stm32.h:17