]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_M7_SAMV71_Xplained_IAR_Keil/libchip_samv7/include/dacc.h
Final V8.2.1 release ready for tagging:
[freertos] / FreeRTOS / Demo / CORTEX_M7_SAMV71_Xplained_IAR_Keil / libchip_samv7 / include / dacc.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 (DACC) peripheral.\r
36  *\r
37  *  \section Usage\r
38  *\r
39  *  -# Configurate the pins for DACC\r
40  *  -# Initialize the DACC with DACC_Initialize().\r
41  *  -# Select the active channel using DACC_EnableChannel()\r
42  *  -# Start the conversion with DACC_StartConversion()\r
43  *  -# Wait the end of the conversion by polling status with DACC_GetStatus()\r
44  *  -# Finally, get the converted data using DACC_GetConvertedData()\r
45  *\r
46 */\r
47 #ifndef _DACC_\r
48 #define _DACC_\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 DACC_CHANNEL_0 0\r
62 #define DACC_CHANNEL_1 1\r
63 \r
64 #ifdef __cplusplus\r
65  extern "C" {\r
66 #endif\r
67 \r
68 /*------------------------------------------------------------------------------\r
69  *         Macros function of register access\r
70  *------------------------------------------------------------------------------*/\r
71 #define DACC_CfgModeReg(pDACC, mode)  { \\r
72              (pDACC)->DACC_MR = (mode);\\r
73         }\r
74 \r
75 #define DACC_GetModeReg(pDACC)                ((pDACC)->DACC_MR)\r
76 \r
77 #define DACC_StartConversion(pDACC)           ((pDACC)->DACC_CR = DACC_CR_START)\r
78 \r
79 #define DACC_SoftReset(pDACC)                 ((pDACC)->DACC_CR = DACC_CR_SWRST)\r
80 \r
81 #define DACC_EnableChannel(pDACC, channel)    {\\r
82             (pDACC)->DACC_CHER = (1 << (channel));\\r
83         }\r
84 \r
85 #define DACC_DisableChannel(pDACC, channel)  {\\r
86             (pDACC)->DACC_CHDR = (1 << (channel));\\r
87         }\r
88 \r
89 #define DACC_EnableIt(pDACC, mode)            {\\r
90             assert( ((mode)&0xFFF00000)== 0 ) ;\\r
91             (pDACC)->DACC_IER = (mode);\\r
92         }\r
93 \r
94 #define DACC_DisableIt(pDACC, mode)           {\\r
95             assert( ((mode)&0xFFF00000)== 0 ) ;\\r
96             (pDACC)->DACC_IDR = (mode);\\r
97         }\r
98 \r
99 #define DACC_EnableDataReadyIt(pDACC)         ((pDACC)->DACC_IER = AT91C_DACC_DRDY)\r
100 \r
101 #define DACC_GetStatus(pDACC)                 ((pDACC)->DACC_ISR)\r
102 \r
103 #define DACC_GetChannelStatus(pDACC)          ((pDACC)->DACC_CHSR)\r
104 \r
105 #define DACC_GetInterruptMaskStatus(pDACC)    ((pDACC)->DACC_IMR)\r
106 \r
107 #define DACC_GetLastConvertedData(pDACC)      ((pDACC)->DACC_LCDR)\r
108 \r
109 #define DACC_CfgAnalogCtrlReg(pDACC,mode)     {\\r
110             assert( ((mode) & 0xFFFCFF3C)==0 ) ;\\r
111             (pDACC)->DACC_ACR = (mode);\\r
112         }\r
113 \r
114 #define DACC_CfgExtModeReg(pDACC, extmode)    {\\r
115             assert( ((extmode) & 0xFF00FFFE)==0 ) ;\\r
116             (pDACC)->DACC_EMR = (extmode);\\r
117         }\r
118 \r
119 #define DACC_GetAnalogCtrlReg(pDACC)          ((pDACC)->DACC_ACR)\r
120 \r
121 /*------------------------------------------------------------------------------\r
122  *         Exported functions\r
123  *------------------------------------------------------------------------------*/\r
124 extern void DACC_Initialize( Dacc* pDACC,\r
125                      uint8_t idDACC,\r
126                      uint8_t trgEn,\r
127                      uint8_t trgSel,\r
128                      uint8_t word,\r
129                      uint8_t sleepMode,\r
130                      uint32_t mck,\r
131                      uint8_t refresh,/*refresh period*/\r
132                      uint8_t user_sel,/*user channel selection*/\r
133                      uint32_t tag_mode,/*using tag for channel number*/\r
134                      uint32_t startup\r
135                      );\r
136 \r
137 \r
138 extern void DACC_SetConversionData( Dacc* pDACC, uint32_t dwData ) ;\r
139 \r
140 extern uint32_t DACC_WriteBuffer( Dacc* pDACC, uint16_t* pwBuffer, uint32_t dwSize ) ;\r
141 \r
142 #ifdef __cplusplus\r
143 }\r
144 #endif\r
145 \r
146 #endif /* #ifndef _DACC_ */\r