Aruna
aruna::driver::ESP32_MCPwm Class Reference

#include <ESP32_MCPwm.h>

Inheritance diagram for aruna::driver::ESP32_MCPwm:
Collaboration diagram for aruna::driver::ESP32_MCPwm:

Public Member Functions

 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. More...
 

Private Member Functions

err_t _set_frequency (uint32_t frequency_hz) override
 
err_t _set_duty (uint16_t duty) override
 
- Private Member Functions inherited from aruna::driver::Pwm
err_t set_frequency (uint32_t frequency_hz)
 Set frequency of PWM in hertz. More...
 
uint32_t get_frequency () const
 Get the frequency used in hertz. More...
 
err_t set_duty (float duty_percentage)
 Set the duty cycle on time in percentage. More...
 
err_t set_duty (uint16_t duty)
 Set the duty cycle on time (16bit). More...
 
float get_duty_per () const
 Get the duty cycle on time in percentage. More...
 
uint16_t get_duty () const
 Get the duty cycle on time (16bit) More...
 
- Private Member Functions inherited from aruna::movement::Actuator
 Actuator (axis_mask_t axis=axis_mask_t::NONE)
 Actuator object, used by the movement module for vehicle movement. More...
 
virtual ~Actuator ()
 
err_t set_axis (axis_mask_t new_axis)
 Set the axis that this Actuator is capable in moving in. More...
 
axis_mask_t get_axis ()
 get the movement modes that this driver supports. More...
 
err_t set (axis_mask_t axisMask, int16_t speed)
 Set the speed of the motors directly. More...
 
uint16_t get_speed ()
 Get the current speed of Actuator. More...
 

Private Attributes

const gpio_num_t pin
 
const mcpwm_unit_t pwm_unit
 
const mcpwm_timer_t pwm_timer
 
const mcpwm_io_signals_t io_signal
 
const mcpwm_operator_t pwm_operator
 
const mcpwm_config_t pwm_config
 
- Private Attributes inherited from aruna::movement::Actuator
err_t startup_error = err_t::NOT_STARTED
 error when constructing gets put here, read before usage. More...
 

Static Private Attributes

static constexpr mcpwm_config_t DEFAULT_PWM_CONFIG
 

Detailed Description

Definition at line 14 of file ESP32_MCPwm.h.

Constructor & Destructor Documentation

◆ ESP32_MCPwm()

ESP32_MCPwm::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.

Parameters
pingpio pin to use.
pwm_unitunit 0 or 1
pwm_timertimer to use 0-2
io_signalMCPWM0A - MCPWM2B
pwm_operatorMCPWM_OPR_A - MCPWM_OPR_B
pwm_configuser configuration for the pwm controller.

Definition at line 11 of file ESP32_MCPwm.cpp.

16  :
17  pin(pin),
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 }
const mcpwm_unit_t pwm_unit
Definition: ESP32_MCPwm.h:17
const mcpwm_io_signals_t io_signal
Definition: ESP32_MCPwm.h:19
const mcpwm_config_t pwm_config
Definition: ESP32_MCPwm.h:21
const gpio_num_t pin
Definition: ESP32_MCPwm.h:16
const mcpwm_timer_t pwm_timer
Definition: ESP32_MCPwm.h:18
const mcpwm_operator_t pwm_operator
Definition: ESP32_MCPwm.h:20

Member Function Documentation

◆ _set_duty()

err_t ESP32_MCPwm::_set_duty ( uint16_t  duty)
overrideprivatevirtual

Implements aruna::driver::Pwm.

Definition at line 29 of file ESP32_MCPwm.cpp.

29  {
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 }
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
const mcpwm_timer_t pwm_timer
Definition: ESP32_MCPwm.h:18
const mcpwm_operator_t pwm_operator
Definition: ESP32_MCPwm.h:20
Here is the call graph for this function:

◆ _set_frequency()

err_t ESP32_MCPwm::_set_frequency ( uint32_t  frequency_hz)
overrideprivatevirtual

Implements aruna::driver::Pwm.

Definition at line 38 of file ESP32_MCPwm.cpp.

38  {
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 }
const mcpwm_unit_t pwm_unit
Definition: ESP32_MCPwm.h:17
const mcpwm_timer_t pwm_timer
Definition: ESP32_MCPwm.h:18
uint32_t frequency_hz
Definition: Pwm.h:15

Member Data Documentation

◆ DEFAULT_PWM_CONFIG

constexpr mcpwm_config_t aruna::driver::ESP32_MCPwm::DEFAULT_PWM_CONFIG
staticprivate
Initial value:
= {
100,
0,
0,
MCPWM_DUTY_MODE_0,
MCPWM_UP_COUNTER,
}

Definition at line 23 of file ESP32_MCPwm.h.

◆ io_signal

const mcpwm_io_signals_t aruna::driver::ESP32_MCPwm::io_signal
private

Definition at line 19 of file ESP32_MCPwm.h.

◆ pin

const gpio_num_t aruna::driver::ESP32_MCPwm::pin
private

Definition at line 16 of file ESP32_MCPwm.h.

◆ pwm_config

const mcpwm_config_t aruna::driver::ESP32_MCPwm::pwm_config
private

Definition at line 21 of file ESP32_MCPwm.h.

◆ pwm_operator

const mcpwm_operator_t aruna::driver::ESP32_MCPwm::pwm_operator
private

Definition at line 20 of file ESP32_MCPwm.h.

◆ pwm_timer

const mcpwm_timer_t aruna::driver::ESP32_MCPwm::pwm_timer
private

Definition at line 18 of file ESP32_MCPwm.h.

◆ pwm_unit

const mcpwm_unit_t aruna::driver::ESP32_MCPwm::pwm_unit
private

Definition at line 17 of file ESP32_MCPwm.h.


The documentation for this class was generated from the following files: