Updated the AVRISP-MKII Clone programmer project to be compatible with the latest...
[pub/USBasp.git] / LUFA / Drivers / Peripheral / AVR8 / ADC_AVR8.h
index 7a02c61..b4b2b1f 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
  *
  *      // 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 bandgap 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.
                         *
                         *  \note This macro will only work correctly on channel numbers that are compile-time
                        /** 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
                         *        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)
                         *
                         *  \param[in] Mode  Mask of ADC prescale and mode settings.
                         */
                         *
                         *  \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);
                        }