54 lines
922 B
C
54 lines
922 B
C
/*--------------------------------------------------------------------------*/
|
|
/* RTC controls */
|
|
|
|
#include "LPC2300.h"
|
|
#include "rtc.h"
|
|
|
|
|
|
|
|
BOOL rtc_gettime (RTC *rtc)
|
|
{
|
|
DWORD d, t;
|
|
|
|
|
|
do {
|
|
t = RTC_CTIME0;
|
|
d = RTC_CTIME1;
|
|
} while (t != RTC_CTIME0 || d != RTC_CTIME1);
|
|
|
|
rtc->sec = t & 63;
|
|
rtc->min = (t >> 8) & 63;
|
|
rtc->hour = (t >> 16) & 31;
|
|
rtc->wday = (t >> 24) & 7;
|
|
rtc->mday = d & 31;
|
|
rtc->month = (d >> 8) & 15;
|
|
rtc->year = (d >> 16) & 4095;
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
|
|
|
|
BOOL rtc_settime (const RTC *rtc)
|
|
{
|
|
/* Stop RTC */
|
|
RTC_CCR = 0x12;
|
|
|
|
/* Update RTC registers */
|
|
RTC_SEC = rtc->sec;
|
|
RTC_MIN = rtc->min;
|
|
RTC_HOUR = rtc->hour;
|
|
RTC_DOW = rtc->wday;
|
|
RTC_DOM = rtc->mday;
|
|
RTC_MONTH = rtc->month;
|
|
RTC_YEAR = rtc->year;
|
|
|
|
/* Start RTC with external XTAL */
|
|
RTC_CCR = 0x11;
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
|