割り込みとは何か?ポーリングとの違いから理解する【組み込み入門】

目次

割り込み処理解説シリーズ

本記事は「割り込み処理解説」シリーズの1つです。

割り込み処理解説シリーズの全体像はこちら

  1. 割り込みとは何か?ポーリングとの違いから理解する【組み込み入門】(この記事)
  2. 割り込み処理でやってはいけないこと5選|組み込み設計の落とし穴
  3. 割り込みは「処理を書く場所」ではない|組み込み設計の本質
  4. 割り込み×状態遷移設計|イベント駆動型組み込みの基本パターン
  5. 割り込み優先度設計の考え方|リアルタイム性を壊さないために
  6. 割り込みとRTOSなし構成の違いとは?設計思想の本質を整理する

組み込み開発をしていると必ず登場するのが「割り込み(Interrupt)」です。

しかし、

  • なんとなく使っている
  • ポーリングとの違いが曖昧
  • とりあえずサンプル通り書いている

という人も多いのではないでしょうか。

この記事では、割り込みの基本を「ポーリングとの比較」から整理します。
設計や応用の話に入る前の、土台となる理解を固める回です。


割り込みとは何か?

割り込みとは、

CPUが実行中の処理を一時中断し、優先すべき処理を実行する仕組み

です。

例えば:

  • ボタンが押された
  • タイマが満了した
  • UARTでデータを受信した

こうした「イベント」が発生すると、CPUは現在の処理を止めて、割り込み処理(ISR: Interrupt Service Routine)を実行します。

処理が終わると、元の処理に戻ります。


ポーリングとは何か?

ポーリングは、

CPUが自分で状態を確認しにいく方式

です。

例えばボタン入力の場合:

while(1) {
    if (BUTTON == ON) {
        // 処理
    }
}

常に状態を監視し続ける方式です。


割り込みとポーリングの違い

まとめると、割り込みとポーリングの違いは以下となります。

項目割り込みポーリング
反応性高いループ周期に依存
CPU効率無駄が少ない常に監視するため負荷あり
実装難易度やや高い比較的簡単
設計の難しさ高い低め

なぜ組み込みでは割り込みが重要なのか?

組み込み機器は、

  • 限られたCPU性能
  • リアルタイム要求
  • 低消費電力設計

という制約があります。

ポーリングでは、

  • 無駄にCPUを回し続ける
  • 低消費電力にできない
  • 応答遅延が出る

といった問題が発生します。

そのため、イベント駆動型の設計(割り込み)が基本になるのです。


割り込みの流れ(イメージ)

通常処理実行中

イベント発生

現在処理を退避

割り込み処理実行

元の処理に復帰

この「処理を退避して戻る」という仕組みが、後の設計難易度にもつながります。

(※次回以降の記事で詳しく扱います)


割り込みが“魔法”ではない理由

初心者がよく誤解するのが、

割り込み=便利な即時実行機能

という理解です。

しかし実際には、

  • コンテキスト保存
  • スタック使用
  • 優先度管理
  • ネスト発生

など、多くの設計要素が関係します。

ここを理解せずに使うと、
後に原因不明の不具合に悩まされます。


まとめ

  • 割り込みは「CPUを止めて優先処理を実行する仕組み」
  • ポーリングは「CPUが自分で確認する方式」
  • 組み込みでは割り込みが基本になる
  • しかし設計は決して簡単ではない

次回は、

割り込み処理でやってはいけない設計

について、実務視点で解説します。

この記事が参考になった方へ

割り込みについてはこちらの記事でもまとめています。

割り込み処理解説シリーズの全体像はこちら

  1. 割り込みとは何か?ポーリングとの違いから理解する【組み込み入門】(この記事)
  2. 割り込み処理でやってはいけないこと5選|組み込み設計の落とし穴
  3. 割り込みは「処理を書く場所」ではない|組み込み設計の本質
  4. 割り込み×状態遷移設計|イベント駆動型組み込みの基本パターン
  5. 割り込み優先度設計の考え方|リアルタイム性を壊さないために
  6. 割り込みとRTOSなし構成の違いとは?設計思想の本質を整理する

技術に関するご相談・開発・自動化ツール作成・記事執筆などのご依頼も承っています。

小さなご相談からでもお気軽にご連絡ください。

お問い合わせはこちら

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする


目次