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.

Committer:
<>
Date:
Thu Mar 30 13:26:47 2017 +0100
Revision:
139:856d2700e60b
Parent:
128:9bcdf88f62b0
Release 139 of the mbed library

Ports for Upcoming Targets

3934: [Silicon Labs] Update to HAL and devices https://github.com/ARMmbed/mbed-os/pull/3934

Known Issues

There is an issue with LPC1768 failing the 'Semihost file system' test with this release.

Fixes and Changes

3691: [TLS / hw acceleration] AES ECB for NUCLEO_F439ZI https://github.com/ARMmbed/mbed-os/pull/3691
3869: NCS36510: Default range changed from 0 to 950mV - ADC https://github.com/ARMmbed/mbed-os/pull/3869
3893: [STM32F7] Update STM32 Cube version v1.6.0 https://github.com/ARMmbed/mbed-os/pull/3893
3917: Fix mistake register setting in serial_format() https://github.com/ARMmbed/mbed-os/pull/3917
3927: [DELTA_DFBM_NQ620] Add RC calibration setting and revise mbed_overrides.c https://github.com/ARMmbed/mbed-os/pull/3927
3918: [NUC472/M453] Support unique locally administered MAC address and other driver updates https://github.com/ARMmbed/mbed-os/pull/3918
3920: Heap size adjusted to work for both tls-client and mbed-client https://github.com/ARMmbed/mbed-os/pull/3920
3969: NUCLEO_F302R8: Add missing PB_8/PB_9 CAN pins https://github.com/ARMmbed/mbed-os/pull/3969

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Kojto 113:f141b2784e32 1 /***************************************************************************//**
Kojto 113:f141b2784e32 2 * @file
Kojto 113:f141b2784e32 3 * @brief Real Time Counter (RTCC) peripheral API.
<> 139:856d2700e60b 4 * @version 5.1.2
Kojto 113:f141b2784e32 5 *******************************************************************************
Kojto 113:f141b2784e32 6 * @section License
<> 128:9bcdf88f62b0 7 * <b>Copyright 2016 Silicon Laboratories, Inc. http://www.silabs.com</b>
Kojto 113:f141b2784e32 8 *******************************************************************************
Kojto 113:f141b2784e32 9 *
Kojto 113:f141b2784e32 10 * Permission is granted to anyone to use this software for any purpose,
Kojto 113:f141b2784e32 11 * including commercial applications, and to alter it and redistribute it
Kojto 113:f141b2784e32 12 * freely, subject to the following restrictions:
Kojto 113:f141b2784e32 13 *
Kojto 113:f141b2784e32 14 * 1. The origin of this software must not be misrepresented; you must not
Kojto 113:f141b2784e32 15 * claim that you wrote the original software.
Kojto 113:f141b2784e32 16 * 2. Altered source versions must be plainly marked as such, and must not be
Kojto 113:f141b2784e32 17 * misrepresented as being the original software.
Kojto 113:f141b2784e32 18 * 3. This notice may not be removed or altered from any source distribution.
Kojto 113:f141b2784e32 19 *
Kojto 113:f141b2784e32 20 * DISCLAIMER OF WARRANTY/LIMITATION OF REMEDIES: Silicon Labs has no
Kojto 113:f141b2784e32 21 * obligation to support this Software. Silicon Labs is providing the
Kojto 113:f141b2784e32 22 * Software "AS IS", with no express or implied warranties of any kind,
Kojto 113:f141b2784e32 23 * including, but not limited to, any implied warranties of merchantability
Kojto 113:f141b2784e32 24 * or fitness for any particular purpose or warranties against infringement
Kojto 113:f141b2784e32 25 * of any proprietary rights of a third party.
Kojto 113:f141b2784e32 26 *
Kojto 113:f141b2784e32 27 * Silicon Labs will not be liable for any consequential, incidental, or
Kojto 113:f141b2784e32 28 * special damages, or any other relief, or for any claim by any third party,
Kojto 113:f141b2784e32 29 * arising from your use of this Software.
Kojto 113:f141b2784e32 30 *
Kojto 113:f141b2784e32 31 ******************************************************************************/
Kojto 113:f141b2784e32 32
<> 128:9bcdf88f62b0 33 #ifndef EM_RTCC_H
<> 128:9bcdf88f62b0 34 #define EM_RTCC_H
Kojto 113:f141b2784e32 35
Kojto 113:f141b2784e32 36 #include "em_device.h"
Kojto 113:f141b2784e32 37 #if defined( RTCC_COUNT ) && ( RTCC_COUNT == 1 )
Kojto 113:f141b2784e32 38
Kojto 113:f141b2784e32 39 #include <stdbool.h>
Kojto 113:f141b2784e32 40 #include "em_assert.h"
Kojto 113:f141b2784e32 41
Kojto 113:f141b2784e32 42 #ifdef __cplusplus
Kojto 113:f141b2784e32 43 extern "C" {
Kojto 113:f141b2784e32 44 #endif
Kojto 113:f141b2784e32 45
Kojto 113:f141b2784e32 46 /***************************************************************************//**
<> 128:9bcdf88f62b0 47 * @addtogroup emlib
Kojto 113:f141b2784e32 48 * @{
Kojto 113:f141b2784e32 49 ******************************************************************************/
Kojto 113:f141b2784e32 50
Kojto 113:f141b2784e32 51 /***************************************************************************//**
Kojto 113:f141b2784e32 52 * @addtogroup RTCC
Kojto 113:f141b2784e32 53 * @{
Kojto 113:f141b2784e32 54 ******************************************************************************/
Kojto 113:f141b2784e32 55
<> 139:856d2700e60b 56 /** @cond DO_NOT_INCLUDE_WITH_DOXYGEN */
<> 139:856d2700e60b 57 #if defined(_SILICON_LABS_GECKO_INTERNAL_SDID_84) \
<> 139:856d2700e60b 58 || defined(_SILICON_LABS_GECKO_INTERNAL_SDID_89)
<> 139:856d2700e60b 59 /* Enable fix for errata "RTCC_E203 - Potential Stability Issue with RTCC
<> 139:856d2700e60b 60 * Registers". */
<> 139:856d2700e60b 61 #define ERRATA_FIX_RTCC_E203
<> 139:856d2700e60b 62 #endif
<> 139:856d2700e60b 63
<> 139:856d2700e60b 64 #if defined(_SILICON_LABS_GECKO_INTERNAL_SDID_84)
<> 139:856d2700e60b 65 /* Enable fix for errata "RTCC_E204 - Disabling the RTCC Backup RAM may consume extra
<> 139:856d2700e60b 66 * current". */
<> 139:856d2700e60b 67 #define ERRATA_FIX_RTCC_E204
<> 139:856d2700e60b 68 #endif
<> 139:856d2700e60b 69 /** @endcond */
<> 139:856d2700e60b 70
Kojto 113:f141b2784e32 71 /*******************************************************************************
Kojto 113:f141b2784e32 72 ********************************* ENUM ************************************
Kojto 113:f141b2784e32 73 ******************************************************************************/
Kojto 113:f141b2784e32 74
Kojto 113:f141b2784e32 75 /** Operational mode of the counter. */
Kojto 113:f141b2784e32 76 typedef enum
Kojto 113:f141b2784e32 77 {
Kojto 113:f141b2784e32 78 /** Normal counter mode. The counter is incremented by 1 for each tick. */
Kojto 113:f141b2784e32 79 rtccCntModeNormal = _RTCC_CTRL_CNTTICK_PRESC,
Kojto 113:f141b2784e32 80
Kojto 113:f141b2784e32 81 /** Calendar mode. Refer to the RTCC chapter of the Reference Manual for more
Kojto 113:f141b2784e32 82 * details on the calendar mode. */
Kojto 113:f141b2784e32 83 rtccCntModeCalendar = _RTCC_CTRL_CNTTICK_CCV0MATCH
Kojto 113:f141b2784e32 84 } RTCC_CntMode_TypeDef;
Kojto 113:f141b2784e32 85
Kojto 113:f141b2784e32 86 /** Counter prescaler selection. */
Kojto 113:f141b2784e32 87 typedef enum
Kojto 113:f141b2784e32 88 {
Kojto 113:f141b2784e32 89 rtccCntPresc_1 = _RTCC_CTRL_CNTPRESC_DIV1, /**< Divide clock by 1. */
Kojto 113:f141b2784e32 90 rtccCntPresc_2 = _RTCC_CTRL_CNTPRESC_DIV2, /**< Divide clock by 2. */
Kojto 113:f141b2784e32 91 rtccCntPresc_4 = _RTCC_CTRL_CNTPRESC_DIV4, /**< Divide clock by 4. */
Kojto 113:f141b2784e32 92 rtccCntPresc_8 = _RTCC_CTRL_CNTPRESC_DIV8, /**< Divide clock by 8. */
Kojto 113:f141b2784e32 93 rtccCntPresc_16 = _RTCC_CTRL_CNTPRESC_DIV16, /**< Divide clock by 16. */
Kojto 113:f141b2784e32 94 rtccCntPresc_32 = _RTCC_CTRL_CNTPRESC_DIV32, /**< Divide clock by 32. */
Kojto 113:f141b2784e32 95 rtccCntPresc_64 = _RTCC_CTRL_CNTPRESC_DIV64, /**< Divide clock by 64. */
Kojto 113:f141b2784e32 96 rtccCntPresc_128 = _RTCC_CTRL_CNTPRESC_DIV128, /**< Divide clock by 128. */
Kojto 113:f141b2784e32 97 rtccCntPresc_256 = _RTCC_CTRL_CNTPRESC_DIV256, /**< Divide clock by 256. */
Kojto 113:f141b2784e32 98 rtccCntPresc_512 = _RTCC_CTRL_CNTPRESC_DIV512, /**< Divide clock by 512. */
Kojto 113:f141b2784e32 99 rtccCntPresc_1024 = _RTCC_CTRL_CNTPRESC_DIV1024, /**< Divide clock by 1024. */
Kojto 113:f141b2784e32 100 rtccCntPresc_2048 = _RTCC_CTRL_CNTPRESC_DIV2048, /**< Divide clock by 2048. */
Kojto 113:f141b2784e32 101 rtccCntPresc_4096 = _RTCC_CTRL_CNTPRESC_DIV4096, /**< Divide clock by 4096. */
Kojto 113:f141b2784e32 102 rtccCntPresc_8192 = _RTCC_CTRL_CNTPRESC_DIV8192, /**< Divide clock by 8192. */
Kojto 113:f141b2784e32 103 rtccCntPresc_16384 = _RTCC_CTRL_CNTPRESC_DIV16384, /**< Divide clock by 16384. */
Kojto 113:f141b2784e32 104 rtccCntPresc_32768 = _RTCC_CTRL_CNTPRESC_DIV32768 /**< Divide clock by 32768. */
Kojto 113:f141b2784e32 105 } RTCC_CntPresc_TypeDef;
Kojto 113:f141b2784e32 106
Kojto 113:f141b2784e32 107
Kojto 113:f141b2784e32 108 /** Prescaler mode of the RTCC counter. */
Kojto 113:f141b2784e32 109 typedef enum
Kojto 113:f141b2784e32 110 {
Kojto 113:f141b2784e32 111 /** CNT register ticks according to the prescaler value. */
Kojto 113:f141b2784e32 112 rtccCntTickPresc = _RTCC_CTRL_CNTTICK_PRESC,
Kojto 113:f141b2784e32 113
Kojto 113:f141b2784e32 114 /** CNT register ticks when PRECNT matches the 15 least significant bits of
Kojto 113:f141b2784e32 115 * ch. 0 CCV register. */
Kojto 113:f141b2784e32 116 rtccCntTickCCV0Match = _RTCC_CTRL_CNTTICK_CCV0MATCH
Kojto 113:f141b2784e32 117 } RTCC_PrescMode_TypeDef;
Kojto 113:f141b2784e32 118
Kojto 113:f141b2784e32 119
Kojto 113:f141b2784e32 120 /** Capture/Compare channel mode. */
Kojto 113:f141b2784e32 121 typedef enum
Kojto 113:f141b2784e32 122 {
Kojto 113:f141b2784e32 123 rtccCapComChModeOff = _RTCC_CC_CTRL_MODE_OFF, /**< Capture/Compare channel turned off. */
Kojto 113:f141b2784e32 124 rtccCapComChModeCapture = _RTCC_CC_CTRL_MODE_INPUTCAPTURE, /**< Capture mode. */
Kojto 113:f141b2784e32 125 rtccCapComChModeCompare = _RTCC_CC_CTRL_MODE_OUTPUTCOMPARE, /**< Compare mode. */
Kojto 113:f141b2784e32 126 } RTCC_CapComChMode_TypeDef;
Kojto 113:f141b2784e32 127
Kojto 113:f141b2784e32 128 /** Compare match output action mode. */
Kojto 113:f141b2784e32 129 typedef enum
Kojto 113:f141b2784e32 130 {
Kojto 113:f141b2784e32 131 rtccCompMatchOutActionPulse = _RTCC_CC_CTRL_CMOA_PULSE, /**< Generate a pulse. */
Kojto 113:f141b2784e32 132 rtccCompMatchOutActionToggle = _RTCC_CC_CTRL_CMOA_TOGGLE, /**< Toggle output. */
Kojto 113:f141b2784e32 133 rtccCompMatchOutActionClear = _RTCC_CC_CTRL_CMOA_CLEAR, /**< Clear output. */
Kojto 113:f141b2784e32 134 rtccCompMatchOutActionSet = _RTCC_CC_CTRL_CMOA_SET /**< Set output. */
Kojto 113:f141b2784e32 135 } RTCC_CompMatchOutAction_TypeDef;
Kojto 113:f141b2784e32 136
Kojto 113:f141b2784e32 137
Kojto 113:f141b2784e32 138 /** PRS input sources. */
Kojto 113:f141b2784e32 139 typedef enum
Kojto 113:f141b2784e32 140 {
Kojto 113:f141b2784e32 141 rtccPRSCh0 = _RTCC_CC_CTRL_PRSSEL_PRSCH0, /**< PRS channel 0. */
Kojto 113:f141b2784e32 142 rtccPRSCh1 = _RTCC_CC_CTRL_PRSSEL_PRSCH1, /**< PRS channel 1. */
Kojto 113:f141b2784e32 143 rtccPRSCh2 = _RTCC_CC_CTRL_PRSSEL_PRSCH2, /**< PRS channel 2. */
Kojto 113:f141b2784e32 144 rtccPRSCh3 = _RTCC_CC_CTRL_PRSSEL_PRSCH3, /**< PRS channel 3. */
Kojto 113:f141b2784e32 145 rtccPRSCh4 = _RTCC_CC_CTRL_PRSSEL_PRSCH4, /**< PRS channel 4. */
Kojto 113:f141b2784e32 146 rtccPRSCh5 = _RTCC_CC_CTRL_PRSSEL_PRSCH5, /**< PRS channel 5. */
Kojto 113:f141b2784e32 147 rtccPRSCh6 = _RTCC_CC_CTRL_PRSSEL_PRSCH6, /**< PRS channel 6. */
Kojto 113:f141b2784e32 148 rtccPRSCh7 = _RTCC_CC_CTRL_PRSSEL_PRSCH7, /**< PRS channel 7. */
Kojto 113:f141b2784e32 149 rtccPRSCh8 = _RTCC_CC_CTRL_PRSSEL_PRSCH8, /**< PRS channel 8. */
Kojto 113:f141b2784e32 150 rtccPRSCh9 = _RTCC_CC_CTRL_PRSSEL_PRSCH9, /**< PRS channel 9. */
Kojto 113:f141b2784e32 151 rtccPRSCh10 = _RTCC_CC_CTRL_PRSSEL_PRSCH10, /**< PRS channel 10. */
Kojto 113:f141b2784e32 152 rtccPRSCh11 = _RTCC_CC_CTRL_PRSSEL_PRSCH11 /**< PRS channel 11. */
Kojto 113:f141b2784e32 153 } RTCC_PRSSel_TypeDef;
Kojto 113:f141b2784e32 154
Kojto 113:f141b2784e32 155
Kojto 113:f141b2784e32 156 /** Input edge select. */
Kojto 113:f141b2784e32 157 typedef enum
Kojto 113:f141b2784e32 158 {
Kojto 113:f141b2784e32 159 rtccInEdgeRising = _RTCC_CC_CTRL_ICEDGE_RISING, /**< Rising edges detected. */
Kojto 113:f141b2784e32 160 rtccInEdgeFalling = _RTCC_CC_CTRL_ICEDGE_FALLING, /**< Falling edges detected. */
Kojto 113:f141b2784e32 161 rtccInEdgeBoth = _RTCC_CC_CTRL_ICEDGE_BOTH, /**< Both edges detected. */
Kojto 113:f141b2784e32 162 rtccInEdgeNone = _RTCC_CC_CTRL_ICEDGE_NONE /**< No edge detection, signal is left as is. */
Kojto 113:f141b2784e32 163 } RTCC_InEdgeSel_TypeDef;
Kojto 113:f141b2784e32 164
Kojto 113:f141b2784e32 165
Kojto 113:f141b2784e32 166 /** Capture/Compare channel compare mode. */
Kojto 113:f141b2784e32 167 typedef enum
Kojto 113:f141b2784e32 168 {
Kojto 113:f141b2784e32 169 /** CCVx is compared with the CNT register. */
Kojto 113:f141b2784e32 170 rtccCompBaseCnt = _RTCC_CC_CTRL_COMPBASE_CNT,
Kojto 113:f141b2784e32 171
Kojto 113:f141b2784e32 172 /** CCVx is compared with a CNT[16:0] and PRECNT[14:0]. */
Kojto 113:f141b2784e32 173 rtccCompBasePreCnt = _RTCC_CC_CTRL_COMPBASE_PRECNT
Kojto 113:f141b2784e32 174 } RTCC_CompBase_TypeDef;
Kojto 113:f141b2784e32 175
Kojto 113:f141b2784e32 176 /** Day compare mode. */
Kojto 113:f141b2784e32 177 typedef enum
Kojto 113:f141b2784e32 178 {
Kojto 113:f141b2784e32 179 rtccDayCompareModeMonth = _RTCC_CC_CTRL_DAYCC_MONTH, /**< Day of month is selected for Capture/Compare. */
Kojto 113:f141b2784e32 180 rtccDayCompareModeWeek = _RTCC_CC_CTRL_DAYCC_WEEK /**< Day of week is selected for Capture/Compare. */
Kojto 113:f141b2784e32 181 } RTCC_DayCompareMode_TypeDef;
Kojto 113:f141b2784e32 182
Kojto 113:f141b2784e32 183 /*******************************************************************************
Kojto 113:f141b2784e32 184 ******************************* STRUCTS ***********************************
Kojto 113:f141b2784e32 185 ******************************************************************************/
Kojto 113:f141b2784e32 186
Kojto 113:f141b2784e32 187 /** RTCC initialization structure. */
Kojto 113:f141b2784e32 188 typedef struct
Kojto 113:f141b2784e32 189 {
Kojto 113:f141b2784e32 190 /** Enable/disable counting when initialization is completed. */
Kojto 113:f141b2784e32 191 bool enable;
Kojto 113:f141b2784e32 192
Kojto 113:f141b2784e32 193 /** Enable/disable timer counting during debug halt. */
Kojto 113:f141b2784e32 194 bool debugRun;
Kojto 113:f141b2784e32 195
Kojto 113:f141b2784e32 196 /** Enable/disable precounter wrap on ch. 0 CCV value. */
Kojto 113:f141b2784e32 197 bool precntWrapOnCCV0;
Kojto 113:f141b2784e32 198
Kojto 113:f141b2784e32 199 /** Enable/disable counter wrap on ch. 1 CCV value. */
Kojto 113:f141b2784e32 200 bool cntWrapOnCCV1;
Kojto 113:f141b2784e32 201
Kojto 113:f141b2784e32 202 /** Counter prescaler. */
Kojto 113:f141b2784e32 203 RTCC_CntPresc_TypeDef presc;
Kojto 113:f141b2784e32 204
Kojto 113:f141b2784e32 205 /** Prescaler mode. */
Kojto 113:f141b2784e32 206 RTCC_PrescMode_TypeDef prescMode;
Kojto 113:f141b2784e32 207
Kojto 113:f141b2784e32 208 #if defined(_RTCC_CTRL_BUMODETSEN_MASK)
Kojto 113:f141b2784e32 209 /** Enable/disable storing RTCC counter value in RTCC_CCV2 upon backup mode
Kojto 113:f141b2784e32 210 * entry. */
Kojto 113:f141b2784e32 211 bool enaBackupModeSet;
Kojto 113:f141b2784e32 212 #endif
Kojto 113:f141b2784e32 213
Kojto 113:f141b2784e32 214 /** Enable/disable the check that sets the OSCFFAIL interrupt flag if no
Kojto 113:f141b2784e32 215 * LFCLK-RTCC ticks are detected within one ULFRCO cycles. */
Kojto 113:f141b2784e32 216 bool enaOSCFailDetect;
Kojto 113:f141b2784e32 217
Kojto 113:f141b2784e32 218 /** Select the operational mode of the counter. */
Kojto 113:f141b2784e32 219 RTCC_CntMode_TypeDef cntMode;
Kojto 113:f141b2784e32 220
Kojto 113:f141b2784e32 221 /** Disable leap year correction for the calendar mode. When this parameter is
Kojto 113:f141b2784e32 222 * set to false, February has 29 days if (year % 4 == 0). If true, February
Kojto 113:f141b2784e32 223 * always has 28 days. */
Kojto 113:f141b2784e32 224 bool disLeapYearCorr;
Kojto 113:f141b2784e32 225 } RTCC_Init_TypeDef;
Kojto 113:f141b2784e32 226
Kojto 113:f141b2784e32 227
Kojto 113:f141b2784e32 228 /** RTCC capture/compare channel configuration structure. */
Kojto 113:f141b2784e32 229 typedef struct
Kojto 113:f141b2784e32 230 {
Kojto 113:f141b2784e32 231 /** Select the mode of the Capture/Compare channel. */
Kojto 113:f141b2784e32 232 RTCC_CapComChMode_TypeDef chMode;
Kojto 113:f141b2784e32 233
Kojto 113:f141b2784e32 234 /** Compare mode channel match output action. */
Kojto 113:f141b2784e32 235 RTCC_CompMatchOutAction_TypeDef compMatchOutAction;
Kojto 113:f141b2784e32 236
Kojto 113:f141b2784e32 237 /** Capture mode channel PRS input channel selection. */
Kojto 113:f141b2784e32 238 RTCC_PRSSel_TypeDef prsSel;
Kojto 113:f141b2784e32 239
Kojto 113:f141b2784e32 240 /** Capture mode channel input edge selection. */
Kojto 113:f141b2784e32 241 RTCC_InEdgeSel_TypeDef inputEdgeSel;
Kojto 113:f141b2784e32 242
Kojto 113:f141b2784e32 243 /** Comparison base of the channel in compare mode. */
Kojto 113:f141b2784e32 244 RTCC_CompBase_TypeDef compBase;
Kojto 113:f141b2784e32 245
Kojto 113:f141b2784e32 246 /** The COMPMASK (5 bit) most significant bits of the compare value will not
Kojto 113:f141b2784e32 247 * be subject to comparison. */
Kojto 113:f141b2784e32 248 uint8_t compMask;
Kojto 113:f141b2784e32 249
Kojto 113:f141b2784e32 250 /** Day compare mode. */
Kojto 113:f141b2784e32 251 RTCC_DayCompareMode_TypeDef dayCompMode;
Kojto 113:f141b2784e32 252 } RTCC_CCChConf_TypeDef;
Kojto 113:f141b2784e32 253
Kojto 113:f141b2784e32 254
Kojto 113:f141b2784e32 255 /*******************************************************************************
Kojto 113:f141b2784e32 256 ******************************* DEFINES ***********************************
Kojto 113:f141b2784e32 257 ******************************************************************************/
Kojto 113:f141b2784e32 258
Kojto 113:f141b2784e32 259 /** Default RTCC init structure. */
Kojto 113:f141b2784e32 260 #if defined(_RTCC_CTRL_BUMODETSEN_MASK)
Kojto 113:f141b2784e32 261 #define RTCC_INIT_DEFAULT \
Kojto 113:f141b2784e32 262 { \
Kojto 113:f141b2784e32 263 true, /* Start counting when init done. */ \
Kojto 113:f141b2784e32 264 false, /* Disable RTCC during debug halt. */ \
Kojto 113:f141b2784e32 265 false, /* Disable precounter wrap on ch. 0 CCV value. */ \
Kojto 113:f141b2784e32 266 false, /* Disable counter wrap on ch. 1 CCV value. */ \
Kojto 113:f141b2784e32 267 rtccCntPresc_32, /* 977 us per tick. */ \
Kojto 113:f141b2784e32 268 rtccCntTickPresc, /* Counter increments according to prescaler value. */ \
Kojto 113:f141b2784e32 269 false, /* No RTCC storage on backup mode entry. */ \
Kojto 113:f141b2784e32 270 false, /* No RTCC oscillator failure detection. */ \
Kojto 113:f141b2784e32 271 rtccCntModeNormal, /* Normal RTCC mode. */ \
Kojto 113:f141b2784e32 272 false, /* No leap year correction. */ \
Kojto 113:f141b2784e32 273 }
Kojto 113:f141b2784e32 274 #else
Kojto 113:f141b2784e32 275 #define RTCC_INIT_DEFAULT \
Kojto 113:f141b2784e32 276 { \
Kojto 113:f141b2784e32 277 true, /* Start counting when init done. */ \
Kojto 113:f141b2784e32 278 false, /* Disable RTCC during debug halt. */ \
Kojto 113:f141b2784e32 279 false, /* Disable precounter wrap on ch. 0 CCV value. */ \
Kojto 113:f141b2784e32 280 false, /* Disable counter wrap on ch. 1 CCV value. */ \
Kojto 113:f141b2784e32 281 rtccCntPresc_32, /* 977 us per tick. */ \
Kojto 113:f141b2784e32 282 rtccCntTickPresc, /* Counter increments according to prescaler value. */ \
Kojto 113:f141b2784e32 283 false, /* No RTCC oscillator failure detection. */ \
Kojto 113:f141b2784e32 284 rtccCntModeNormal, /* Normal RTCC mode. */ \
Kojto 113:f141b2784e32 285 false, /* No leap year correction. */ \
Kojto 113:f141b2784e32 286 }
Kojto 113:f141b2784e32 287 #endif
Kojto 113:f141b2784e32 288
Kojto 113:f141b2784e32 289 /** Default RTCC channel output compare init structure. */
Kojto 113:f141b2784e32 290 #define RTCC_CH_INIT_COMPARE_DEFAULT \
Kojto 113:f141b2784e32 291 { \
Kojto 113:f141b2784e32 292 rtccCapComChModeCompare, /* Select output compare mode. */ \
Kojto 113:f141b2784e32 293 rtccCompMatchOutActionPulse, /* Create pulse on compare match. */ \
Kojto 113:f141b2784e32 294 rtccPRSCh0, /* PRS channel 0 (not used). */ \
Kojto 113:f141b2784e32 295 rtccInEdgeNone, /* No edge detection. */ \
Kojto 113:f141b2784e32 296 rtccCompBaseCnt, /* Counter comparison base. */ \
Kojto 113:f141b2784e32 297 0, /* No compare mask bits set. */ \
Kojto 113:f141b2784e32 298 rtccDayCompareModeMonth /* Don't care */ \
Kojto 113:f141b2784e32 299 }
Kojto 113:f141b2784e32 300
Kojto 113:f141b2784e32 301 /** Default RTCC channel input capture init structure. */
Kojto 113:f141b2784e32 302 #define RTCC_CH_INIT_CAPTURE_DEFAULT \
Kojto 113:f141b2784e32 303 { \
Kojto 113:f141b2784e32 304 rtccCapComChModeCapture, /* Select input capture mode. */ \
Kojto 113:f141b2784e32 305 rtccCompMatchOutActionPulse, /* Create pulse on capture. */ \
Kojto 113:f141b2784e32 306 rtccPRSCh0, /* PRS channel 0. */ \
Kojto 113:f141b2784e32 307 rtccInEdgeRising, /* Rising edge detection. */ \
Kojto 113:f141b2784e32 308 rtccCompBaseCnt, /* Don't care. */ \
Kojto 113:f141b2784e32 309 0, /* Don't care. */ \
Kojto 113:f141b2784e32 310 rtccDayCompareModeMonth /* Don't care */ \
Kojto 113:f141b2784e32 311 }
Kojto 113:f141b2784e32 312
Kojto 113:f141b2784e32 313 /** Validation of valid RTCC channel for assert statements. */
Kojto 113:f141b2784e32 314 #define RTCC_CH_VALID( ch ) ( ( ch ) < 3 )
Kojto 113:f141b2784e32 315
Kojto 113:f141b2784e32 316 /*******************************************************************************
Kojto 113:f141b2784e32 317 ***************************** PROTOTYPES **********************************
Kojto 113:f141b2784e32 318 ******************************************************************************/
Kojto 113:f141b2784e32 319
Kojto 113:f141b2784e32 320 /***************************************************************************//**
Kojto 113:f141b2784e32 321 * @brief
Kojto 113:f141b2784e32 322 * Get RTCC capture/compare register value (CCV) for selected channel.
Kojto 113:f141b2784e32 323 *
Kojto 113:f141b2784e32 324 * @param[in] ch
Kojto 113:f141b2784e32 325 * Channel selector.
Kojto 113:f141b2784e32 326 *
Kojto 113:f141b2784e32 327 * @return
Kojto 113:f141b2784e32 328 * Capture/compare register value.
Kojto 113:f141b2784e32 329 ******************************************************************************/
Kojto 113:f141b2784e32 330 __STATIC_INLINE uint32_t RTCC_ChannelCCVGet( int ch )
Kojto 113:f141b2784e32 331 {
Kojto 113:f141b2784e32 332 EFM_ASSERT( RTCC_CH_VALID( ch ) );
Kojto 113:f141b2784e32 333 return RTCC->CC[ ch ].CCV;
Kojto 113:f141b2784e32 334 }
Kojto 113:f141b2784e32 335
Kojto 113:f141b2784e32 336 /***************************************************************************//**
Kojto 113:f141b2784e32 337 * @brief
Kojto 113:f141b2784e32 338 * Set RTCC capture/compare register value (CCV) for selected channel.
Kojto 113:f141b2784e32 339 *
Kojto 113:f141b2784e32 340 * @param[in] ch
Kojto 113:f141b2784e32 341 * Channel selector.
Kojto 113:f141b2784e32 342 *
Kojto 113:f141b2784e32 343 * @param[in] value
Kojto 113:f141b2784e32 344 * CCV value.
Kojto 113:f141b2784e32 345 ******************************************************************************/
Kojto 113:f141b2784e32 346 __STATIC_INLINE void RTCC_ChannelCCVSet( int ch, uint32_t value )
Kojto 113:f141b2784e32 347 {
Kojto 113:f141b2784e32 348 EFM_ASSERT( RTCC_CH_VALID( ch ) );
Kojto 113:f141b2784e32 349 RTCC->CC[ ch ].CCV = value;
Kojto 113:f141b2784e32 350 }
Kojto 113:f141b2784e32 351
Kojto 113:f141b2784e32 352 /***************************************************************************//**
Kojto 113:f141b2784e32 353 * @brief
Kojto 113:f141b2784e32 354 * Get the calendar DATE register content for selected channel.
Kojto 113:f141b2784e32 355 *
Kojto 113:f141b2784e32 356 * @param[in] ch
Kojto 113:f141b2784e32 357 * Channel selector.
Kojto 113:f141b2784e32 358 *
Kojto 113:f141b2784e32 359 * @return
Kojto 113:f141b2784e32 360 * DATE register value.
Kojto 113:f141b2784e32 361 ******************************************************************************/
Kojto 113:f141b2784e32 362 __STATIC_INLINE uint32_t RTCC_ChannelDateGet( int ch )
Kojto 113:f141b2784e32 363 {
Kojto 113:f141b2784e32 364 EFM_ASSERT( RTCC_CH_VALID( ch ) );
Kojto 113:f141b2784e32 365 return RTCC->CC[ ch ].DATE;
Kojto 113:f141b2784e32 366 }
Kojto 113:f141b2784e32 367
Kojto 113:f141b2784e32 368 /***************************************************************************//**
Kojto 113:f141b2784e32 369 * @brief
Kojto 113:f141b2784e32 370 * Set the calendar DATE register for selected channel.
Kojto 113:f141b2784e32 371 *
Kojto 113:f141b2784e32 372 * @param[in] ch
Kojto 113:f141b2784e32 373 * Channel selector.
Kojto 113:f141b2784e32 374 *
Kojto 113:f141b2784e32 375 * @param[in] date
Kojto 113:f141b2784e32 376 * DATE value.
Kojto 113:f141b2784e32 377 ******************************************************************************/
Kojto 113:f141b2784e32 378 __STATIC_INLINE void RTCC_ChannelDateSet( int ch, uint32_t date )
Kojto 113:f141b2784e32 379 {
Kojto 113:f141b2784e32 380 EFM_ASSERT( RTCC_CH_VALID( ch ) );
Kojto 113:f141b2784e32 381 RTCC->CC[ ch ].DATE = date;
Kojto 113:f141b2784e32 382 }
Kojto 113:f141b2784e32 383
Kojto 113:f141b2784e32 384 void RTCC_ChannelInit( int ch, RTCC_CCChConf_TypeDef const *confPtr );
Kojto 113:f141b2784e32 385
Kojto 113:f141b2784e32 386 /***************************************************************************//**
Kojto 113:f141b2784e32 387 * @brief
Kojto 113:f141b2784e32 388 * Get the calendar TIME register content for selected channel.
Kojto 113:f141b2784e32 389 *
Kojto 113:f141b2784e32 390 * @param[in] ch
Kojto 113:f141b2784e32 391 * Channel selector.
Kojto 113:f141b2784e32 392 *
Kojto 113:f141b2784e32 393 * @return
Kojto 113:f141b2784e32 394 * TIME register value.
Kojto 113:f141b2784e32 395 ******************************************************************************/
Kojto 113:f141b2784e32 396 __STATIC_INLINE uint32_t RTCC_ChannelTimeGet( int ch )
Kojto 113:f141b2784e32 397 {
Kojto 113:f141b2784e32 398 EFM_ASSERT( RTCC_CH_VALID( ch ) );
Kojto 113:f141b2784e32 399 return RTCC->CC[ ch ].TIME;
Kojto 113:f141b2784e32 400 }
Kojto 113:f141b2784e32 401
Kojto 113:f141b2784e32 402 /***************************************************************************//**
Kojto 113:f141b2784e32 403 * @brief
Kojto 113:f141b2784e32 404 * Set the calendar TIME register for selected channel.
Kojto 113:f141b2784e32 405 *
Kojto 113:f141b2784e32 406 * @param[in] ch
Kojto 113:f141b2784e32 407 * Channel selector.
Kojto 113:f141b2784e32 408 *
Kojto 113:f141b2784e32 409 * @param[in] time
Kojto 113:f141b2784e32 410 * TIME value.
Kojto 113:f141b2784e32 411 ******************************************************************************/
Kojto 113:f141b2784e32 412 __STATIC_INLINE void RTCC_ChannelTimeSet( int ch, uint32_t time )
Kojto 113:f141b2784e32 413 {
Kojto 113:f141b2784e32 414 EFM_ASSERT( RTCC_CH_VALID( ch ) );
Kojto 113:f141b2784e32 415 RTCC->CC[ ch ].TIME = time;
Kojto 113:f141b2784e32 416 }
Kojto 113:f141b2784e32 417
Kojto 113:f141b2784e32 418 /***************************************************************************//**
Kojto 113:f141b2784e32 419 * @brief
Kojto 113:f141b2784e32 420 * Get the combined CNT/PRECNT register content.
Kojto 113:f141b2784e32 421 *
Kojto 113:f141b2784e32 422 * @return
Kojto 113:f141b2784e32 423 * CNT/PRECNT register value.
Kojto 113:f141b2784e32 424 ******************************************************************************/
Kojto 113:f141b2784e32 425 __STATIC_INLINE uint32_t RTCC_CombinedCounterGet( void )
Kojto 113:f141b2784e32 426 {
Kojto 113:f141b2784e32 427 return RTCC->COMBCNT;
Kojto 113:f141b2784e32 428 }
Kojto 113:f141b2784e32 429
Kojto 113:f141b2784e32 430 /***************************************************************************//**
Kojto 113:f141b2784e32 431 * @brief
Kojto 113:f141b2784e32 432 * Get RTCC counter value.
Kojto 113:f141b2784e32 433 *
Kojto 113:f141b2784e32 434 * @return
Kojto 113:f141b2784e32 435 * Current RTCC counter value.
Kojto 113:f141b2784e32 436 ******************************************************************************/
Kojto 113:f141b2784e32 437 __STATIC_INLINE uint32_t RTCC_CounterGet( void )
Kojto 113:f141b2784e32 438 {
Kojto 113:f141b2784e32 439 return RTCC->CNT;
Kojto 113:f141b2784e32 440 }
Kojto 113:f141b2784e32 441
Kojto 113:f141b2784e32 442 /***************************************************************************//**
Kojto 113:f141b2784e32 443 * @brief
Kojto 113:f141b2784e32 444 * Set RTCC CNT counter.
Kojto 113:f141b2784e32 445 *
Kojto 113:f141b2784e32 446 * @param[in] value
Kojto 113:f141b2784e32 447 * CNT value.
Kojto 113:f141b2784e32 448 ******************************************************************************/
Kojto 113:f141b2784e32 449 __STATIC_INLINE void RTCC_CounterSet( uint32_t value )
Kojto 113:f141b2784e32 450 {
Kojto 113:f141b2784e32 451 RTCC->CNT = value;
Kojto 113:f141b2784e32 452 }
Kojto 113:f141b2784e32 453
Kojto 113:f141b2784e32 454 /***************************************************************************//**
Kojto 113:f141b2784e32 455 * @brief
Kojto 113:f141b2784e32 456 * Get DATE register value.
Kojto 113:f141b2784e32 457 *
Kojto 113:f141b2784e32 458 * @return
Kojto 113:f141b2784e32 459 * Current DATE register value.
Kojto 113:f141b2784e32 460 ******************************************************************************/
Kojto 113:f141b2784e32 461 __STATIC_INLINE uint32_t RTCC_DateGet( void )
Kojto 113:f141b2784e32 462 {
Kojto 113:f141b2784e32 463 return RTCC->DATE;
Kojto 113:f141b2784e32 464 }
Kojto 113:f141b2784e32 465
Kojto 113:f141b2784e32 466 /***************************************************************************//**
Kojto 113:f141b2784e32 467 * @brief
Kojto 113:f141b2784e32 468 * Set RTCC DATE register.
Kojto 113:f141b2784e32 469 *
Kojto 113:f141b2784e32 470 * @param[in] date
Kojto 113:f141b2784e32 471 * DATE value.
Kojto 113:f141b2784e32 472 ******************************************************************************/
Kojto 113:f141b2784e32 473 __STATIC_INLINE void RTCC_DateSet( uint32_t date )
Kojto 113:f141b2784e32 474 {
Kojto 113:f141b2784e32 475 RTCC->DATE = date;
Kojto 113:f141b2784e32 476 }
Kojto 113:f141b2784e32 477
Kojto 113:f141b2784e32 478 /***************************************************************************//**
Kojto 113:f141b2784e32 479 * @brief
Kojto 113:f141b2784e32 480 * Enable/disable EM4 wakeup capability.
Kojto 113:f141b2784e32 481 *
Kojto 113:f141b2784e32 482 * @param[in] enable
Kojto 113:f141b2784e32 483 * True to enable EM4 wakeup, false to disable.
Kojto 113:f141b2784e32 484 ******************************************************************************/
Kojto 113:f141b2784e32 485 __STATIC_INLINE void RTCC_EM4WakeupEnable( bool enable )
Kojto 113:f141b2784e32 486 {
Kojto 113:f141b2784e32 487 if ( enable )
Kojto 113:f141b2784e32 488 {
Kojto 113:f141b2784e32 489 RTCC->EM4WUEN = RTCC_EM4WUEN_EM4WU;
Kojto 113:f141b2784e32 490 }
Kojto 113:f141b2784e32 491 else
Kojto 113:f141b2784e32 492 {
Kojto 113:f141b2784e32 493 RTCC->EM4WUEN = 0;
Kojto 113:f141b2784e32 494 }
Kojto 113:f141b2784e32 495 }
Kojto 113:f141b2784e32 496
Kojto 113:f141b2784e32 497 void RTCC_Enable( bool enable );
Kojto 113:f141b2784e32 498
Kojto 113:f141b2784e32 499 void RTCC_Init( const RTCC_Init_TypeDef *init );
Kojto 113:f141b2784e32 500
Kojto 113:f141b2784e32 501 /***************************************************************************//**
Kojto 113:f141b2784e32 502 * @brief
Kojto 113:f141b2784e32 503 * Clear one or more pending RTCC interrupts.
Kojto 113:f141b2784e32 504 *
Kojto 113:f141b2784e32 505 * @param[in] flags
Kojto 113:f141b2784e32 506 * RTCC interrupt sources to clear. Use a set of interrupt flags OR-ed
Kojto 113:f141b2784e32 507 * together to clear multiple interrupt sources.
Kojto 113:f141b2784e32 508 ******************************************************************************/
Kojto 113:f141b2784e32 509 __STATIC_INLINE void RTCC_IntClear( uint32_t flags )
Kojto 113:f141b2784e32 510 {
Kojto 113:f141b2784e32 511 RTCC->IFC = flags;
Kojto 113:f141b2784e32 512 }
Kojto 113:f141b2784e32 513
Kojto 113:f141b2784e32 514 /***************************************************************************//**
Kojto 113:f141b2784e32 515 * @brief
Kojto 113:f141b2784e32 516 * Disable one or more RTCC interrupts.
Kojto 113:f141b2784e32 517 *
Kojto 113:f141b2784e32 518 * @param[in] flags
Kojto 113:f141b2784e32 519 * RTCC interrupt sources to disable. Use a set of interrupt flags OR-ed
Kojto 113:f141b2784e32 520 * together to disable multiple interrupt.
Kojto 113:f141b2784e32 521 ******************************************************************************/
Kojto 113:f141b2784e32 522 __STATIC_INLINE void RTCC_IntDisable( uint32_t flags )
Kojto 113:f141b2784e32 523 {
Kojto 113:f141b2784e32 524 RTCC->IEN &= ~flags;
Kojto 113:f141b2784e32 525 }
Kojto 113:f141b2784e32 526
Kojto 113:f141b2784e32 527 /***************************************************************************//**
Kojto 113:f141b2784e32 528 * @brief
Kojto 113:f141b2784e32 529 * Enable one or more RTCC interrupts.
Kojto 113:f141b2784e32 530 *
Kojto 113:f141b2784e32 531 * @note
Kojto 113:f141b2784e32 532 * Depending on the use, a pending interrupt may already be set prior to
Kojto 113:f141b2784e32 533 * enabling the interrupt. Consider using RTCC_IntClear() prior to enabling
Kojto 113:f141b2784e32 534 * if such a pending interrupt should be ignored.
Kojto 113:f141b2784e32 535 *
Kojto 113:f141b2784e32 536 * @param[in] flags
Kojto 113:f141b2784e32 537 * RTCC interrupt sources to enable. Use a set of interrupt flags OR-ed
Kojto 113:f141b2784e32 538 * together to set multiple interrupt.
Kojto 113:f141b2784e32 539 ******************************************************************************/
Kojto 113:f141b2784e32 540 __STATIC_INLINE void RTCC_IntEnable( uint32_t flags )
Kojto 113:f141b2784e32 541 {
Kojto 113:f141b2784e32 542 RTCC->IEN |= flags;
Kojto 113:f141b2784e32 543 }
Kojto 113:f141b2784e32 544
Kojto 113:f141b2784e32 545 /***************************************************************************//**
Kojto 113:f141b2784e32 546 * @brief
Kojto 113:f141b2784e32 547 * Get pending RTCC interrupt flags.
Kojto 113:f141b2784e32 548 *
Kojto 113:f141b2784e32 549 * @note
Kojto 113:f141b2784e32 550 * The event bits are not cleared by the use of this function.
Kojto 113:f141b2784e32 551 *
Kojto 113:f141b2784e32 552 * @return
Kojto 113:f141b2784e32 553 * Pending RTCC interrupt sources. Returns a set of interrupt flags OR-ed
Kojto 113:f141b2784e32 554 * together for the interrupt sources set.
Kojto 113:f141b2784e32 555 ******************************************************************************/
Kojto 113:f141b2784e32 556 __STATIC_INLINE uint32_t RTCC_IntGet( void )
Kojto 113:f141b2784e32 557 {
Kojto 113:f141b2784e32 558 return RTCC->IF;
Kojto 113:f141b2784e32 559 }
Kojto 113:f141b2784e32 560
Kojto 113:f141b2784e32 561 /***************************************************************************//**
Kojto 113:f141b2784e32 562 * @brief
Kojto 113:f141b2784e32 563 * Get enabled and pending RTCC interrupt flags.
Kojto 113:f141b2784e32 564 *
Kojto 113:f141b2784e32 565 * @details
Kojto 113:f141b2784e32 566 * Useful for handling more interrupt sources in the same interrupt handler.
Kojto 113:f141b2784e32 567 *
Kojto 113:f141b2784e32 568 * @return
Kojto 113:f141b2784e32 569 * Pending and enabled RTCC interrupt sources. Returns a set of interrupt
Kojto 113:f141b2784e32 570 * flags OR-ed together for the interrupt sources set.
Kojto 113:f141b2784e32 571 ******************************************************************************/
Kojto 113:f141b2784e32 572 __STATIC_INLINE uint32_t RTCC_IntGetEnabled( void )
Kojto 113:f141b2784e32 573 {
Kojto 113:f141b2784e32 574 uint32_t tmp;
Kojto 113:f141b2784e32 575
Kojto 113:f141b2784e32 576 tmp = RTCC->IEN;
Kojto 113:f141b2784e32 577
Kojto 113:f141b2784e32 578 /* Bitwise AND of pending and enabled interrupt flags. */
Kojto 113:f141b2784e32 579 return RTCC->IF & tmp;
Kojto 113:f141b2784e32 580 }
Kojto 113:f141b2784e32 581
Kojto 113:f141b2784e32 582 /***************************************************************************//**
Kojto 113:f141b2784e32 583 * @brief
Kojto 113:f141b2784e32 584 * Set one or more pending RTCC interrupts from SW.
Kojto 113:f141b2784e32 585 *
Kojto 113:f141b2784e32 586 * @param[in] flags
Kojto 113:f141b2784e32 587 * RTCC interrupt sources to set to pending. Use a set of interrupt flags
Kojto 113:f141b2784e32 588 * (RTCC_IFS_nnn).
Kojto 113:f141b2784e32 589 ******************************************************************************/
Kojto 113:f141b2784e32 590 __STATIC_INLINE void RTCC_IntSet( uint32_t flags )
Kojto 113:f141b2784e32 591 {
Kojto 113:f141b2784e32 592 RTCC->IFS = flags;
Kojto 113:f141b2784e32 593 }
Kojto 113:f141b2784e32 594
Kojto 113:f141b2784e32 595 /***************************************************************************//**
Kojto 113:f141b2784e32 596 * @brief
Kojto 113:f141b2784e32 597 * Lock RTCC registers.
Kojto 113:f141b2784e32 598 *
Kojto 113:f141b2784e32 599 * @note
Kojto 113:f141b2784e32 600 * When RTCC registers are locked, RTCC_CTRL, RTCC_PRECNT, RTCC_CNT,
Kojto 113:f141b2784e32 601 * RTCC_TIME, RTCC_DATE, RTCC_IEN, RTCC_POWERDOWN and RTCC_CCx_XXX registers
Kojto 113:f141b2784e32 602 * can not be written to.
Kojto 113:f141b2784e32 603 ******************************************************************************/
Kojto 113:f141b2784e32 604 __STATIC_INLINE void RTCC_Lock( void )
Kojto 113:f141b2784e32 605 {
<> 139:856d2700e60b 606 #if defined(ERRATA_FIX_RTCC_E203)
<> 139:856d2700e60b 607 /* RTCC_E203 - Potential Stability Issue with RTCC Registers
<> 139:856d2700e60b 608 * RTCC_LOCK register must be modified while RTCC clock is disabled. */
<> 139:856d2700e60b 609 uint32_t lfeReg = CMU->LFECLKEN0;
<> 139:856d2700e60b 610 bool cmuLocked = (CMU->LOCK == CMU_LOCK_LOCKKEY_LOCKED);
<> 139:856d2700e60b 611 if (cmuLocked)
<> 139:856d2700e60b 612 {
<> 139:856d2700e60b 613 CMU->LOCK = CMU_LOCK_LOCKKEY_UNLOCK;
<> 139:856d2700e60b 614 }
<> 139:856d2700e60b 615 CMU->LFECLKEN0 = 0x0;
<> 139:856d2700e60b 616 #endif
Kojto 113:f141b2784e32 617 RTCC->LOCK = RTCC_LOCK_LOCKKEY_LOCK;
<> 139:856d2700e60b 618 #if defined(ERRATA_FIX_RTCC_E203)
<> 139:856d2700e60b 619 /* Restore clock state after RTCC_E203 fix. */
<> 139:856d2700e60b 620 CMU->LFECLKEN0 = lfeReg;
<> 139:856d2700e60b 621 if (cmuLocked)
<> 139:856d2700e60b 622 {
<> 139:856d2700e60b 623 CMU->LOCK = CMU_LOCK_LOCKKEY_LOCK;
<> 139:856d2700e60b 624 }
<> 139:856d2700e60b 625 #endif
Kojto 113:f141b2784e32 626 }
Kojto 113:f141b2784e32 627
Kojto 113:f141b2784e32 628 /***************************************************************************//**
Kojto 113:f141b2784e32 629 * @brief
Kojto 113:f141b2784e32 630 * Get RTCC pre-counter value.
Kojto 113:f141b2784e32 631 *
Kojto 113:f141b2784e32 632 * @return
Kojto 113:f141b2784e32 633 * Current RTCC pre-counter value.
Kojto 113:f141b2784e32 634 ******************************************************************************/
Kojto 113:f141b2784e32 635 __STATIC_INLINE uint32_t RTCC_PreCounterGet( void )
Kojto 113:f141b2784e32 636 {
Kojto 113:f141b2784e32 637 return RTCC->PRECNT;
Kojto 113:f141b2784e32 638 }
Kojto 113:f141b2784e32 639
Kojto 113:f141b2784e32 640 /***************************************************************************//**
Kojto 113:f141b2784e32 641 * @brief
Kojto 113:f141b2784e32 642 * Set RTCC pre-counter value.
Kojto 113:f141b2784e32 643 *
Kojto 113:f141b2784e32 644 * @param[in] preCntVal
Kojto 113:f141b2784e32 645 * RTCC pre-counter value to be set.
Kojto 113:f141b2784e32 646 ******************************************************************************/
Kojto 113:f141b2784e32 647 __STATIC_INLINE void RTCC_PreCounterSet( uint32_t preCntVal )
Kojto 113:f141b2784e32 648 {
Kojto 113:f141b2784e32 649 RTCC->PRECNT = preCntVal;
Kojto 113:f141b2784e32 650 }
Kojto 113:f141b2784e32 651
Kojto 113:f141b2784e32 652 void RTCC_Reset( void );
Kojto 113:f141b2784e32 653
Kojto 113:f141b2784e32 654 /***************************************************************************//**
Kojto 113:f141b2784e32 655 * @brief
Kojto 113:f141b2784e32 656 * Power down the retention ram.
Kojto 113:f141b2784e32 657 *
Kojto 113:f141b2784e32 658 * @note
Kojto 113:f141b2784e32 659 * Once retention ram is powered down, it cannot be powered up again.
Kojto 113:f141b2784e32 660 ******************************************************************************/
Kojto 113:f141b2784e32 661 __STATIC_INLINE void RTCC_RetentionRamPowerDown( void )
Kojto 113:f141b2784e32 662 {
<> 139:856d2700e60b 663 #if !defined(ERRATA_FIX_RTCC_E204)
<> 139:856d2700e60b 664 /* Devices that are affected by RTCC_E204 should always keep the RTCC
<> 139:856d2700e60b 665 * backup RAM retained. */
Kojto 113:f141b2784e32 666 RTCC->POWERDOWN = RTCC_POWERDOWN_RAM;
<> 139:856d2700e60b 667 #endif
Kojto 113:f141b2784e32 668 }
Kojto 113:f141b2784e32 669
Kojto 113:f141b2784e32 670 void RTCC_StatusClear( void );
Kojto 113:f141b2784e32 671
Kojto 113:f141b2784e32 672 /***************************************************************************//**
Kojto 113:f141b2784e32 673 * @brief
Kojto 113:f141b2784e32 674 * Get STATUS register value.
Kojto 113:f141b2784e32 675 *
Kojto 113:f141b2784e32 676 * @return
Kojto 113:f141b2784e32 677 * Current STATUS register value.
Kojto 113:f141b2784e32 678 ******************************************************************************/
Kojto 113:f141b2784e32 679 __STATIC_INLINE uint32_t RTCC_StatusGet( void )
Kojto 113:f141b2784e32 680 {
Kojto 113:f141b2784e32 681 while ( RTCC->SYNCBUSY & RTCC_SYNCBUSY_CMD )
Kojto 113:f141b2784e32 682 {
Kojto 113:f141b2784e32 683 // Wait for syncronization.
Kojto 113:f141b2784e32 684 }
Kojto 113:f141b2784e32 685 return RTCC->STATUS;
Kojto 113:f141b2784e32 686 }
Kojto 113:f141b2784e32 687
Kojto 113:f141b2784e32 688 /***************************************************************************//**
Kojto 113:f141b2784e32 689 * @brief
Kojto 113:f141b2784e32 690 * Get TIME register value.
Kojto 113:f141b2784e32 691 *
Kojto 113:f141b2784e32 692 * @return
Kojto 113:f141b2784e32 693 * Current TIME register value.
Kojto 113:f141b2784e32 694 ******************************************************************************/
Kojto 113:f141b2784e32 695 __STATIC_INLINE uint32_t RTCC_TimeGet( void )
Kojto 113:f141b2784e32 696 {
Kojto 113:f141b2784e32 697 return RTCC->TIME;
Kojto 113:f141b2784e32 698 }
Kojto 113:f141b2784e32 699
Kojto 113:f141b2784e32 700 /***************************************************************************//**
Kojto 113:f141b2784e32 701 * @brief
Kojto 113:f141b2784e32 702 * Set RTCC TIME register.
Kojto 113:f141b2784e32 703 *
Kojto 113:f141b2784e32 704 * @param[in] time
Kojto 113:f141b2784e32 705 * TIME value.
Kojto 113:f141b2784e32 706 ******************************************************************************/
Kojto 113:f141b2784e32 707 __STATIC_INLINE void RTCC_TimeSet( uint32_t time )
Kojto 113:f141b2784e32 708 {
Kojto 113:f141b2784e32 709 RTCC->TIME = time;
Kojto 113:f141b2784e32 710 }
Kojto 113:f141b2784e32 711
Kojto 113:f141b2784e32 712 /***************************************************************************//**
Kojto 113:f141b2784e32 713 * @brief
Kojto 113:f141b2784e32 714 * Unlock RTCC registers.
Kojto 113:f141b2784e32 715 *
Kojto 113:f141b2784e32 716 * @note
Kojto 113:f141b2784e32 717 * When RTCC registers are locked, RTCC_CTRL, RTCC_PRECNT, RTCC_CNT,
Kojto 113:f141b2784e32 718 * RTCC_TIME, RTCC_DATE, RTCC_IEN, RTCC_POWERDOWN and RTCC_CCx_XXX registers
Kojto 113:f141b2784e32 719 * can not be written to.
Kojto 113:f141b2784e32 720 ******************************************************************************/
Kojto 113:f141b2784e32 721 __STATIC_INLINE void RTCC_Unlock( void )
Kojto 113:f141b2784e32 722 {
<> 139:856d2700e60b 723 #if defined(ERRATA_FIX_RTCC_E203)
<> 139:856d2700e60b 724 /* RTCC_E203 - Potential Stability Issue with RTCC Registers
<> 139:856d2700e60b 725 * RTCC_LOCK register must be modified while RTCC clock is disabled. */
<> 139:856d2700e60b 726 uint32_t lfeReg = CMU->LFECLKEN0;
<> 139:856d2700e60b 727 bool cmuLocked = (CMU->LOCK == CMU_LOCK_LOCKKEY_LOCKED);
<> 139:856d2700e60b 728 if (cmuLocked)
<> 139:856d2700e60b 729 {
<> 139:856d2700e60b 730 CMU->LOCK = CMU_LOCK_LOCKKEY_UNLOCK;
<> 139:856d2700e60b 731 }
<> 139:856d2700e60b 732 CMU->LFECLKEN0 = 0x0;
<> 139:856d2700e60b 733 #endif
Kojto 113:f141b2784e32 734 RTCC->LOCK = RTCC_LOCK_LOCKKEY_UNLOCK;
<> 139:856d2700e60b 735 #if defined(ERRATA_FIX_RTCC_E203)
<> 139:856d2700e60b 736 /* Restore clock state after RTCC_E203 fix. */
<> 139:856d2700e60b 737 CMU->LFECLKEN0 = lfeReg;
<> 139:856d2700e60b 738 if (cmuLocked)
<> 139:856d2700e60b 739 {
<> 139:856d2700e60b 740 CMU->LOCK = CMU_LOCK_LOCKKEY_LOCK;
<> 139:856d2700e60b 741 }
<> 139:856d2700e60b 742 #endif
Kojto 113:f141b2784e32 743 }
Kojto 113:f141b2784e32 744
Kojto 113:f141b2784e32 745 /** @} (end addtogroup RTCC) */
<> 128:9bcdf88f62b0 746 /** @} (end addtogroup emlib) */
Kojto 113:f141b2784e32 747
Kojto 113:f141b2784e32 748 #ifdef __cplusplus
Kojto 113:f141b2784e32 749 }
Kojto 113:f141b2784e32 750 #endif
Kojto 113:f141b2784e32 751
Kojto 113:f141b2784e32 752 #endif /* defined( RTCC_COUNT ) && ( RTC_COUNT == 1 ) */
<> 128:9bcdf88f62b0 753 #endif /* EM_RTCC_H */