xref: /btstack/port/msp432p401lp-cc256x/ti/devices/msp432p4xx/driverlib/rtc_c.h (revision 5fd0122a3e19d95e11e1f3eb8a08a2b2acb2557e)
1*5fd0122aSMatthias Ringwald /* --COPYRIGHT--,BSD
2*5fd0122aSMatthias Ringwald  * Copyright (c) 2017, Texas Instruments Incorporated
3*5fd0122aSMatthias Ringwald  * All rights reserved.
4*5fd0122aSMatthias Ringwald  *
5*5fd0122aSMatthias Ringwald  * Redistribution and use in source and binary forms, with or without
6*5fd0122aSMatthias Ringwald  * modification, are permitted provided that the following conditions
7*5fd0122aSMatthias Ringwald  * are met:
8*5fd0122aSMatthias Ringwald  *
9*5fd0122aSMatthias Ringwald  * *  Redistributions of source code must retain the above copyright
10*5fd0122aSMatthias Ringwald  *    notice, this list of conditions and the following disclaimer.
11*5fd0122aSMatthias Ringwald  *
12*5fd0122aSMatthias Ringwald  * *  Redistributions in binary form must reproduce the above copyright
13*5fd0122aSMatthias Ringwald  *    notice, this list of conditions and the following disclaimer in the
14*5fd0122aSMatthias Ringwald  *    documentation and/or other materials provided with the distribution.
15*5fd0122aSMatthias Ringwald  *
16*5fd0122aSMatthias Ringwald  * *  Neither the name of Texas Instruments Incorporated nor the names of
17*5fd0122aSMatthias Ringwald  *    its contributors may be used to endorse or promote products derived
18*5fd0122aSMatthias Ringwald  *    from this software without specific prior written permission.
19*5fd0122aSMatthias Ringwald  *
20*5fd0122aSMatthias Ringwald  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21*5fd0122aSMatthias Ringwald  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22*5fd0122aSMatthias Ringwald  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23*5fd0122aSMatthias Ringwald  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24*5fd0122aSMatthias Ringwald  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25*5fd0122aSMatthias Ringwald  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26*5fd0122aSMatthias Ringwald  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27*5fd0122aSMatthias Ringwald  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28*5fd0122aSMatthias Ringwald  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29*5fd0122aSMatthias Ringwald  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30*5fd0122aSMatthias Ringwald  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31*5fd0122aSMatthias Ringwald  * --/COPYRIGHT--*/
32*5fd0122aSMatthias Ringwald #ifndef RTC_C_H_
33*5fd0122aSMatthias Ringwald #define RTC_C_H_
34*5fd0122aSMatthias Ringwald 
35*5fd0122aSMatthias Ringwald //*****************************************************************************
36*5fd0122aSMatthias Ringwald //
37*5fd0122aSMatthias Ringwald //! \addtogroup rtc_api
38*5fd0122aSMatthias Ringwald //! @{
39*5fd0122aSMatthias Ringwald //
40*5fd0122aSMatthias Ringwald //*****************************************************************************
41*5fd0122aSMatthias Ringwald 
42*5fd0122aSMatthias Ringwald 
43*5fd0122aSMatthias Ringwald //*****************************************************************************
44*5fd0122aSMatthias Ringwald //
45*5fd0122aSMatthias Ringwald // If building with a C++ compiler, make all of the definitions in this header
46*5fd0122aSMatthias Ringwald // have a C binding.
47*5fd0122aSMatthias Ringwald //
48*5fd0122aSMatthias Ringwald //*****************************************************************************
49*5fd0122aSMatthias Ringwald #ifdef __cplusplus
50*5fd0122aSMatthias Ringwald extern "C"
51*5fd0122aSMatthias Ringwald {
52*5fd0122aSMatthias Ringwald #endif
53*5fd0122aSMatthias Ringwald 
54*5fd0122aSMatthias Ringwald #include <stdint.h>
55*5fd0122aSMatthias Ringwald #include <stdbool.h>
56*5fd0122aSMatthias Ringwald #include <ti/devices/msp432p4xx/inc/msp.h>
57*5fd0122aSMatthias Ringwald 
58*5fd0122aSMatthias Ringwald //*****************************************************************************
59*5fd0122aSMatthias Ringwald //
60*5fd0122aSMatthias Ringwald //The following is a struct that can be passed to RTC_CalendarInit() in the
61*5fd0122aSMatthias Ringwald //CalendarTime parameter, as well as returned by RTC_getCalendarTime()
62*5fd0122aSMatthias Ringwald //
63*5fd0122aSMatthias Ringwald //*****************************************************************************
64*5fd0122aSMatthias Ringwald typedef struct _RTC_C_Calendar
65*5fd0122aSMatthias Ringwald {
66*5fd0122aSMatthias Ringwald     uint_fast8_t seconds;
67*5fd0122aSMatthias Ringwald     uint_fast8_t minutes;
68*5fd0122aSMatthias Ringwald     uint_fast8_t hours;
69*5fd0122aSMatthias Ringwald     uint_fast8_t dayOfWeek;
70*5fd0122aSMatthias Ringwald     uint_fast8_t dayOfmonth;
71*5fd0122aSMatthias Ringwald     uint_fast8_t month;
72*5fd0122aSMatthias Ringwald     uint_fast16_t year;
73*5fd0122aSMatthias Ringwald } RTC_C_Calendar;
74*5fd0122aSMatthias Ringwald 
75*5fd0122aSMatthias Ringwald //*****************************************************************************
76*5fd0122aSMatthias Ringwald //
77*5fd0122aSMatthias Ringwald //The following are values that can be passed to RTC_setCalibrationData()
78*5fd0122aSMatthias Ringwald //
79*5fd0122aSMatthias Ringwald //*****************************************************************************
80*5fd0122aSMatthias Ringwald #define RTC_C_CALIBRATIONFREQ_OFF   (RTC_C_CTL13_CALF_0)
81*5fd0122aSMatthias Ringwald #define RTC_C_CALIBRATIONFREQ_512HZ (RTC_C_CTL13_CALF_1)
82*5fd0122aSMatthias Ringwald #define RTC_C_CALIBRATIONFREQ_256HZ (RTC_C_CTL13_CALF_2)
83*5fd0122aSMatthias Ringwald #define RTC_C_CALIBRATIONFREQ_1HZ   (RTC_C_CTL13_CALF_3)
84*5fd0122aSMatthias Ringwald 
85*5fd0122aSMatthias Ringwald //*****************************************************************************
86*5fd0122aSMatthias Ringwald //
87*5fd0122aSMatthias Ringwald //The following are values that can be passed to RTC_setCalibrationData()
88*5fd0122aSMatthias Ringwald //
89*5fd0122aSMatthias Ringwald //*****************************************************************************
90*5fd0122aSMatthias Ringwald #define RTC_C_CALIBRATION_DOWN1PPM  ( !(RTC_C_OCAL_OCALS) )
91*5fd0122aSMatthias Ringwald #define RTC_C_CALIBRATION_UP1PPM    (RTC_C_OCAL_OCALS)
92*5fd0122aSMatthias Ringwald 
93*5fd0122aSMatthias Ringwald //*****************************************************************************
94*5fd0122aSMatthias Ringwald //
95*5fd0122aSMatthias Ringwald //The following are values that can be passed to
96*5fd0122aSMatthias Ringwald //RTC_setTemperatureCompensation()
97*5fd0122aSMatthias Ringwald //
98*5fd0122aSMatthias Ringwald //*****************************************************************************
99*5fd0122aSMatthias Ringwald #define RTC_C_COMPENSATION_DOWN1PPM  ( !(RTC_C_TCMP_TCMPS) )
100*5fd0122aSMatthias Ringwald #define RTC_C_COMPENSATION_UP1PPM    (RTC_C_TCMP_TCMPS)
101*5fd0122aSMatthias Ringwald 
102*5fd0122aSMatthias Ringwald //*****************************************************************************
103*5fd0122aSMatthias Ringwald //
104*5fd0122aSMatthias Ringwald //The following are values that can be passed to RTC_iniRTC_Calendar()
105*5fd0122aSMatthias Ringwald //
106*5fd0122aSMatthias Ringwald //*****************************************************************************
107*5fd0122aSMatthias Ringwald #define RTC_C_FORMAT_BINARY  ( !(RTC_C_CTL13_BCD) )
108*5fd0122aSMatthias Ringwald #define RTC_C_FORMAT_BCD     (RTC_C_CTL13_BCD)
109*5fd0122aSMatthias Ringwald 
110*5fd0122aSMatthias Ringwald //*****************************************************************************
111*5fd0122aSMatthias Ringwald //
112*5fd0122aSMatthias Ringwald //The following is a value that can be passed to RTC_seRTC_CalendarAlarm()
113*5fd0122aSMatthias Ringwald //
114*5fd0122aSMatthias Ringwald //*****************************************************************************
115*5fd0122aSMatthias Ringwald #define RTC_C_ALARMCONDITION_OFF  (0x80)
116*5fd0122aSMatthias Ringwald 
117*5fd0122aSMatthias Ringwald //*****************************************************************************
118*5fd0122aSMatthias Ringwald //
119*5fd0122aSMatthias Ringwald //The following are values that can be passed to RTC_seRTC_CalendarEvent()
120*5fd0122aSMatthias Ringwald //in the eventSelect parameter.
121*5fd0122aSMatthias Ringwald //
122*5fd0122aSMatthias Ringwald //*****************************************************************************
123*5fd0122aSMatthias Ringwald #define RTC_C_CALENDAREVENT_MINUTECHANGE  (RTC_C_CTL13_TEV_0)
124*5fd0122aSMatthias Ringwald #define RTC_C_CALENDAREVENT_HOURCHANGE    (RTC_C_CTL13_TEV_1)
125*5fd0122aSMatthias Ringwald #define RTC_C_CALENDAREVENT_NOON          (RTC_C_CTL13_TEV_2)
126*5fd0122aSMatthias Ringwald #define RTC_C_CALENDAREVENT_MIDNIGHT      (RTC_C_CTL13_TEV_3)
127*5fd0122aSMatthias Ringwald 
128*5fd0122aSMatthias Ringwald //*****************************************************************************
129*5fd0122aSMatthias Ringwald //
130*5fd0122aSMatthias Ringwald //The following are values that can be passed to RTC_definePrescaleEvent()
131*5fd0122aSMatthias Ringwald //
132*5fd0122aSMatthias Ringwald //*****************************************************************************
133*5fd0122aSMatthias Ringwald #define RTC_C_PRESCALE_0  (0x0)
134*5fd0122aSMatthias Ringwald #define RTC_C_PRESCALE_1  (0x1)
135*5fd0122aSMatthias Ringwald 
136*5fd0122aSMatthias Ringwald //*****************************************************************************
137*5fd0122aSMatthias Ringwald //
138*5fd0122aSMatthias Ringwald //The following are values that can be passed to RTC_definePrescaleEvent()
139*5fd0122aSMatthias Ringwald //in the prescaleEventDivider parameter.
140*5fd0122aSMatthias Ringwald //
141*5fd0122aSMatthias Ringwald //*****************************************************************************
142*5fd0122aSMatthias Ringwald #define RTC_C_PSEVENTDIVIDER_2   (RTC_C_PS0CTL_RT0IP_0)
143*5fd0122aSMatthias Ringwald #define RTC_C_PSEVENTDIVIDER_4   (RTC_C_PS0CTL_RT0IP_1)
144*5fd0122aSMatthias Ringwald #define RTC_C_PSEVENTDIVIDER_8   (RTC_C_PS0CTL_RT0IP_2)
145*5fd0122aSMatthias Ringwald #define RTC_C_PSEVENTDIVIDER_16  (RTC_C_PS0CTL_RT0IP_3)
146*5fd0122aSMatthias Ringwald #define RTC_C_PSEVENTDIVIDER_32  (RTC_C_PS0CTL_RT0IP_4)
147*5fd0122aSMatthias Ringwald #define RTC_C_PSEVENTDIVIDER_64  (RTC_C_PS0CTL_RT0IP_5)
148*5fd0122aSMatthias Ringwald #define RTC_C_PSEVENTDIVIDER_128 (RTC_C_PS0CTL_RT0IP_6)
149*5fd0122aSMatthias Ringwald #define RTC_C_PSEVENTDIVIDER_256 (RTC_C_PS0CTL_RT0IP_7)
150*5fd0122aSMatthias Ringwald 
151*5fd0122aSMatthias Ringwald //*****************************************************************************
152*5fd0122aSMatthias Ringwald //
153*5fd0122aSMatthias Ringwald //The following are values that can be passed to the interrupt functions
154*5fd0122aSMatthias Ringwald //
155*5fd0122aSMatthias Ringwald //*****************************************************************************
156*5fd0122aSMatthias Ringwald #define RTC_C_OSCILLATOR_FAULT_INTERRUPT  RTC_C_CTL0_OFIE
157*5fd0122aSMatthias Ringwald #define RTC_C_TIME_EVENT_INTERRUPT        RTC_C_CTL0_TEVIE
158*5fd0122aSMatthias Ringwald #define RTC_C_CLOCK_ALARM_INTERRUPT       RTC_C_CTL0_AIE
159*5fd0122aSMatthias Ringwald #define RTC_C_CLOCK_READ_READY_INTERRUPT  RTC_C_CTL0_RDYIE
160*5fd0122aSMatthias Ringwald #define RTC_C_PRESCALE_TIMER0_INTERRUPT   0x02
161*5fd0122aSMatthias Ringwald #define RTC_C_PRESCALE_TIMER1_INTERRUPT   0x01
162*5fd0122aSMatthias Ringwald 
163*5fd0122aSMatthias Ringwald //*****************************************************************************
164*5fd0122aSMatthias Ringwald //
165*5fd0122aSMatthias Ringwald //! Starts the RTC.
166*5fd0122aSMatthias Ringwald //!
167*5fd0122aSMatthias Ringwald //! This function clears the RTC main hold bit to allow the RTC to function.
168*5fd0122aSMatthias Ringwald //!
169*5fd0122aSMatthias Ringwald //! \return None
170*5fd0122aSMatthias Ringwald //
171*5fd0122aSMatthias Ringwald //*****************************************************************************
172*5fd0122aSMatthias Ringwald extern void RTC_C_startClock(void);
173*5fd0122aSMatthias Ringwald 
174*5fd0122aSMatthias Ringwald //*****************************************************************************
175*5fd0122aSMatthias Ringwald //
176*5fd0122aSMatthias Ringwald //! Holds the RTC.
177*5fd0122aSMatthias Ringwald //!
178*5fd0122aSMatthias Ringwald //! This function sets the RTC main hold bit to disable RTC functionality.
179*5fd0122aSMatthias Ringwald //!
180*5fd0122aSMatthias Ringwald //! \return None
181*5fd0122aSMatthias Ringwald //
182*5fd0122aSMatthias Ringwald //*****************************************************************************
183*5fd0122aSMatthias Ringwald extern void RTC_C_holdClock(void);
184*5fd0122aSMatthias Ringwald 
185*5fd0122aSMatthias Ringwald //*****************************************************************************
186*5fd0122aSMatthias Ringwald //
187*5fd0122aSMatthias Ringwald //! Allows and Sets the frequency output to RTCLK pin for calibration
188*5fd0122aSMatthias Ringwald //! measurement.
189*5fd0122aSMatthias Ringwald //!
190*5fd0122aSMatthias Ringwald //! \param frequencySelect is the frequency output to RTCLK.
191*5fd0122aSMatthias Ringwald //!        Valid values are
192*5fd0122aSMatthias Ringwald //!        - \b   RTC_C_CALIBRATIONFREQ_OFF - turn off calibration
193*5fd0122aSMatthias Ringwald //!                                                 output [Default]
194*5fd0122aSMatthias Ringwald //!        - \b   RTC_C_CALIBRATIONFREQ_512HZ - output signal at 512Hz
195*5fd0122aSMatthias Ringwald //!                                                     for calibration
196*5fd0122aSMatthias Ringwald //!        - \b   RTC_C_CALIBRATIONFREQ_256HZ - output signal at 256Hz
197*5fd0122aSMatthias Ringwald //!                                                     for calibration
198*5fd0122aSMatthias Ringwald //!        - \b   RTC_C_CALIBRATIONFREQ_1HZ - output signal at 1Hz
199*5fd0122aSMatthias Ringwald //!                                                     for calibration
200*5fd0122aSMatthias Ringwald //!
201*5fd0122aSMatthias Ringwald //! This function sets a frequency to measure at the RTCLK output pin. After
202*5fd0122aSMatthias Ringwald //! testing the set frequency, the calibration could be set accordingly.
203*5fd0122aSMatthias Ringwald //!
204*5fd0122aSMatthias Ringwald //! \return None
205*5fd0122aSMatthias Ringwald //
206*5fd0122aSMatthias Ringwald //*****************************************************************************
207*5fd0122aSMatthias Ringwald extern void RTC_C_setCalibrationFrequency(uint_fast16_t frequencySelect);
208*5fd0122aSMatthias Ringwald 
209*5fd0122aSMatthias Ringwald //*****************************************************************************
210*5fd0122aSMatthias Ringwald //
211*5fd0122aSMatthias Ringwald //! Sets the specified calibration for the RTC.
212*5fd0122aSMatthias Ringwald //!
213*5fd0122aSMatthias Ringwald //! \param offsetDirection is the direction that the calibration offset will
214*5fd0122aSMatthias Ringwald //!        go. Valid values are
215*5fd0122aSMatthias Ringwald //!        - \b   RTC_C_CALIBRATION_DOWN1PPM - calibrate at steps of -1
216*5fd0122aSMatthias Ringwald //!        - \b   RTC_C_CALIBRATION_UP1PPM - calibrat at steps of +1
217*5fd0122aSMatthias Ringwald //! \param offsetValue is the value that the offset will be a factor of; a
218*5fd0122aSMatthias Ringwald //!       valid value is any integer from 1-240.
219*5fd0122aSMatthias Ringwald //!
220*5fd0122aSMatthias Ringwald //! This function sets the calibration offset to make the RTC as accurate as
221*5fd0122aSMatthias Ringwald //! possible. The offsetDirection can be either +1-ppm or -1-ppm, and the
222*5fd0122aSMatthias Ringwald //! offsetValue should be from 1-240 and is multiplied by the direction setting
223*5fd0122aSMatthias Ringwald //! (i.e. +1-ppm * 8 (offsetValue) = +8-ppm).
224*5fd0122aSMatthias Ringwald //!
225*5fd0122aSMatthias Ringwald //! \return None
226*5fd0122aSMatthias Ringwald //
227*5fd0122aSMatthias Ringwald //*****************************************************************************
228*5fd0122aSMatthias Ringwald extern void RTC_C_setCalibrationData(uint_fast8_t offsetDirection,
229*5fd0122aSMatthias Ringwald         uint_fast8_t offsetValue);
230*5fd0122aSMatthias Ringwald 
231*5fd0122aSMatthias Ringwald //*****************************************************************************
232*5fd0122aSMatthias Ringwald //
233*5fd0122aSMatthias Ringwald //! Sets the specified temperature compensation for the RTC.
234*5fd0122aSMatthias Ringwald //!
235*5fd0122aSMatthias Ringwald //! \param offsetDirection is the direction that the calibration offset will
236*5fd0122aSMatthias Ringwald //!        go. Valid values are
237*5fd0122aSMatthias Ringwald //!        - \b   RTC_C_COMPENSATION_DOWN1PPM - calibrate at steps of -1
238*5fd0122aSMatthias Ringwald //!        - \b   RTC_C_COMPENSATION_UP1PPM - calibrate at steps of +1
239*5fd0122aSMatthias Ringwald //! \param offsetValue is the value that the offset will be a factor of; a
240*5fd0122aSMatthias Ringwald //!       value is any integer from 1-240.
241*5fd0122aSMatthias Ringwald //!
242*5fd0122aSMatthias Ringwald //! This function sets the calibration offset to make the RTC as accurate as
243*5fd0122aSMatthias Ringwald //! possible. The offsetDirection can be either +1-ppm or -1-ppm, and the
244*5fd0122aSMatthias Ringwald //! offsetValue should be from 1-240 and is multiplied by the direction setting
245*5fd0122aSMatthias Ringwald //! (i.e. +1-ppm * 8 (offsetValue) = +8-ppm).
246*5fd0122aSMatthias Ringwald //!
247*5fd0122aSMatthias Ringwald //! \return true if calibration was set, false if it could not be set
248*5fd0122aSMatthias Ringwald //!
249*5fd0122aSMatthias Ringwald //
250*5fd0122aSMatthias Ringwald //*****************************************************************************
251*5fd0122aSMatthias Ringwald extern bool RTC_C_setTemperatureCompensation(uint_fast16_t offsetDirection,
252*5fd0122aSMatthias Ringwald         uint_fast8_t offsetValue);
253*5fd0122aSMatthias Ringwald 
254*5fd0122aSMatthias Ringwald //*****************************************************************************
255*5fd0122aSMatthias Ringwald //
256*5fd0122aSMatthias Ringwald //! Initializes the settings to operate the RTC in Calendar mode.
257*5fd0122aSMatthias Ringwald //!
258*5fd0122aSMatthias Ringwald //! \param calendarTime is the structure containing the values for the Calendar
259*5fd0122aSMatthias Ringwald //!       to be initialized to.
260*5fd0122aSMatthias Ringwald //!        Valid values should be of type Calendar and should contain the
261*5fd0122aSMatthias Ringwald //!        following members and corresponding values:
262*5fd0122aSMatthias Ringwald //!        - \b   seconds between 0-59
263*5fd0122aSMatthias Ringwald //!        - \b   minutes between 0-59
264*5fd0122aSMatthias Ringwald //!        - \b   hours between 0-23
265*5fd0122aSMatthias Ringwald //!        - \b   dayOfWeek between 0-6
266*5fd0122aSMatthias Ringwald //!        - \b   dayOfmonth between 1-31
267*5fd0122aSMatthias Ringwald //!        - \b   month between 1-12
268*5fd0122aSMatthias Ringwald //!        - \b   year between 0-4095
269*5fd0122aSMatthias Ringwald //!        \note Values beyond the ones specified may result in erratic behavior.
270*5fd0122aSMatthias Ringwald //! \param formatSelect is the format for the Calendar registers to use.
271*5fd0122aSMatthias Ringwald //!        Valid values are
272*5fd0122aSMatthias Ringwald //!        - \b   RTC_C_FORMAT_BINARY [Default]
273*5fd0122aSMatthias Ringwald //!        - \b   RTC_C_FORMAT_BCD
274*5fd0122aSMatthias Ringwald //!
275*5fd0122aSMatthias Ringwald //! This function initializes the Calendar mode of the RTC module.
276*5fd0122aSMatthias Ringwald //!
277*5fd0122aSMatthias Ringwald //! \return None
278*5fd0122aSMatthias Ringwald //
279*5fd0122aSMatthias Ringwald //*****************************************************************************
280*5fd0122aSMatthias Ringwald extern void RTC_C_initCalendar(const RTC_C_Calendar *calendarTime,
281*5fd0122aSMatthias Ringwald         uint_fast16_t formatSelect);
282*5fd0122aSMatthias Ringwald 
283*5fd0122aSMatthias Ringwald //*****************************************************************************
284*5fd0122aSMatthias Ringwald //
285*5fd0122aSMatthias Ringwald //! Returns the Calendar Time stored in the Calendar registers of the RTC.
286*5fd0122aSMatthias Ringwald //!
287*5fd0122aSMatthias Ringwald //!
288*5fd0122aSMatthias Ringwald //! This function returns the current Calendar time in the form of a Calendar
289*5fd0122aSMatthias Ringwald //! structure.
290*5fd0122aSMatthias Ringwald //!
291*5fd0122aSMatthias Ringwald //! \return A Calendar structure containing the current time.
292*5fd0122aSMatthias Ringwald //
293*5fd0122aSMatthias Ringwald //*****************************************************************************
294*5fd0122aSMatthias Ringwald extern RTC_C_Calendar RTC_C_getCalendarTime(void);
295*5fd0122aSMatthias Ringwald 
296*5fd0122aSMatthias Ringwald //*****************************************************************************
297*5fd0122aSMatthias Ringwald //
298*5fd0122aSMatthias Ringwald //! Sets and Enables the desired Calendar Alarm settings.
299*5fd0122aSMatthias Ringwald //!
300*5fd0122aSMatthias Ringwald //! \param minutesAlarm is the alarm condition for the minutes.
301*5fd0122aSMatthias Ringwald //!        Valid values are
302*5fd0122aSMatthias Ringwald //!        - An integer between 0-59, OR
303*5fd0122aSMatthias Ringwald //!        - \b   RTC_C_ALARMCONDITION_OFF [Default]
304*5fd0122aSMatthias Ringwald //! \param hoursAlarm is the alarm condition for the hours.
305*5fd0122aSMatthias Ringwald //!        Valid values are
306*5fd0122aSMatthias Ringwald //!        - An integer between 0-24, OR
307*5fd0122aSMatthias Ringwald //!        - \b   RTC_C_ALARMCONDITION_OFF [Default]
308*5fd0122aSMatthias Ringwald //! \param dayOfWeekAlarm is the alarm condition for the day of week.
309*5fd0122aSMatthias Ringwald //!        Valid values are
310*5fd0122aSMatthias Ringwald //!        - An integer between 0-6, OR
311*5fd0122aSMatthias Ringwald //!        - \b   RTC_C_ALARMCONDITION_OFF [Default]
312*5fd0122aSMatthias Ringwald //! \param dayOfmonthAlarm is the alarm condition for the day of the month.
313*5fd0122aSMatthias Ringwald //!        Valid values are
314*5fd0122aSMatthias Ringwald //!        - An integer between 0-31, OR
315*5fd0122aSMatthias Ringwald //!        - \b   RTC_C_ALARMCONDITION_OFF [Default]
316*5fd0122aSMatthias Ringwald //!
317*5fd0122aSMatthias Ringwald //! This function sets a Calendar interrupt condition to assert the RTCAIFG
318*5fd0122aSMatthias Ringwald //! interrupt flag. The condition is a logical and of all of the parameters.
319*5fd0122aSMatthias Ringwald //! For example if the minutes and hours alarm is set, then the interrupt will
320*5fd0122aSMatthias Ringwald //! only assert when the minutes AND the hours change to the specified setting.
321*5fd0122aSMatthias Ringwald //! Use the RTC_ALARM_OFF for any alarm settings that should not be apart of
322*5fd0122aSMatthias Ringwald //! the alarm condition.
323*5fd0122aSMatthias Ringwald //!
324*5fd0122aSMatthias Ringwald //! \return None
325*5fd0122aSMatthias Ringwald //
326*5fd0122aSMatthias Ringwald //*****************************************************************************
327*5fd0122aSMatthias Ringwald extern void RTC_C_setCalendarAlarm(uint_fast8_t minutesAlarm,
328*5fd0122aSMatthias Ringwald         uint_fast8_t hoursAlarm, uint_fast8_t dayOfWeekAlarm,
329*5fd0122aSMatthias Ringwald         uint_fast8_t dayOfmonthAlarm);
330*5fd0122aSMatthias Ringwald 
331*5fd0122aSMatthias Ringwald //*****************************************************************************
332*5fd0122aSMatthias Ringwald //
333*5fd0122aSMatthias Ringwald //! Sets a single specified Calendar interrupt condition.
334*5fd0122aSMatthias Ringwald //!
335*5fd0122aSMatthias Ringwald //! \param eventSelect is the condition selected.
336*5fd0122aSMatthias Ringwald //!        Valid values are
337*5fd0122aSMatthias Ringwald //!        - \b   RTC_C_CALENDAREVENT_MINUTECHANGE - assert interrupt on every
338*5fd0122aSMatthias Ringwald //!             minute
339*5fd0122aSMatthias Ringwald //!        - \b   RTC_C_CALENDAREVENT_HOURCHANGE - assert interrupt on every hour
340*5fd0122aSMatthias Ringwald //!        - \b   RTC_C_CALENDAREVENT_NOON - assert interrupt when hour is 12
341*5fd0122aSMatthias Ringwald //!        - \b   RTC_C_CALENDAREVENT_MIDNIGHT - assert interrupt when hour is 0
342*5fd0122aSMatthias Ringwald //!
343*5fd0122aSMatthias Ringwald //! This function sets a specified event to assert the RTCTEVIFG interrupt. This
344*5fd0122aSMatthias Ringwald //! interrupt is independent from the Calendar alarm interrupt.
345*5fd0122aSMatthias Ringwald //!
346*5fd0122aSMatthias Ringwald //! \return None
347*5fd0122aSMatthias Ringwald //
348*5fd0122aSMatthias Ringwald //*****************************************************************************
349*5fd0122aSMatthias Ringwald extern void RTC_C_setCalendarEvent(uint_fast16_t eventSelect);
350*5fd0122aSMatthias Ringwald 
351*5fd0122aSMatthias Ringwald //*****************************************************************************
352*5fd0122aSMatthias Ringwald //
353*5fd0122aSMatthias Ringwald //! Sets up an interrupt condition for the selected Prescaler.
354*5fd0122aSMatthias Ringwald //!
355*5fd0122aSMatthias Ringwald //! \param prescaleSelect is the prescaler to define an interrupt for.
356*5fd0122aSMatthias Ringwald //!        Valid values are
357*5fd0122aSMatthias Ringwald //!        - \b   RTC_C_PRESCALE_0
358*5fd0122aSMatthias Ringwald //!        - \b   RTC_C_PRESCALE_1
359*5fd0122aSMatthias Ringwald //! \param prescaleEventDivider is a divider to specify when an interrupt can
360*5fd0122aSMatthias Ringwald //!       occur based on the clock source of the selected prescaler.
361*5fd0122aSMatthias Ringwald //!       (Does not affect timer of the selected prescaler).
362*5fd0122aSMatthias Ringwald //!       Valid values are
363*5fd0122aSMatthias Ringwald //!       - \b   RTC_C_PSEVENTDIVIDER_2 [Default]
364*5fd0122aSMatthias Ringwald //!       - \b   RTC_C_PSEVENTDIVIDER_4
365*5fd0122aSMatthias Ringwald //!       - \b   RTC_C_PSEVENTDIVIDER_8
366*5fd0122aSMatthias Ringwald //!       - \b   RTC_C_PSEVENTDIVIDER_16
367*5fd0122aSMatthias Ringwald //!       - \b   RTC_C_PSEVENTDIVIDER_32
368*5fd0122aSMatthias Ringwald //!       - \b   RTC_C_PSEVENTDIVIDER_64
369*5fd0122aSMatthias Ringwald //!       - \b   RTC_C_PSEVENTDIVIDER_128
370*5fd0122aSMatthias Ringwald //!       - \b   RTC_C_PSEVENTDIVIDER_256
371*5fd0122aSMatthias Ringwald //!
372*5fd0122aSMatthias Ringwald //! This function sets the condition for an interrupt to assert based on the
373*5fd0122aSMatthias Ringwald //! individual prescalers.
374*5fd0122aSMatthias Ringwald //!
375*5fd0122aSMatthias Ringwald //! \return None
376*5fd0122aSMatthias Ringwald //
377*5fd0122aSMatthias Ringwald //*****************************************************************************
378*5fd0122aSMatthias Ringwald extern void RTC_C_definePrescaleEvent(uint_fast8_t prescaleSelect,
379*5fd0122aSMatthias Ringwald         uint_fast8_t prescaleEventDivider);
380*5fd0122aSMatthias Ringwald 
381*5fd0122aSMatthias Ringwald //*****************************************************************************
382*5fd0122aSMatthias Ringwald //
383*5fd0122aSMatthias Ringwald //! Returns the selected Prescaler value.
384*5fd0122aSMatthias Ringwald //!
385*5fd0122aSMatthias Ringwald //! \param prescaleSelect is the prescaler to obtain the value of.
386*5fd0122aSMatthias Ringwald //!        Valid values are
387*5fd0122aSMatthias Ringwald //!        - \b   RTC_C_PRESCALE_0
388*5fd0122aSMatthias Ringwald //!        - \b   RTC_C_PRESCALE_1
389*5fd0122aSMatthias Ringwald //!
390*5fd0122aSMatthias Ringwald //! This function returns the value of the selected prescale counter register.
391*5fd0122aSMatthias Ringwald //! The counter should be held before reading. If in counter mode, the
392*5fd0122aSMatthias Ringwald //! individual prescaler can be held, while in Calendar mode the whole RTC must
393*5fd0122aSMatthias Ringwald //! be held.
394*5fd0122aSMatthias Ringwald //!
395*5fd0122aSMatthias Ringwald //! \return The value of the specified Prescaler count register
396*5fd0122aSMatthias Ringwald //
397*5fd0122aSMatthias Ringwald //*****************************************************************************
398*5fd0122aSMatthias Ringwald extern uint_fast8_t RTC_C_getPrescaleValue(uint_fast8_t prescaleSelect);
399*5fd0122aSMatthias Ringwald 
400*5fd0122aSMatthias Ringwald //*****************************************************************************
401*5fd0122aSMatthias Ringwald //
402*5fd0122aSMatthias Ringwald //! Sets the selected Prescaler value.
403*5fd0122aSMatthias Ringwald //!
404*5fd0122aSMatthias Ringwald //! \param prescaleSelect is the prescaler to set the value for.
405*5fd0122aSMatthias Ringwald //!        Valid values are
406*5fd0122aSMatthias Ringwald //!        - \b   RTC_C_PRESCALE_0
407*5fd0122aSMatthias Ringwald //!        - \b   RTC_C_PRESCALE_1
408*5fd0122aSMatthias Ringwald //! \param prescaleCounterValue is the specified value to set the prescaler to;
409*5fd0122aSMatthias Ringwald //!       a valid value is any integer from 0-255.
410*5fd0122aSMatthias Ringwald //!
411*5fd0122aSMatthias Ringwald //! This function sets the prescale counter value. Before setting the prescale
412*5fd0122aSMatthias Ringwald //! counter, it should be held.
413*5fd0122aSMatthias Ringwald //!
414*5fd0122aSMatthias Ringwald //! \return None
415*5fd0122aSMatthias Ringwald //
416*5fd0122aSMatthias Ringwald //*****************************************************************************
417*5fd0122aSMatthias Ringwald extern void RTC_C_setPrescaleValue(uint_fast8_t prescaleSelect,
418*5fd0122aSMatthias Ringwald         uint_fast8_t prescaleCounterValue);
419*5fd0122aSMatthias Ringwald 
420*5fd0122aSMatthias Ringwald //*****************************************************************************
421*5fd0122aSMatthias Ringwald //
422*5fd0122aSMatthias Ringwald //! Returns the given BCD value in Binary Format
423*5fd0122aSMatthias Ringwald //!
424*5fd0122aSMatthias Ringwald //! \param valueToConvert is the raw value in BCD format to convert to
425*5fd0122aSMatthias Ringwald //!        Binary.
426*5fd0122aSMatthias Ringwald //!
427*5fd0122aSMatthias Ringwald //! This function converts BCD values to Binary format.
428*5fd0122aSMatthias Ringwald //!
429*5fd0122aSMatthias Ringwald //! \return The Binary version of the valueToConvert parameter.
430*5fd0122aSMatthias Ringwald //
431*5fd0122aSMatthias Ringwald //*****************************************************************************
432*5fd0122aSMatthias Ringwald extern uint16_t RTC_C_convertBCDToBinary(uint16_t valueToConvert);
433*5fd0122aSMatthias Ringwald 
434*5fd0122aSMatthias Ringwald //*****************************************************************************
435*5fd0122aSMatthias Ringwald //
436*5fd0122aSMatthias Ringwald //! Returns the given Binary value in BCD Format
437*5fd0122aSMatthias Ringwald //!
438*5fd0122aSMatthias Ringwald 
439*5fd0122aSMatthias Ringwald //! \param valueToConvert is the raw value in Binary format to convert to
440*5fd0122aSMatthias Ringwald //!        BCD.
441*5fd0122aSMatthias Ringwald //!
442*5fd0122aSMatthias Ringwald //! This function converts Binary values to BCD format.
443*5fd0122aSMatthias Ringwald //!
444*5fd0122aSMatthias Ringwald //! \return The BCD version of the valueToConvert parameter.
445*5fd0122aSMatthias Ringwald //
446*5fd0122aSMatthias Ringwald //*****************************************************************************
447*5fd0122aSMatthias Ringwald extern uint16_t RTC_C_convertBinaryToBCD(uint16_t valueToConvert);
448*5fd0122aSMatthias Ringwald 
449*5fd0122aSMatthias Ringwald //*****************************************************************************
450*5fd0122aSMatthias Ringwald //
451*5fd0122aSMatthias Ringwald //! Enables selected RTC interrupt sources.
452*5fd0122aSMatthias Ringwald //!
453*5fd0122aSMatthias Ringwald //! \param interruptMask is a bit mask of the interrupts to enable.
454*5fd0122aSMatthias Ringwald //!        Mask Value is the logical OR of any of the following
455*5fd0122aSMatthias Ringwald //!        - \b  RTC_C_TIME_EVENT_INTERRUPT - asserts when counter overflows in
456*5fd0122aSMatthias Ringwald //!             counter mode or when Calendar event condition defined by
457*5fd0122aSMatthias Ringwald //!             setCalendarEvent() is met.
458*5fd0122aSMatthias Ringwald //!        - \b  RTC_C_CLOCK_ALARM_INTERRUPT - asserts when alarm condition in
459*5fd0122aSMatthias Ringwald //!             Calendar mode is met.
460*5fd0122aSMatthias Ringwald //!        - \b  RTC_C_CLOCK_READ_READY_INTERRUPT - asserts when Calendar
461*5fd0122aSMatthias Ringwald //!             registers are settled.
462*5fd0122aSMatthias Ringwald //!        - \b  RTC_C_PRESCALE_TIMER0_INTERRUPT - asserts when Prescaler 0
463*5fd0122aSMatthias Ringwald //!             event condition is met.
464*5fd0122aSMatthias Ringwald //!        - \b  RTC_C_PRESCALE_TIMER1_INTERRUPT - asserts when Prescaler 1
465*5fd0122aSMatthias Ringwald //!             event condition is met.
466*5fd0122aSMatthias Ringwald //!        - \b  RTC_C_OSCILLATOR_FAULT_INTERRUPT - asserts if there is
467*5fd0122aSMatthias Ringwald //!             a problem with the 32kHz oscillator, while the RTC is running.
468*5fd0122aSMatthias Ringwald //!
469*5fd0122aSMatthias Ringwald //! This function enables the selected RTC interrupt source.  Only the sources
470*5fd0122aSMatthias Ringwald //! that are enabled can be reflected to the processor interrupt; disabled
471*5fd0122aSMatthias Ringwald //! sources have no effect on the processor.
472*5fd0122aSMatthias Ringwald //!
473*5fd0122aSMatthias Ringwald //! \return None
474*5fd0122aSMatthias Ringwald //
475*5fd0122aSMatthias Ringwald //*****************************************************************************
476*5fd0122aSMatthias Ringwald extern void RTC_C_enableInterrupt(uint8_t interruptMask);
477*5fd0122aSMatthias Ringwald 
478*5fd0122aSMatthias Ringwald //*****************************************************************************
479*5fd0122aSMatthias Ringwald //
480*5fd0122aSMatthias Ringwald //! Disables selected RTC interrupt sources.
481*5fd0122aSMatthias Ringwald //!
482*5fd0122aSMatthias Ringwald //! \param interruptMask is a bit mask of the interrupts to disable.
483*5fd0122aSMatthias Ringwald //!        Mask Value is the logical OR of any of the following
484*5fd0122aSMatthias Ringwald //!        - \b  RTC_C_TIME_EVENT_INTERRUPT - asserts when counter overflows in
485*5fd0122aSMatthias Ringwald //!             counter mode or when Calendar event condition defined by
486*5fd0122aSMatthias Ringwald //!             setCalendarEvent() is met.
487*5fd0122aSMatthias Ringwald //!        - \b  RTC_C_CLOCK_ALARM_INTERRUPT - asserts when alarm condition in
488*5fd0122aSMatthias Ringwald //!             Calendar mode is met.
489*5fd0122aSMatthias Ringwald //!        - \b  RTC_CLOCK_READ_READY_INTERRUPT - asserts when Calendar
490*5fd0122aSMatthias Ringwald //!             registers are settled.
491*5fd0122aSMatthias Ringwald //!        - \b  RTC_C_PRESCALE_TIMER0_INTERRUPT - asserts when Prescaler 0
492*5fd0122aSMatthias Ringwald //!             event condition is met.
493*5fd0122aSMatthias Ringwald //!        - \b  RTC_C_PRESCALE_TIMER1_INTERRUPT - asserts when Prescaler 1
494*5fd0122aSMatthias Ringwald //!             event condition is met.
495*5fd0122aSMatthias Ringwald //!        - \b  RTC_C_OSCILLATOR_FAULT_INTERRUPT - asserts if there is a
496*5fd0122aSMatthias Ringwald //!             problem with the 32kHz oscillator, while the RTC is running.
497*5fd0122aSMatthias Ringwald //!
498*5fd0122aSMatthias Ringwald //! This function disables the selected RTC interrupt source.  Only the sources
499*5fd0122aSMatthias Ringwald //! that are enabled can be reflected to the processor interrupt; disabled
500*5fd0122aSMatthias Ringwald //! sources have no effect on the processor.
501*5fd0122aSMatthias Ringwald //!
502*5fd0122aSMatthias Ringwald //! \return None
503*5fd0122aSMatthias Ringwald //
504*5fd0122aSMatthias Ringwald //*****************************************************************************
505*5fd0122aSMatthias Ringwald extern void RTC_C_disableInterrupt(uint8_t interruptMask);
506*5fd0122aSMatthias Ringwald 
507*5fd0122aSMatthias Ringwald //*****************************************************************************
508*5fd0122aSMatthias Ringwald //
509*5fd0122aSMatthias Ringwald //! Returns the status of the interrupts flags.
510*5fd0122aSMatthias Ringwald //!
511*5fd0122aSMatthias Ringwald //! \return A bit mask of the selected interrupt flag's status.
512*5fd0122aSMatthias Ringwald //!        Mask Value is the logical OR of any of the following
513*5fd0122aSMatthias Ringwald //!        - \b  RTC_C_TIME_EVENT_INTERRUPT - asserts when counter overflows in
514*5fd0122aSMatthias Ringwald //!             counter mode or when Calendar event condition defined by
515*5fd0122aSMatthias Ringwald //!             setCalendarEvent() is met.
516*5fd0122aSMatthias Ringwald //!        - \b  RTC_C_CLOCK_ALARM_INTERRUPT - asserts when alarm condition in
517*5fd0122aSMatthias Ringwald //!             Calendar mode is met.
518*5fd0122aSMatthias Ringwald //!        - \b  RTC_C_CLOCK_READ_READY_INTERRUPT - asserts when Calendar
519*5fd0122aSMatthias Ringwald //!             registers are settled.
520*5fd0122aSMatthias Ringwald //!        - \b  RTC_C_PRESCALE_TIMER0_INTERRUPT - asserts when Prescaler 0
521*5fd0122aSMatthias Ringwald //!             event condition is met.
522*5fd0122aSMatthias Ringwald //!        - \b  RTC_C_PRESCALE_TIMER1_INTERRUPT - asserts when Prescaler 1
523*5fd0122aSMatthias Ringwald //!             event condition is met.
524*5fd0122aSMatthias Ringwald //!        - \b  RTC_C_OSCILLATOR_FAULT_INTERRUPT - asserts if there is a
525*5fd0122aSMatthias Ringwald //!             problem with the 32kHz oscillator, while the RTC is running.
526*5fd0122aSMatthias Ringwald //
527*5fd0122aSMatthias Ringwald //*****************************************************************************
528*5fd0122aSMatthias Ringwald extern uint_fast8_t RTC_C_getInterruptStatus(void);
529*5fd0122aSMatthias Ringwald 
530*5fd0122aSMatthias Ringwald //*****************************************************************************
531*5fd0122aSMatthias Ringwald //
532*5fd0122aSMatthias Ringwald //! Returns the status of the interrupts flags masked with the enabled
533*5fd0122aSMatthias Ringwald //! interrupts.  This function is useful to call in ISRs to get a
534*5fd0122aSMatthias Ringwald //! list of pending interrupts that are actually enabled and could have caused
535*5fd0122aSMatthias Ringwald //! the ISR.
536*5fd0122aSMatthias Ringwald //!
537*5fd0122aSMatthias Ringwald //! \return A bit mask of the selected interrupt flag's status.
538*5fd0122aSMatthias Ringwald //!        Mask Value is the logical OR of any of the following
539*5fd0122aSMatthias Ringwald //!        - \b  RTC_TIME_EVENT_INTERRUPT - asserts when counter overflows in
540*5fd0122aSMatthias Ringwald //!             counter mode or when Calendar event condition defined by
541*5fd0122aSMatthias Ringwald //!             setCalendarEvent() is met.
542*5fd0122aSMatthias Ringwald //!        - \b  RTC_CLOCK_ALARM_INTERRUPT - asserts when alarm condition in
543*5fd0122aSMatthias Ringwald //!             Calendar mode is met.
544*5fd0122aSMatthias Ringwald //!        - \b  RTC_CLOCK_READ_READY_INTERRUPT - asserts when Calendar
545*5fd0122aSMatthias Ringwald //!             registers are settled.
546*5fd0122aSMatthias Ringwald //!        - \b  RTC_C_PRESCALE_TIMER0_INTERRUPT - asserts when Prescaler 0
547*5fd0122aSMatthias Ringwald //!             event condition is met.
548*5fd0122aSMatthias Ringwald //!        - \b  RTC_C_PRESCALE_TIMER1_INTERRUPT - asserts when Prescaler 1
549*5fd0122aSMatthias Ringwald //!             event condition is met.
550*5fd0122aSMatthias Ringwald //!        - \b  RTC_OSCILLATOR_FAULT_INTERRUPT - asserts if there is a problem
551*5fd0122aSMatthias Ringwald //!             with the 32kHz oscillator, while the RTC is running.
552*5fd0122aSMatthias Ringwald //
553*5fd0122aSMatthias Ringwald //*****************************************************************************
554*5fd0122aSMatthias Ringwald extern uint_fast8_t RTC_C_getEnabledInterruptStatus(void);
555*5fd0122aSMatthias Ringwald 
556*5fd0122aSMatthias Ringwald //*****************************************************************************
557*5fd0122aSMatthias Ringwald //
558*5fd0122aSMatthias Ringwald //! Clears selected RTC interrupt flags.
559*5fd0122aSMatthias Ringwald //!
560*5fd0122aSMatthias Ringwald //! \param interruptFlagMask is a bit mask of the interrupt flags to be
561*5fd0122aSMatthias Ringwald //!        cleared. Mask Value is the logical OR of any of the following
562*5fd0122aSMatthias Ringwald //!        - \b  RTC_C_TIME_EVENT_INTERRUPT - asserts when counter overflows in
563*5fd0122aSMatthias Ringwald //!             counter mode or when Calendar event condition defined by
564*5fd0122aSMatthias Ringwald //!             setCalendarEvent() is met.
565*5fd0122aSMatthias Ringwald //!        - \b  RTC_C_CLOCK_ALARM_INTERRUPT - asserts when alarm condition in
566*5fd0122aSMatthias Ringwald //!             Calendar mode is met.
567*5fd0122aSMatthias Ringwald //!        - \b  RTC_C_CLOCK_READ_READY_INTERRUPT - asserts when Calendar
568*5fd0122aSMatthias Ringwald //!             registers are settled.
569*5fd0122aSMatthias Ringwald //!        - \b  RTC_C_PRESCALE_TIMER0_INTERRUPT - asserts when Prescaler 0
570*5fd0122aSMatthias Ringwald //!             event condition is met.
571*5fd0122aSMatthias Ringwald //!        - \b  RTC_C_PRESCALE_TIMER1_INTERRUPT - asserts when Prescaler 1
572*5fd0122aSMatthias Ringwald //!             event condition is met.
573*5fd0122aSMatthias Ringwald //!        - \b  RTC_C_OSCILLATOR_FAULT_INTERRUPT - asserts if there is
574*5fd0122aSMatthias Ringwald //!             a problem with the 32kHz oscillator, while the RTC is running.
575*5fd0122aSMatthias Ringwald //!
576*5fd0122aSMatthias Ringwald //! This function clears the RTC interrupt flag is cleared, so that it no longer
577*5fd0122aSMatthias Ringwald //! asserts.
578*5fd0122aSMatthias Ringwald //!
579*5fd0122aSMatthias Ringwald //! \return None
580*5fd0122aSMatthias Ringwald //
581*5fd0122aSMatthias Ringwald //*****************************************************************************
582*5fd0122aSMatthias Ringwald extern void RTC_C_clearInterruptFlag(uint_fast8_t interruptFlagMask);
583*5fd0122aSMatthias Ringwald 
584*5fd0122aSMatthias Ringwald //*****************************************************************************
585*5fd0122aSMatthias Ringwald //
586*5fd0122aSMatthias Ringwald //! Registers an interrupt handler for the RTC interrupt.
587*5fd0122aSMatthias Ringwald //!
588*5fd0122aSMatthias Ringwald //! \param intHandler is a pointer to the function to be called when the
589*5fd0122aSMatthias Ringwald //! RTC interrupt occurs.
590*5fd0122aSMatthias Ringwald //!
591*5fd0122aSMatthias Ringwald //! This function registers the handler to be called when a RTC
592*5fd0122aSMatthias Ringwald //! interrupt occurs. This function enables the global interrupt in the
593*5fd0122aSMatthias Ringwald //! interrupt controller; specific AES interrupts must be enabled
594*5fd0122aSMatthias Ringwald //! via RTC_enableInterrupt().  It is the interrupt handler's responsibility to
595*5fd0122aSMatthias Ringwald //! clear the interrupt source via RTC_clearInterruptFlag().
596*5fd0122aSMatthias Ringwald //!
597*5fd0122aSMatthias Ringwald //! \return None.
598*5fd0122aSMatthias Ringwald //
599*5fd0122aSMatthias Ringwald //*****************************************************************************
600*5fd0122aSMatthias Ringwald extern void RTC_C_registerInterrupt(void (*intHandler)(void));
601*5fd0122aSMatthias Ringwald 
602*5fd0122aSMatthias Ringwald //*****************************************************************************
603*5fd0122aSMatthias Ringwald //
604*5fd0122aSMatthias Ringwald //! Unregisters the interrupt handler for the RTC interrupt
605*5fd0122aSMatthias Ringwald //!
606*5fd0122aSMatthias Ringwald //! This function unregisters the handler to be called when RTC
607*5fd0122aSMatthias Ringwald //! interrupt occurs.  This function also masks off the interrupt in the
608*5fd0122aSMatthias Ringwald //! interrupt controller so that the interrupt handler no longer is called.
609*5fd0122aSMatthias Ringwald //!
610*5fd0122aSMatthias Ringwald //! \sa Interrupt_registerInterrupt() for important information about
611*5fd0122aSMatthias Ringwald //! registering interrupt handlers.
612*5fd0122aSMatthias Ringwald //!
613*5fd0122aSMatthias Ringwald //! \return None.
614*5fd0122aSMatthias Ringwald //
615*5fd0122aSMatthias Ringwald //*****************************************************************************
616*5fd0122aSMatthias Ringwald extern void RTC_C_unregisterInterrupt(void);
617*5fd0122aSMatthias Ringwald 
618*5fd0122aSMatthias Ringwald /* Defines for future devices that might have multiple instances */
619*5fd0122aSMatthias Ringwald #define RTC_C_startClockMultipleInstance(a) RTC_C_startClock()
620*5fd0122aSMatthias Ringwald #define RTC_C_holdClockMultipleInstance(a) RTC_C_holdClock()
621*5fd0122aSMatthias Ringwald #define RTC_C_setCalibrationFrequencyMultipleInstance(a,b) RTC_C_setCalibrationFrequency(b)
622*5fd0122aSMatthias Ringwald #define RTC_C_setCalibrationDataMultipleInstance(a,b,c) RTC_C_setCalibrationData(b,c)
623*5fd0122aSMatthias Ringwald #define RTC_C_setTemperatureCompensationMultipleInstance(a,b,c) RTC_C_setTemperatureCompensation(b,c)
624*5fd0122aSMatthias Ringwald #define RTC_C_initCalendarMultipleInstance(a,b,c) RTC_C_initCalendar(b,c)
625*5fd0122aSMatthias Ringwald #define RTC_C_getCalendarTimeMultipleInstance(a) RTC_C_getCalendarTime()
626*5fd0122aSMatthias Ringwald #define RTC_C_setCalendarAlarmMultipleInstance(a,b,c,d,e) RTC_C_setCalendarAlarm(b,c,d,e)
627*5fd0122aSMatthias Ringwald #define RTC_C_setCalendarEventMultipleInstance(a,b) RTC_C_setCalendarEvent(b)
628*5fd0122aSMatthias Ringwald #define RTC_C_definePrescaleEventMultipleInstance(a,b,c) RTC_C_definePrescaleEvent(b,c)
629*5fd0122aSMatthias Ringwald #define RTC_C_getPrescaleValueMultipleInstance(a,b) RTC_C_getPrescaleValue(b)
630*5fd0122aSMatthias Ringwald #define RTC_C_setPrescaleValueMultipleInstance(a,b,c) RTC_C_setPrescaleValue(b,c)
631*5fd0122aSMatthias Ringwald #define RTC_C_convertBCDToBinaryMultipleInstance(a,b) RTC_C_convertBCDToBinary(b)
632*5fd0122aSMatthias Ringwald #define RTC_C_convertBinaryToBCDMultipleInstance(a,b) RTC_C_convertBinaryToBCD(b)
633*5fd0122aSMatthias Ringwald #define RTC_C_enableInterruptMultipleInstance(a,b) RTC_C_enableInterrupt(b)
634*5fd0122aSMatthias Ringwald #define RTC_C_disableInterruptMultipleInstance(a,b) RTC_C_disableInterrupt(b)
635*5fd0122aSMatthias Ringwald #define RTC_C_getInterruptStatusMultipleInstance(a) RTC_C_getInterruptStatus()
636*5fd0122aSMatthias Ringwald #define RTC_C_getEnabledInterruptStatusMultipleInstance(a) RTC_C_getEnabledInterruptStatus()
637*5fd0122aSMatthias Ringwald #define RTC_C_clearInterruptFlagMultipleInstance(a,b) RTC_C_clearInterruptFlag(b)
638*5fd0122aSMatthias Ringwald #define RTC_C_registerInterruptMultipleInstance(a,b) RTC_C_registerInterrupt(b)
639*5fd0122aSMatthias Ringwald #define RTC_C_unregisterInterruptMultipleInstance(a) RTC_C_unregisterInterrupt()
640*5fd0122aSMatthias Ringwald 
641*5fd0122aSMatthias Ringwald //*****************************************************************************
642*5fd0122aSMatthias Ringwald //
643*5fd0122aSMatthias Ringwald // Mark the end of the C bindings section for C++ compilers.
644*5fd0122aSMatthias Ringwald //
645*5fd0122aSMatthias Ringwald //*****************************************************************************
646*5fd0122aSMatthias Ringwald #ifdef __cplusplus
647*5fd0122aSMatthias Ringwald }
648*5fd0122aSMatthias Ringwald #endif
649*5fd0122aSMatthias Ringwald 
650*5fd0122aSMatthias Ringwald //*****************************************************************************
651*5fd0122aSMatthias Ringwald //
652*5fd0122aSMatthias Ringwald // Close the Doxygen group.
653*5fd0122aSMatthias Ringwald //! @}
654*5fd0122aSMatthias Ringwald //
655*5fd0122aSMatthias Ringwald //*****************************************************************************
656*5fd0122aSMatthias Ringwald 
657*5fd0122aSMatthias Ringwald #endif /* RTC_H */
658