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