rtc.c

Go to the documentation of this file.
00001 /*****************************************************************************
00002  *   rtc.c:  Realtime clock C file for NXP LPC23xx/34xx Family Microprocessors
00003  *
00004  *   Copyright(C) 2006, NXP Semiconductor
00005  *   All rights reserved.
00006  *
00007  *   History
00008  *   2006.07.12  ver 1.00    Prelimnary version, first Release
00009  *
00010 *****************************************************************************/
00011 #include "../lpc_config.h"
00012 #include "rtc.h"
00013 
00014 volatile DWORD alarm_on = 0;
00015 
00016 /*****************************************************************************
00017 ** Function name:               RTCHandler
00018 **
00019 ** Descriptions:                RTC interrupt handler, it executes based on the
00020 **                              the alarm setting
00021 **
00022 ** parameters:                  None
00023 ** Returned value:              None
00024 ** 
00025 *****************************************************************************/
00026 //void RTCHandler (void)
00027 //{
00028 //    RTC_ILR |= ILR_RTCCIF;            /* clear interrupt flag */
00029 //    IENABLE;                  /* handles nested interrupt */
00030 //
00031 //    alarm_on = 1;
00032 //
00033 //    IDISABLE;
00034 //    VICVectAddr = 0;          /* Acknowledge Interrupt */
00035 //}
00036 
00037 /*****************************************************************************
00038 ** Function name:               RTCInit
00039 **
00040 ** Descriptions:                Initialize RTC timer
00041 **
00042 ** parameters:                  None
00043 ** Returned value:              None
00044 ** 
00045 *****************************************************************************/
00046 void RTCInit( void )
00047 {
00048         PCONP |= 1<<9;
00049     alarm_on = 0;
00050 
00051     /*--- Initialize registers ---*/    
00052     RTC_AMR = 0;
00053     RTC_CIIR = 0;
00054     RTC_CCR = 0;
00055     RTC_PREINT = PREINT_RTC;
00056     RTC_PREFRAC = PREFRAC_RTC;
00057     return;
00058 }
00059 
00060 /*****************************************************************************
00061 ** Function name:               RTCStart
00062 **
00063 ** Descriptions:                Start RTC timer
00064 **
00065 ** parameters:                  None
00066 ** Returned value:              None
00067 ** 
00068 *****************************************************************************/
00069 void RTCStart( void ) 
00070 {
00071     /*--- Start RTC counters ---*/
00072     RTC_CCR |= CCR_CLKSRC | CCR_CLKEN;
00073     RTC_ILR = ILR_RTCCIF;
00074     return;
00075 }
00076 
00077 /*****************************************************************************
00078 ** Function name:               RTCStop
00079 **
00080 ** Descriptions:                Stop RTC timer
00081 **
00082 ** parameters:                  None
00083 ** Returned value:              None
00084 ** 
00085 *****************************************************************************/
00086 void RTCStop( void )
00087 {   
00088     /*--- Stop RTC counters ---*/
00089     RTC_CCR &= ~CCR_CLKEN;
00090     return;
00091 } 
00092 
00093 /*****************************************************************************
00094 ** Function name:               RTC_CTCReset
00095 **
00096 ** Descriptions:                Reset RTC clock tick counter
00097 **
00098 ** parameters:                  None
00099 ** Returned value:              None
00100 ** 
00101 *****************************************************************************/
00102 void RTC_CTCReset( void )
00103 {   
00104     /*--- Reset CTC ---*/
00105     RTC_CCR |= CCR_CTCRST;
00106     return;
00107 }
00108 
00109 /*****************************************************************************
00110 ** Function name:               RTCSetTime
00111 **
00112 ** Descriptions:                Setup RTC timer value
00113 **
00114 ** parameters:                  None
00115 ** Returned value:              None
00116 ** 
00117 *****************************************************************************/
00118 void RTCSetTime( RTCTime Time ) 
00119 {
00120     RTC_SEC = Time.RTC_Sec;
00121     RTC_MIN = Time.RTC_Min;
00122     RTC_HOUR = Time.RTC_Hour;
00123     RTC_DOM = Time.RTC_Mday;
00124     RTC_DOW = Time.RTC_Wday;
00125     RTC_DOY = Time.RTC_Yday;
00126     RTC_MONTH = Time.RTC_Mon;
00127     RTC_YEAR = Time.RTC_Year;    
00128     return;
00129 }
00130 
00131 /*****************************************************************************
00132 ** Function name:               RTCSetAlarm
00133 **
00134 ** Descriptions:                Initialize RTC timer
00135 **
00136 ** parameters:                  None
00137 ** Returned value:              None
00138 ** 
00139 *****************************************************************************/
00140 void RTCSetAlarm( RTCTime Alarm ) 
00141 {   
00142     RTC_ALSEC = Alarm.RTC_Sec;
00143     RTC_ALMIN = Alarm.RTC_Min;
00144     RTC_ALHOUR = Alarm.RTC_Hour;
00145     RTC_ALDOM = Alarm.RTC_Mday;
00146     RTC_ALDOW = Alarm.RTC_Wday;
00147     RTC_ALDOY = Alarm.RTC_Yday;
00148     RTC_ALMON = Alarm.RTC_Mon;
00149     RTC_ALYEAR = Alarm.RTC_Year;    
00150     return;
00151 }
00152 
00153 
00154 /*****************************************************************************
00155 ** Function name:               RTCClearTime
00156 **
00157 ** Descriptions:                Initialize RTC timer
00158 **
00159 ** parameters:                  None
00160 ** Returned value:              None
00161 **
00162 *****************************************************************************/
00163 void RTCClearTime()
00164 {
00165     RTC_ALSEC = 0;
00166     RTC_ALMIN = 0;
00167     RTC_ALHOUR = 0;
00168     RTC_ALDOM = 01;
00169     RTC_ALDOW = 01;
00170     RTC_ALDOY = 11;
00171     RTC_ALMON = 01;
00172     RTC_ALYEAR = 2011;
00173 }
00174 
00175 
00176 /*****************************************************************************
00177 ** Function name:               RTCGetTime
00178 **
00179 ** Descriptions:                Get RTC timer value
00180 **
00181 ** parameters:                  None
00182 ** Returned value:              The data structure of the RTC time table
00183 ** 
00184 *****************************************************************************/
00185 RTCTime RTCGetTime( void ) 
00186 {
00187     RTCTime LocalTime;
00188     
00189     LocalTime.RTC_Sec = RTC_SEC;
00190     LocalTime.RTC_Min = RTC_MIN;
00191     LocalTime.RTC_Hour = RTC_HOUR;
00192     LocalTime.RTC_Mday = RTC_DOM;
00193     LocalTime.RTC_Wday = RTC_DOW;
00194     LocalTime.RTC_Yday = RTC_DOY;
00195     LocalTime.RTC_Mon = RTC_MONTH;
00196     LocalTime.RTC_Year = RTC_YEAR;
00197     return ( LocalTime );    
00198 }
00199 
00200 /*****************************************************************************
00201 ** Function name:               RTCSetAlarmMask
00202 **
00203 ** Descriptions:                Set RTC timer alarm mask
00204 **
00205 ** parameters:                  Alarm mask setting
00206 ** Returned value:              None
00207 ** 
00208 *****************************************************************************/
00209 void RTCSetAlarmMask( DWORD AlarmMask ) 
00210 {
00211     /*--- Set alarm mask ---*/    
00212     RTC_AMR = AlarmMask;
00213     return;
00214 }
00215 
00216 /*****************************************************************************
00217 **                            End Of File
00218 ******************************************************************************/
00219