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 |