• 検索結果がありません。

割り込み例外処理

ドキュメント内 H8/3687グループ ハードウェアマニュアル (ページ 84-89)

3. 例外処理

3.4 割り込み例外処理

φ

内部アドレスバス

内部リード信号

内部ライト信号

内部データバス

(16ビット幅)

(1)リセット例外処理ベクタアドレス(H'0000)

(2)プログラムスタートアドレス

(3)プログラム先頭命令

(2)

(1)

(3)

(2)

リセット解除

ベクタフェッチ プログラム先頭命令のプリフェッチ 内部処理

図3.1  リセット例外処理シーケンス

3.4.2 内部割り込み要求

各内蔵周辺モジュールには割り込み要求ステータスフラグとこれらの割り込みイネーブルビットがあります。

RTC割り込み要求とSLEEP命令実行によって発生する直接遷移割り込み、タイマB1割り込み要求についてはこ

の機能はIRR1、IRR2、IENR1、IENR2に含まれています。内蔵周辺モジュールからの割り込み要求が発生すると

対応する割り込み要求ステータスフラグが1にセットされCPUに対して割り込みを要求します。これらの割り込 み要求は対応するイネーブルビットを0にクリアすることにより禁止できます。

3.4.3 割り込み処理シーケンス

割り込み要求は割り込みコントローラによって制御されます。割り込み動作は以下のとおりです。

1. NMIあるいは割り込みイネーブルビットが1にセットされている割り込み要因が発生すると、割り込みコント ローラに対して割り込み要求信号が送られます。

2. 複数の割り込み要求が発生している場合、割り込みコントローラはCPUに対して表3.1にしたがってその時点 で最も優先度の高い割り込み処理を要求します。その他は保留となります。

3. CPUは割り込み要求がNMIまたはアドレスブレークであればIビットにかかわらず受け付けます。それ以外の 割り込み要求はCCRのIビットがクリアされていれば受け付けますが、Iビットがセットされている間は保留 します。

4. CPUが割り込み要求を受け付けると、実行中の命令を実行した後、割り込み例外処理を開始します。まず、

PCとCCRの値をスタック領域にスタックします。このときのスタックの状態を図3.2に示します。スタック

されるPCの値はリターン後に実行する最初の命令のアドレスです。

5. 次にCCRのIビットを1にセットします。これにより、NMIとアドレスブレークを除く割り込み要求がマスク されます。なお、Iビットの値はリターン時のアンスタックによりCCRの他のビットと共に例外処理開始前の 値に戻ります。

6. この後CPUは受け付けた割り込み要求に対応するベクタアドレスを生成し、そのアドレスのデータを割り込 み処理ルーチンのスタートアドレスとしてPCに転送して割り込み処理を開始します。

プログラム領域を内蔵ROMに、スタック領域を内蔵RAMにとった場合の割り込み要求シーケンスを図3.3に 示します。

スタック領域 SP−4

SP−3 SP−2 SP−1 SP(R7)→

SP(R7)→

SP+1 SP+2 SP+3 SP+4

CCR CCR*3

PCH PCL

割り込み例外処理開始前 割り込み例外処理終了後

偶数番地

【記号説明】

PCH PCL CCR SP

:プログラムカウンタ(PC)の上位8ビット

:プログラムカウンタ(PC)の下位8ビット

:コンディションコードレジスタ

:スタックポインタ

【注】 1. PCはリターン後に実行する最初の命令アドレスです。

2. レジスタの退避/復帰は必ずワードサイズで、偶数アドレスから行ってください。

3. リターン時は、無視されます。

スタックへの退避

図3.2  割り込み例外処理終了後のスタック状態

3.4.4 割り込み応答時間

割り込み要求フラグがセットされた後、割り込み要求処理ルーチンの先頭命令を実行するまでの待ちステート 数を表3.2に示します。

表3.2  割り込み要求待ちステート数

項 目 ステート数 合計

実行中の命令終了時の待ち時間* 1〜23 15〜37

PC、CCRのスタック 4

ベクタフェッチ 2 命令フェッチ 4

内部処理 4

【注】 * EEPMOV命令は除きます。

割り込み 要求信号

φ

内部 アドレスバス 内部 リード信号 内部 ライト信号 内部データバス

(16ビット幅)

割り込みレベル判定

割り込み処理ルーチン の命令プリフェッチ 割り込み受付

命令終了待ち 命令プリフェッチ

スタック ベクタフェッチ

内部処理 内部処理

(1)

(2) (4) (1) (7) (9) (10)

(3) (5) (6) (8) (9)

(1)命令のプリフェッチアドレス(実行されません。退避PC内容であり、リターンアドレスです。)

(2)(4)命令コード(実行されません。)

(3)命令のプリフェッチアドレス(実行されません。)

(5)SP − 2       

(6)SP − 4

(7)CCR

(8)ベクタアドレス

(9)割り込み処理ルーチン開始アドレス(ベクタアドレスの内容)

(10)割り込み処理ルーチン先頭命令

図3.3  割り込み要求シーケンス

ドキュメント内 H8/3687グループ ハードウェアマニュアル (ページ 84-89)