[][src]Trait bl602_hal::prelude::_embedded_hal_Pwm

pub trait _embedded_hal_Pwm {
    type Error;
    type Channel;
    type Time;
    type Duty;
    fn try_disable(&mut self, channel: Self::Channel) -> Result<(), Self::Error>;
fn try_enable(&mut self, channel: Self::Channel) -> Result<(), Self::Error>;
fn try_get_period(&self) -> Result<Self::Time, Self::Error>;
fn try_get_duty(
        &self,
        channel: Self::Channel
    ) -> Result<Self::Duty, Self::Error>;
fn try_get_max_duty(&self) -> Result<Self::Duty, Self::Error>;
fn try_set_duty(
        &mut self,
        channel: Self::Channel,
        duty: Self::Duty
    ) -> Result<(), Self::Error>;
fn try_set_period<P>(&mut self, period: P) -> Result<(), Self::Error>
    where
        P: Into<Self::Time>
; }

Pulse Width Modulation

Examples

Use this interface to control the power output of some actuator

extern crate embedded_hal as hal;

use hal::prelude::*;

fn main() {
    let mut pwm: Pwm1 = {
        // ..
    };

    pwm.try_set_period(1.khz()).unwrap();

    let max_duty = pwm.try_get_max_duty().unwrap();

    // brightest LED
    pwm.try_set_duty(Channel::_1, max_duty).unwrap();

    // dimmer LED
    pwm.try_set_duty(Channel::_2, max_duty / 4).unwrap();
}

Associated Types

type Error

Enumeration of Pwm errors

type Channel

Enumeration of channels that can be used with this Pwm interface

If your Pwm interface has no channels you can use the type () here

type Time

A time unit that can be converted into a human time unit (e.g. seconds)

type Duty

Type for the duty methods

The implementer is free to choose a float / percentage representation (e.g. 0.0 .. 1.0) or an integer representation (e.g. 0 .. 65535)

Loading content...

Required methods

fn try_disable(&mut self, channel: Self::Channel) -> Result<(), Self::Error>

Disables a PWM channel

fn try_enable(&mut self, channel: Self::Channel) -> Result<(), Self::Error>

Enables a PWM channel

fn try_get_period(&self) -> Result<Self::Time, Self::Error>

Returns the current PWM period

fn try_get_duty(
    &self,
    channel: Self::Channel
) -> Result<Self::Duty, Self::Error>

Returns the current duty cycle

While the pin is transitioning to the new duty cycle after a try_set_duty call, this may return the old or the new duty cycle depending on the implementation.

fn try_get_max_duty(&self) -> Result<Self::Duty, Self::Error>

Returns the maximum duty cycle value

fn try_set_duty(
    &mut self,
    channel: Self::Channel,
    duty: Self::Duty
) -> Result<(), Self::Error>

Sets a new duty cycle

fn try_set_period<P>(&mut self, period: P) -> Result<(), Self::Error> where
    P: Into<Self::Time>, 

Sets a new PWM period

Loading content...

Implementors

Loading content...