+++ /dev/null
-/* ----------------------------------------------------------------------------\r
- * SAM Software Package License\r
- * ----------------------------------------------------------------------------\r
- * Copyright (c) 2011, Atmel Corporation\r
- *\r
- * All rights reserved.\r
- *\r
- * Redistribution and use in source and binary forms, with or without\r
- * modification, are permitted provided that the following conditions are met:\r
- *\r
- * - Redistributions of source code must retain the above copyright notice,\r
- * this list of conditions and the disclaimer below.\r
- *\r
- * Atmel's name may not be used to endorse or promote products derived from\r
- * this software without specific prior written permission.\r
- *\r
- * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR\r
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
- * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,\r
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\r
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,\r
- * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\r
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\r
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\r
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
- * ----------------------------------------------------------------------------\r
- */\r
-\r
-/**\r
- * \file\r
- *\r
- * \section Purpose\r
- *\r
- * Interface for configuration the Analog-to-Digital Converter (ADC) peripheral.\r
- *\r
- * \section Usage\r
- *\r
- * -# Configurate the pins for ADC.\r
- * -# Initialize the ADC with ADC_Initialize().\r
- * -# Set ADC clock and timing with ADC_SetClock() and ADC_SetTiming().\r
- * -# Select the active channel using ADC_EnableChannel().\r
- * -# Start the conversion with ADC_StartConversion().\r
- * -# Wait the end of the conversion by polling status with ADC_GetStatus().\r
- * -# Finally, get the converted data using ADC_GetConvertedData() or ADC_GetLastConvertedData().\r
- *\r
-*/\r
-#ifndef _ADC_\r
-#define _ADC_\r
-\r
-/*----------------------------------------------------------------------------\r
- * Headers\r
- *----------------------------------------------------------------------------*/\r
-#include <assert.h>\r
-#include <stdint.h>\r
-\r
-/*------------------------------------------------------------------------------\r
- * Definitions\r
- *------------------------------------------------------------------------------*/\r
-\r
-/* Max. ADC Clock Frequency (Hz) */\r
-#define ADC_CLOCK_MAX 20000000\r
-\r
-/* Max. normal ADC startup time (us) */\r
-#define ADC_STARTUP_NORMAL_MAX 40\r
-/* Max. fast ADC startup time (us) */\r
-#define ADC_STARTUP_FAST_MAX 12\r
-\r
-/* Definitions for ADC channels */\r
-#define ADC_CHANNEL_0 0\r
-#define ADC_CHANNEL_1 1\r
-#define ADC_CHANNEL_2 2\r
-#define ADC_CHANNEL_3 3\r
-#define ADC_CHANNEL_4 4\r
-#define ADC_CHANNEL_5 5\r
-#define ADC_CHANNEL_6 6\r
-#define ADC_CHANNEL_7 7\r
-#define ADC_CHANNEL_8 8\r
-#define ADC_CHANNEL_9 9\r
-#define ADC_CHANNEL_10 10\r
-#define ADC_CHANNEL_11 11\r
-#define ADC_CHANNEL_12 12\r
-#define ADC_CHANNEL_13 13\r
-#define ADC_CHANNEL_14 14\r
-#define ADC_CHANNEL_15 15\r
-\r
-#ifdef __cplusplus\r
- extern "C" {\r
-#endif\r
-\r
-/*------------------------------------------------------------------------------\r
- * Macros function of register access\r
- *------------------------------------------------------------------------------*/\r
-\r
-#define ADC_GetModeReg( pAdc ) ((pAdc)->ADC_MR)\r
-\r
-#define ADC_StartConversion( pAdc ) ((pAdc)->ADC_CR = ADC_CR_START)\r
-\r
-#define ADC_SetCalibMode(pAdc) ((pAdc)->ADC_CR |= ADC_CR_AUTOCAL)\r
-\r
-#define ADC_EnableChannel( pAdc, dwChannel ) {\\r
- (pAdc)->ADC_CHER = (1 << (dwChannel));\\r
- }\r
-\r
-#define ADC_DisableChannel(pAdc, dwChannel) {\\r
- (pAdc)->ADC_CHDR = (1 << (dwChannel));\\r
- }\r
-\r
-#define ADC_EnableIt(pAdc, dwMode) {\\r
- (pAdc)->ADC_IER = (dwMode);\\r
- }\r
-\r
-#define ADC_DisableIt(pAdc, dwMode) {\\r
- (pAdc)->ADC_IDR = (dwMode);\\r
- }\r
-\r
-#define ADC_SetChannelGain(pAdc,dwMode) {\\r
- (pAdc)->ADC_CGR = dwMode;\\r
- }\r
-\r
-#define ADC_SetChannelOffset(pAdc,dwMode) {\\r
- (pAdc)->ADC_COR = dwMode;\\r
- }\r
-\r
-#define ADC_EnableDataReadyIt(pAdc) ((pAdc)->ADC_IER = ADC_IER_DRDY)\r
-\r
-#define ADC_GetStatus(pAdc) ((pAdc)->ADC_ISR)\r
-\r
-#define ADC_GetCompareMode(pAdc) (((pAdc)->ADC_EMR)& (ADC_EMR_CMPMODE_Msk))\r
-\r
-#define ADC_GetChannelStatus(pAdc) ((pAdc)->ADC_CHSR)\r
-\r
-#define ADC_GetInterruptMaskStatus(pAdc) ((pAdc)->ADC_IMR)\r
-\r
-#define ADC_GetLastConvertedData(pAdc) ((pAdc)->ADC_LCDR)\r
-\r
-/*------------------------------------------------------------------------------\r
- * Exported functions\r
- *------------------------------------------------------------------------------*/\r
-extern void ADC_Initialize( Adc* pAdc, uint32_t dwId );\r
-extern uint32_t ADC_SetClock( Adc* pAdc, uint32_t dwPres, uint32_t dwMck );\r
-extern void ADC_SetTiming( Adc* pAdc, uint32_t dwStartup, uint32_t dwTracking, uint32_t dwSettling );\r
-extern void ADC_SetTrigger( Adc* pAdc, uint32_t dwTrgSel );\r
-extern void ADC_SetTriggerMode(Adc *pAdc, uint32_t dwMode);\r
-extern void ADC_SetLowResolution( Adc* pAdc, uint32_t bEnDis );\r
-extern void ADC_SetSleepMode( Adc *pAdc, uint8_t bEnDis );\r
-extern void ADC_SetFastWakeup( Adc *pAdc, uint8_t bEnDis );\r
-extern void ADC_SetSequenceMode( Adc *pAdc, uint8_t bEnDis );\r
-extern void ADC_SetSequence( Adc *pAdc, uint32_t dwSEQ1, uint32_t dwSEQ2 );\r
-extern void ADC_SetSequenceByList( Adc *pAdc, uint8_t ucChList[], uint8_t ucNumCh );\r
-extern void ADC_SetAnalogChange( Adc *pAdc, uint8_t bEnDis );\r
-extern void ADC_SetTagEnable( Adc *pAdc, uint8_t bEnDis );\r
-extern void ADC_SetCompareChannel( Adc* pAdc, uint32_t dwChannel ) ;\r
-extern void ADC_SetCompareMode( Adc* pAdc, uint32_t dwMode ) ;\r
-extern void ADC_SetComparisonWindow( Adc* pAdc, uint32_t dwHi_Lo ) ;\r
-extern uint8_t ADC_CheckConfiguration( Adc* pAdc, uint32_t dwMcK ) ;\r
-extern uint32_t ADC_GetConvertedData( Adc* pAdc, uint32_t dwChannel ) ;\r
-extern void ADC_SetTsAverage(Adc* pADC, uint32_t dwAvg2Conv);\r
-extern uint32_t ADC_GetTsXPosition(Adc *pADC);\r
-extern uint32_t ADC_GetTsYPosition(Adc *pADC);\r
-extern uint32_t ADC_GetTsPressure(Adc *pADC);\r
-extern void ADC_SetTsDebounce(Adc *pADC, uint32_t dwTime);\r
-extern void ADC_SetTsPenDetect(Adc* pADC, uint8_t bEnDis);\r
-extern void ADC_SetStartupTime( Adc *pAdc, uint32_t dwUs );\r
-extern void ADC_SetTrackingTime( Adc *pAdc, uint32_t dwNs );\r
-extern void ADC_SetTriggerPeriod(Adc *pAdc, uint32_t dwPeriod);\r
-extern void ADC_SetTsMode(Adc* pADC, uint32_t dwMode);\r
-extern void ADC_TsCalibration( Adc *pAdc );\r
-\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* #ifndef _ADC_ */\r
-\r