RTC는 자체 크리스털이있는 별도의 칩이거나 메인 클럭과 별도의 시간 소스 (예 : 32kHz 크리스털)가있는 마이크로 컨트롤러와 통합 된 모듈이라고 가정하겠습니다. RTC의 시간 소스는 마이크로 컨트롤러의 시간 소스보다 정확합니다.
RTC를 얼마나 자주 읽어야하는지 결정하려면 메인 클럭이 가질 수있는 최대 오류를 파악해야합니다. 예를 들어, 주 결정이 20ppm으로 지정되면 0.002 %와 동일합니다. 따라서 메인 클럭 소스를 기반으로하는 클럭은 하루 0.00002 * 3600 * 24 = 1.728 초를 표류 할 수 있습니다.
따라서 하루에 두 번만 RTC를 읽고 타이머 인터럽트를 사용하여 1 초에 한 번 증가한 시간 사이에 RTC와 비교하여 1 초 이상 꺼져 있지 않아야합니다.
앞서 언급했듯이 RTC가 자체 크리스털이있는 별도의 칩이거나 마이크로 컨트롤러와 통합 된 모듈 인 경우 이것이 정확하다는 의미는 아닙니다. RTC에도 오류가있을 수 있습니다. 예를 들어, 허용 오차가 5ppm (10ppm보다 약간 비싸다) 인 32kHz 크리스털을 사용하는 경우 하루 0.43 초 또는 매월 13 초 떨어져있을 수 있습니다.
이 문제를 해결하려면 RTC를 조정해야합니다. 여기서 RTC를 조정 계수로 다시 레지스터에 씁니다. 그렇게하면 실제로 오류를 0으로 만들 수 있습니다. 물론 튜닝을 수행 할 때 기준으로 사용할 세 번째 외부 클록 소스가 있어야합니다. 미국에서 매우 정확한 기준은 60Hz AC 라인이며, 연속 자정 사이에 24 시간 동안 정확히 60 * 60 * 60 * 24 (5,184,000) 사이클 이 보장 됩니다 . 이 기능을 유용하게 사용하려면 60Hz가 자정 사이에 표류 할 수 있으므로 전체 24 시간 동안 시간을 보내야합니다.
또 다른 우수한 시간 기준은 프로젝트에 GPS 하드웨어가 이미있는 경우 GPS (10ns 정확도)를 사용하는 것입니다.
RTC 시간이 셀룰러 네트워크 시간 (AT + CCLK? 호출)과 같은 외부 소스 또는 NTP를 사용하는 네트워크 시간 서버에서 온 경우 "조정"할 것이 없으므로 RTC 값을 그대로 사용할 수 있습니다 .