소스 검색

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)

Loading…
취소
저장