| @@ -49,11 +49,20 @@ unsigned long rtc_get(void) | |||
| void rtc_set(unsigned long t) | |||
| { | |||
| SNVS_HPCR &= ~SNVS_HPCR_RTC_EN; | |||
| while (SNVS_HPCR & SNVS_HPCR_RTC_EN) ; // wait | |||
| SNVS_HPRTCLR = t << 15; | |||
| SNVS_HPRTCMR = t >> 17; | |||
| SNVS_HPCR |= SNVS_HPCR_RTC_EN; | |||
| // stop the RTC | |||
| SNVS_HPCR &= ~(SNVS_HPCR_RTC_EN | SNVS_HPCR_HP_TS); | |||
| while (SNVS_HPCR & SNVS_HPCR_RTC_EN); // wait | |||
| // stop the SRTC | |||
| SNVS_LPCR &= ~SNVS_LPCR_SRTC_ENV; | |||
| while (SNVS_LPCR & SNVS_LPCR_SRTC_ENV); // wait | |||
| // set the SRTC | |||
| SNVS_LPSRTCLR = t << 15; | |||
| SNVS_LPSRTCMR = t >> 17; | |||
| // start the SRTC | |||
| SNVS_LPCR |= SNVS_LPCR_SRTC_ENV; | |||
| while (!(SNVS_LPCR & SNVS_LPCR_SRTC_ENV)); // wait | |||
| // start the RTC and sync it to the SRTC | |||
| SNVS_HPCR |= SNVS_HPCR_RTC_EN | SNVS_HPCR_HP_TS; | |||
| } | |||
| void rtc_compensate(int adjust) | |||