- ベストアンサー
H8/3052F/IRQを使った割り込み
- H8/3052Fを使用した割り込みのプログラムについての質問です。
- 最初はIRQ0を使いスイッチ入力によるLED点滅パターン変更を実装し、その後ITUを組み合わせてサーボを割り込みで制御しましたが、最近割り込みがきかなくなりました。
- 回路の接続に問題があるのか、プログラムに間違いがあるのか悩んでいます。プロラムのコードも記載していますので、ご確認いただけると幸いです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
No1です。 >もう少し詳しく それぞれのキーワードでググッてください。 それでも分からなければ何が分からないか書いてください。 とりあえず ノイズ除去もあるのでバッファはシュミットタイプ(反転しますが74HC14とか) 辺りでしょうか? チャタリング除去は一番簡単なコンデンサ+抵抗で問題ないでしょう >ダミーリード やってなければ一発割り込み受けたあと割り込みに反応しなくなるので それは無いと思いましたが・・・ 稀に別タスク等でポート読んでたりすると・・・ まぁルネサスで3052Fのハードウエアマニュアルがダウンロードできるので しっかり読んでください。 ここのマニュアルは稀に同一ピンに割り当てられている別機能の説明に 他の機能に関する重要な解説書いてあったりするので注意。 >出力ポートにしてプログラムでH/Lにして、割り込みを発生させる こんなことする位なら割り込み禁止にしてそのルーチン飛ばした方が 早いと思いますが? まぁチャタリング除去はタイマー割り込みなどでスイッチをサンプリングして ソフトで除去してもいいかと思います。 CPU負荷や外付けH/Wの量とかで判断されるといいかと思いますが。 あと多重割り込みにも注意です。 (割り込み処理中に他の割り込みを受け付ける事です。) スタック食い潰す事があるので。
その他の回答 (2)
- ricardo_
- ベストアンサー率19% (14/72)
自分の過去のプログラムを見てみました。 ダミーリードは、やっていますか。 ポートにプルアップ抵抗を入れていますか。 IRQポートとして使っていても、出力に設定する事も出来ます。 出力ポートにしてプログラムでH/Lにして、割り込みを発生させる事も出来ます。 プルアップ抵抗を付ける加工が面倒なら、スイッチを開放にしてこの方法で割り込みを入れる方法も有ります。 下記のプログラムはタブ4だと揃うのですが、コピーして貼り付けるとタブが利かない。 volatile char data ; /* ダミーリード用 */ ISCR.BYTE = 0xFF; /* IRQ0~5 は、立下りで割り込み*/ data = ISR.BYTE ; /* クリアする前にダミーリード */ ISR.BYTE = 0 ; /* 全割り込みフラグをクリア */ IER.BYTE = 0x3F ; /* 全IRQ を有効にする */ EI() ; /* 割り込みイネーブル */
- jtake00
- ベストアンサー率56% (860/1518)
プルアップ抵抗位はいれてる? 普通、マイクロSWとかだったら線の長さもそれなりので バッファは入れるし、メカ接点なのでチャタリング除去回路もいれますが どうです? (線が長い場合など直接H8に繋ぐと潰しますよ) あと割り込み自体も立下りエッジですか?レベル受け付けだと 押したままにすると割り込みかかりっぱなしになります。
お礼
回答ありがとうございます。 >普通、マイクロSWとかだったら線の長さもそれなりので >バッファは入れるし、メカ接点なのでチャタリング除去回路もいれますが >どうです? >(線が長い場合など直接H8に繋ぐと潰しますよ) 知識不足ですみません。 うっすら内容は理解できるのですが、もう少し詳しく教えていただけると助かります。