pub trait Adc {
    type Channel: PartialEq;

    fn sample(&self, channel: &Self::Channel) -> Result<(), ErrorCode>;
    fn sample_continuous(
        channel: &Self::Channel,
        frequency: u32
    ) -> Result<(), ErrorCode>; fn stop_sampling(&self) -> Result<(), ErrorCode>; fn get_resolution_bits(&self) -> usize; fn get_voltage_reference_mv(&self) -> Option<usize>; fn set_client(&self, client: &'static dyn Client); }
Expand description

Simple interface for reading an ADC sample on any channel.

Required Associated Types

The chip-dependent type of an ADC channel.

Required Methods

Request a single ADC sample on a particular channel. Used for individual samples that have no timing requirements. All ADC samples will be the raw ADC value left-justified in the u16.

Request repeated ADC samples on a particular channel. Callbacks will occur at the given frequency with low jitter and can be set to any frequency supported by the chip implementation. However callbacks may be limited based on how quickly the system can service individual samples, leading to missed samples at high frequencies. All ADC samples will be the raw ADC value left-justified in the u16.

Stop a sampling operation. Can be used to stop any simple or high-speed sampling operation. No further callbacks will occur.

Function to ask the ADC how many bits of resolution are in the samples it is returning.

Function to ask the ADC what reference voltage it used when taking the samples. This allows the user of this interface to calculate an actual voltage from the ADC reading.

The returned reference voltage is in millivolts, or None if unknown.