NVICレジスタ

NVICレジスタ

この章では、NVIC(統合ネスト型ベクタ割り込みコントローラ)が持っている制御用レジスタを説明します。SysTick関係のレジスタもNVICレジスタに含まれますが、それらは「第20回:電力管理、システムタイマ」で詳しく説明します。

各レジスタの説明

割り込みイネーブルセットレジスタ

割り込みイネーブルセットレジスタは、「割り込みの許可」、「現在許可されている割り込みの判別」に使用します。各ビットが、32個の割り込みのうちの1つに対応し、対応するビットをセットすることで、割り込み許可を行います。

割り込みイネーブルクリアレジスタ

割り込みイネーブルクリアレジスタは、「割り込みの禁止」、「現在禁止されている割り込みの判別」に使用します。各ビットが、32個の割り込みのうちの1つに対応し、対応するビットをセットすることで、割り込みが禁止されます。

割り込み保留セットレジスタ

割り込み保留セットレジスタは、「割り込みの保留」、「現在保留されている割り込みの判別」に使用されます。各ビットが、32個の割り込みのうちの1つに対応し、対応するビットをセットすることで、割り込みが保留されます。

割り込み保留クリアレジスタ

割り込み保留クリアレジスタは、「保留中の割り込みのクリア」、「現在保留されている割り込みの判別」に使用されます。各ビットが、32個の割り込みのうちの1つに対応し、対応するビットをセットすることで、保留中の割り込みは非アクティブの状態になります。

アクティブビット レジスタ

アクティブビット レジスタを読み出すと、アクティブな割り込みを判別できます。レジスタの各フラグは、32個の割り込みのうちの1つと対応します。

割り込みコントローラタイプレジスタ

割り込みコントローラタイプレジスタを読むと、NVICがサポートしている割り込み線の数を知ることができます。

CPU IDベースレジスタ

CPU IDベースレジスタには「コアのID番号」、「コアのバージョン番号」と「コアの実装の詳細」が格納されています。

割り込み制御状態レジスタ

割り込み制御状態レジスタは「保留中のNMIのセット」、「保留中のSVCのセット・クリア」、「保留中のSysTickのセット・クリア」、「保留中の例外のチェック」、「最も優先度が高い保留中の例外のベクタ番号のチェック」、「アクティブな例外のベクタ番号のチェック」に使用します。

ベクタテーブル オフセットレジスタ

ベクタテーブル オフセットレジスタで、ベクタテーブルのオフセットを設定します。また、ベクタテーブルがRAMまたはコードメモリにあるかどうかをチェックできます。

アプリケーション割り込みおよびリセット制御レジスタ

アプリケーション割り込みおよびリセット制御レジスタは「データのエンディアン形式の判別」、「デバッグまたはハードウェア障害から復帰する際のアクティブな情報のクリア」、「システムリセット」、「優先度のグループ分けの変更」に使用します。

システム制御レジスタ

システム制御レジスタは、プロセッサの電力管理のために使用します。

構成制御レジスタ

構成制御レジスタは、「NMI、ハードフォールト、FAULTMASKのバスフォールト無視の許可」、「0による除算およびアンアラインドアクセスのトラップ」、「ソフトウェアトリガ例外レジスタへのユーザアクセスの許可」、「スレッドモードへのエントリ制御」に使用します。

システムハンドラ制御および状態レジスタ

システムハンドラ制御および状態レジスタは、「システムハンドラを許可または禁止」、「バスフォールト、メモリ管理フォールト、SVCの保留ステータスの判定」、「システムハンドラのアクティブステータスの判定」に使用します。

システムハンドラ優先度レジスタ

システムハンドラ優先度レジスタは、「メモリ管理」、「バスフォールト」、「用法フォールト」、「デバッグモニタ」、「SVC」、「SysTick」、「PendSV」のシステムハンドラの優先度付けに使用します。

構成可能フォールトステータス レジスタ

構成可能フォールトステータス レジスタは3つあります。

  • ●メモリ管理フォールトステータス レジスタ
  • ●バスフォールトステータス レジスタ
  • ●用法フォールトステータス レジスタ

これらには、ローカルフォールトに関する情報が格納されています。

デバッグフォールトステータス レジスタ

デバッグフォールトステータス レジスタを使って、「外部デバッグ要求」、「ベクタキャッチ」、「データウォッチポイント一致」、「BKPT命令の実行」、「HALT要求の内容」をモニタします。

ハードフォールトステータス レジスタ

ハードフォールトステータス レジスタは、ハードフォールトハンドラをアクティブにするイベントの制御に使用します。

メモリ管理フォールトアドレス レジスタ

メモリ管理フォールトアドレス レジスタは、メモリ管理フォールトの原因のアドレスが格納されます。

バスフォールトアドレス レジスタ

バスフォールトアドレス レジスタは、バスフォールトが発生したアドレスが格納されます。

補助フォールトステータス レジスタ

補助フォールトステータス レジスタは、追加のシステムフォールト情報の判定に使用します。

ソフトウェアトリガ割り込みレジスタ

ソフトウェアトリガ割り込みレジスタは、トリガを行う割り込みを保留します。