DS3231高精度 ライブラリ

個体差もあるので必ずとも言えないようだがDS3231は頻繁にリードするほど(1秒に一回程度でも)時刻誤差が増大してしまう。誤差を増大させないようにするにはリード頻度を下げるしかないため最初に一度だけリードした後はDS3231のSQW(1Hz)信号によるGPIOピン割込みで時計を更新できるようにしたライブラリを作成してみた。

SQW(1Hz)信号を利用するとアラーム割込みにも対応できる。begin()にてSQW信号の接続先GPIOピンを指定するだけでよく、無指定(0xFFFF)の場合は毎回リード(誤差増大)するようになりアラーム割込みのサポートも無しとなる。

全てスタティック・メソッドなので本来はインスタンス生成する必要はないが、テンプレート・クラス特有のクラス指定の煩わしさ(名前が長くなる)があるためインスタンス変数経由で利用したほうが簡単。かも。

【スケッチ】

【ライブラリ】