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