Browse Source

Fix rtc_set on Teensy 4.0 (thanks blackketter)

fixes #464
teensy4-core
PaulStoffregen 4 years ago
parent
commit
536aa0ae13
1 changed files with 14 additions and 5 deletions
  1. +14
    -5
      teensy4/rtc.c

+ 14
- 5
teensy4/rtc.c View File

@@ -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)

Loading…
Cancel
Save