![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e6f04cf)
こんにちは。
H8/3052F
C言語でプログラミングしています。
H8をはじめて約半年がたった者です。
ITUを使ったサーボ制御やAD変換など、いろいろ勉強してきました。
しかしながらまだまだ未熟な者です。
今回割り込みに挑戦しています。
IRQ0を使いスイッチ入力があるとLED点滅パターン変更のプログラムに成功し、ITUと組み合わせてサーボを割り込みで制御できるまで勉強、実験していました。
最終的に成功し、しばらく動かしていたのですが、割り込みがきかなくなってしまいました。
IRQ0が駄目なのか?と仮定してIRQ1でプログラミングし、試したところ無事割り込みできました。
しかしIRQ1も割り込みが急にできなくなってしまいました。
書き込みし直しても直りません。
回路として、本などを参考にIRQ0のポート→マイクロスイッチ→GND
という形で接続しています。
もしかしたらIRQ0の時はスイッチがB接点でしばらく繋がったままだったかもしれません。
また、この回路だと動作も少し不安定?なようです。
上記の回路で間違いはありませんか?
一応プログラムを載せておきます。
もし間違いがあったらお願いします。
#include <3048.h>
void wait (void)
{
long t=200000;
while (t--);
}
void int_irq0(void)
{
int c=3;
INTC.ISR.BIT.IRQ0F = 0
while(c--){
P5.DR.BYTE = 0x5;
wait();
P5.DR.BYTE = 0xa;
wait();
INTC.ISR.BIT.IRQ0F = 0;
}
}
int main(void)
{
DI;
INTC.ISCR.BIT.IRQ0SC = 0;
INTC.IER.BIT.IRQ0E = 1;
P5.DDR = 0xff;
EI;
while (1) {
P5.DR.BYTE = 0xff; //点灯
wait (); //待ち
P5.DR.BYTE = 0; //消灯
wait(); //待ち
}
}
以上よろしくお願いします。
No.3ベストアンサー
- 回答日時:
No1です。
>もう少し詳しく
それぞれのキーワードでググッてください。
それでも分からなければ何が分からないか書いてください。
とりあえず
ノイズ除去もあるのでバッファはシュミットタイプ(反転しますが74HC14とか)
辺りでしょうか?
チャタリング除去は一番簡単なコンデンサ+抵抗で問題ないでしょう
>ダミーリード
やってなければ一発割り込み受けたあと割り込みに反応しなくなるので
それは無いと思いましたが・・・
稀に別タスク等でポート読んでたりすると・・・
まぁルネサスで3052Fのハードウエアマニュアルがダウンロードできるので
しっかり読んでください。
ここのマニュアルは稀に同一ピンに割り当てられている別機能の説明に
他の機能に関する重要な解説書いてあったりするので注意。
>出力ポートにしてプログラムでH/Lにして、割り込みを発生させる
こんなことする位なら割り込み禁止にしてそのルーチン飛ばした方が
早いと思いますが?
まぁチャタリング除去はタイマー割り込みなどでスイッチをサンプリングして
ソフトで除去してもいいかと思います。
CPU負荷や外付けH/Wの量とかで判断されるといいかと思いますが。
あと多重割り込みにも注意です。
(割り込み処理中に他の割り込みを受け付ける事です。)
スタック食い潰す事があるので。
No.2
- 回答日時:
自分の過去のプログラムを見てみました。
ダミーリードは、やっていますか。
ポートにプルアップ抵抗を入れていますか。
IRQポートとして使っていても、出力に設定する事も出来ます。
出力ポートにしてプログラムでH/Lにして、割り込みを発生させる事も出来ます。
プルアップ抵抗を付ける加工が面倒なら、スイッチを開放にしてこの方法で割り込みを入れる方法も有ります。
下記のプログラムはタブ4だと揃うのですが、コピーして貼り付けるとタブが利かない。
volatile chardata;/* ダミーリード用*/
ISCR.BYTE = 0xFF;/*IRQ0~5 は、立下りで割り込み*/
data = ISR.BYTE;/*クリアする前にダミーリード*/
ISR.BYTE = 0;/*全割り込みフラグをクリア*/
IER.BYTE = 0x3F ;/*全IRQ を有効にする*/
EI();/*割り込みイネーブル*/
No.1
- 回答日時:
プルアップ抵抗位はいれてる?
普通、マイクロSWとかだったら線の長さもそれなりので
バッファは入れるし、メカ接点なのでチャタリング除去回路もいれますが
どうです?
(線が長い場合など直接H8に繋ぐと潰しますよ)
あと割り込み自体も立下りエッジですか?レベル受け付けだと
押したままにすると割り込みかかりっぱなしになります。
回答ありがとうございます。
>普通、マイクロSWとかだったら線の長さもそれなりので
>バッファは入れるし、メカ接点なのでチャタリング除去回路もいれますが
>どうです?
>(線が長い場合など直接H8に繋ぐと潰しますよ)
知識不足ですみません。
うっすら内容は理解できるのですが、もう少し詳しく教えていただけると助かります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# TCP/IP通信時のサーバーからの受信 2 2022/11/23 09:11
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 割られる整数と割る整数を受け取って、商と余りを出力す 3 2022/07/05 10:23
- その他(パソコン・スマホ・電化製品) windows 2000の再インストールの件 2 2022/09/07 10:05
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Amazonfireタブレットにわから...
-
スーパーのレジで並んでいたら...
-
一定時間操作がなかったら、と...
-
マイコン C言語 割り込み処理...
-
電車のドアの前での並び方
-
PICでのプログラムによるチャタ...
-
割り込み中に例外異常
-
システムの割り込みについて シ...
-
PICのPWMの正しい使い方につい...
-
複数の割込み処理からアクセス...
-
電車で待機列の割り込みについ...
-
PICによる7セグLED3桁制御
-
割り込み処理から引数を取得す...
-
【組込み】割り込み中のstatic...
-
VB.net 割り込みの禁止
-
USB機器からのデータ受信による...
-
Chat GPTに、課題として、二と...
-
Macターミナルで実行中のプログ...
-
TCP/IP通信時のサーバーからの受信
-
タスクマネージャーのプロセス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ショッピング
-
スーパーのレジで並んでいたら...
-
pic 複数の割り込み関数 切り分...
-
マイコン C言語 割り込み処理...
-
Amazonfireタブレットにわから...
-
CPUの処理量を減らすコーデ...
-
irqbalance って
-
CPU負荷率の安全な上限と計...
-
一定時間操作がなかったら、と...
-
電車で待機列の割り込みについ...
-
VB6でSendKeyを利用したTab移動...
-
(H8マイコン)タイマ割込で変更...
-
駅のトイレでナイチンに邪魔さ...
-
アセンブラのタイマー割り込み
-
PICのPIN変化割り込みに...
-
USJでの割り込み
-
H8マイコンで割り込みが任意の...
-
PIC16F84AのRBポート変化割り込...
-
AKI-H8/3048Fでのタイマ割り込み
-
H8マイコンでの割り込み(シリ...
おすすめ情報