● 実験テーマ60
「PIC32MXとRTC8564による、時計設定及び、バックアップ付時計の実験」
(PIC内蔵のRTCCは、BUPには向いてないので、外付I2C_RTCで、BUP付の時計実験をしてみました)
・以下、この実験の顛末記です。
■ 2014.10.24
<この実験の目的について>
@ PIC32MXには、内蔵のRTCCがあるが、バックアップをするような構成にはなっていない。
よって、電源を切ると、毎回ONの度に、時計設定をしなければならない。
そのため、純粋な時計或いは、タイムスタンプのような用途には向いてない。
前回の実験では、簡易的に内蔵のRTCCを使ったが、今後予定している
本番の、PIC32MX_モノクロ単CHオシロ(イメージのSDへの保存機能付)では使いにくい。
よって、外付けの、I2C接続による、RTC8564(使用実績あり)を使い、CR2032の
ボタン電池によってバックアップし、電源を落としても、時を刻み続けるようにする。
<作業予定>
@ 水魚堂にて回路図作成
A ハードは、PIC32MXトレーニング基板を使用。
但し、簡単な改造をしないといけない。
オリジナルでは、I2C1ポートには、I2C_EEPROMが接続されているので、ここのポートを
切替えて、I2C_RTCの実験もできるように改造が必要である。
■ 2014.10.26
・RTC8564については、このICが搭載されている、秋月のRTCモジュール:AE8564NBを使った
治具を、だいぶ前(dsPIC30Fで作ったロガーの時)に作ったのがあるので、それを使うことにする。
dsPIC30Fで作ったロガー(実験テーマ2を参照してください)の時、時計合わせのソフトを
書いているので、仕様はその時のものに準ずることにした。
ただ、液晶が当時は、16キャラクタx2行のもだったのに対し、今回は、128x64ドットの液晶
なので、出力フォーマットを考えないといけない。
また、だいぶ前に書いたソフトなので、無駄な部分もある思うので、そこいら辺は、見直して
いきたいと考えている。
たかが、時計ソフトであるが、時計設定まで書くとなるとかなり面倒なものになる。
それは、いろいろな数値の形態(bin, bcd,
ascii等)変換を使うからである。
まあ今回は、自作の古い資料があるので、少しはましであるが・・・
■ 2014.10.28
・時計設定仕様の概要をまとめてみた。
・ソフトを考え始める。
最初は、時計設定抜きで記述し、時計部分のみのテストプロにしてみた。
ソース名:「PIC32MX_RTC8564_TEST_1.c」
■ 2014.10.29
・トレーニング基板の改造を終え、昨日書き上げたソフトの、HEXを書込んで、動作確認するも
まずは駄目!!
液晶にタイトルメッセージ以外、何も表示せず。
これは、RTC8564設定の前に、RTC8564内部水晶振動子が動くまでの、約1秒程度の、
ウエイトが必要なのに入れてないのが原因だった。
これを追加して時計は動き出したが、液晶の表示がどうもおかしい。
何というか、秒と分の表示はよいのだが、20秒の時と、40秒の時、月の数字と、時の表示
が動いてしまう?
これは前やった時のことを思い出したら、直ぐに判った。
RTC8564では、内部レジスタ読出し時、未定義(不定)ビット及び、他の機能ビットの
マスク処理が必要だった。これが抜けていた。
この修正で、TEST_1は、OKになった。
■ 2014.10.30
・面倒な、時計合わせのソフト(PIC32MX_RTC8564_TEST_2.c)を考えないといけない。
まあ、操作仕様は、既に決めてあるので、それに合わせて書けばよいだけだが・・・
必要なプロセジャーを決め、ソフトを書き始めた。
I2C関連では、
WriteRTC(・・・)と、
ReadRTC(・・・)
があるが、これらは、既に書き上げ、TEST_1で動作確認済である。
本日、書かないといけないのは、
操作関連では、
まず、SWの外部割込み処理、INT4, INT3, INT2
それと、時計合わせのプロセジャー:time_adjust_mode()
である。
今回、設定値・表示値等にするための、変数の形態(bin,
bcd. ascii, pacdec)変換処理は
プロセジャーにせず、直接、関数の引数のとこに変換式を記述する方法を取った。
ソフトは、10/30中に全て書き上げ、動作確認も、遅くまでかかったが、その日の内に清んだ。
そんな致命的なミスは無く、動きでは、最初カーソルの移動が思うようになっていなかったが、
それは単に、ロケーションミスによるものだった。
思っているより、順調に動いた。
■ 2014.10.31
・これで、タイムアジャストも、バックアップも、うまく行くことが確認できたので、今日は
いくつかの画面サンプル取りを行った。
実験風景と、画面サンプルのついては、このページトップの写真を参照してください。
<最終回路図>
・こちらから、どうぞ→ 「PIC32MX_RTC8564_実験回路」
(前回の実験回路を残したまま、RTC8564部分を追加した形になっているので、今回の実験で未使用なブロックの回路も含まれています。)
<最終ソース>
・こちらから、どうぞ→ PIC32MX_RTC8564_TEST_1.c (時計設定、バックアップ無しのテストプログラムです。)
PIC32MX_RTC8564_TEST_2.c (時計設定、バックアップ有りのテストプログラムです。)
← 実験テーマ1に戻る TOP PAGEに戻る 実験テーマ61へ →