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. Use pwm_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. Use pwm_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]