Trait embedded_hal::Capture

source ·
pub trait Capture {
    type Error;
    type Channel;
    type Time;
    type Capture;

    // Required methods
    fn capture(
        &mut self,
        channel: Self::Channel
    ) -> Result<Self::Capture, Self::Error>;
    fn disable(&mut self, channel: Self::Channel);
    fn enable(&mut self, channel: Self::Channel);
    fn get_resolution(&self) -> Self::Time;
    fn set_resolution<R>(&mut self, resolution: R)
       where R: Into<Self::Time>;
}
Expand description

Input capture

This trait is available if embedded-hal is built with the "unproven" feature.

Examples

You can use this interface to measure the period of (quasi) periodic signals / events

extern crate embedded_hal as hal;
#[macro_use(block)]
extern crate nb;

use hal::prelude::*;

fn main() {
    let mut capture: Capture1 = {
        // ..
    };

    capture.set_resolution(1.ms());

    let before = block!(capture.capture(Channel::_1)).unwrap();
    let after = block!(capture.capture(Channel::_1)).unwrap();

    let period = after.wrapping_sub(before);

    println!("Period: {} ms", period);
}

Required Associated Types§

source

type Error

Enumeration of Capture errors

Possible errors:

  • overcapture, the previous capture value was overwritten because it was not read in a timely manner
source

type Channel

Enumeration of channels that can be used with this Capture interface

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

source

type Time

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

source

type Capture

The type of the value returned by capture

Required Methods§

source

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

“Waits” for a transition in the capture channel and returns the value of counter at that instant

NOTE that you must multiply the returned value by the resolution of this Capture interface to get a human time unit (e.g. seconds)

source

fn disable(&mut self, channel: Self::Channel)

Disables a capture channel

source

fn enable(&mut self, channel: Self::Channel)

Enables a capture channel

source

fn get_resolution(&self) -> Self::Time

Returns the current resolution

source

fn set_resolution<R>(&mut self, resolution: R)where R: Into<Self::Time>,

Sets the resolution of the capture timer

Implementors§