PIAST RTC 使用方法

2016年3月10日 (木) 00:22時点におけるTakahashi (トーク | 投稿記録)による版
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)


PIAST用のRTCの使用方法

目次

カーネルモジュール

標準としている秋月のRTC-8564NBには対応するカーネルモジュールがあるので簡単に使えます。
まずi2cdetectで0x51にRTCがみえているかどうかを確認しておきます(注:RPiのI2Cは予め有効にしておきます)。

# modprobe rtc-pcf8563

で、カーネルモジュールが読み込まれます。
次に以下のコマンドを実行してI2CのRTCを認識させます。

# echo pcf8563 0x51 > /sys/class/i2c-adapter/i2c-1/new_device

起動時の自動読み込み

/etc/modules、i2c-devの下に

rtc-pcf8563

の1行を追加します。
/etc/rc.localに

echo pcf8563 0x51 > /sys/class/i2c-adapter/i2c-1/new_device

を追加します。これでシステム起動時に自動的にRTCが認識されるようになります。

初期設定

ここから先はLinuxのhwclockと扱いは全く同じです。まずRTCに現在時刻を設定するのに

hwclock --systohc

を実行します。
hwclock -rなどで内容を確認しておきましょう。

# hwclock -r
Wed 02 Mar 2016 23:46:28 JST  -0.643979 seconds

11分モードに注意

NTP等「他の」時刻合わせを使用している場合、ntpdが11分モードを自動的にオンします。このためRTCの値もNTPによって自動補正されるようになりますので、hwclock --adjustや--hctosysを行わないようにしてください。
スタンドアロン、つまりインターネットに接続されていないような環境で使用した場合には/etc/rc.localにhwclock --hcstosysを入れる、cronで自動的にRTCによる時刻合わせを入れるなどしてください。

バックアップ

標準の回路で組み立てた場合にはCR2032によるバッテリーバックアップが行われますので、RPiの電源を切っていても時刻は保持されます。あくまでも経験上での話ですがCR2032で1年以上はバックアップされます。

インターネットに繋がっていない場合の挙動

RTCが正しくシステムに認識されているとRaspbianのスクリプトによりシステム起動時にhwclockでシステムの時刻が設定されます。このためインターネットに接続されていないPIASTでもRTCが正しく設定されていれば正しい時刻で起動します。ただし、システムクロックのずれが発生するため定時処理等でhclock --adjustとhwclock --hctosysを実施するようにしてください。