(20)トラ技mbedでリアルタイム・クロック(RX8025ライブラリ)

(20)RX8025(RX8025 library)

概要

  • RX8025用の制御ライブラリです。
  • 2つの付録基板を活用します。
  • トランジスタ技術2014年2月号の付録基板(実験基板)
  • トランジスタ技術2014年3月号の付録基板(トラ技mbed)
  • 実験基板は表示機として使用します。LPC810は外しておきます。

/media/uploads/yasuyuki/mbed-rx8025.png

RX8025モジュール

  • RX8025は表面実装なのでDIPモジュールを利用しました。
  • 端子のmbed風表記です。

/media/uploads/yasuyuki/rx8025.png

仕様(spec.)

  • RX8025はリアルタイム・クロックです。
  • 32.786KHxの発振子を内蔵しています。
  • 低消費電流のためボタン電池(3V)でバックアップできます。
  • 時刻を設定しておけば、自動的に時刻を刻みます。
  • I2Cアドレス(7ビット)は0x32(プログラム上の表記は0x64)
  • 精度を追い込むためのオフセット調整ができます。
  • デフォルトは12時間表示です。24時間表示に切り替えることもできます。
  • 2つのアラーム設定ができます。
  • ウィークリー・アラームは週単位で発生します。WAFGビット=1で有効になります。INTBピン=Lを出力し、WALビット=1になります。
  • ディリー・アラームは毎日発生します。DAFGビット=1で有効になります。INTAピン=Lを出力し、DALEビット=1になります。

/media/uploads/yasuyuki/rx8025.jpg

RX8025メンバー関数

関数名用途引数戻り値
RX8025 rx8025(P0_5, P0_4)インスタンス生成SDA, SCL-
RX8025 rx8025(i2c)インスタンス生成i2c-
rx8025.setTIME(t)データTime tvoid
rx8025.setALARMw(a)データAlarmw avoid
rx8025.setALARMd(a)データAlarmd avoid
rx8025.setCONTROL(c)データControl cvoid
rx8025.getTIME()データvoidTime t
rx8025.getALARMw()データvoidAlarmw a
rx8025.getALARMd()データvoidAlarmd a
rx8025.getCONTROL()データvoidControl c
  • インスタンス生成はどちらかの方法で行います。i2cを継承することもできます。
  • Time構造体、Alarmw構造体、Alarmd構造体、Control構造体を利用して、設定と取得を行います。
  • 時刻データはBCDコードです。10進数ではなく16進数です。たとえば11時は0x11です。
  • BCD:Binary coded decimal

Time構造体

変数
secondsunsigned char
minutesunsigned char
hoursunsigned char
weekdaysunsigned char
daysunsigned char
monthsunsigned char
yearsunsigned char

Alarmw構造体

変数
minuteunsigned char
hourunsigned char
weekdayunsigned char

Alarmd構造体

変数
minuteunsigned char
hourunsigned char

Control構造体

変数
control1unsigned char
control2unsigned char
offsetunsigned char

BCDコード

  • 時の内容です。24時間と12時間で内容が異なります。
  • 12時間表示のとき、ビット5がPMを示します。
24時間制0x000x010x020x030x040x050x060x070x080x090x100x11
24時間制0x120x130x140x150x160x170x180x190x200x210x220x23
12時間制(AM)0x120x010x020x030x040x050x060x070x080x090x100x11
12時間制(PM)0x320x210x220x230x240x250x260x270x280x290x300x31

Weekdaysコード

  • 曜日と数値の関係です。
  • 日付から曜日を自動計算してくれません。
  • ツェラーの公式を利用します。
曜日
Weekdays0x000x010x020x030x040x050x06

AlarmwのWeekdayコード

  • ウェークリィ・アラームの曜日は時刻の曜日と形式が異なります。
  • 任意の曜日を同時設定できるようにするためです。
  • ビットが曜日を意味します。
曜日
Weekday0ビット1ビット2ビット3ビット4ビット5ビット6ビット

時計精度の調整

  • 内蔵発振子は気温の影響をうけ、進んだり遅れたりします。
  • 気温が低いと進み、気温が高いと遅れます。
  • そこで±3.05E-6単位で調整します。
  • offset値を設定することで調節します。
  • 進むとき
期間24時間=24x60x60=86400秒
進み1秒
ズレ量1秒/86400秒
調整量ズレ量/3.05E-6=3.79
設定データ3.79=0x04
  • 遅れるとき
期間24時間=24x60x60=86400秒
遅れ1秒
ズレ量1秒/86400秒
調整量ズレ量/3.05E-6=3.79
設定データ128-3.79=124=0x7C

制御レジスタ1

ビット76543210
control1WALEDALE/12,24/CLEN2TESTCT2CT1CT0
  • WALE=1のときウィークリー・アラーム有効
  • DALE=1のときディリー・アラーム有効
  • /12,24=1のとき24時間制
  • /CLEN2,FO端子の制御
  • TEST=0
  • CT2:CT1:CT0 INTA端子の制御

制御レジスタ2

ビット76543210
control2VDSLVDET/XSTPON/CLEN1CTFGWAFGDAFG
  • VDSL=1のとき2.1V,VDSL=0のとき1.3V
  • VDET=1のとき電圧低下検出
  • /XST=0のとき発振停止検出
  • PON=1のときリセット検出
  • /CLEN1,FO端子の制御
  • CTFG,INTAの状態
  • WAFG=1のときアラーム検出
  • DAFG=1のときアラーム検出

mbedソフトウェア

  • サンプルプログラムはmbed_RX8025です。
  • mbed_RX8025_LPC11U35_501.binを書き込みます。

トラ技mbedのプログラム書き込み方法

  1. ISPボタンを押しながらRESETをON/OFFします。
  2. PCにUSBストレージとして認識されます。
  3. firmware.binを削除します。
  4. バイナリファイルをコピーします。
  5. RESETを押します。

接続

  • RX8025のFOE(1)は未接続(内部でプルダウン)。
  • RX8025のFO(2)は未接続(クロック出力)。
  • RX8025のA(3)は未接続(アラーム出力)。
  • RX8025のGND(4)をmbedのGNDに接続します。
  • RX8025のSDA(5)をmbedのSDAに接続します。
  • RX8025のSCL(6)をmbedのSCLに接続します。
  • RX8025のB(7)は未接続(アラーム出力)。
  • RX8025のVDD(8)をmbedの3.3Vに接続します。

/media/uploads/yasuyuki/rx8025a.jpg

著作権と免責事項

  • 個人利用に限定され、著作権者の許可なく商用利用できません。
  • 直接間接に関わらず、使用によって生じたいかなる損害も筆者は責任を負いません。


Please log in to post comments.