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