I2C ベースの RTC から複数のバイトを読み取る場合、各バイトの読み取り中に値の 1 つが増加する可能性があるようです。
たとえば、時間が次の場合:
2014-12-31 23:59:59
この値を読んでいると、時間がロールオーバーする可能性があります
2015-01-01 00:00:00
実際に読むことができます:
2015-01-01 23:59:59
(最初に読み取る値によって異なります)。
では、信頼できる読み取りを保証するのは rtc ドライバーの責任ですか?
I2C ベースの RTC から複数のバイトを読み取る場合、各バイトの読み取り中に値の 1 つが増加する可能性があるようです。
たとえば、時間が次の場合:
2014-12-31 23:59:59
この値を読んでいると、時間がロールオーバーする可能性があります
2015-01-01 00:00:00
実際に読むことができます:
2015-01-01 23:59:59
(最初に読み取る値によって異なります)。
では、信頼できる読み取りを保証するのは rtc ドライバーの責任ですか?
DS1337のデータシートを読むと、9 ページに次のように記載されています。
時間と日付のレジスタを読み書きするときは、内部レジスタが更新されるときのエラーを防ぐために、2 次 (ユーザー) バッファが使用されます。時間と日付のレジスタを読み取る場合、ユーザー バッファは、任意の開始または停止時、およびレジスタ ポインタがゼロにロールオーバーしたときに、内部レジスタに同期されます。
したがって、読み取り (または書き込み) が 1 回の I2C 操作 (ラップアラウンドなし) で発生した場合、RTC デバイスはすべてが同期されていることを保証します。
[他のデバイスのデータシートは調べていませんが、すべて同じように機能すると思います。]