X-Git-Url: http://git.linex4red.de/pub/lufa.git/blobdiff_plain/eee252603be67c539f9986cde76454f756e55d95..refs/heads/ProMicro:/LUFA/Drivers/Peripheral/AVR8/ADC_AVR8.h diff --git a/LUFA/Drivers/Peripheral/AVR8/ADC_AVR8.h b/LUFA/Drivers/Peripheral/AVR8/ADC_AVR8.h index 06162f29b..f81484d84 100644 --- a/LUFA/Drivers/Peripheral/AVR8/ADC_AVR8.h +++ b/LUFA/Drivers/Peripheral/AVR8/ADC_AVR8.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2012. + Copyright (C) Dean Camera, 2021. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2012 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2021 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -41,28 +41,28 @@ /** \ingroup Group_ADC * \defgroup Group_ADC_AVR8 ADC Peripheral Driver (AVR8) * - * \section Sec_ModDescription Module Description + * \section Sec_ADC_AVR8_ModDescription Module Description * On-chip Analogue-to-Digital converter (ADC) driver for supported U4, U6 and U7 model AVRs that contain an ADC * peripheral internally. * * \note This file should not be included directly. It is automatically included as needed by the ADC driver * dispatch header located in LUFA/Drivers/Peripheral/ADC.h. * - * \section Sec_ExampleUsage Example Usage + * \section Sec_ADC_AVR8_ExampleUsage Example Usage * The following snippet is an example of how this module may be used within a typical * application. * * \code * // Initialize the ADC driver before first use * ADC_Init(ADC_FREE_RUNNING | ADC_PRESCALE_32); - * + * * // Must setup the ADC channel to read beforehand * ADC_SetupChannel(1); - * + * * // Perform a single conversion of the ADC channel 1 * ADC_GetChannelReading(ADC_REFERENCE_AVCC | ADC_RIGHT_ADJUSTED | ADC_CHANNEL1); * printf("Conversion Result: %d\r\n", ADC_GetResult()); - * + * * // Start reading ADC channel 1 in free running (continuous conversion) mode * ADC_StartReading(ADC_REFERENCE_AVCC | ADC_RIGHT_ADJUSTED | ADC_CHANNEL1); * for (;;) @@ -93,22 +93,14 @@ #if !(defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB646__) || \ defined(__AVR_AT90USB1287__) || defined(__AVR_AT90USB647__) || \ - defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__) || \ - defined(__AVR_ATmega32U6__)) + defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__)) #error The ADC peripheral driver is not currently available for your selected microcontroller model. #endif - /* Private Interface - For use in library only: */ - #if !defined(__DOXYGEN__) - /* Macros: */ - #define _ADC_GET_MUX_MASK2(y) ADC_CHANNEL ## y - #define _ADC_GET_MUX_MASK(y) _ADC_GET_MUX_MASK2(y) - #endif - /* Public Interface - May be used in end-application: */ /* Macros: */ /** \name ADC Reference Configuration Masks */ - //@{ + /**@{*/ /** Reference mask, for using the voltage present at the AVR's AREF pin for the ADC reference. */ #define ADC_REFERENCE_AREF 0 @@ -117,10 +109,10 @@ /** Reference mask, for using the internally generated 2.56V reference voltage as the ADC reference. */ #define ADC_REFERENCE_INT2560MV ((1 << REFS1) | (1 << REFS0)) - //@} + /**@}*/ /** \name ADC Result Adjustment Configuration Masks */ - //@{ + /**@{*/ /** Left-adjusts the 10-bit ADC result, so that the upper 8 bits of the value returned by the * \ref ADC_GetResult() macro contain the 8 most significant bits of the result. */ @@ -130,10 +122,10 @@ * \ref ADC_GetResult() macro contain the 8 least significant bits of the result. */ #define ADC_RIGHT_ADJUSTED (0 << ADLAR) - //@} + /**@}*/ /** \name ADC Mode Configuration Masks */ - //@{ + /**@{*/ /** Sets the ADC mode to free running, so that conversions take place continuously as fast as the ADC * is capable of at the given input clock speed. */ @@ -143,10 +135,10 @@ * the ADC returns to idle. */ #define ADC_SINGLE_CONVERSION (0 << ADATE) - //@} + /**@}*/ /** \name ADC Prescaler Configuration Masks */ - //@{ + /**@{*/ /** Sets the ADC input clock to prescale by a factor of 2 the AVR's system clock. */ #define ADC_PRESCALE_2 (1 << ADPS0) @@ -167,10 +159,10 @@ /** Sets the ADC input clock to prescale by a factor of 128 the AVR's system clock. */ #define ADC_PRESCALE_128 ((1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0)) - //@} + /**@}*/ /** \name ADC MUX Masks */ - //@{ + /**@{*/ /** MUX mask define for the ADC0 channel of the ADC. See \ref ADC_StartReading() and \ref ADC_GetChannelReading(). */ #define ADC_CHANNEL0 (0x00 << MUX0) @@ -258,8 +250,8 @@ * * \param[in] Channel Index of the ADC channel whose MUX mask is to be retrieved. */ - #define ADC_GET_CHANNEL_MASK(Channel) _ADC_GET_MUX_MASK(Channel) - //@} + #define ADC_GET_CHANNEL_MASK(Channel) CONCAT_EXPANDED(ADC_CHANNEL, Channel) + /**@}*/ /* Inline Functions: */ /** Configures the given ADC channel, ready for ADC conversions. This function sets the @@ -276,8 +268,7 @@ static inline void ADC_SetupChannel(const uint8_t ChannelIndex) { #if (defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB646__) || \ - defined(__AVR_AT90USB1287__) || defined(__AVR_AT90USB647__) || \ - defined(__AVR_ATmega32U6__)) + defined(__AVR_AT90USB1287__) || defined(__AVR_AT90USB647__)) DDRF &= ~(1 << ChannelIndex); DIDR0 |= (1 << ChannelIndex); #elif (defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__)) @@ -318,8 +309,7 @@ static inline void ADC_DisableChannel(const uint8_t ChannelIndex) { #if (defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB646__) || \ - defined(__AVR_AT90USB1287__) || defined(__AVR_AT90USB647__) || \ - defined(__AVR_ATmega32U6__)) + defined(__AVR_AT90USB1287__) || defined(__AVR_AT90USB647__)) DDRF &= ~(1 << ChannelIndex); DIDR0 &= ~(1 << ChannelIndex); #elif (defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__)) @@ -372,7 +362,7 @@ /** Indicates if the current ADC conversion is completed, or still in progress. * - * \return Boolean false if the reading is still taking place, or true if the conversion is + * \return Boolean \c false if the reading is still taking place, or true if the conversion is * complete and ready to be read out with \ref ADC_GetResult(). */ static inline bool ADC_IsReadingComplete(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;