浏览代码

Fix rtc_set on Teensy 4.0 (thanks blackketter)

fixes #464
main
PaulStoffregen 4 年前
父节点
当前提交
536aa0ae13
共有 1 个文件被更改,包括 14 次插入5 次删除
  1. +14
    -5
      teensy4/rtc.c

+ 14
- 5
teensy4/rtc.c 查看文件

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

正在加载...
取消
保存