3.20. pwm
— Pulse width modulation¶
Source code: src/drivers/pwm.h, src/drivers/pwm.c
Functions
-
int
pwm_module_init
(void)¶ Initialize the pwm module. This function must be called before calling any other function in this module.
The module will only be initialized once even if this function is called multiple times.
- Return
- zero(0) or negative error code.
-
int
pwm_init
(struct pwm_driver_t *self_p, struct pwm_device_t *dev_p, long frequency, long duty_cycle)¶ Initialize given PWM driver object.
- Return
- zero(0) or negative error code.
- Parameters
self_p
: Driver object to be initialized.dev_p
: PWM device to use.frequency
: Frequency.duty_cycle
: Duty cycle.
-
int
pwm_start
(struct pwm_driver_t *self_p)¶ Start given PWM driver object.
- Return
- zero(0) or negative error code.
- Parameters
self_p
: Driver object to start.
-
int
pwm_stop
(struct pwm_driver_t *self_p)¶ Stop given PWM driver object.
- Return
- zero(0) or negative error code.
- Parameters
self_p
: Driver object to stop.
-
int
pwm_set_frequency
(struct pwm_driver_t *self_p, long value)¶ Set the frequency of the PWM signal.
- Return
- zero(0) or negative error code.
- Parameters
self_p
: Driver object.value
: Frequency. Usepwm_frequency()
to convert a frequency in Hertz to a value expected by this function.
-
long
pwm_get_frequency
(struct pwm_driver_t *self_p)¶ Get current frequency.
- Return
- Current frequency.
- Parameters
self_p
: Driver object.
-
int
pwm_set_duty_cycle
(struct pwm_driver_t *self_p, long value)¶ Set the duty cycle of the signal.
- Return
- zero(0) or negative error code.
- Parameters
self_p
: Driver object.value
: Duty cycle. Usepwm_duty_cycle()
to convert a duty cycle percentage to a value expected by this function.
-
long
pwm_get_duty_cycle
(struct pwm_driver_t *self_p)¶ Get current duty cycle.
- Return
- Current duty cycle.
- Parameters
self_p
: Driver object.
-
long
pwm_frequency
(int hertz)¶ Convert a duty cycle percentage to a value for
pwm_set_frequency()
.- Return
- Frequency.
- Parameters
hertz
: Frequency in Hertz.
-
int
pwm_frequency_as_hertz
(long value)¶ Convert a frequency value returned by
pwm_get_frequency()
to Hertz.- Return
- Frequency in Hertz.
- Parameters
value
: Frequency.
-
long
pwm_duty_cycle
(int percentage)¶ Convert a duty cycle percentage to a value for
pwm_set_duty_cycle()
.- Return
- Duty cycle.
- Parameters
percentage
: Duty cycle percentage.
-
int
pwm_duty_cycle_as_percent
(long value)¶ Convert a duty cycle value returned by
pwm_get_duty_cycle()
to a percentage.- Return
- Duty cycle percentage.
- Parameters
value
: Duty cycle.
-
struct pwm_device_t *
pwm_pin_to_device
(struct pin_device_t *pin_p)¶ Get the PWM device for given pin.
- Return
- PWM device, or NULL on error.
- Parameters
pin_p
: The pin device to get the PWM device for.
Variables
-
struct pwm_device_t
pwm_device
[PWM_DEVICE_MAX]¶