2009-08-28 08:52:47 +02:00

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;
}