- ベストアンサー
PICでパルス数をカウントし、カウント数に応じで、ある操作をする
PICにファンクションジェネレータからパルス(数100ms程度の幅)を0.2~1Hzで入力して、たとえば10回のパルスが入ってきたら、10回目のパルスの後、数ms後にパルスを出力するといった事をしたいのですが、わかりません。 PIC初心者です。よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
PICは(Peripheral Interface Controller)で良いですね。 外部入力を判断するには(1)専用入力端子を使うか、それがなければ(2)割り込みが使える端子を使うか(3)通常の入力端子をポーリング(ソフトのタイミングで見る)かのどれかを使うことになると思います。 (1)はパルスの入力やパルス幅、その他の機能が考えられますがIC自体が高価にもなります。(2)はレベルの割り込みと、エッジの割り込みがあり、(2)(3)共にノイズ等による無効パルスや有効パルス中のエッジ発生や反転を予測して、有効/無効パルスの判定(反転を認識してから一定の時間で再認識)をしないといけないでしょう。 後はダウンカウントかアップカウントの10回カウンタでゼロまたは一致にてパルスを出力すればよいと思います。タイミングを計るのは内部タイマを使うか、あまり勧めませんがソフトのループ間隔で時間を決めるソフトカウンタという方法もあります。
その他の回答 (2)
- Azuma1
- ベストアンサー率39% (78/200)
図に示された解説がわかりやすいでしょうが http://www.necel.com/ja/faq/mi78k/__78int.html#0101 でわかりますか? CQ出版の本などを読んだ方がわかるかもしれません。 割り込みとは、通常のソフトが進んで(走って)いる状態で、何かの事象が生じたら、即座にその処理のルーチン(プログラム)に移動して処理をし、処理後に、割り込み前の場所に戻る一連の動作を言います。つまり、通常の処理に割り込むのです。文章では限界があり、webでも説明を簡単にされている所は内容なので?まずは図書館で本を借りて見るか、本を購入するかで理解した方が良いと思います。
お礼
再度回答ありがとうございます。 CQ出版の本を購入し、なんとか理解することができました。
- ribisi
- ベストアンサー率28% (247/864)
私も電子工作初心者です。 PICの機能であるタイマを使えば実現できると思います。 タイマは内部クロックでも外部クロックでも動作させることができ、 外部クロックを選べば、カウンタや分周期として使うことができます。 例えば8ピンICであるPIC12F629のタイマ0は8ビットタイマなので、 初期時にF6hと書き込んでおけば、10回目のカウントで値がFFhから00hと 変化し、そのときにオーバーフロー割り込みが発生します。 割り込み処理ルーチンでは、「数ms後にパルスを出力」の数msを NOP命令などで作り出し、その後に出力すればいいでしょう。
お礼
早速の回答ありがとうございます。 私はさらに初心者です…。まだ実際に自分で考えて作ったことはありません。本を見ながら、書いてある通りに作ったことはありますが。 ribisiさんの言っていることがあまり理解できないようです。 分かった事と言えば…「私の要求していることができる」ということぐらいです…。 一応調べてみました。 ちなみに16F84を使っています タイマ:???。サイクル時間(=4/クロック周波数)のことでしょうか?普通は水晶振動子等を付けるところに、パルス信号を入力するということでしょうか? タイマ0は8ビットタイマなので初期時にF6h:8ビット=256で、16進数で2桁分に相当する。8ビットタイマということは256でオーバーフローする?だからFFhの次は00hとなる? オーバーフロー割り込み:?。わかりませんでした。 NOP命令:何もしない。何もしない時間を数ms、何とかして作るということでしょうか?振動子を使っていない場合のサイクル時間はどうやって決まるのですか? すみません。初心者すぎますね。答えるのがメンドクさかったら、参考URLだけでも教えていただけると助かります。 ただ、電子工作室はなんかわかりにくかったです。
お礼
回答ありがとうございます。 ごめんなさい。初心者すぎて、わかりませんでした。 「割り込み」という言葉が先ほども出てきたので調べてみましたがよくわかりません。 http://www.picfun.com/pic08.html を見ました。 「レジスタ」「ビット」の値を色々いじっているという印象は受けました。ただ、「レジスタ」「ビット」については理解できていません。 わかりやすく解説してくれている、URLを紹介していただけるとありがたいです。すみませんがよろしくお願いします。