タイマー割り込みは内部?外部? 教科書とマイコンで違う理由
基本情報技術者試験を勉強していると、
「タイマー割り込みは外部割り込みです」
という説明を見かけます。
しかし、マイコンの本やデータシートを見ると、
「タイマー割り込みは内部割り込み」
と書かれていることがあります。
「どっちが正しいの?」
と疑問に思った人もいるのではないでしょうか。
実は、どちらも正しいのです。
違うのは「何を基準に内部・外部を判断しているか」です。
基本情報技術者試験では「CPU」を基準に考える
基本情報技術者試験では、CPUを中心に考えます。
CPUの中で発生するもの
例えば、
- ゼロ除算
- 命令違反
- オーバーフロー
これらはCPUが命令を実行した結果、自分自身で発生します。
そのため、
内部割り込み
になります。
CPUの外から通知されるもの
一方、
- タイマー
- 入出力完了
- 通信受信
- ウォッチドッグタイマ
は、CPU自身が発生させているわけではありません。
CPUの外側にある回路が、
「時間になりました」
「通信が終わりました」
とCPUへ知らせています。
そのため、
外部割り込み
として分類されています。

実際のマイコンでは考え方が違う
マイコンメーカーのデータシートでは、
CPUだけではなく、
マイコン全体
を一つの装置として考えます。
すると、
マイコン
├── CPU
├── タイマー
├── UART
├── A/D変換器
├── DMA
└── ウォッチドッグ
これらは全部、
マイコンの中
にあります。
そのため、
内部割り込み
として説明されることがあります。

外部割り込みとは何?
マイコンの世界でいう外部割り込みは、
外部ピンから入ってくる信号です。
例えば、
- ボタンが押された
- センサーが反応した
- 外部ICから通知が来た
などです。

ウォッチドッグタイマは外部?内部?
ここも混乱しやすいところです。
基本情報では、
ウォッチドッグタイマは
外部割り込み
の例として過去問に登場しています。
実際、
平成25年春 基本情報技術者試験 午前 問11
では、
ウォッチドッグタイマのタイムアウト
が外部割り込みの例として出題されています。
しかし、
実際のマイコンでは、
ウォッチドッグタイマは
マイコン内部にあるため、
内部機能として説明されることも少なくありません。
なぜ違うの?
答えは簡単です。
基準が違うからです。
基本情報試験
CPUから見て外か?
マイコン
マイコンから見て外か?
これだけの違いです。

試験ではどう覚える?
基本情報試験では、
内部割り込み
- ゼロ除算
- 命令違反
- オーバーフロー
- ページフォールト
外部割り込み
- タイマー
- 入出力完了
- 通信受信
- ウォッチドッグタイマ
として覚えておけば問題ありません。
実務では?
実際にマイコン開発を行うと、
メーカーによって分類が異なることがあります。
例えば、
ルネサスやSTMicroelectronicsなどの資料では、
タイマーやUART、A/D変換完了などを
「内部割り込み」
として説明することがあります。
つまり、
試験ではCPU基準
実務ではマイコン基準
で考えていることが多いのです。
まとめ
試験勉強をしていると、
「教科書と実際のマイコンで説明が違う」
と感じることがあります。
しかし、その多くは間違いではなく、
何を基準に分類しているか
が違うだけです。
基本情報技術者試験では、
CPUを基準に考える
実際のマイコン開発では、
マイコン全体を基準に考える
この違いを知っておくと、教科書と実務の説明が矛盾して見える理由が理解できるようになります。
参考(基本情報技術者試験)
平成25年春 午前 問11では、「ウォッチドッグタイマのタイムアウトが起きたときに発生する割込み」が外部割り込みの例として出題されています。
補足
ブログ中の「マイコンでは内部割り込みとして説明されることがある」は、メーカーやアーキテクチャによって用語が異なる場合があります。「試験ではCPU基準、実務ではマイコン全体やベンダーの分類基準によることがあります。」










ディスカッション
コメント一覧
まだ、コメントがありません