pub trait _embedded_hal_Capture {
    type Error;
    type Channel;
    type Time;
    type Capture;

    fn capture(
        &mut self,
        channel: Self::Channel
    ) -> Result<Self::Capture, Error<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

Enumeration of Capture errors

Possible errors:

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

Enumeration of channels that can be used with this Capture interface

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

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

The type of the value returned by capture

Required Methods

“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)

Disables a capture channel

Enables a capture channel

Returns the current resolution

Sets the resolution of the capture timer

Implementors