7#include <zephyr/drivers/pwm.h>
8#include <zephyr/kernel.h>
45 virtual void end()
override {
51 for (
size_t ch = 0; ch <
audio_config.pins.size(); ch++) {
54 LOGE(
"Failed to disable PWM on channel %d: %d", ch, rc);
70 LOGI(
"Starting PWM timer with period: %lu us", wait_time);
104 if (spec.dev ==
nullptr) {
105 LOGE(
"Failed to get PWM device for audio channel %d (pwm_channel %u)", ch, spec.channel);
109 if (!device_is_ready(spec.dev)) {
110 LOGE(
"Device not ready for audio channel %d (pwm_channel %u)", ch, spec.channel);
117 int rc = pwm_set_dt(&spec,
period_ns, 0);
119 LOGE(
"Failed to configure PWM on channel %d: %d", ch, rc);
124 LOGI(
"PWM setup complete");
148 virtual void pwmWrite(
int channel,
int value)
override {
154 uint32_t clamped_value =
161 int rc = pwm_set_dt(&spec,
period_ns, duty_ns);
163 LOGD(
"Failed to set PWM duty on channel %d: %d", channel, rc);
170 if (driver !=
nullptr) {
#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:44
PWMDriverAVR PWMDriver
Platform-specific PWM driver alias for AVR.
Definition PWMDriverAVR.h:13