modm API documentation
|
#include <modm/platform/adc/adc_interrupt.hpp>
Public Types | |
enum | Channel : uint8_t { In0 = 0, In1 = 1, In2 = 2, In3 = 3, In4 = 4, In5 = 5, In6 = 6, In7 = 7, In8 = 8, In9 = 9, In10 = 10, In11 = 11, Temperature = 12, InternalReference = 13, Battery = 14, In15 = 15, In16 = 16, In17 = 17, In18 = 18 } |
enum | ChannelMask : uint32_t { In0 = (1u << 0), In1 = (1u << 1), In2 = (1u << 2), In3 = (1u << 3), In4 = (1u << 4), In5 = (1u << 5), In6 = (1u << 6), In7 = (1u << 7), In8 = (1u << 8), In9 = (1u << 9), In10 = (1u << 10), In11 = (1u << 11), Temperature = (1u << 12), InternalReference = (1u << 13), Battery = (1u << 14), In15 = (1u << 15), In16 = (1u << 16), In17 = (1u << 17), In18 = (1u << 18) } |
enum | ClockMode { Synchronous, Asynchronous } |
enum | DmaMode : uint32_t { Disabled = 0, OneShot = ADC_CFGR1_DMAEN, Circular = ADC_CFGR1_DMACFG | ADC_CFGR1_DMAEN, Mask = Circular } |
enum | ExternalTriggerPolarity { NoTriggerDetection = 0x0u, RisingEdge = 0x1u, FallingEdge = 0x2u, RisingAndFallingEdge = 0x3u } |
enum | Interrupt : uint32_t { Ready = ADC_IER_ADRDYIE, EndOfSampling = ADC_IER_EOSMPIE, EndOfConversion = ADC_IER_EOCIE, EndOfSequence = ADC_IER_EOSIE, Overrun = ADC_IER_OVRIE, AnalogWatchdog = ADC_IER_AWD1IE } |
enum | InterruptFlag : uint32_t { Ready = ADC_ISR_ADRDY, EndOfSampling = ADC_ISR_EOSMP, EndOfConversion = ADC_ISR_EOC, EndOfSequence = ADC_ISR_EOS, Overrun = ADC_ISR_OVR, AnalogWatchdog = ADC_ISR_AWD1, All = ADC_ISR_ADRDY | ADC_ISR_EOSMP | ADC_ISR_EOC | ADC_ISR_EOS | ADC_ISR_OVR | ADC_ISR_AWD1 } |
enum | OversampleRatio : uint32_t { x2 = (0 << ADC_CFGR2_OVSR_Pos), x4 = (1 << ADC_CFGR2_OVSR_Pos), x8 = (2 << ADC_CFGR2_OVSR_Pos), x16 = (3 << ADC_CFGR2_OVSR_Pos), x32 = (4 << ADC_CFGR2_OVSR_Pos), x64 = (5 << ADC_CFGR2_OVSR_Pos), x128 = (6 << ADC_CFGR2_OVSR_Pos), x256 = (7 << ADC_CFGR2_OVSR_Pos) } |
enum | OversampleShift : uint32_t { Div1 = (0 << ADC_CFGR2_OVSS_Pos), Div2 = (1 << ADC_CFGR2_OVSS_Pos), Div4 = (2 << ADC_CFGR2_OVSS_Pos), Div8 = (3 << ADC_CFGR2_OVSS_Pos), Div16 = (4 << ADC_CFGR2_OVSS_Pos), Div32 = (5 << ADC_CFGR2_OVSS_Pos), Div64 = (6 << ADC_CFGR2_OVSS_Pos), Div128 = (7 << ADC_CFGR2_OVSS_Pos), Div256 = (8 << ADC_CFGR2_OVSS_Pos) } |
enum | RegularConversionExternalTrigger { Event0 = 0x0u, Event1 = 0x1u, Event2 = 0x2u, Event3 = 0x3u, Event4 = 0x4u, Event5 = 0x5u, Event6 = 0x6u, Event7 = 0x7u } |
enum | Resolution : uint8_t { Bits12 = 0, Bits10 = ADC_CFGR1_RES_0, Bits8 = ADC_CFGR1_RES_1, Bits6 = ADC_CFGR1_RES_0 | ADC_CFGR1_RES_1 } |
enum | SampleTime : uint8_t { Cycles1_5 = 0b000, SampleTime::Cycles3_5 = 0b001, SampleTime::Cycles7_5 = 0b010, SampleTime::Cycles12_5 = 0b011, SampleTime::Cycles19_5 = 0b100, SampleTime::Cycles39_5 = 0b101, SampleTime::Cycles79_5 = 0b110, SampleTime::Cycles160_5 = 0b111 } |
enum | SampleTimeGroup { Group1, Group2 } |
Public Member Functions | |
MODM_FLAGS32 (ChannelMask) | |
MODM_FLAGS32 (Interrupt) | |
MODM_FLAGS32 (InterruptFlag) | |
Static Public Member Functions | |
static void | attachInterruptHandler (Handler handler) |
static void | acknowledgeInterruptFlag () |
static void | acknowledgeInterruptFlags (InterruptFlag_t flags) |
template<uint64_t available, uint64_t requested, percent_t tolerance> | |
static void | assertBaudrateInTolerance () |
template<double available, double requested, percent_t tolerance> | |
static void | assertDurationInTolerance () |
static uint16_t | calibrate () |
template<typename... Gpios> | |
static consteval ChannelMask_t | channelMaskFromPins () |
template<typename... Gpios> | |
static consteval std::array< Channel, sizeof...(Gpios)> | channelSequenceFromPins () |
static void | clearChannel (Channel channel) |
static void | configurePurpose () |
configures a peripheral for a specific purpose | |
template<class... Signals> | |
static void | connect () |
static void | disable () |
static void | disableFreeRunningMode () |
static void | disableInterrupt (Interrupt_t interrupt) |
static void | disableOversampling () |
static void | enable () |
static void | enableFreeRunningMode () |
static void | enableInternalChannel (Channel channel) |
static void | enableInterrupt (Interrupt_t interrupt) |
static void | enableInterruptVector (uint32_t priority, bool enable=true) |
static void | enableOversampling (OversampleRatio ratio, OversampleShift shift=OversampleShift::Div1) |
static void | enableRegularConversionExternalTrigger (ExternalTriggerPolarity externalTriggerPolarity, RegularConversionExternalTrigger regularConversionExternalTrigger) |
static bool | getAdcEnabled () |
static uint8_t | getChannel () |
static uintptr_t | getDataRegisterAddress () |
static bool | getInterruptFlag () |
Read an interrupt flag. | |
static InterruptFlag_t | getInterruptFlags () |
static void | getParameter () |
returns a parameter | |
template<class Gpio > | |
static constexpr Channel | getPinChannel () |
Get the channel for a Pin. | |
static uint16_t | getValue () |
template<class SystemClock , ClockMode mode, frequency_t frequency = MHz(1), percent_t tolerance = pct(10)> | |
static void | initialize () |
static bool | isConversionFinished () |
static bool | isReady () |
static uint16_t | readChannel (Channel channel) |
static uint16_t | readInternalVoltageReference () |
Reads the calibrated Internal Reference Voltage in mV. | |
template<class Gpio > | |
static uint16_t | readPinChannel () |
static int16_t | readTemperature (uint16_t Vref) |
Reads the calibrated temperature in degree Celsius. | |
static void | setAutoOffMode (bool enable) |
static bool | setChannel (Channel channel, SampleTimeGroup group=SampleTimeGroup::Group1) |
static bool | setChannel (Channel channel) |
static void | setChannels (ChannelMask_t channels) |
static bool | setChannels (std::span< const Channel > channels) |
static void | setDmaMode (DmaMode mode) |
static void | setLeftAdjustResult () |
static void | setParameter () |
sets a parameter | |
template<class Gpio > | |
static bool | setPinChannel (SampleTimeGroup group=SampleTimeGroup::Group1) |
Setting the channel for a Pin. | |
static void | setResolution (Resolution resolution) |
static void | setRightAdjustResult () |
static void | setSampleTime (SampleTime sampleTime, SampleTimeGroup group=SampleTimeGroup::Group1) |
static void | setSampleTimeGroup (Channel channel, SampleTimeGroup group=SampleTimeGroup::Group1) |
static void | setWaitMode (bool enable) |
static void | startConversion () |
static void | stopConversion () |
static void | acknowledgeInterruptFlag () |
template<uint64_t available, uint64_t requested, percent_t tolerance> | |
static void | assertBaudrateInTolerance () |
template<double available, double requested, percent_t tolerance> | |
static void | assertDurationInTolerance () |
static void | configurePurpose () |
configures a peripheral for a specific purpose | |
static uint8_t | getChannel () |
static bool | getInterruptFlag () |
Read an interrupt flag. | |
static void | getParameter () |
returns a parameter | |
static bool | setChannel (Channel channel) |
static void | setParameter () |
sets a parameter | |
Protected Typedefs | |
typedef void (* | Handler) () |
ADC Interrupt module
This class allows you to attach functions to the ADC Conversion Complete Interrupt via function pointers. Be aware however, that this implementation is slower and requires more resources than writing the function code directly into the interrupt service routines.
|
inheritedstrong |
Regular conversion external trigger sources
The source mapped to each event varies per controller family, refer to the ADC external trigger section in the reference manual of your controller for more information
|
inheritedstrong |
|
inheritedstatic |
Acknowledge an interrupt flag.
We use acknowledge here, since it describes the intention rather than the actual implementation.
|
inheritedstatic |
Acknowledge an interrupt flag.
We use acknowledge here, since it describes the intention rather than the actual implementation.
|
inheritedinlinestatic |
Since baudrates are usually generated by prescaling a system clock, only several distinct values can be generated. This method checks if the user requested baudrate is within error tolerance of the system achievable baudrate.
|
inheritedinlinestatic |
Since baudrates are usually generated by prescaling a system clock, only several distinct values can be generated. This method checks if the user requested baudrate is within error tolerance of the system achievable baudrate.
|
inheritedstatic |
|
inheritedstatic |
|
inheritedstatic |
|
inheritedinlinestatic |
Returns true if the ADRDY bit of the ISR is set
|
inheritedstatic |
Analog channel selection.
true
if the channel exists and was available, false
otherwise
|
inheritedstatic |
Analog channel selection.
true
if the channel exists and was available, false
otherwise
|
inheritedinlinestatic |
Analog channel selection.
This not for scan mode. The number of channels will be set to 1, the channel selected and the corresponding pin will be set to analog input. If the the channel is modified during a conversion, the current conversion is reset and a new start pulse is sent to the ADC to convert the new chosen channnel / group of channels.
channel | The channel which shall be read. |
|
inheritedinlinestatic |
Set channel scan sequence mask. All selected channels will be converted sequentially starting from the lowest.
channels | Mask of channels to convert |
|
inheritedinlinestatic |
Set channel scan sequence to convert up to 8 channels in arbitrary order.
channels | Flag mask of channels to convert |
|
inheritedinlinestatic |
Configure DMA mode (disabled, one-shot or circular)
In one-shot mode DMA requests are disabled at the end of the DMA transfer. If circular mode is selected request are being generated as long as conversions are performed.