Mark build test makefiles as being incompatible with parallel make builds, as they...
[pub/USBasp.git] / LUFA / Drivers / Peripheral / AVR8 / ADC_AVR8.h
index 99f70d1..d85fddc 100644 (file)
@@ -1,13 +1,13 @@
 /*
              LUFA Library
 /*
              LUFA Library
-     Copyright (C) Dean Camera, 2011.
+     Copyright (C) Dean Camera, 2012.
 
   dean [at] fourwalledcubicle [dot] com
            www.lufa-lib.org
 */
 
 /*
 
   dean [at] fourwalledcubicle [dot] com
            www.lufa-lib.org
 */
 
 /*
-  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)
+  Copyright 2012  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
 
   Permission to use, copy, modify, distribute, and sell this
   software and its documentation for any purpose is hereby granted
  *  application.
  *
  *  \code
  *  application.
  *
  *  \code
- *      // Initialise the ADC driver before first use
+ *      // Initialize the ADC driver before first use
  *      ADC_Init(ADC_FREE_RUNNING | ADC_PRESCALE_32);
  *      ADC_Init(ADC_FREE_RUNNING | ADC_PRESCALE_32);
- *
+ *      
  *      // Must setup the ADC channel to read beforehand
  *      ADC_SetupChannel(1);
  *      // 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());
  *      // 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);
  *      // Start reading ADC channel 1 in free running (continuous conversion) mode
  *      ADC_StartReading(ADC_REFERENCE_AVCC | ADC_RIGHT_ADJUSTED | ADC_CHANNEL1);
- *      while (!(ADC_IsReadingComplete())) {};
- *      printf("Conversion Result: %d\r\n", ADC_GetResult());
+ *      for (;;)
+ *      {
+ *           while (!(ADC_IsReadingComplete())) {};
+ *           printf("Conversion Result: %d\r\n", ADC_GetResult());
+ *      }
  *  \endcode
  *
  *  @{
  *  \endcode
  *
  *  @{
                        #define _ADC_GET_MUX_MASK2(y)           ADC_CHANNEL ## y
                        #define _ADC_GET_MUX_MASK(y)            _ADC_GET_MUX_MASK2(y)
        #endif
                        #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 */
        /* Public Interface - May be used in end-application: */
                /* Macros: */
                        /** \name ADC Reference Configuration Masks */
                        /** Reference mask, for using the internally generated 2.56V reference voltage as the ADC reference. */
                        #define ADC_REFERENCE_INT2560MV         ((1 << REFS1) | (1 << REFS0))
                        //@}
                        /** 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
                        /** \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
                         */
                        #define ADC_SINGLE_CONVERSION           (0 << ADATE)
                        //@}
                         */
                        #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. */
                        /** \name ADC Prescaler Configuration Masks */
                        //@{
                        /** Sets the ADC input clock to prescale by a factor of 2 the AVR's system clock. */
                        /** MUX mask define for the ADC1 channel of the ADC. See \ref ADC_StartReading() and \ref ADC_GetChannelReading(). */
                        #define ADC_CHANNEL1                    (0x01 << MUX0)
 
                        /** MUX mask define for the ADC1 channel of the ADC. See \ref ADC_StartReading() and \ref ADC_GetChannelReading(). */
                        #define ADC_CHANNEL1                    (0x01 << MUX0)
 
-                       #if !(defined(__AVR_ATmega16U4__)  || defined(__AVR_ATmega32U4__) || defined(__DOXYGEN__))
+                       #if (!(defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__)) || defined(__DOXYGEN__))
                                /** MUX mask define for the ADC2 channel of the ADC. See \ref ADC_StartReading() and \ref ADC_GetChannelReading().
                                 *
                                 *  \note Not available on all AVR models.
                                /** MUX mask define for the ADC2 channel of the ADC. See \ref ADC_StartReading() and \ref ADC_GetChannelReading().
                                 *
                                 *  \note Not available on all AVR models.
                        /** MUX mask define for the ADC7 channel of the ADC. See \ref ADC_StartReading and \ref ADC_GetChannelReading. */
                        #define ADC_CHANNEL7                    (0x07 << MUX0)
 
                        /** MUX mask define for the ADC7 channel of the ADC. See \ref ADC_StartReading and \ref ADC_GetChannelReading. */
                        #define ADC_CHANNEL7                    (0x07 << MUX0)
 
-                       /** MUX mask define for the internal 1.1V bandgap channel of the ADC. See \ref ADC_StartReading() and \ref ADC_GetChannelReading(). */
-                       #define ADC_1100MV_BANDGAP              (0x1E << MUX0)
-
                        #if (defined(__AVR_ATmega16U4__)  || defined(__AVR_ATmega32U4__) || defined(__DOXYGEN__))
                                /** MUX mask define for the ADC8 channel of the ADC. See \ref ADC_StartReading() and \ref ADC_GetChannelReading().
                                 *
                        #if (defined(__AVR_ATmega16U4__)  || defined(__AVR_ATmega32U4__) || defined(__DOXYGEN__))
                                /** MUX mask define for the ADC8 channel of the ADC. See \ref ADC_StartReading() and \ref ADC_GetChannelReading().
                                 *
                                #define ADC_INT_TEMP_SENS           ((1 << 8) | (0x07 << MUX0))
                        #endif
 
                                #define ADC_INT_TEMP_SENS           ((1 << 8) | (0x07 << MUX0))
                        #endif
 
+                       /** MUX mask define for the internal 1.1V band-gap channel of the ADC. See \ref ADC_StartReading() and \ref ADC_GetChannelReading(). */
+                       #define ADC_1100MV_BANDGAP              (0x1E << MUX0)
+
                        /** Retrieves the ADC MUX mask for the given ADC channel number.
                         *
                        /** Retrieves the ADC MUX mask for the given ADC channel number.
                         *
-                        *  \note This macro will only work correctly on channel numbers that are compile-time
-                        *        constants defined by the preprocessor.
+                        *  \attention This macro will only work correctly on channel numbers that are compile-time
+                        *             constants defined by the preprocessor.
                         *
                         *  \param[in] Channel  Index of the ADC channel whose MUX mask is to be retrieved.
                         */
                         *
                         *  \param[in] Channel  Index of the ADC channel whose MUX mask is to be retrieved.
                         */
                         *
                         *  \note This must only be called for ADC channels with are connected to a physical port
                         *        pin of the AVR, denoted by its special alternative function ADCx.
                         *
                         *  \note This must only be called for ADC channels with are connected to a physical port
                         *        pin of the AVR, denoted by its special alternative function ADCx.
-                        *        \n\n
                         *
                         *
-                        *  \note The channel number must be specified as an integer, and <b>not</b> a \c ADC_CHANNEL* mask.
+                        *  \warning The channel number must be specified as an integer, and <b>not</b> a \c ADC_CHANNEL* mask.
                         *
                         *  \param[in] ChannelIndex  ADC channel number to set up for conversions.
                         */
                         *
                         *  \param[in] ChannelIndex  ADC channel number to set up for conversions.
                         */
                         *
                         *  \note This must only be called for ADC channels with are connected to a physical port
                         *        pin of the AVR, denoted by its special alternative function ADCx.
                         *
                         *  \note This must only be called for ADC channels with are connected to a physical port
                         *        pin of the AVR, denoted by its special alternative function ADCx.
-                        *        \n\n
                         *
                         *
-                        *  \note The channel number must be specified as an integer, and <b>not</b> a \c ADC_CHANNEL* mask.
+                        *  \warning The channel number must be specified as an integer, and <b>not</b> a \c ADC_CHANNEL* mask.
                         *
                         *  \param[in] ChannelIndex  ADC channel number to set up for conversions.
                         */
                         *
                         *  \param[in] ChannelIndex  ADC channel number to set up for conversions.
                         */
                         *        the results read directly from the \ref ADC_GetResult() instead to reduce overhead.
                         *
                         *  \param[in] MUXMask  Mask comprising of an ADC channel mask, reference mask and adjustment mask.
                         *        the results read directly from the \ref ADC_GetResult() instead to reduce overhead.
                         *
                         *  \param[in] MUXMask  Mask comprising of an ADC channel mask, reference mask and adjustment mask.
+                        *
+                        *  \return Converted ADC result for the given ADC channel.
                         */
                        static inline uint16_t ADC_GetChannelReading(const uint16_t MUXMask) ATTR_WARN_UNUSED_RESULT;
                        static inline uint16_t ADC_GetChannelReading(const uint16_t MUXMask)
                         */
                        static inline uint16_t ADC_GetChannelReading(const uint16_t MUXMask) ATTR_WARN_UNUSED_RESULT;
                        static inline uint16_t ADC_GetChannelReading(const uint16_t MUXMask)
                                return ADC_GetResult();
                        }
 
                                return ADC_GetResult();
                        }
 
-                       /** Initialises the ADC, ready for conversions. This must be called before any other ADC operations.
+                       /** Initializes the ADC, ready for conversions. This must be called before any other ADC operations.
                         *  The "mode" parameter should be a mask comprised of a conversion mode (free running or single) and
                         *  prescaler masks.
                         *
                         *  \param[in] Mode  Mask of ADC prescale and mode settings.
                         */
                         *  The "mode" parameter should be a mask comprised of a conversion mode (free running or single) and
                         *  prescaler masks.
                         *
                         *  \param[in] Mode  Mask of ADC prescale and mode settings.
                         */
-                       static inline void ADC_Init(uint8_t Mode) ATTR_ALWAYS_INLINE;
-                       static inline void ADC_Init(uint8_t Mode)
+                       static inline void ADC_Init(const uint8_t Mode) ATTR_ALWAYS_INLINE;
+                       static inline void ADC_Init(const uint8_t Mode)
                        {
                                ADCSRA = ((1 << ADEN) | Mode);
                        }
                        {
                                ADCSRA = ((1 << ADEN) | Mode);
                        }