Add script reading bootloader flags
[pub/lufa.git] / LUFA / Drivers / Peripheral / AVR8 / ADC_AVR8.h
index 06162f2..f81484d 100644 (file)
@@ -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
 /** \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 (;;)
 
                #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
 
 
                        /** 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.
                         */
                         *  \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.
                         */
                         *  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)
 
 
                        /** 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)
 
                         *
                         *  \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
                        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__))
                        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__))
 
                        /** 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;