Trait embedded_hal::capture::nb::Capture [−][src]
pub trait Capture {
type Error: Debug;
type Channel;
type Time;
type Capture;
fn capture(
&mut self,
channel: Self::Channel
) -> Result<Self::Capture, Self::Error>;
fn disable(&mut self, channel: Self::Channel) -> Result<(), Self::Error>;
fn enable(&mut self, channel: Self::Channel) -> Result<(), Self::Error>;
fn get_resolution(&self) -> Result<Self::Time, Self::Error>;
fn set_resolution<R>(&mut self, resolution: R) -> Result<(), Self::Error>
where
R: Into<Self::Time>;
}Expand description
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::capture::nb::Capture;
fn main() {
let mut capture: Capture1 = {
// ..
};
capture.set_resolution(1.ms()).unwrap();
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);
}
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
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
fn get_resolution(&self) -> Result<Self::Time, Self::Error>
fn get_resolution(&self) -> Result<Self::Time, Self::Error>
Returns the current resolution