Aruna
ESP32_MCPwm.cpp
Go to the documentation of this file.
1 //
2 // Created by noeel on 07-11-20.
3 //
4 
6 
7 using namespace aruna;
8 using namespace aruna::driver;
9 
10 
11 ESP32_MCPwm::ESP32_MCPwm(gpio_num_t pin,
12  mcpwm_unit_t pwm_unit,
13  mcpwm_timer_t pwm_timer,
14  mcpwm_io_signals_t io_signal,
15  mcpwm_operator_t pwm_operator,
16  mcpwm_config_t pwm_config) :
17  pin(pin),
18  pwm_unit(pwm_unit),
19  pwm_timer(pwm_timer),
20  io_signal(io_signal),
21  pwm_operator(pwm_operator),
22  pwm_config(pwm_config) {
23  ESP_ERROR_CHECK(mcpwm_gpio_init(pwm_unit, io_signal, pin));
24 
25 // TODO what happens if mcpwm_init runs two times?
26  ESP_ERROR_CHECK(mcpwm_init(pwm_unit, pwm_timer, &pwm_config));
27 }
28 
30  float per_up = convert_range(duty);
31 
32  ESP_ERROR_CHECK(mcpwm_set_duty(pwm_unit, pwm_timer, pwm_operator, per_up));
33 
34  ESP_ERROR_CHECK(mcpwm_set_duty_type(pwm_unit, pwm_timer, pwm_operator, MCPWM_DUTY_MODE_0));
35  return err_t::OK;
36 }
37 
39  ESP_ERROR_CHECK(mcpwm_set_frequency(pwm_unit, pwm_timer, frequency_hz));
40 // TODO return esp error.
41 // TODO override get_frequency function.
42  return err_t::OK;
43 }
Definition: comm.cpp:14
const mcpwm_unit_t pwm_unit
Definition: ESP32_MCPwm.h:17
static double convert_range(uint16_t input, float range_max=100.f, float range_min=0.f)
Convert uint16 to a new range.
Definition: Actuator.cpp:46
uint16_t duty
Definition: Pwm.h:16
ESP32_MCPwm(gpio_num_t pin, mcpwm_unit_t pwm_unit, mcpwm_timer_t pwm_timer, mcpwm_io_signals_t io_signal, mcpwm_operator_t pwm_operator, mcpwm_config_t pwm_config=DEFAULT_PWM_CONFIG)
ESP32 MCPWM.
Definition: ESP32_MCPwm.cpp:11
err_t _set_duty(uint16_t duty) override
Definition: ESP32_MCPwm.cpp:29
err_t _set_frequency(uint32_t frequency_hz) override
Definition: ESP32_MCPwm.cpp:38
const mcpwm_timer_t pwm_timer
Definition: ESP32_MCPwm.h:18
const mcpwm_operator_t pwm_operator
Definition: ESP32_MCPwm.h:20
uint32_t frequency_hz
Definition: Pwm.h:15