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