|
enum | Channel : uint8_t {
Channel0 = 0,
Channel1 = 1,
Channel2 = 2,
Channel3 = 3,
Channel4 = 4,
Channel5 = 5,
Channel6 = 6,
Channel7 = 7,
Channel8 = 8,
Channel9 = 9,
Channel10 = 10,
Channel11 = 11,
Channel12 = 12,
Channel13 = 13,
Channel14 = 14,
Channel15 = 15,
Channel16 = 16,
Channel17 = 17,
Channel18 = 18,
Channel::BatDiv2 = 18,
Channel::TemperatureSensor = 16,
Channel::InternalReference = 17
} |
|
enum | ExternalTriggerPolarity { NoTriggerDetection = 0x0u,
RisingEdge = 0x1u,
FallingEdge = 0x2u,
RisingAndFallingEdge = 0x3u
} |
|
enum | Interrupt : uint32_t { Interrupt::AnalogWatchdog = ADC_CR1_AWDIE,
Interrupt::EndOfRegularConversion = ADC_CR1_EOCIE,
Interrupt::EndOfInjectedConversion = ADC_CR1_JEOCIE,
Interrupt::Overrun = ADC_CR1_OVRIE
} |
|
enum | InterruptFlag : uint32_t {
InterruptFlag::AnalogWatchdog = ADC_SR_AWD,
InterruptFlag::EndOfRegularConversion = ADC_SR_EOC,
InterruptFlag::EndOfInjectedConversion = ADC_SR_JEOC,
InterruptFlag::Overrun = ADC_SR_OVR,
InterruptFlag::All = ADC_SR_AWD | ADC_SR_EOC | ADC_SR_JEOC | ADC_SR_OVR
} |
|
enum | RegularConversionExternalTrigger {
Event0 = 0x0u,
Event1 = 0x1u,
Event2 = 0x2u,
Event3 = 0x3u,
Event4 = 0x4u,
Event5 = 0x5u,
Event6 = 0x6u,
Event7 = 0x7u,
Event8 = 0x8u,
Event9 = 0x9u,
Event10 = 0xAu,
Event11 = 0xBu,
Event12 = 0xCu,
Event13 = 0xDu,
Event14 = 0xEu,
Event15 = 0xFu
} |
|
enum | SampleTime : uint8_t {
SampleTime::Cycles3 = 0b000,
SampleTime::Cycles15 = 0b001,
SampleTime::Cycles28 = 0b010,
SampleTime::Cycles56 = 0b011,
SampleTime::Cycles84 = 0b100,
SampleTime::Cycles112 = 0b101,
SampleTime::Cycles144 = 0b110,
SampleTime::Cycles480 = 0b111
} |
|
|
static void | attachInterruptHandler (Handler handler) |
|
static void | acknowledgeInterruptFlag () |
|
static void | acknowledgeInterruptFlags (const InterruptFlag_t flags) |
|
static bool | addChannel (const Channel channel, const SampleTime sampleTime=static_cast< SampleTime >(0b000)) |
| Add a channel to conversion group.
|
|
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
|
|
template<class... Signals> |
static void | connect () |
|
static void | disable () |
|
static void | disableDmaMode () |
|
static void | disableDmaRequests () |
|
static void | disableFreeRunningMode () |
|
static void | disableInterrupt (const Interrupt_t interrupt) |
|
static void | disableScanMode () |
|
static void | disableTemperatureRefVMeasurement () |
| Switch on temperature- and V_REF measurement.
|
|
static void | enable () |
|
static void | enableDmaMode () |
|
static void | enableDmaRequests () |
|
static void | enableFreeRunningMode () |
|
static void | enableInterrupt (const Interrupt_t interrupt) |
|
static void | enableInterruptVector (const uint32_t priority, const bool enable=true) |
|
static void | enableRegularConversionExternalTrigger (ExternalTriggerPolarity externalTriggerPolarity, RegularConversionExternalTrigger regularConversionExternalTrigger) |
|
static void | enableScanMode () |
|
static void | enableTemperatureRefVMeasurement () |
| Switch on temperature- and V_REF measurement.
|
|
static bool | getAdcEnabled () |
|
static Channel | 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 , frequency_t frequency = MHz(10), percent_t tolerance = pct(10)> |
static void | initialize () |
|
static bool | isConversionFinished () |
|
static uint16_t | readChannel (Channel channel) |
|
static bool | setChannel (const Channel channel, const SampleTime sampleTime=static_cast< SampleTime >(0b000)) |
|
static bool | setChannel (Channel channel) |
|
static void | setLeftAdjustResult () |
|
static void | setParameter () |
| sets a parameter
|
|
template<class Gpio > |
static bool | setPinChannel (SampleTime sampleTime=static_cast< SampleTime >(0b000)) |
| Setting the channel for a Pin.
|
|
static void | setRightAdjustResult () |
|
static void | setSampleTime (const Channel channel, const SampleTime sampleTime=static_cast< SampleTime >(0b000)) |
| change sample time of ADC channel
|
|
static void | startConversion () |
|
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 bool | getInterruptFlag () |
| Read an interrupt flag.
|
|
static void | getParameter () |
| returns a parameter
|
|
static bool | setChannel (Channel channel) |
|
static void | setParameter () |
| sets a parameter
|
|
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.
- See also
- AnalogSensors uses this implemenation.
- Author
- Niklas Hauser
Channels, which can be used with this ADC.
You can specify the channel by using a pin-name, like PIN_C0, an internal sensor, like TEMPERATURE_SENSOR or just the plain channel number, like CHANNEL_0.
Enum Values | Documentation |
---|
BatDiv2 | Half the V_BAT voltage.
|
TemperatureSensor | Measure the ambient temperature of the device. @li Supported temperature range: -40 to 125 C
@li Precision: +-1.5 C
@see Reference manual (i.e. RM0090) for the formula for the
calculation of the actual temperature.
@note The TSVREFE bit must be set to enable the conversion of
this internal channel. |
InternalReference | Internal reference voltage. @note The TSVREFE bit must be set to enable the conversion of
this internal channel. |
template<class SystemClock , frequency_t frequency = MHz(10), percent_t tolerance = pct(10)>
static void modm::platform::Adc2::initialize |
( |
| ) |
|
|
inheritedstatic |
Initialize and enable the A/D converter.
Enables the ADC clock and switches on the ADC. The ADC clock prescaler will be set as well.
The ADC clock must not exceed 36 MHz for Vdd > 2.4V, or 18MHz for Vdd < 2.4V.