rtc_c.h
Go to the documentation of this file.
1 /* --COPYRIGHT--,BSD
2  * Copyright (c) 2017, Texas Instruments Incorporated
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  *
9  * * Redistributions of source code must retain the above copyright
10  * notice, this list of conditions and the following disclaimer.
11  *
12  * * Redistributions in binary form must reproduce the above copyright
13  * notice, this list of conditions and the following disclaimer in the
14  * documentation and/or other materials provided with the distribution.
15  *
16  * * Neither the name of Texas Instruments Incorporated nor the names of
17  * its contributors may be used to endorse or promote products derived
18  * from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  * --/COPYRIGHT--*/
32 #ifndef RTC_C_H_
33 #define RTC_C_H_
34 
35 //*****************************************************************************
36 //
39 //
40 //*****************************************************************************
41 
42 
43 //*****************************************************************************
44 //
45 // If building with a C++ compiler, make all of the definitions in this header
46 // have a C binding.
47 //
48 //*****************************************************************************
49 #ifdef __cplusplus
50 extern "C"
51 {
52 #endif
53 
54 #include <stdint.h>
55 #include <stdbool.h>
56 #include <ti/devices/msp432p4xx/inc/msp.h>
57 
58 //*****************************************************************************
59 //
60 //The following is a struct that can be passed to RTC_CalendarInit() in the
61 //CalendarTime parameter, as well as returned by RTC_getCalendarTime()
62 //
63 //*****************************************************************************
64 typedef struct _RTC_C_Calendar
65 {
66  uint_fast8_t seconds;
67  uint_fast8_t minutes;
68  uint_fast8_t hours;
69  uint_fast8_t dayOfWeek;
70  uint_fast8_t dayOfmonth;
71  uint_fast8_t month;
72  uint_fast16_t year;
74 
75 //*****************************************************************************
76 //
77 //The following are values that can be passed to RTC_setCalibrationData()
78 //
79 //*****************************************************************************
80 #define RTC_C_CALIBRATIONFREQ_OFF (RTC_C_CTL13_CALF_0)
81 #define RTC_C_CALIBRATIONFREQ_512HZ (RTC_C_CTL13_CALF_1)
82 #define RTC_C_CALIBRATIONFREQ_256HZ (RTC_C_CTL13_CALF_2)
83 #define RTC_C_CALIBRATIONFREQ_1HZ (RTC_C_CTL13_CALF_3)
84 
85 //*****************************************************************************
86 //
87 //The following are values that can be passed to RTC_setCalibrationData()
88 //
89 //*****************************************************************************
90 #define RTC_C_CALIBRATION_DOWN1PPM ( !(RTC_C_OCAL_OCALS) )
91 #define RTC_C_CALIBRATION_UP1PPM (RTC_C_OCAL_OCALS)
92 
93 //*****************************************************************************
94 //
95 //The following are values that can be passed to
96 //RTC_setTemperatureCompensation()
97 //
98 //*****************************************************************************
99 #define RTC_C_COMPENSATION_DOWN1PPM ( !(RTC_C_TCMP_TCMPS) )
100 #define RTC_C_COMPENSATION_UP1PPM (RTC_C_TCMP_TCMPS)
101 
102 //*****************************************************************************
103 //
104 //The following are values that can be passed to RTC_iniRTC_Calendar()
105 //
106 //*****************************************************************************
107 #define RTC_C_FORMAT_BINARY ( !(RTC_C_CTL13_BCD) )
108 #define RTC_C_FORMAT_BCD (RTC_C_CTL13_BCD)
109 
110 //*****************************************************************************
111 //
112 //The following is a value that can be passed to RTC_seRTC_CalendarAlarm()
113 //
114 //*****************************************************************************
115 #define RTC_C_ALARMCONDITION_OFF (0x80)
116 
117 //*****************************************************************************
118 //
119 //The following are values that can be passed to RTC_seRTC_CalendarEvent()
120 //in the eventSelect parameter.
121 //
122 //*****************************************************************************
123 #define RTC_C_CALENDAREVENT_MINUTECHANGE (RTC_C_CTL13_TEV_0)
124 #define RTC_C_CALENDAREVENT_HOURCHANGE (RTC_C_CTL13_TEV_1)
125 #define RTC_C_CALENDAREVENT_NOON (RTC_C_CTL13_TEV_2)
126 #define RTC_C_CALENDAREVENT_MIDNIGHT (RTC_C_CTL13_TEV_3)
127 
128 //*****************************************************************************
129 //
130 //The following are values that can be passed to RTC_definePrescaleEvent()
131 //
132 //*****************************************************************************
133 #define RTC_C_PRESCALE_0 (0x0)
134 #define RTC_C_PRESCALE_1 (0x1)
135 
136 //*****************************************************************************
137 //
138 //The following are values that can be passed to RTC_definePrescaleEvent()
139 //in the prescaleEventDivider parameter.
140 //
141 //*****************************************************************************
142 #define RTC_C_PSEVENTDIVIDER_2 (RTC_C_PS0CTL_RT0IP_0)
143 #define RTC_C_PSEVENTDIVIDER_4 (RTC_C_PS0CTL_RT0IP_1)
144 #define RTC_C_PSEVENTDIVIDER_8 (RTC_C_PS0CTL_RT0IP_2)
145 #define RTC_C_PSEVENTDIVIDER_16 (RTC_C_PS0CTL_RT0IP_3)
146 #define RTC_C_PSEVENTDIVIDER_32 (RTC_C_PS0CTL_RT0IP_4)
147 #define RTC_C_PSEVENTDIVIDER_64 (RTC_C_PS0CTL_RT0IP_5)
148 #define RTC_C_PSEVENTDIVIDER_128 (RTC_C_PS0CTL_RT0IP_6)
149 #define RTC_C_PSEVENTDIVIDER_256 (RTC_C_PS0CTL_RT0IP_7)
150 
151 //*****************************************************************************
152 //
153 //The following are values that can be passed to the interrupt functions
154 //
155 //*****************************************************************************
156 #define RTC_C_OSCILLATOR_FAULT_INTERRUPT RTC_C_CTL0_OFIE
157 #define RTC_C_TIME_EVENT_INTERRUPT RTC_C_CTL0_TEVIE
158 #define RTC_C_CLOCK_ALARM_INTERRUPT RTC_C_CTL0_AIE
159 #define RTC_C_CLOCK_READ_READY_INTERRUPT RTC_C_CTL0_RDYIE
160 #define RTC_C_PRESCALE_TIMER0_INTERRUPT 0x02
161 #define RTC_C_PRESCALE_TIMER1_INTERRUPT 0x01
162 
163 //*****************************************************************************
164 //
170 //
171 //*****************************************************************************
172 extern void RTC_C_startClock(void);
173 
174 //*****************************************************************************
175 //
181 //
182 //*****************************************************************************
183 extern void RTC_C_holdClock(void);
184 
185 //*****************************************************************************
186 //
205 //
206 //*****************************************************************************
207 extern void RTC_C_setCalibrationFrequency(uint_fast16_t frequencySelect);
208 
209 //*****************************************************************************
210 //
226 //
227 //*****************************************************************************
228 extern void RTC_C_setCalibrationData(uint_fast8_t offsetDirection,
229  uint_fast8_t offsetValue);
230 
231 //*****************************************************************************
232 //
249 //
250 //*****************************************************************************
251 extern bool RTC_C_setTemperatureCompensation(uint_fast16_t offsetDirection,
252  uint_fast8_t offsetValue);
253 
254 //*****************************************************************************
255 //
278 //
279 //*****************************************************************************
280 extern void RTC_C_initCalendar(const RTC_C_Calendar *calendarTime,
281  uint_fast16_t formatSelect);
282 
283 //*****************************************************************************
284 //
292 //
293 //*****************************************************************************
295 
296 //*****************************************************************************
297 //
325 //
326 //*****************************************************************************
327 extern void RTC_C_setCalendarAlarm(uint_fast8_t minutesAlarm,
328  uint_fast8_t hoursAlarm, uint_fast8_t dayOfWeekAlarm,
329  uint_fast8_t dayOfmonthAlarm);
330 
331 //*****************************************************************************
332 //
347 //
348 //*****************************************************************************
349 extern void RTC_C_setCalendarEvent(uint_fast16_t eventSelect);
350 
351 //*****************************************************************************
352 //
376 //
377 //*****************************************************************************
378 extern void RTC_C_definePrescaleEvent(uint_fast8_t prescaleSelect,
379  uint_fast8_t prescaleEventDivider);
380 
381 //*****************************************************************************
382 //
396 //
397 //*****************************************************************************
398 extern uint_fast8_t RTC_C_getPrescaleValue(uint_fast8_t prescaleSelect);
399 
400 //*****************************************************************************
401 //
415 //
416 //*****************************************************************************
417 extern void RTC_C_setPrescaleValue(uint_fast8_t prescaleSelect,
418  uint_fast8_t prescaleCounterValue);
419 
420 //*****************************************************************************
421 //
430 //
431 //*****************************************************************************
432 extern uint16_t RTC_C_convertBCDToBinary(uint16_t valueToConvert);
433 
434 //*****************************************************************************
435 //
438 
445 //
446 //*****************************************************************************
447 extern uint16_t RTC_C_convertBinaryToBCD(uint16_t valueToConvert);
448 
449 //*****************************************************************************
450 //
474 //
475 //*****************************************************************************
476 extern void RTC_C_enableInterrupt(uint8_t interruptMask);
477 
478 //*****************************************************************************
479 //
503 //
504 //*****************************************************************************
505 extern void RTC_C_disableInterrupt(uint8_t interruptMask);
506 
507 //*****************************************************************************
508 //
526 //
527 //*****************************************************************************
528 extern uint_fast8_t RTC_C_getInterruptStatus(void);
529 
530 //*****************************************************************************
531 //
552 //
553 //*****************************************************************************
554 extern uint_fast8_t RTC_C_getEnabledInterruptStatus(void);
555 
556 //*****************************************************************************
557 //
580 //
581 //*****************************************************************************
582 extern void RTC_C_clearInterruptFlag(uint_fast8_t interruptFlagMask);
583 
584 //*****************************************************************************
585 //
598 //
599 //*****************************************************************************
600 extern void RTC_C_registerInterrupt(void (*intHandler)(void));
601 
602 //*****************************************************************************
603 //
614 //
615 //*****************************************************************************
616 extern void RTC_C_unregisterInterrupt(void);
617 
618 /* Defines for future devices that might have multiple instances */
619 #define RTC_C_startClockMultipleInstance(a) RTC_C_startClock()
620 #define RTC_C_holdClockMultipleInstance(a) RTC_C_holdClock()
621 #define RTC_C_setCalibrationFrequencyMultipleInstance(a,b) RTC_C_setCalibrationFrequency(b)
622 #define RTC_C_setCalibrationDataMultipleInstance(a,b,c) RTC_C_setCalibrationData(b,c)
623 #define RTC_C_setTemperatureCompensationMultipleInstance(a,b,c) RTC_C_setTemperatureCompensation(b,c)
624 #define RTC_C_initCalendarMultipleInstance(a,b,c) RTC_C_initCalendar(b,c)
625 #define RTC_C_getCalendarTimeMultipleInstance(a) RTC_C_getCalendarTime()
626 #define RTC_C_setCalendarAlarmMultipleInstance(a,b,c,d,e) RTC_C_setCalendarAlarm(b,c,d,e)
627 #define RTC_C_setCalendarEventMultipleInstance(a,b) RTC_C_setCalendarEvent(b)
628 #define RTC_C_definePrescaleEventMultipleInstance(a,b,c) RTC_C_definePrescaleEvent(b,c)
629 #define RTC_C_getPrescaleValueMultipleInstance(a,b) RTC_C_getPrescaleValue(b)
630 #define RTC_C_setPrescaleValueMultipleInstance(a,b,c) RTC_C_setPrescaleValue(b,c)
631 #define RTC_C_convertBCDToBinaryMultipleInstance(a,b) RTC_C_convertBCDToBinary(b)
632 #define RTC_C_convertBinaryToBCDMultipleInstance(a,b) RTC_C_convertBinaryToBCD(b)
633 #define RTC_C_enableInterruptMultipleInstance(a,b) RTC_C_enableInterrupt(b)
634 #define RTC_C_disableInterruptMultipleInstance(a,b) RTC_C_disableInterrupt(b)
635 #define RTC_C_getInterruptStatusMultipleInstance(a) RTC_C_getInterruptStatus()
636 #define RTC_C_getEnabledInterruptStatusMultipleInstance(a) RTC_C_getEnabledInterruptStatus()
637 #define RTC_C_clearInterruptFlagMultipleInstance(a,b) RTC_C_clearInterruptFlag(b)
638 #define RTC_C_registerInterruptMultipleInstance(a,b) RTC_C_registerInterrupt(b)
639 #define RTC_C_unregisterInterruptMultipleInstance(a) RTC_C_unregisterInterrupt()
640 
641 //*****************************************************************************
642 //
643 // Mark the end of the C bindings section for C++ compilers.
644 //
645 //*****************************************************************************
646 #ifdef __cplusplus
647 }
648 #endif
649 
650 //*****************************************************************************
651 //
652 // Close the Doxygen group.
654 //
655 //*****************************************************************************
656 
657 #endif /* RTC_H */
void RTC_C_startClock(void)
Definition: rtc_c.c:37
Definition: rtc_c.h:64
void RTC_C_definePrescaleEvent(uint_fast8_t prescaleSelect, uint_fast8_t prescaleEventDivider)
Definition: rtc_c.c:146
uint_fast8_t RTC_C_getEnabledInterruptStatus(void)
Definition: rtc_c.c:285
void RTC_C_setCalibrationData(uint_fast8_t offsetDirection, uint_fast8_t offsetValue)
Definition: rtc_c.c:58
void RTC_C_setPrescaleValue(uint_fast8_t prescaleSelect, uint_fast8_t prescaleCounterValue)
Definition: rtc_c.c:175
uint_fast8_t hours
Definition: rtc_c.h:68
uint_fast16_t year
Definition: rtc_c.h:72
uint_fast8_t minutes
Definition: rtc_c.h:67
void RTC_C_holdClock(void)
Definition: rtc_c.c:44
void RTC_C_setCalendarEvent(uint_fast16_t eventSelect)
Definition: rtc_c.c:139
uint_fast8_t dayOfmonth
Definition: rtc_c.h:70
void RTC_C_registerInterrupt(void(*intHandler)(void))
Definition: rtc_c.c:346
uint_fast8_t RTC_C_getInterruptStatus(void)
Definition: rtc_c.c:254
RTC_C_Calendar RTC_C_getCalendarTime(void)
Definition: rtc_c.c:104
void RTC_C_clearInterruptFlag(uint_fast8_t interruptFlagMask)
Definition: rtc_c.c:323
void RTC_C_disableInterrupt(uint8_t interruptMask)
Definition: rtc_c.c:229
void RTC_C_unregisterInterrupt(void)
Definition: rtc_c.c:352
bool RTC_C_setTemperatureCompensation(uint_fast16_t offsetDirection, uint_fast8_t offsetValue)
Definition: rtc_c.c:66
void RTC_C_initCalendar(const RTC_C_Calendar *calendarTime, uint_fast16_t formatSelect)
Definition: rtc_c.c:80
struct _RTC_C_Calendar RTC_C_Calendar
uint16_t RTC_C_convertBinaryToBCD(uint16_t valueToConvert)
Definition: rtc_c.c:198
void RTC_C_setCalendarAlarm(uint_fast8_t minutesAlarm, uint_fast8_t hoursAlarm, uint_fast8_t dayOfWeekAlarm, uint_fast8_t dayOfmonthAlarm)
Definition: rtc_c.c:130
uint_fast8_t month
Definition: rtc_c.h:71
void RTC_C_enableInterrupt(uint8_t interruptMask)
Definition: rtc_c.c:204
uint_fast8_t RTC_C_getPrescaleValue(uint_fast8_t prescaleSelect)
Definition: rtc_c.c:161
uint_fast8_t dayOfWeek
Definition: rtc_c.h:69
uint_fast8_t seconds
Definition: rtc_c.h:66
uint16_t RTC_C_convertBCDToBinary(uint16_t valueToConvert)
Definition: rtc_c.c:192
void RTC_C_setCalibrationFrequency(uint_fast16_t frequencySelect)
Definition: rtc_c.c:51

Copyright 2019, Texas Instruments Incorporated