Tôi sẽ giả sử RTC là một con chip riêng biệt với tinh thể riêng của nó hoặc một mô-đun được tích hợp với bộ vi điều khiển của bạn một lần nữa có nguồn thời gian riêng (như tinh thể 32 kHz) so với đồng hồ chính. Và nguồn thời gian cho RTC chính xác hơn nguồn thời gian cho vi điều khiển.
Để xác định tần suất bạn cần đọc RTC, bạn cần tìm ra lỗi tối đa mà đồng hồ chính của bạn có thể có. Ví dụ: nếu tinh thể chính được xác định ở mức 20 ppm, thì tương đương với 0,002%. Vì vậy, một chiếc đồng hồ chỉ dựa trên nguồn đồng hồ chính có thể trôi 0,00002 * 3600 * 24 = 1,728 giây mỗi ngày.
Vì vậy, nếu bạn đọc RTC chỉ hai lần một ngày và giữa thời gian tăng thêm một lần một giây bằng cách sử dụng ngắt hẹn giờ, bạn sẽ không bao giờ tắt quá một giây - không bao giờ tắt nhiều hơn một giây so với RTC.
Nếu, như tôi đã giả định trước đó, RTC của bạn là một con chip riêng biệt với tinh thể riêng của nó hoặc một mô-đun được tích hợp với bộ vi điều khiển của bạn, điều đó không có nghĩa là nó đúng. Một RTC cũng có thể có lỗi. Ví dụ: nếu nó đang sử dụng tinh thể 32 kHz với dung sai 5 ppm (chỉ đắt hơn một chút so với 10 ppm), nó có thể tắt 0,43 giây mỗi ngày - hoặc 13 giây mỗi tháng.
Để giải quyết vấn đề này, bạn sẽ cần điều chỉnh RTC, nơi bạn viết một hệ số hiệu chỉnh trở lại một thanh ghi. Làm như vậy sẽ cho phép bạn nhận được lỗi thực tế về không. Nhưng tất nhiên bạn sẽ phải có nguồn đồng hồ bên ngoài thứ ba để sử dụng làm tài liệu tham khảo khi thực hiện điều chỉnh. Một tài liệu tham khảo vô cùng chính xác ở Mỹ là 60 Hz AC dòng, được đảm bảo là chính xác 60 * 60 * 60 * 24 ( 5.184.000) chu kỳ trong một khoảng thời gian 24 tiếng đồng hồ giữa midnights liên tiếp. Để điều này có ích, bạn phải có thời gian trong toàn bộ 24 giờ, vì tần số 60 Hz có thể trôi đi giữa các đêm.
Một tài liệu tham khảo thời gian tuyệt vời khác sẽ sử dụng GPS (độ chính xác 10 ns), nếu một người đã có phần cứng GPS trong dự án của họ.
Nếu thay vào đó, thời gian RTC của bạn đến từ nguồn bên ngoài, như thời gian mạng di động (cuộc gọi AT + CCLK?) Hoặc máy chủ thời gian mạng sử dụng NTP, thì bạn có thể sử dụng giá trị RTC vì sẽ không có gì để "điều chỉnh" .