[−][src]Trait embedded_hal::capture::Capture
Input capture
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.try_set_resolution(1.ms()).unwrap(); let before = block!(capture.try_capture(Channel::_1)).unwrap(); let after = block!(capture.try_capture(Channel::_1)).unwrap(); let period = after.wrapping_sub(before); println!("Period: {} ms", period); }
Associated Types
type Error
Enumeration of Capture
errors
Possible errors:
- overcapture, the previous capture value was overwritten because it was not read in a timely manner
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
type Time
A time unit that can be converted into a human time unit (e.g. seconds)
type Capture
The type of the value returned by capture
Required methods
fn try_capture(
&mut self,
channel: Self::Channel
) -> Result<Self::Capture, Self::Error>
&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)
fn try_disable(&mut self, channel: Self::Channel) -> Result<(), Self::Error>
Disables a capture channel
fn try_enable(&mut self, channel: Self::Channel) -> Result<(), Self::Error>
Enables a capture channel
fn try_get_resolution(&self) -> Result<Self::Time, Self::Error>
Returns the current resolution
fn try_set_resolution<R>(&mut self, resolution: R) -> Result<(), Self::Error> where
R: Into<Self::Time>,
R: Into<Self::Time>,
Sets the resolution of the capture timer