Added explicit ADC channel masks for the standard set of ADC channels, as the single...
[pub/lufa.git] / LUFA / Drivers / Peripheral / AVRU4U6U7 / ADC.h
index 472e1df..b0a9b9e 100644 (file)
 \r
                        /** Sets the ADC input clock to prescale by a factor of 128 the AVR's system clock. */\r
                        #define  ADC_PRESCALE_128                ((1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0))\r
+                       \r
+                       //@{\r
+                       /** MUX mask define for the ADC0 channel of the ADC. See \ref ADC_StartReading and \ref ADC_GetChannelReading. */\r
+                       #define  ADC_CHANNEL0                    0x00\r
+\r
+                       /** MUX mask define for the ADC1 channel of the ADC. See \ref ADC_StartReading and \ref ADC_GetChannelReading. */\r
+                       #define  ADC_CHANNEL1                    0x01\r
+\r
+                       /** MUX mask define for the ADC2 channel of the ADC. See \ref ADC_StartReading and \ref ADC_GetChannelReading. */\r
+                       #define  ADC_CHANNEL2                    0x02\r
+\r
+                       /** MUX mask define for the ADC3 channel of the ADC. See \ref ADC_StartReading and \ref ADC_GetChannelReading. */\r
+                       #define  ADC_CHANNEL3                    0x03\r
+\r
+                       /** MUX mask define for the ADC4 channel of the ADC. See \ref ADC_StartReading and \ref ADC_GetChannelReading. */\r
+                       #define  ADC_CHANNEL4                    0x04\r
 \r
+                       /** MUX mask define for the ADC5 channel of the ADC. See \ref ADC_StartReading and \ref ADC_GetChannelReading. */\r
+                       #define  ADC_CHANNEL5                    0x05\r
+\r
+                       /** MUX mask define for the ADC6 channel of the ADC. See \ref ADC_StartReading and \ref ADC_GetChannelReading. */\r
+                       #define  ADC_CHANNEL6                    0x06\r
+\r
+                       /** MUX mask define for the ADC7 channel of the ADC. See \ref ADC_StartReading and \ref ADC_GetChannelReading. */\r
+                       #define  ADC_CHANNEL7                    0x07\r
+\r
+                       /** MUX mask define for the internal 1.1V bandgap channel of the ADC. See \ref ADC_StartReading and \ref ADC_GetChannelReading. */\r
+                       #define  ADC_1100MV_BANDGAP              0x1E\r
+                       \r
+                       #if (defined(__AVR_ATmega16U4__)  || defined(__AVR_ATmega32U4__) || defined(__DOXYGEN__))\r
+                               /** MUX mask define for the ADC8 channel of the ADC. See \ref ADC_StartReading and \ref ADC_GetChannelReading.\r
+                                *\r
+                                *  \note Note available on all AVR models.\r
+                                */\r
+                               #define  ADC_CHANNEL8                0x20\r
+\r
+                               /** MUX mask define for the ADC9 channel of the ADC. See \ref ADC_StartReading and \ref ADC_GetChannelReading.\r
+                                *\r
+                                *  \note Note available on all AVR models.\r
+                                */\r
+                               #define  ADC_CHANNEL9                0x21\r
+\r
+                               /** MUX mask define for the ADC10 channel of the ADC. See \ref ADC_StartReading and \ref ADC_GetChannelReading.\r
+                                *\r
+                                *  \note Note available on all AVR models.\r
+                                */\r
+                               #define  ADC_CHANNEL10               0x22\r
+\r
+                               /** MUX mask define for the ADC11 channel of the ADC. See \ref ADC_StartReading and \ref ADC_GetChannelReading.\r
+                                *\r
+                                *  \note Note available on all AVR models.\r
+                                */\r
+                               #define  ADC_CHANNEL11               0x23\r
+\r
+                               /** MUX mask define for the ADC12 channel of the ADC. See \ref ADC_StartReading and \ref ADC_GetChannelReading.\r
+                                *\r
+                                *  \note Note available on all AVR models.\r
+                                */\r
+                               #define  ADC_CHANNEL12               0x24\r
+\r
+                               /** MUX mask define for the ADC13 channel of the ADC. See \ref ADC_StartReading and \ref ADC_GetChannelReading.\r
+                                *\r
+                                *  \note Note available on all AVR models.\r
+                                */\r
+                               #define  ADC_CHANNEL13               0x25\r
+\r
+                               /** MUX mask define for the internal temperature sensor channel of the ADC. See \ref ADC_StartReading and\r
+                                *  \ref ADC_GetChannelReading.\r
+                                *\r
+                                *  \note Note available on all AVR models.\r
+                                */\r
+                               #define  ADC_INT_TEMP_SENS           0x27                       \r
+                       #endif\r
+                       //@}\r
+               \r
                /* Pseudo-Function Macros: */\r
                        #if defined(__DOXYGEN__)\r
                                /** Initializes the ADC, ready for conversions. This must be called before any other ADC operations.\r
                         *  associated port pin as an input and disables the digital portion of the I/O to reduce\r
                         *  power consumption.\r
                         *\r
+                        *  \note This must only be called for ADC channels with are connected to a physical port\r
+                        *        pin of the AVR, denoted by its special alternative function ADCx.\r
+                        *\r
+                        *  \note The channel number must be specified as an integer, and NOT a ADC_CHANNELx mask.\r
+                        *\r
                         *  \param[in] Channel  ADC channel number to set up for conversions\r
                         */\r
                        static inline void ADC_SetupChannel(const uint8_t Channel)\r
                         *  Once executed, the conversion status can be determined via the \ref ADC_IsReadingComplete() macro and\r
                         *  the result read via the \ref ADC_GetResult() macro.\r
                         *\r
-                        *  \param[in] MUXMask  Mask comprising of an ADC channel number, reference mask and adjustment mask\r
+                        *  \param[in] MUXMask  Mask comprising of an ADC channel mask, reference mask and adjustment mask\r
                         */\r
                        static inline void ADC_StartReading(const uint8_t MUXMask)\r
                        {\r
                        /** Performs a complete single reading from channel, including a polling spin-loop to wait for the\r
                         *  conversion to complete, and the returning of the converted value.\r
                         *\r
-                        *  \param[in] MUXMask  Mask comprising of an ADC channel number, reference mask and adjustment mask\r
+                        *  \param[in] MUXMask  Mask comprising of an ADC channel mask, reference mask and adjustment mask\r
                         */\r
                        static inline uint16_t ADC_GetChannelReading(const uint8_t MUXMask) ATTR_WARN_UNUSED_RESULT;\r
                        static inline uint16_t ADC_GetChannelReading(const uint8_t MUXMask)\r