• ベストアンサー

割り込みとは?

マイコンの「割り込み機能」に関する質問です。 半年ほど前からマイコンを使ってラジコンヘリをいじくって自律制御みたいなものをやろうとしてまして、当初は「マイコンって何?」のレベルだったのですが、ようやくいろんなことができるようになってきました。 具体的にはH8や、MC9S08QG8(フリースケール社)を使って、LEDの点灯から始まり、AD変換、DCモータのPWM制御、サーボコントローラを駆動するためのシリアル通信などができるようになりました。 でも、いまだに使いこなせないのが、「割り込み」というものです。 今のところ、必要性を感じていないのですが、「割り込み」ってそもそもどういうときに使う必要が出てくるんですか?使うと、具体的にどんなことができるんですか?教えてください。 ちなみにC言語しかわかりません。

質問者が選んだベストアンサー

  • ベストアンサー
  • gonbee774
  • ベストアンサー率38% (198/511)
回答No.1

普段は別のことをやっていて、何か外部要因があったときにそれを(優先的に)処理するために使われます。 #普段べつのこと、とは何もせず待機のためのループを回っているだけ、という事もあります。 たとえばタイマー割り込み。 ある一定時間ごとにさせたい動作がある場合、使います。 (AD,DA変換で、サンプリング速度を規定するために通常つかっているのではないかと思っていますが…) また、シリアル通信はどのようにやっておられるのか解りませんが、USART(シリアル通信を行うハードウエア)が1バイト処理する毎に割り込みを発生させ、それによりCPUがデータを受け取ります。 #ほかの処理よりも優先させないと、間に合わなかった場合データが無くなってしまう可能性がありますね。 いつ入力されるかわからないキーボード入力なんかも、割り込みで処理します。(作り方によってはポーリング(ループ内で入力を待つ)方式でもできますが) >ちなみにC言語しかわかりません。 もし、ライブラリ等をお使いなら、ひょっとするとその内部で割り込みが使われてるかもしれませんね。

SY2525
質問者

お礼

すごく丁寧な回答、ありがとうございます。 最後の行でおっしゃっている通りかも知れません。ADもシリアルも別に割り込みというのを意識して使っていなかったので。 知らぬ間に使っていたのかもしれません。 ただ、だからこそ、あるレジスタで○○割り込みをディセーブルとかイネーブルだとかを指定するときなんかは、さっぱりわからずいつもディセーブルにしてしまってます。それでも動くからいいと思ってしまってるんですが。。

関連するQ&A

専門家に質問してみよう