割込みの仕組み

それでは,割込みはどのように呼び出されるのでしょうか。ここでは割込みの大まかな仕組みについて説明します。

  割込み要因に応じて割込み処理が呼び出されるようにするために,マイコンにはベクタテーブルと呼ばれるものが存在しています。このベクタテーブルは,割込み処理の開始アドレスを整理した目次のようなものです。 そして,そのベクタテーブルが置かれる領域をベクタテーブル領域と呼んでいます。

 このベクタテーブルには,各割込み要因の割込み処理のアドレス値が記載されています。 割込み要因が発生すると,CPUは割込み要因に該当するベクタテーブルに記載されているアドレス値を自動で参照し,割込み処理に分岐します。

ベクタテーブルは,以下のようなイメージになります。

 

 割込み要因が発生すると,マイコンは以下のような動作を行い,該当する割込み処理を呼び出します。

ここでは,例えばプログラムカウンタ(PC)が0x1002番地を示しているときに,タイマの割込み要因が発生した場合を例にします。

※大まかなイメージをつかんでもらうために,ここでは細かい動作は省きます。

①現在のプログラムカウンタ(PC)を割込み退避用のレジスタ(ELR)に退避する  

プログラムカウンタ(PC)の保存先はマイコンによって異なりますが、ML62Q1000シリーズのマイコンでは割込み退避用のレジスタ(ELR)に対比します。

ELRは割込みからの戻り番地を格納するレジスタとして使用されます。

②タイマ割込み要因に該当するベクタテーブルに格納されているタイマ割込み処理のアドレス値を読みだしてPCに格納する。

これにより,割込み要因に該当する割込み処理に移行します。

割込み処理が終わった後, どのようにして通常の処理に復帰するかというと, 「割込みからの復帰命令」(ここではRTI命令と呼びます)を使います。

割込み処理の最後でRTI命令が実行されることで, 退避用のレジスタ(ELR)に格納されていたアドレスがPCに書き戻され, 通常の処理に復帰することができます。

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