![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
今3052というマイコンを使ってIRQによる外部割込みの勉強をしています。3つの押しボタンスイッチ(赤、青、黄色)にそれぞれ赤ボタンを押されたらDCモータを動かす、青ボタンを押されたらサーボモータを動かす、黄色ボタンを押されたらLEDを点滅させるというプログラムを作りました。動作が終わった後に次の動作ボタンを押すと問題なく3つ動くのですが、作業中にボタンを押すと一瞬動作が止まったりしてしまいます。そこで動作中割り込み禁止にし、動作は止まらなくならました。
ですが、エレベータのボタンのように作業中に押されたら作業を止めないで作業が終了したらその時押されたボタンに対応する作業をするようにできません。どうゆう風にすればいいのか教えてください。お願いします。ちなみに言語はC言語を使っています。
No.2ベストアンサー
- 回答日時:
作業中 という言葉が出てくることから、
DCモータの起動ではなく、ある一定時間DCモータの作動
サーボモータの起動ではなく、ある一定時間サーボモータの作動
点滅動作はある一定時間点滅動作。
という動作を仮定します。
基本的には、
メインプログラム
と
割り込みハンドラ(3つ)
に
分け
割り込みハンドラは発生した事象(スイッチ)
を内部フラグにセットするのみとします。
メインプログラムは、
無限ループ
その中にスイッチ文で、割込みハンドラで設定された
内部フラグで
DCモータか
サーボモータか
LEDかを判定し
それぞれの処理用関数を呼び出します。
呼び出しから戻ると該当内部フラグをクリアし
無限ループを続けます。
それから、スイッチ文の判定順位により、
2度押しによる2度動作などが考えられるので
必要があれば、なんらかのインターロックを
とる必要があります。
操作する順番をキッチリ守る必要があるなら、内部フラグではなく、
FIFOのデータ構造(キュー)を使って割り込みハンドラで
FIFOに書き込み、メインプログラムでFIFOから取り出し
とすればベストかと思います。
基本的にNo.1さんと同じです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(趣味・アウトドア・車) Arudino nanoが正常に動作しない原因 1 2022/10/30 18:29
- 扇風機・冷風機・サーキュレーター スマートプラグで最近の扇風機は操作できない? 5 2022/11/04 13:37
- デスクトップパソコン 自作PCの電源が入らなくなりました、なんでもいいので助言ください。 5 2022/12/21 21:08
- Visual Basic(VBA) VBAで早押しゲームを作りたい 4 2022/05/12 13:46
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- Excel(エクセル) excelvbaでスライドショーを作りたい 2 2023/04/20 14:32
- Visual Basic(VBA) 【ExcelVBA】動的にボタン、ボタン名を生成できますか? 7 2022/04/08 12:54
- Access(アクセス) アクセス 意図せずサブプロシージャを移動してしまうのを止めたい 1 2022/09/02 09:19
- 時計・電卓・電子辞書 この時計、rhythmってcitizenの子会社の作った時計なのですが型番8MX 408、質量0.9 2 2022/12/23 13:52
- ブルーレイ・プレーヤー・レコーダー ノートパソコンのCD/DVDドライブ 4 2023/02/20 15:01
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
スーパーのレジで並んでいたら...
-
Data読出時のOSとのインタロック
-
電車で待機列の割り込みについ...
-
電車乗車時、並んでいるのに割...
-
割り込みのカウントの仕方
-
割り込み中に例外異常
-
CPU負荷率の安全な上限と計...
-
アセンブラのタイマー割り込み
-
これて逆じゃないですか?
-
Macターミナルで実行中のプログ...
-
緯度、経度の 10進法と 60進法...
-
C言語で、メモリを解放しないで...
-
TCP/IP通信時のサーバーからの受信
-
英語を原型で表示するプログラ...
-
VBSの処理中一旦処理を止めて再...
-
Excelでのセル内容の高速消去方法
-
プロセスIDからウィンドウハ...
-
C# シリアル通信でデータ受信...
-
バックグラウンドのプロセスの...
-
メッセージボックスのボタン名変更
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
このレジの並び方は間違ってま...
-
電車で待機列の割り込みについ...
-
スーパーのレジで並んでいたら...
-
ショッピング
-
CPUの処理量を減らすコーデ...
-
一定時間操作がなかったら、と...
-
CPU負荷率の安全な上限と計...
-
pic 複数の割り込み関数 切り分...
-
Amazonfireタブレットにわから...
-
【組込み】割り込み中のstatic...
-
マイコン C言語 割り込み処理...
-
USB機器からのデータ受信による...
-
駅のトイレでナイチンに邪魔さ...
-
インバウンドで迷惑している人...
-
PICのSleepからの復帰に関して
-
PICでのプログラムによるチャタ...
-
実行した後、どうしてもフリー...
-
PICで内部タイマーを使わずカウ...
-
SH2のタイマ出力
-
割り込み中に例外異常
おすすめ情報