Commit 32830a2b authored by Dean Camera's avatar Dean Camera
Browse files

Added new ADC_GET_CHANNEL_MASK() convenience macro to the ADC driver.

parent 70d55f6e
...@@ -90,6 +90,13 @@ ...@@ -90,6 +90,13 @@
#error Do not include this file directly. Include LUFA/Drivers/Peripheral/ADC.h instead. #error Do not include this file directly. Include LUFA/Drivers/Peripheral/ADC.h instead.
#endif #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: */ /* Public Interface - May be used in end-application: */
/* Macros: */ /* Macros: */
/** \name ADC Reference Configuration Masks */ /** \name ADC Reference Configuration Masks */
...@@ -235,6 +242,15 @@ ...@@ -235,6 +242,15 @@
*/ */
#define ADC_INT_TEMP_SENS ((1 << 8) | (0x07 << MUX0)) #define ADC_INT_TEMP_SENS ((1 << 8) | (0x07 << MUX0))
#endif #endif
/** 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.
*
* \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)
//@} //@}
/* Inline Functions: */ /* Inline Functions: */
......
...@@ -203,13 +203,19 @@ ...@@ -203,13 +203,19 @@
*/ */
#define ENDPOINT_EPSIZE_MASK 0x7F #define ENDPOINT_EPSIZE_MASK 0x7F
/** Maximum size in bytes of a given endpoint. /** Retrives the maximum bank size in bytes of a given endpoint.
*
* \note This macro will only work correctly on endpoint indexes that are compile-time constants
* defined by the preprocessor.
* *
* \param[in] EPIndex Endpoint number, a value between 0 and (\ref ENDPOINT_TOTAL_ENDPOINTS - 1) * \param[in] EPIndex Endpoint number, a value between 0 and (\ref ENDPOINT_TOTAL_ENDPOINTS - 1)
*/ */
#define ENDPOINT_MAX_SIZE(EPIndex) _ENDPOINT_GET_MAXSIZE(EPIndex) #define ENDPOINT_MAX_SIZE(EPIndex) _ENDPOINT_GET_MAXSIZE(EPIndex)
/** Indicates the total number of banks supported by the given endpoint. /** Retrieves the total number of banks supported by the given endpoint.
*
* \note This macro will only work correctly on endpoint indexes that are compile-time constants
* defined by the preprocessor.
* *
* \param[in] EPIndex Endpoint number, a value between 0 and (\ref ENDPOINT_TOTAL_ENDPOINTS - 1) * \param[in] EPIndex Endpoint number, a value between 0 and (\ref ENDPOINT_TOTAL_ENDPOINTS - 1)
*/ */
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
* - Added new GCC_FORCE_POINTER_ACCESS() macro to correct GCC's mishandling of struct pointer accesses * - Added new GCC_FORCE_POINTER_ACCESS() macro to correct GCC's mishandling of struct pointer accesses
* - Added basic driver example use code to the library documentation * - Added basic driver example use code to the library documentation
* - Added new Endpoint_Null_Stream() and Pipe_Null_stream() functions * - Added new Endpoint_Null_Stream() and Pipe_Null_stream() functions
* - Added new ADC_GET_CHANNEL_MASK() convenience macro
* - Library Applications: * - Library Applications:
* - Added ability to write protect Mass Storage disk write operations from the host OS * - Added ability to write protect Mass Storage disk write operations from the host OS
* *
......
...@@ -62,11 +62,6 @@ ...@@ -62,11 +62,6 @@
#endif #endif
/* Macros: */ /* Macros: */
#if !defined(__DOXYGEN__)
#define _GETADCMUXMASK2(x, y) x ## y
#define _GETADCMUXMASK(x, y) _GETADCMUXMASK2(x, y)
#endif
/** Programmer ID string, returned to the host during the CMD_SIGN_ON command processing. */ /** Programmer ID string, returned to the host during the CMD_SIGN_ON command processing. */
#define PROGRAMMER_ID "AVRISP_MK2" #define PROGRAMMER_ID "AVRISP_MK2"
...@@ -77,7 +72,7 @@ ...@@ -77,7 +72,7 @@
#define TimeoutTicksRemaining GPIOR1 #define TimeoutTicksRemaining GPIOR1
/** MUX mask for the VTARGET ADC channel number. */ /** MUX mask for the VTARGET ADC channel number. */
#define VTARGET_ADC_CHANNEL_MASK _GETADCMUXMASK(ADC_CHANNEL, VTARGET_ADC_CHANNEL) #define VTARGET_ADC_CHANNEL_MASK ADC_GET_CHANNEL_MASK(VTARGET_ADC_CHANNEL)
/* External Variables: */ /* External Variables: */
extern uint32_t CurrentAddress; extern uint32_t CurrentAddress;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment