]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_M7_SAMV71_Xplained_IAR_Keil/libchip_samv7/include/acc.h
Final V8.2.1 release ready for tagging:
[freertos] / FreeRTOS / Demo / CORTEX_M7_SAMV71_Xplained_IAR_Keil / libchip_samv7 / include / acc.h
1 /* ----------------------------------------------------------------------------\r
2  *         SAM Software Package License\r
3  * ----------------------------------------------------------------------------\r
4  * Copyright (c) 2011, Atmel Corporation\r
5  *\r
6  * All rights reserved.\r
7  *\r
8  * Redistribution and use in source and binary forms, with or without\r
9  * modification, are permitted provided that the following conditions are met:\r
10  *\r
11  * - Redistributions of source code must retain the above copyright notice,\r
12  * this list of conditions and the disclaimer below.\r
13  *\r
14  * Atmel's name may not be used to endorse or promote products derived from\r
15  * this software without specific prior written permission.\r
16  *\r
17  * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR\r
18  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
19  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
20  * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,\r
21  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\r
22  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,\r
23  * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\r
24  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\r
25  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\r
26  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
27  * ----------------------------------------------------------------------------\r
28  */\r
29 \r
30 /**\r
31  *  \file\r
32  *\r
33  *  \section Purpose\r
34  *\r
35  *  Interface for configuration the Analog-to-Digital Converter (ACC) peripheral.\r
36  *\r
37  *  \section Usage\r
38  *\r
39  *  -# Configurate the pins for ACC\r
40  *  -# Initialize the ACC with ACC_Initialize().\r
41  *  -# Select the active channel using ACC_EnableChannel()\r
42  *  -# Start the conversion with ACC_StartConversion()\r
43  *  -# Wait the end of the conversion by polling status with ACC_GetStatus()\r
44  *  -# Finally, get the converted data using ACC_GetConvertedData()\r
45  *\r
46  */\r
47 #ifndef _ACC_\r
48 #define _ACC_\r
49 \r
50 /*----------------------------------------------------------------------------\r
51  *        Headers\r
52  *----------------------------------------------------------------------------*/\r
53 #include "chip.h"\r
54 \r
55 #include <stdint.h>\r
56 #include <assert.h>\r
57 \r
58 /*------------------------------------------------------------------------------\r
59  *         Definitions\r
60  *------------------------------------------------------------------------------*/\r
61 #define ACC_SELPLUS_AD12B0 0\r
62 #define ACC_SELPLUS_AD12B1 1\r
63 #define ACC_SELPLUS_AD12B2 2\r
64 #define ACC_SELPLUS_AD12B3 3\r
65 #define ACC_SELPLUS_AD12B4 4\r
66 #define ACC_SELPLUS_AD12B5 5\r
67 #define ACC_SELPLUS_AD12B6 6\r
68 #define ACC_SELPLUS_AD12B7 7\r
69 #define ACC_SELMINUS_TS 0\r
70 #define ACC_SELMINUS_ADVREF 1\r
71 #define ACC_SELMINUS_DAC0   2\r
72 #define ACC_SELMINUS_DAC1   3\r
73 #define ACC_SELMINUS_AD12B0 4\r
74 #define ACC_SELMINUS_AD12B1 5\r
75 #define ACC_SELMINUS_AD12B2 6\r
76 #define ACC_SELMINUS_AD12B3 7\r
77 \r
78 #ifdef __cplusplus\r
79  extern "C" {\r
80 #endif\r
81 \r
82 /*------------------------------------------------------------------------------\r
83  *         Macros function of register access\r
84  *------------------------------------------------------------------------------*/\r
85 #define ACC_CfgModeReg(pAcc, mode)  { \\r
86             (pAcc)->ACC_MR = (mode);\\r
87         }\r
88 \r
89 #define ACC_GetModeReg( pAcc )                ((pAcc)->ACC_MR)\r
90 \r
91 #define ACC_StartConversion( pAcc )           ((pAcc)->ACC_CR = ACC_CR_START)\r
92 \r
93 #define ACC_SoftReset( pAcc )                 ((pAcc)->ACC_CR = ACC_CR_SWRST)\r
94 \r
95 #define ACC_EnableChannel( pAcc, dwChannel )    {\\r
96             assert( dwChannel < 16 ) ;\\r
97             (pAcc)->ACC_CHER = (1 << (dwChannel));\\r
98         }\r
99 \r
100 #define ACC_DisableChannel( pAcc, dwChannel )  {\\r
101             assert( dwChannel < 16 ) ;\\r
102             (pAcc)->ACC_CHDR = (1 << (dwChannel));\\r
103         }\r
104 \r
105 #define ACC_EnableIt( pAcc, dwMode )            {\\r
106             assert( ((dwMode)&0xFFF00000)== 0 ) ;\\r
107             (pAcc)->ACC_IER = (dwMode);\\r
108         }\r
109 \r
110 #define ACC_DisableIt( pAcc, dwMode )           {\\r
111             assert( ((dwMode)&0xFFF00000)== 0 ) ;\\r
112             (pAcc)->ACC_IDR = (dwMode);\\r
113         }\r
114 \r
115 #define ACC_EnableDataReadyIt( pAcc )         ((pAcc)->ACC_IER = AT91C_ACC_DRDY)\r
116 \r
117 #define ACC_GetStatus( pAcc )                 ((pAcc)->ACC_ISR)\r
118 \r
119 #define ACC_GetChannelStatus( pAcc )          ((pAcc)->ACC_CHSR)\r
120 \r
121 #define ACC_GetInterruptMaskStatus( pAcc )    ((pAcc)->ACC_IMR)\r
122 \r
123 #define ACC_GetLastConvertedData( pAcc )      ((pAcc)->ACC_LCDR)\r
124 \r
125 #define ACC_CfgAnalogCtrlReg( pAcc, dwMode )     {\\r
126             assert( ((dwMode) & 0xFFFCFF3C) == 0 ) ;\\r
127             (pAcc)->ACC_ACR = (dwMode);\\r
128         }\r
129 \r
130 #define ACC_CfgExtModeReg( pAcc, extmode )    {\\r
131             assert( ((extmode) & 0xFF00FFFE) == 0 ) ;\\r
132             (pAcc)->ACC_EMR = (extmode);\\r
133         }\r
134 \r
135 #define ACC_GetAnalogCtrlReg( pAcc )          ((pAcc)->ACC_ACR)\r
136 \r
137 /*------------------------------------------------------------------------------\r
138  *         Exported functions\r
139  *------------------------------------------------------------------------------*/\r
140 extern void ACC_Configure( Acc *pAcc, uint8_t idAcc, uint8_t ucSelplus, uint8_t ucSelminus,\r
141                            uint16_t wAc_en, uint16_t wEdge, uint16_t wInvert ) ;\r
142 \r
143 extern void ACC_SetComparisonPair( Acc *pAcc, uint8_t ucSelplus, uint8_t ucSelminus ) ;\r
144 \r
145 extern uint32_t ACC_GetComparisonResult( Acc* pAcc, uint32_t dwStatus ) ;\r
146 \r
147 #ifdef __cplusplus\r
148 }\r
149 #endif\r
150 \r
151 #endif /* #ifndef _ACC_ */\r