マスカブル割込みとは、CPUが一時的に受け付けを禁止(マスク)できるハードウェア割込みのことで、プログラムの制御下で許可・禁止を切り替えられます。重要な処理中に割込みを避けたい時などに使い、禁止中に発生した要求は保留され、許可後に処理されます。対義語はノンマスカブル割込み (NMI)で、これは緊急時用で禁止できない割込みです。
マスカブル割込みのポイント
- 制御可能:CPUの制御命令(EI/DI命令など)で、割込みの許可(Enable)と禁止(Disable)を切り替えられます。
- 用途:通常の機器制御やタイマー処理など、実行タイミングをある程度制御したい処理に利用されます。
- 保留機能:割込み禁止中に発生した要求は、要求ビットが「1」になり、許可されるまで保持されます(複数回要求されても1回分のみ保持)。
- ノンマスカブル割込み (NMI) との違い:NMIは緊急事態(システム暴走、停電など)で必ず割込み処理を行う必要があり、禁止できません。
割込み処理の流れ(マスカブル割込み)
- 割込み要求発生:外部デバイスから割込み信号がCPUに送られる。
- マスク状態確認:CPUが割込み許可状態なら、プログラムカウンタなどの状態を保存する。
- 処理開始:割込み処理ルーチン(ISR)のアドレスにジャンプし、処理を実行する。
- 処理終了:保存した状態を復元し、元のプログラム処理に戻る。
プログラムでの制御例
#pragma block_interrupt命令(Renesas製マイコンなど):特定の関数ブロック全体をマスカブル割込み禁止にするためのコンパイラディレクティブ。EI(Enable Interrupt):/ **DI(Disable Interrupt)**命令:CPUの割込み制御フラグを操作する命令。

コメント