2022.10.17
前へ
次へ
ホームページトップへ戻る


PIC−USBIO using BASIC

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
USBインターフェースを内蔵したPICを使ってWindowsパソコンで外部回路を制御するための各種I/O基板の製作記事です。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

[第77回]



●PICUSBIO−03(26)Timer1(8)RTC(3)TIME$で確認

前回はTimer1のRTC機能のテストを行ないました。
今回はその続きです。
前回はSECカウンタがカウントアップを続けることを確認しました。
しかしそれだけでは不十分です。
SEC(秒カウンタ)の上位のMIN(分カウンタ)とさらにその上位のHOUR(時カウンタ)も正しく時刻をカウントすることを確認する必要があります。
MINはSECが59からカウントアップして0になったときにカウントアップします。
同様にHOURはMINが59からカウントアップして0になったときにカウントアップします。
PIC18F13K50に組み込んだRTCプログラムは24時制です。
HOURが23のときにMINがカウントアップして59から0になったとき0になります(23:59:59の1秒後に00:00:00になります)。
以上のことを確かめてみます。
その確認は前回のプログラムをそのまま使ってHOUR、MIN、SECに与える初期値だけを変えれば確かめることができます。

HOUR=23、MIN=59、SEC=50にしました。

プログラムを実行しました。

RTCとして正しく動作することが確認できました。

ところで。
ここまではPIC18F13K50に組み込んだRTCプログラムが正しく秒を刻んでいるという前提でテストをしてきました。
しかし本当にSECが正しく秒を刻んでいるかどうかの確認はまだしていませんでした。
つまりSECカウンタが本当に(時計の)1秒ごとにカウントアップしているかどうかということです。
どうすればそれを確認することができるでしょうか。
時計を見ながらRUNさせてみるとかストップウォッチで計時しながらRUNしてみるなどということでもよいのですが、それではちょっと記事にしにくいと思います。

もっと簡単な方法を思いつきました。
PICUSBIO用のBASICインタプリタにはDATE$,TIME$があります。
WindowsOSの時計機能をそのまま利用しています。
今までのRTCテストプログラムにTIME$を加えればTimer1のRTCが正しく秒を刻んでいるかどうかを簡単に確認することができます。
下は前回のプログラムにTIME$の表示を加えたプログラムです。

だらだらと表示を続けても仕方がありませんから実行を開始してから1分後にブレークするようにしました。
120行と140行のところでMINの値をチェックして1になったらブレークします。

プログラムを実行しました。

スタートしたときのTIME$の値は18:36:57です。

1分後にブレークしました。

TIME$の値は18:37:57です。
ちょうど1分後です。
PICのRTCの値は開始したときがHOUR MIN SECが0 0 0でした。
ブレークしたときの値は0 1 0ですからこちらもぴったり1分をカウントしたことになります。
ずっと長時間続ければ誤差が出てくると思いますがこのくらいの精度があれば十分使えますでしょう。

PIC−USBIO using BASIC[第77回]
2022.10.17upload

前へ
次へ
ホームページトップへ戻る