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