この回路のPIC24FJ64GA002で、今後バッテリー駆動を行う事も考えると、PIC自身での消費電流を押さえる為に、Fosc(システムクロック)には内蔵のFRC発振器(8MHz)をダイレクトに使う事にします。この場合には、4MIPSの処理能力となります。ディレイ等のCLOCK定数(MIPS値)は「4」として下さい。
これは、PIC16F系やPIC18F系を同一のFosc(システムクロック)で動作させた場合の2倍の処理能力があります。さすが、PIC24FJですが、その分消費電流もPIC16FやPIC18Fの2倍になってしまいます。
もっと動作クロックを下げれば、消費電流を押さえる事が出来ますが、これ以上クロックを下げるには、外付けの発振子が必要となってしまい、I/Oが2つ減ってしまいます。今回はI/Oを目一杯使用する予定なので、この方法は残念ながら使えません。
ここで私が心配しているのは、
●RTCC用のSOSC(第2発振器)が、システムクロックの8MHzに関係なく、32.768kHzで動作してくれるのかという事です。
何故かと云うと、皆、フルスピードの32MHzでPICを動作させてRTCCを使っている例しか無いのです・・
でも、これは何も心配有りませんでした。
SOSCは他の発信器とは完全に独立して動作いたしました。(当たり前なのですが・・)
もう1つ厄介だなぁと思っていたのは、
●RTCCから取り出す事の出来る情報は、16ビットで、上位と、下位に別々のデータがあり、しかも、全てBCDであるという事です。
取り出した情報がバイナリーならば、そのまま整数として扱う事ができるのですが、BCDのままでは駄目です。LCDへの表示用の関数が整数データ用なのです。
これも、結果的にはLCD表示用の関数を全く変更しないで、BCDー>バイナリー変換も使わずに、簡単に処理する事が出来ました。
BCDの1桁分ならば、バイナリーとBCDは同じです。だからLCDへの表示をする時も、1桁ずつに分けて表示させれば良いのでした。時間は全て2桁なので、たいした労力でもありません。
最大の難関は、
●今までの文字配列では、時刻を表示させる用途としては、比較的文字が大きいので表示領域がどうしても一杯になってしまって、全体の表示が見難くなってしまう事でした。
これは、今まで使っていた幅5ドットの数字文字とは別に、幅3ドットの文字を定義して使う事で解消できました。
そして完成したのが、下記写真です。
|