割込みを例えると

割込みとはなんでしょうか?私たちの身の回りで例えてみましょう。たとえば主婦が鍋料理を見ているときに,同時並行で電子レンジにから揚げをいれて温めているとします。電子レンジがチンと鳴りますよね。主婦は鍋を見るのをいったんやめて電子レンジからから揚げを取り出します。そしてまた鍋に戻ります。この電子レンジのチンという音が割込みになります。つまり,から揚げの温めと完了通知を電子レンジにお任せしているわけですね。

もし割込みが無かった場合,つまり電子レンジがずっと動き続けてチンと鳴らない場合を考えてみましょう。主婦は,鍋をほったらかしにして電子レンジを凝視したり,電子レンジの様子をたびたび確認したり,逆に電子レンジをほったらかしにすることになってしまいます。さて,この話を事前に理解した上でこの記事を読んでください。

割込みとは

割込みとは,何らかのイベントが発生したら通知するような仕組みのことです。

イベントは,それぞれの周辺回路(ペリフェラル)によって異なり,「タイマ」であれば「設定した時間が経過した」ということがイベントに該当し,「ポート」であれば「外部からの入力信号を受け付けた」ということがイベントに該当します。周辺回路によって発生したイベントがマイコンに通知されると,マイコンはいままでやっていた「通常の処理」を中断して,通知された内容にしたがって処理を行います。そして,その処理が終われば元の「通常の処理」に戻ります。

このイベントを「割込み要因」,イベント通知にしたがって行う処理を「割込み処理」(または「割込みハンドラ」)と呼んでいます。

「通常の処理」と「割込み要因」,「割込み処理」の関係を図示すると,以下のようなイメージになります。

このイメージだけを見ると,単純にサブルーチン呼び出し(C言語でいえば関数呼び出し)をしているだけのように見えてしまいますね…。

サブルーチン呼び出しの場合は,通常の処理の中に明示的にサブルーチンを呼び出す記述をしますが,割込みの場合,通常の処理の中には明示的に割込み処理を呼び出す記述をしません。イベントは通常の処理の決まった場所で発生するわけではなく,通常の処理とは関係なく(非同期に)発生するからです。

このため,割込み処理は,マイコンに組み込まれた特別な仕組みを使って呼び出されます。この仕組みについては後ほど説明します。

マイコン設計者がお答えします!技術的問い合わせフォーム