[中級の電子工作テスト]
CANONデジ一で遊ぶ
PIC24F RTCCでカレンダー
PICで赤外線通信
PICでシリアル通信
FT232RL変換モジュール
K型熱電対 AD595CQ
K型熱電対のテスト MAX6675
連枝でラダープログラム
連枝でステッピングモータ
各種デバイスのテスト
[シーケンス回路テスト]
リレーシーケンス
[車載用電子工作テスト]
電源の取り方
[PCBCAD]
EAGLE CAD
[掲示板]
電子工作のテスト工場BBS
[リンク]
工作お役立ちリンク集
[電子工作のテスト工場]
表紙[TOP]へ戻る
[電子工作系]
Sivanyan_Radioのブログ
(↑↑管理人のブログです)
GAMEってたのすぃー
電子回路実験教材の部屋 RLC
電子マスカット 必見[MP3]!
kunioのホームページ AVR+MP3
なひたふ電子
ワタヤンの日記
BLUE's electronics room
isi's 趣味の電子工作
獣医さんの電子工作とパソコン研究室
電子用語集Web
YS電子工作ラボ
(↑↑管理人のブログです)
[プログラム系]
信彦の家
[SNS]
電子工作の広場SNS
[写真]
シャッターを押した瞬間
MPLAB C18のちょっとした使い方を載せていきます。 悩んでる方の参考になればと思います。 |
PIC18F452を使用してタイマー0で1秒毎に割り込みを行わせる処理を書いてみました。
説明はプログラム中に記載していますが、割り込みに関する部分は後日記載しようと思います。
今回は割り込みの優先レベルは考えていません。 セラロック10MHzを使用して内部でPLL4倍、よって40MHz動作です。 1秒÷(40MHz/4)=1÷10MHz=1÷10,000,000=0.0000001=100ns 上の計算は1命令サイクルの時間です。なので1秒間に何回これを行えばいいかを考えます。 1秒÷100ns=1÷0.0000001=10,000,000回 今回は動作クロックが計算しやすい値で楽でした。しかし、1000万回という値はタイマーに設定できません。 そこでプリスケーラを使用します。タイマー0には256が設定できるので計算してみます。 10,000,000÷256=39,062回 (正確には39,062.5) 16ビットなので65,535まで可能なので今回は大丈夫なようです。なのでプリスケーラを256に設定してカウントは39,062です。 しかし、タイマーのカウンタはアップカウンタです。なのでMAX値から必要なカウント数を引いてやる必要があります。 65,536-39,062=0x10000-0x9896=0x676A 上記のとおり、タイマーの設定は0x676Aに決まりました。 OpenTimer0の設定は割り込みを使う、16ビットモード、内部クロック指定、プリスケーラ256と設定しました。 割り込みが発生するとカウントデータを条件によりインクリメント・デクリメントします。 また1秒になっているかどうかを判断するように外部出力を設けてその端子にオシロを接続します。 カウント値はLCDで確認が可能です。 液晶のクリアーは関数を設けずに通常のコマンド送信+1.6msの遅延で対処しました。 プログラムのテキストファイルはこちら 動作確認。オシロで1秒を確認。 |
Copyright (c) 2007-2022 amahime All Rights Reserved.