The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.
Dependents: hello SerialTestv11 SerialTestv12 Sierpinski ... more
mbed 2
This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.
TARGET_TB_SENSE_12/TOOLCHAIN_GCC_ARM/em_vcmp.h@172:65be27845400, 2019-02-20 (annotated)
- Committer:
- AnnaBridge
- Date:
- Wed Feb 20 20:53:29 2019 +0000
- Revision:
- 172:65be27845400
- Parent:
- 171:3a7713b1edbc
mbed library release version 165
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Anna Bridge |
142:4eea097334d6 | 1 | /***************************************************************************//** |
Anna Bridge |
142:4eea097334d6 | 2 | * @file em_vcmp.h |
Anna Bridge |
142:4eea097334d6 | 3 | * @brief Voltage Comparator (VCMP) peripheral API |
Anna Bridge |
160:5571c4ff569f | 4 | * @version 5.3.3 |
Anna Bridge |
142:4eea097334d6 | 5 | ******************************************************************************* |
Anna Bridge |
160:5571c4ff569f | 6 | * # License |
Anna Bridge |
142:4eea097334d6 | 7 | * <b>Copyright 2016 Silicon Laboratories, Inc. http://www.silabs.com</b> |
Anna Bridge |
142:4eea097334d6 | 8 | ******************************************************************************* |
Anna Bridge |
142:4eea097334d6 | 9 | * |
Anna Bridge |
142:4eea097334d6 | 10 | * Permission is granted to anyone to use this software for any purpose, |
Anna Bridge |
142:4eea097334d6 | 11 | * including commercial applications, and to alter it and redistribute it |
Anna Bridge |
142:4eea097334d6 | 12 | * freely, subject to the following restrictions: |
Anna Bridge |
142:4eea097334d6 | 13 | * |
Anna Bridge |
142:4eea097334d6 | 14 | * 1. The origin of this software must not be misrepresented; you must not |
Anna Bridge |
142:4eea097334d6 | 15 | * claim that you wrote the original software. |
Anna Bridge |
142:4eea097334d6 | 16 | * 2. Altered source versions must be plainly marked as such, and must not be |
Anna Bridge |
142:4eea097334d6 | 17 | * misrepresented as being the original software. |
Anna Bridge |
142:4eea097334d6 | 18 | * 3. This notice may not be removed or altered from any source distribution. |
Anna Bridge |
142:4eea097334d6 | 19 | * |
Anna Bridge |
142:4eea097334d6 | 20 | * DISCLAIMER OF WARRANTY/LIMITATION OF REMEDIES: Silicon Labs has no |
Anna Bridge |
142:4eea097334d6 | 21 | * obligation to support this Software. Silicon Labs is providing the |
Anna Bridge |
142:4eea097334d6 | 22 | * Software "AS IS", with no express or implied warranties of any kind, |
Anna Bridge |
142:4eea097334d6 | 23 | * including, but not limited to, any implied warranties of merchantability |
Anna Bridge |
142:4eea097334d6 | 24 | * or fitness for any particular purpose or warranties against infringement |
Anna Bridge |
142:4eea097334d6 | 25 | * of any proprietary rights of a third party. |
Anna Bridge |
142:4eea097334d6 | 26 | * |
Anna Bridge |
142:4eea097334d6 | 27 | * Silicon Labs will not be liable for any consequential, incidental, or |
Anna Bridge |
142:4eea097334d6 | 28 | * special damages, or any other relief, or for any claim by any third party, |
Anna Bridge |
142:4eea097334d6 | 29 | * arising from your use of this Software. |
Anna Bridge |
142:4eea097334d6 | 30 | * |
Anna Bridge |
142:4eea097334d6 | 31 | ******************************************************************************/ |
Anna Bridge |
142:4eea097334d6 | 32 | |
Anna Bridge |
142:4eea097334d6 | 33 | #ifndef EM_VCMP_H |
Anna Bridge |
142:4eea097334d6 | 34 | #define EM_VCMP_H |
Anna Bridge |
142:4eea097334d6 | 35 | |
Anna Bridge |
142:4eea097334d6 | 36 | #include "em_device.h" |
Anna Bridge |
142:4eea097334d6 | 37 | #if defined(VCMP_COUNT) && (VCMP_COUNT > 0) |
Anna Bridge |
142:4eea097334d6 | 38 | |
Anna Bridge |
142:4eea097334d6 | 39 | #include <stdint.h> |
Anna Bridge |
142:4eea097334d6 | 40 | #include <stdbool.h> |
Anna Bridge |
142:4eea097334d6 | 41 | |
Anna Bridge |
142:4eea097334d6 | 42 | #ifdef __cplusplus |
Anna Bridge |
142:4eea097334d6 | 43 | extern "C" { |
Anna Bridge |
142:4eea097334d6 | 44 | #endif |
Anna Bridge |
142:4eea097334d6 | 45 | |
Anna Bridge |
142:4eea097334d6 | 46 | /***************************************************************************//** |
Anna Bridge |
142:4eea097334d6 | 47 | * @addtogroup emlib |
Anna Bridge |
142:4eea097334d6 | 48 | * @{ |
Anna Bridge |
142:4eea097334d6 | 49 | ******************************************************************************/ |
Anna Bridge |
142:4eea097334d6 | 50 | |
Anna Bridge |
142:4eea097334d6 | 51 | /***************************************************************************//** |
Anna Bridge |
142:4eea097334d6 | 52 | * @addtogroup VCMP |
Anna Bridge |
142:4eea097334d6 | 53 | * @{ |
Anna Bridge |
142:4eea097334d6 | 54 | ******************************************************************************/ |
Anna Bridge |
142:4eea097334d6 | 55 | |
Anna Bridge |
142:4eea097334d6 | 56 | /******************************************************************************* |
Anna Bridge |
142:4eea097334d6 | 57 | ******************************** ENUMS ************************************ |
Anna Bridge |
142:4eea097334d6 | 58 | ******************************************************************************/ |
Anna Bridge |
142:4eea097334d6 | 59 | |
Anna Bridge |
142:4eea097334d6 | 60 | /** Warm-up Time in High Frequency Peripheral Clock cycles */ |
Anna Bridge |
160:5571c4ff569f | 61 | typedef enum { |
Anna Bridge |
142:4eea097334d6 | 62 | /** 4 cycles */ |
Anna Bridge |
142:4eea097334d6 | 63 | vcmpWarmTime4Cycles = _VCMP_CTRL_WARMTIME_4CYCLES, |
Anna Bridge |
142:4eea097334d6 | 64 | /** 8 cycles */ |
Anna Bridge |
142:4eea097334d6 | 65 | vcmpWarmTime8Cycles = _VCMP_CTRL_WARMTIME_8CYCLES, |
Anna Bridge |
142:4eea097334d6 | 66 | /** 16 cycles */ |
Anna Bridge |
142:4eea097334d6 | 67 | vcmpWarmTime16Cycles = _VCMP_CTRL_WARMTIME_16CYCLES, |
Anna Bridge |
142:4eea097334d6 | 68 | /** 32 cycles */ |
Anna Bridge |
142:4eea097334d6 | 69 | vcmpWarmTime32Cycles = _VCMP_CTRL_WARMTIME_32CYCLES, |
Anna Bridge |
142:4eea097334d6 | 70 | /** 64 cycles */ |
Anna Bridge |
142:4eea097334d6 | 71 | vcmpWarmTime64Cycles = _VCMP_CTRL_WARMTIME_64CYCLES, |
Anna Bridge |
142:4eea097334d6 | 72 | /** 128 cycles */ |
Anna Bridge |
142:4eea097334d6 | 73 | vcmpWarmTime128Cycles = _VCMP_CTRL_WARMTIME_128CYCLES, |
Anna Bridge |
142:4eea097334d6 | 74 | /** 256 cycles */ |
Anna Bridge |
142:4eea097334d6 | 75 | vcmpWarmTime256Cycles = _VCMP_CTRL_WARMTIME_256CYCLES, |
Anna Bridge |
142:4eea097334d6 | 76 | /** 512 cycles */ |
Anna Bridge |
142:4eea097334d6 | 77 | vcmpWarmTime512Cycles = _VCMP_CTRL_WARMTIME_512CYCLES |
Anna Bridge |
142:4eea097334d6 | 78 | } VCMP_WarmTime_TypeDef; |
Anna Bridge |
142:4eea097334d6 | 79 | |
Anna Bridge |
142:4eea097334d6 | 80 | /** Hyseresis configuration */ |
Anna Bridge |
160:5571c4ff569f | 81 | typedef enum { |
Anna Bridge |
142:4eea097334d6 | 82 | /** Normal operation, no hysteresis */ |
Anna Bridge |
142:4eea097334d6 | 83 | vcmpHystNone, |
Anna Bridge |
142:4eea097334d6 | 84 | /** Digital output will not toggle until positive edge is at least |
Anna Bridge |
142:4eea097334d6 | 85 | * 20mV above or below negative input voltage */ |
Anna Bridge |
142:4eea097334d6 | 86 | vcmpHyst20mV |
Anna Bridge |
142:4eea097334d6 | 87 | } VCMP_Hysteresis_TypeDef; |
Anna Bridge |
142:4eea097334d6 | 88 | |
Anna Bridge |
142:4eea097334d6 | 89 | /******************************************************************************* |
Anna Bridge |
142:4eea097334d6 | 90 | ******************************* STRUCTS *********************************** |
Anna Bridge |
142:4eea097334d6 | 91 | ******************************************************************************/ |
Anna Bridge |
142:4eea097334d6 | 92 | |
Anna Bridge |
142:4eea097334d6 | 93 | /** VCMP Initialization structure */ |
Anna Bridge |
160:5571c4ff569f | 94 | typedef struct { |
Anna Bridge |
142:4eea097334d6 | 95 | /** If set to true, will reduce by half the bias current */ |
Anna Bridge |
142:4eea097334d6 | 96 | bool halfBias; |
Anna Bridge |
142:4eea097334d6 | 97 | /** BIAS current configuration, depends on halfBias setting, |
Anna Bridge |
142:4eea097334d6 | 98 | * above, see reference manual */ |
Anna Bridge |
142:4eea097334d6 | 99 | int biasProg; |
Anna Bridge |
142:4eea097334d6 | 100 | /** Enable interrupt for falling edge */ |
Anna Bridge |
142:4eea097334d6 | 101 | bool irqFalling; |
Anna Bridge |
142:4eea097334d6 | 102 | /** Enable interrupt for rising edge */ |
Anna Bridge |
142:4eea097334d6 | 103 | bool irqRising; |
Anna Bridge |
142:4eea097334d6 | 104 | /** Warm-up time in clock cycles */ |
Anna Bridge |
142:4eea097334d6 | 105 | VCMP_WarmTime_TypeDef warmup; |
Anna Bridge |
142:4eea097334d6 | 106 | /** Hysteresis configuration */ |
Anna Bridge |
142:4eea097334d6 | 107 | VCMP_Hysteresis_TypeDef hyst; |
Anna Bridge |
142:4eea097334d6 | 108 | /** Output value when comparator is inactive, should be 0 or 1 */ |
Anna Bridge |
142:4eea097334d6 | 109 | int inactive; |
Anna Bridge |
142:4eea097334d6 | 110 | /** Enable low power mode for VDD and bandgap reference */ |
Anna Bridge |
142:4eea097334d6 | 111 | bool lowPowerRef; |
Anna Bridge |
142:4eea097334d6 | 112 | /** Trigger level, according to formula |
Anna Bridge |
142:4eea097334d6 | 113 | * VDD Trigger Level = 1.667V + 0.034V x triggerLevel */ |
Anna Bridge |
142:4eea097334d6 | 114 | int triggerLevel; |
Anna Bridge |
142:4eea097334d6 | 115 | /** Enable VCMP after configuration */ |
Anna Bridge |
142:4eea097334d6 | 116 | bool enable; |
Anna Bridge |
142:4eea097334d6 | 117 | } VCMP_Init_TypeDef; |
Anna Bridge |
142:4eea097334d6 | 118 | |
Anna Bridge |
142:4eea097334d6 | 119 | /** Default VCMP initialization structure */ |
Anna Bridge |
142:4eea097334d6 | 120 | #define VCMP_INIT_DEFAULT \ |
Anna Bridge |
160:5571c4ff569f | 121 | { \ |
Anna Bridge |
160:5571c4ff569f | 122 | true, /** Half Bias enabled */ \ |
Anna Bridge |
160:5571c4ff569f | 123 | 0x7, /** Bias curernt 0.7 uA when half bias enabled */ \ |
Anna Bridge |
160:5571c4ff569f | 124 | false, /** Falling edge sense not enabled */ \ |
Anna Bridge |
160:5571c4ff569f | 125 | false, /** Rising edge sense not enabled */ \ |
Anna Bridge |
160:5571c4ff569f | 126 | vcmpWarmTime4Cycles, /** 4 clock cycles warm-up time */ \ |
Anna Bridge |
160:5571c4ff569f | 127 | vcmpHystNone, /** No hysteresis */ \ |
Anna Bridge |
160:5571c4ff569f | 128 | 0, /** 0 in digital ouput when inactive */ \ |
Anna Bridge |
160:5571c4ff569f | 129 | true, /** Do not use low power reference */ \ |
Anna Bridge |
160:5571c4ff569f | 130 | 39, /** Trigger level just below 3V */ \ |
Anna Bridge |
160:5571c4ff569f | 131 | true, /** Enable after init */ \ |
Anna Bridge |
160:5571c4ff569f | 132 | } |
Anna Bridge |
142:4eea097334d6 | 133 | |
Anna Bridge |
142:4eea097334d6 | 134 | /******************************************************************************* |
Anna Bridge |
142:4eea097334d6 | 135 | ***************************** PROTOTYPES ********************************** |
Anna Bridge |
142:4eea097334d6 | 136 | ******************************************************************************/ |
Anna Bridge |
142:4eea097334d6 | 137 | |
Anna Bridge |
142:4eea097334d6 | 138 | void VCMP_Init(const VCMP_Init_TypeDef *vcmpInit); |
Anna Bridge |
142:4eea097334d6 | 139 | void VCMP_LowPowerRefSet(bool enable); |
Anna Bridge |
142:4eea097334d6 | 140 | void VCMP_TriggerSet(int level); |
Anna Bridge |
142:4eea097334d6 | 141 | |
Anna Bridge |
142:4eea097334d6 | 142 | /***************************************************************************//** |
Anna Bridge |
142:4eea097334d6 | 143 | * @brief |
Anna Bridge |
142:4eea097334d6 | 144 | * Enable Voltage Comparator |
Anna Bridge |
142:4eea097334d6 | 145 | ******************************************************************************/ |
Anna Bridge |
142:4eea097334d6 | 146 | __STATIC_INLINE void VCMP_Enable(void) |
Anna Bridge |
142:4eea097334d6 | 147 | { |
Anna Bridge |
142:4eea097334d6 | 148 | VCMP->CTRL |= VCMP_CTRL_EN; |
Anna Bridge |
142:4eea097334d6 | 149 | } |
Anna Bridge |
142:4eea097334d6 | 150 | |
Anna Bridge |
142:4eea097334d6 | 151 | /***************************************************************************//** |
Anna Bridge |
142:4eea097334d6 | 152 | * @brief |
Anna Bridge |
142:4eea097334d6 | 153 | * Disable Voltage Comparator |
Anna Bridge |
142:4eea097334d6 | 154 | ******************************************************************************/ |
Anna Bridge |
142:4eea097334d6 | 155 | __STATIC_INLINE void VCMP_Disable(void) |
Anna Bridge |
142:4eea097334d6 | 156 | { |
Anna Bridge |
142:4eea097334d6 | 157 | VCMP->CTRL &= ~VCMP_CTRL_EN; |
Anna Bridge |
142:4eea097334d6 | 158 | } |
Anna Bridge |
142:4eea097334d6 | 159 | |
Anna Bridge |
142:4eea097334d6 | 160 | /***************************************************************************//** |
Anna Bridge |
142:4eea097334d6 | 161 | * @brief |
Anna Bridge |
142:4eea097334d6 | 162 | * Calculate voltage to trigger level |
Anna Bridge |
142:4eea097334d6 | 163 | * |
Anna Bridge |
142:4eea097334d6 | 164 | * @note |
Anna Bridge |
142:4eea097334d6 | 165 | * You need soft float support for this function to be working |
Anna Bridge |
142:4eea097334d6 | 166 | * |
Anna Bridge |
142:4eea097334d6 | 167 | * @param[in] v |
Anna Bridge |
142:4eea097334d6 | 168 | * Voltage Level for trigger |
Anna Bridge |
142:4eea097334d6 | 169 | ******************************************************************************/ |
Anna Bridge |
142:4eea097334d6 | 170 | __STATIC_INLINE uint32_t VCMP_VoltageToLevel(float v) |
Anna Bridge |
142:4eea097334d6 | 171 | { |
Anna Bridge |
142:4eea097334d6 | 172 | return (uint32_t)((v - (float)1.667) / (float)0.034); |
Anna Bridge |
142:4eea097334d6 | 173 | } |
Anna Bridge |
142:4eea097334d6 | 174 | |
Anna Bridge |
142:4eea097334d6 | 175 | /***************************************************************************//** |
Anna Bridge |
142:4eea097334d6 | 176 | * @brief |
Anna Bridge |
142:4eea097334d6 | 177 | * Returns true, if Voltage Comparator indicated VDD < trigger level, else |
Anna Bridge |
142:4eea097334d6 | 178 | * false |
Anna Bridge |
142:4eea097334d6 | 179 | ******************************************************************************/ |
Anna Bridge |
142:4eea097334d6 | 180 | __STATIC_INLINE bool VCMP_VDDLower(void) |
Anna Bridge |
142:4eea097334d6 | 181 | { |
Anna Bridge |
160:5571c4ff569f | 182 | if (VCMP->STATUS & VCMP_STATUS_VCMPOUT) { |
Anna Bridge |
142:4eea097334d6 | 183 | return false; |
Anna Bridge |
160:5571c4ff569f | 184 | } else { |
Anna Bridge |
142:4eea097334d6 | 185 | return true; |
Anna Bridge |
142:4eea097334d6 | 186 | } |
Anna Bridge |
142:4eea097334d6 | 187 | } |
Anna Bridge |
142:4eea097334d6 | 188 | |
Anna Bridge |
142:4eea097334d6 | 189 | /***************************************************************************//** |
Anna Bridge |
142:4eea097334d6 | 190 | * @brief |
Anna Bridge |
142:4eea097334d6 | 191 | * Returns true, if Voltage Comparator indicated VDD > trigger level, else |
Anna Bridge |
142:4eea097334d6 | 192 | * false |
Anna Bridge |
142:4eea097334d6 | 193 | ******************************************************************************/ |
Anna Bridge |
142:4eea097334d6 | 194 | __STATIC_INLINE bool VCMP_VDDHigher(void) |
Anna Bridge |
142:4eea097334d6 | 195 | { |
Anna Bridge |
160:5571c4ff569f | 196 | if (VCMP->STATUS & VCMP_STATUS_VCMPOUT) { |
Anna Bridge |
142:4eea097334d6 | 197 | return true; |
Anna Bridge |
160:5571c4ff569f | 198 | } else { |
Anna Bridge |
142:4eea097334d6 | 199 | return false; |
Anna Bridge |
142:4eea097334d6 | 200 | } |
Anna Bridge |
142:4eea097334d6 | 201 | } |
Anna Bridge |
142:4eea097334d6 | 202 | |
Anna Bridge |
142:4eea097334d6 | 203 | /***************************************************************************//** |
Anna Bridge |
142:4eea097334d6 | 204 | * @brief |
Anna Bridge |
142:4eea097334d6 | 205 | * VCMP output is ready |
Anna Bridge |
142:4eea097334d6 | 206 | ******************************************************************************/ |
Anna Bridge |
142:4eea097334d6 | 207 | __STATIC_INLINE bool VCMP_Ready(void) |
Anna Bridge |
142:4eea097334d6 | 208 | { |
Anna Bridge |
160:5571c4ff569f | 209 | if (VCMP->STATUS & VCMP_STATUS_VCMPACT) { |
Anna Bridge |
142:4eea097334d6 | 210 | return true; |
Anna Bridge |
160:5571c4ff569f | 211 | } else { |
Anna Bridge |
142:4eea097334d6 | 212 | return false; |
Anna Bridge |
142:4eea097334d6 | 213 | } |
Anna Bridge |
142:4eea097334d6 | 214 | } |
Anna Bridge |
142:4eea097334d6 | 215 | |
Anna Bridge |
142:4eea097334d6 | 216 | /***************************************************************************//** |
Anna Bridge |
142:4eea097334d6 | 217 | * @brief |
Anna Bridge |
142:4eea097334d6 | 218 | * Clear one or more pending VCMP interrupts. |
Anna Bridge |
142:4eea097334d6 | 219 | * |
Anna Bridge |
142:4eea097334d6 | 220 | * @param[in] flags |
Anna Bridge |
142:4eea097334d6 | 221 | * VCMP interrupt sources to clear. Use a set of interrupt flags OR-ed |
Anna Bridge |
142:4eea097334d6 | 222 | * together to clear multiple interrupt sources for the VCMP module |
Anna Bridge |
142:4eea097334d6 | 223 | * (VCMP_IFS_nnn). |
Anna Bridge |
142:4eea097334d6 | 224 | ******************************************************************************/ |
Anna Bridge |
142:4eea097334d6 | 225 | __STATIC_INLINE void VCMP_IntClear(uint32_t flags) |
Anna Bridge |
142:4eea097334d6 | 226 | { |
Anna Bridge |
142:4eea097334d6 | 227 | VCMP->IFC = flags; |
Anna Bridge |
142:4eea097334d6 | 228 | } |
Anna Bridge |
142:4eea097334d6 | 229 | |
Anna Bridge |
142:4eea097334d6 | 230 | /***************************************************************************//** |
Anna Bridge |
142:4eea097334d6 | 231 | * @brief |
Anna Bridge |
142:4eea097334d6 | 232 | * Set one or more pending VCMP interrupts from SW. |
Anna Bridge |
142:4eea097334d6 | 233 | * |
Anna Bridge |
142:4eea097334d6 | 234 | * @param[in] flags |
Anna Bridge |
142:4eea097334d6 | 235 | * VCMP interrupt sources to set to pending. Use a set of interrupt flags |
Anna Bridge |
142:4eea097334d6 | 236 | * OR-ed together to set multiple interrupt sources for the VCMP module |
Anna Bridge |
142:4eea097334d6 | 237 | * (VCMP_IFS_nnn). |
Anna Bridge |
142:4eea097334d6 | 238 | ******************************************************************************/ |
Anna Bridge |
142:4eea097334d6 | 239 | __STATIC_INLINE void VCMP_IntSet(uint32_t flags) |
Anna Bridge |
142:4eea097334d6 | 240 | { |
Anna Bridge |
142:4eea097334d6 | 241 | VCMP->IFS = flags; |
Anna Bridge |
142:4eea097334d6 | 242 | } |
Anna Bridge |
142:4eea097334d6 | 243 | |
Anna Bridge |
142:4eea097334d6 | 244 | /***************************************************************************//** |
Anna Bridge |
142:4eea097334d6 | 245 | * @brief |
Anna Bridge |
142:4eea097334d6 | 246 | * Disable one or more VCMP interrupts |
Anna Bridge |
142:4eea097334d6 | 247 | * |
Anna Bridge |
142:4eea097334d6 | 248 | * @param[in] flags |
Anna Bridge |
142:4eea097334d6 | 249 | * VCMP interrupt sources to enable. Use a set of interrupt flags OR-ed |
Anna Bridge |
142:4eea097334d6 | 250 | * together to set multiple interrupt sources for the VCMP module |
Anna Bridge |
142:4eea097334d6 | 251 | * (VCMP_IFS_nnn). |
Anna Bridge |
142:4eea097334d6 | 252 | ******************************************************************************/ |
Anna Bridge |
142:4eea097334d6 | 253 | __STATIC_INLINE void VCMP_IntDisable(uint32_t flags) |
Anna Bridge |
142:4eea097334d6 | 254 | { |
Anna Bridge |
142:4eea097334d6 | 255 | VCMP->IEN &= ~flags; |
Anna Bridge |
142:4eea097334d6 | 256 | } |
Anna Bridge |
142:4eea097334d6 | 257 | |
Anna Bridge |
142:4eea097334d6 | 258 | /***************************************************************************//** |
Anna Bridge |
142:4eea097334d6 | 259 | * @brief |
Anna Bridge |
142:4eea097334d6 | 260 | * Enable one or more VCMP interrupts |
Anna Bridge |
142:4eea097334d6 | 261 | * |
Anna Bridge |
142:4eea097334d6 | 262 | * @param[in] flags |
Anna Bridge |
142:4eea097334d6 | 263 | * VCMP interrupt sources to enable. Use a set of interrupt flags OR-ed |
Anna Bridge |
142:4eea097334d6 | 264 | * together to set multiple interrupt sources for the VCMP module |
Anna Bridge |
142:4eea097334d6 | 265 | * (VCMP_IFS_nnn). |
Anna Bridge |
142:4eea097334d6 | 266 | ******************************************************************************/ |
Anna Bridge |
142:4eea097334d6 | 267 | __STATIC_INLINE void VCMP_IntEnable(uint32_t flags) |
Anna Bridge |
142:4eea097334d6 | 268 | { |
Anna Bridge |
142:4eea097334d6 | 269 | VCMP->IEN |= flags; |
Anna Bridge |
142:4eea097334d6 | 270 | } |
Anna Bridge |
142:4eea097334d6 | 271 | |
Anna Bridge |
142:4eea097334d6 | 272 | /***************************************************************************//** |
Anna Bridge |
142:4eea097334d6 | 273 | * @brief |
Anna Bridge |
142:4eea097334d6 | 274 | * Get pending VCMP interrupt flags |
Anna Bridge |
142:4eea097334d6 | 275 | * |
Anna Bridge |
142:4eea097334d6 | 276 | * @note |
Anna Bridge |
142:4eea097334d6 | 277 | * The event bits are not cleared by the use of this function |
Anna Bridge |
142:4eea097334d6 | 278 | * |
Anna Bridge |
142:4eea097334d6 | 279 | * @return |
Anna Bridge |
142:4eea097334d6 | 280 | * Pending VCMP interrupt sources. Returns a set of interrupt flags OR-ed |
Anna Bridge |
142:4eea097334d6 | 281 | * together for multiple interrupt sources in the VCMP module (VCMP_IFS_nnn). |
Anna Bridge |
142:4eea097334d6 | 282 | ******************************************************************************/ |
Anna Bridge |
142:4eea097334d6 | 283 | __STATIC_INLINE uint32_t VCMP_IntGet(void) |
Anna Bridge |
142:4eea097334d6 | 284 | { |
Anna Bridge |
142:4eea097334d6 | 285 | return VCMP->IF; |
Anna Bridge |
142:4eea097334d6 | 286 | } |
Anna Bridge |
142:4eea097334d6 | 287 | |
Anna Bridge |
142:4eea097334d6 | 288 | /***************************************************************************//** |
Anna Bridge |
142:4eea097334d6 | 289 | * @brief |
Anna Bridge |
142:4eea097334d6 | 290 | * Get enabled and pending VCMP interrupt flags. |
Anna Bridge |
142:4eea097334d6 | 291 | * |
Anna Bridge |
142:4eea097334d6 | 292 | * @details |
Anna Bridge |
142:4eea097334d6 | 293 | * Useful for handling more interrupt sources in the same interrupt handler. |
Anna Bridge |
142:4eea097334d6 | 294 | * |
Anna Bridge |
142:4eea097334d6 | 295 | * @note |
Anna Bridge |
142:4eea097334d6 | 296 | * The event bits are not cleared by the use of this function. |
Anna Bridge |
142:4eea097334d6 | 297 | * |
Anna Bridge |
142:4eea097334d6 | 298 | * @return |
Anna Bridge |
142:4eea097334d6 | 299 | * Pending and enabled VCMP interrupt sources. |
Anna Bridge |
142:4eea097334d6 | 300 | * The return value is the bitwise AND combination of |
Anna Bridge |
142:4eea097334d6 | 301 | * - the OR combination of enabled interrupt sources in VCMP_IEN_nnn |
Anna Bridge |
142:4eea097334d6 | 302 | * register (VCMP_IEN_nnn) and |
Anna Bridge |
142:4eea097334d6 | 303 | * - the OR combination of valid interrupt flags of the VCMP module |
Anna Bridge |
142:4eea097334d6 | 304 | * (VCMP_IF_nnn). |
Anna Bridge |
142:4eea097334d6 | 305 | ******************************************************************************/ |
Anna Bridge |
142:4eea097334d6 | 306 | __STATIC_INLINE uint32_t VCMP_IntGetEnabled(void) |
Anna Bridge |
142:4eea097334d6 | 307 | { |
Anna Bridge |
142:4eea097334d6 | 308 | uint32_t tmp = 0U; |
Anna Bridge |
142:4eea097334d6 | 309 | |
Anna Bridge |
142:4eea097334d6 | 310 | /* Store VCMP->IEN in temporary variable in order to define explicit order |
Anna Bridge |
142:4eea097334d6 | 311 | * of volatile accesses. */ |
Anna Bridge |
142:4eea097334d6 | 312 | tmp = VCMP->IEN; |
Anna Bridge |
142:4eea097334d6 | 313 | |
Anna Bridge |
142:4eea097334d6 | 314 | /* Bitwise AND of pending and enabled interrupts */ |
Anna Bridge |
142:4eea097334d6 | 315 | return VCMP->IF & tmp; |
Anna Bridge |
142:4eea097334d6 | 316 | } |
Anna Bridge |
142:4eea097334d6 | 317 | |
Anna Bridge |
142:4eea097334d6 | 318 | /** @} (end addtogroup VCMP) */ |
Anna Bridge |
142:4eea097334d6 | 319 | /** @} (end addtogroup emlib) */ |
Anna Bridge |
142:4eea097334d6 | 320 | |
Anna Bridge |
142:4eea097334d6 | 321 | #ifdef __cplusplus |
Anna Bridge |
142:4eea097334d6 | 322 | } |
Anna Bridge |
142:4eea097334d6 | 323 | #endif |
Anna Bridge |
142:4eea097334d6 | 324 | |
Anna Bridge |
142:4eea097334d6 | 325 | #endif /* defined(VCMP_COUNT) && (VCMP_COUNT > 0) */ |
Anna Bridge |
142:4eea097334d6 | 326 | #endif /* EM_VCMP_H */ |