2019/02/11(MON) 【Nチビ】すいおん!D
水温計である。
前回までで、概ねプログラムはできていた。
おさらい。ほぼリアルタイムにセンサーの値を表示しようとすると
表示がチカチカしちゃうので1秒毎にしようってところ。
んで、
温度の取得を1秒毎にします。
8bitタイマーを使って1秒を作りましょう。

マイコンの内部クロックを2MHzに抑える。
(MAX 8MHzまで上げられるんだけど、その速さは今回いらない)
PICマイコンは1命令を実行するのに4周期掛かります。
ということは1秒間に

 2(MHz)/4(周期)

の命令が実行できます。サイクルといいます。
つまり

 500,000サイクル

実行できることになります。
ということは

 1サイクル 0.0000020秒掛かります。
 つまり、0.002msec掛かります
 つまり、2.0μsec掛かります。

つまり8bitタイマーの場合

 256サイクル×2.0μsec = 512μsec

で割り込みが入ります。
プリスケーラーの設定を256倍に設定すると

 512μsec×256倍 = 131,072μsec = 131.072 msec

なので
8bitタイマーの初期値と61にすると

 (256-61)×0.0020msec×256倍 = 99.84msec

約100msecで割り込みを入れることが出来ます。
これを10回カウントすると

 99.84msec×10 = 998.4msec

なので、約1秒ということになります。
う〜む。1秒作るのも面倒・・・
ここまでくると2秒を作る場合は、
割り込みを20回数えればいいことになります。

で、
マイコンに焼いて動作確認してみると
1秒毎で、意外と値が行ったり来たりします。
まぁ1秒毎なので、値は読めますが・・・
チカチカとウザイかな???
まぁ、まずはこれくらいでやってみましょう。
フォト


プログラム抜粋
クロックを2MHzにします。
フォト

8bitタイマーの設定をします。
プリスケーラーの設定とか
初期値とか
フォト

で、初期化が終わったらタイマー開始っ!
フォト

割り込みでは
10回割り込み来たかチェックします。
10回=約1秒ならセンサーの値を取得します。
フォト

ちなみにメインルーチンでは、
取得した値をグルグルと出力しています。

ちょっとメモリの使い方とか
処理の冗長さとか気に入らない部分もありますが
まぁ動けばOKでしょ?
ちなみに、
現時点では「すいおん」でなく「しつおん」です。。。orz