RTCは、独自のクリスタルを備えた個別のチップ、またはメインクロックとは別のタイムソース(32 kHzクリスタルなど)を備えたマイクロコントローラーに統合されたモジュールのいずれかであると想定します。また、RTCの時間ソースは、マイクロコントローラーの時間ソースよりも正確です。
RTCを読み取る必要がある頻度を判断するには、メインクロックで発生する可能性のある最大エラーを把握する必要があります。たとえば、メインクリスタルが20 ppmで指定されている場合、0.002%と同じです。したがって、メインクロックソースのみに基づいたクロックは、1日に0.00002 * 3600 * 24 = 1.728秒ドリフトする可能性があります。
したがって、RTCを1日に2回だけ読み取り、その間にタイマー割り込みを使用して1秒に1回時間をインクリメントすると、1秒以上オフになることはありません-RTCと比較して1秒以上オフになることはありません。
前述したように、RTCが独自の水晶を備えた個別のチップであるか、マイクロコントローラーと統合されたモジュールである場合、それが正しいという意味ではありません。RTCでもエラーが発生する可能性があります。たとえば、公差が5 ppmの32 kHzクリスタル(10 ppmのクリスタルよりもわずかに高価です)を使用している場合、1日あたり0.43秒(月あたり13秒)オフになる可能性があります。
これを回避するには、RTCを調整し、補正係数をレジスタに書き戻す必要があります。そうすることで、エラーを実質的にゼロにすることができます。ただし、チューニングを行う際の基準として使用する3つ目の外部クロックソースが必要です。米国では非常に正確な基準である60HzのACライン、ある保証であると正確に連続深夜の間に24時間の期間中に60 * 60 * 60 * 24(5184000)サイクル。これを有効にするには、60 Hzが真夜中にドリフトする可能性があるため、24時間全体の時間を計る必要があります。
もう1つの優れた時間基準は、GPSプロジェクトを使用している場合(10 nsの精度)、GPSを使用することです。
代わりに、セルラーネットワーク時間(AT + CCLK?呼び出し)などの外部ソース、またはNTPを使用するネットワークタイムサーバーからRTC時間を取得する場合、「調整」するものは何もないため、RTC値をそのまま使用できます。 。