40
2015 Microchip Technology Inc. DS70000600D_JP - p. 1 ハイライト 本セクションには以下の主要項目を記載しています。 1.0 はじめに ........................................................................................................................... 2 2.0 ノンマスカブル トラップ ................................................................................................ 7 3.0 割り込み処理タイミング ............................................................................................... 16 4.0 割り込み制御 / ステータス レジスタ ............................................................................. 20 5.0 割り込みの設定手順 ....................................................................................................... 32 6.0 レジスタマップ .............................................................................................................. 35 7.0 関連アプリケーション ノート ....................................................................................... 36 8.0 改訂履歴 ......................................................................................................................... 37 割り込み 注意 : この日本語版文書は参考資料としてご利用ください。最新情報 は必ずオリジナルの英語版をご参照願います。

33E 24E FRM Interrupts - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/70000600D_JP.pdf2015 Microchip Technology Inc. DS70000600D_JP - p. 5 割り込み 図1-3: ブートセグメント

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 33E 24E FRM Interrupts - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/70000600D_JP.pdf2015 Microchip Technology Inc. DS70000600D_JP - p. 5 割り込み 図1-3: ブートセグメント

割り込み

注意 : この日本語版文書は参考資料としてご利用ください。 新情報は必ずオリジナルの英語版をご参照願います。

ハイライト

本セクションには以下の主要項目を記載しています。

1.0 はじめに ........................................................................................................................... 22.0 ノンマスカブル トラップ ................................................................................................ 7

3.0 割り込み処理タイミング ............................................................................................... 16

4.0 割り込み制御 / ステータス レジスタ ............................................................................. 20

5.0 割り込みの設定手順 ....................................................................................................... 32

6.0 レジスタマップ .............................................................................................................. 35

7.0 関連アプリケーション ノート ....................................................................................... 36

8.0 改訂履歴 ......................................................................................................................... 37

2015 Microchip Technology Inc. DS70000600D_JP - p. 1

Page 2: 33E 24E FRM Interrupts - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/70000600D_JP.pdf2015 Microchip Technology Inc. DS70000600D_JP - p. 5 割り込み 図1-3: ブートセグメント

DSPIC33/PIC24 ファミリ リファレンス マニュアル

1.0 はじめに

dsPIC33/PIC24 の割り込みコントローラは、CPU に対する多数の周辺モジュールからの割り込み要求の中から、 も優先度の高い 1 つの割り込み要求を選択します。本モジュールは以下の特長を備えます。

• 大 8 つのプロセッサ例外とソフトウェア トラップ

• ユーザ選択可能な 7 レベルの優先度

• 大 246 個のベクタを持つ割り込みベクタテーブル (IVT)

• 大 246 個のベクタを持つ代替割り込みベクタテーブル (AIVT)

• 割り込みまたは例外要因の各々に一意のベクタを割り当て

• 同一ユーザ指定優先度を持つ要因間の優先順位は自然順序優先度に従う

• 割り込み処理の開始時と終了時のレイテンシが固定

1.1 割り込みベクタテーブル (IVT)

プログラムメモリ内の IVT の配置を図 1-1 に示します。IVT は 254 個のベクタを含み、そのうち 8 個はノンマスカブル トラップベクタであり、残りが 大 246 個の割り込み要因です。一般的に、各割り込み要因には固有のベクタが割り当てられます。各割り込みベクタは 24 ビット幅のアドレスを格納します。各割り込みベクタ位置に書き込まれた値は、対応する割り込みサービスルーチン (ISR) の開始アドレスを指します。

補助フラッシュを備えたデバイスでは、補助フラッシュメモリ内に 1 つの補助割り込みベクタが存在します。この割り込みベクタは、補助フラッシュからプログラムを実行している時にトラップまたは有効な割り込みが発生した場合に実行する ISR の開始アドレス (24 ビット幅 ) を格納します。補助割り込みベクタが利用可能かどうかと、その格納位置については、各デバイスデータシートの「メモリ構成」と「割り込みコントローラ」を参照してください。

1.2 代替割り込みベクタテーブル (AIVT)

一部のデバイスは代替割り込みベクタテーブル (AIVT) を備えています。AIVT は、割り込みベクタを書き換えずにアプリケーションとサポート環境間の切り換えを可能にする事によって、エミュレーションとデバッグをサポートします。この機能を使うと、実行時にアプリケーションを切り換えながら複数の異なるソフトウェア アルゴリズムを評価する事もできます。

AIVT は、ブートセグメントを定義し、かつ AIVT を有効にした場合にのみ利用できます。AIVTを有効にするには、コンフィグレーション レジスタの AIVTDIS ビット (FSEC<15>) と、特殊機能レジスタの AIVTEN ビット (INTCON2<8>) の両方をセットする必要があります。ALTIVTビットをセットすると、全ての割り込みおよび例外処理は既定値ベクタの代わりに代替ベクタを使います。AIVT は、BSLIM<12:0> ビットによって定義されたブートセグメント メモリセクションの 後のページの前半部の先頭から始まります。 後のページの後半部は使えなくなります。AIVT を有効にする場合、ブートセグメントには 2 ページ以上が必要です。BSLIM<12:0>ビットの単位は「ページ」である事に注意してください。

例えば、3 ページのブートセグメント メモリを構成する場合、アプリケーション ソフトウェアで BSLIM<12:0> = 0x1FFC に設定します。未プログラム状態では、BSLIM<12:0> の全てのビットは「1」です。3 ページが必要な場合、 下位 (LSb) の 4 ビットを「0b1100」(0xC) に書き換え、 上位 (MSb) の 9 ビットは未プログラム状態のままにする事で、BSLIM<12:0> = 0x1FFCに設定します。詳細は図 1-3 を参照してください。

Note: ファミリ リファレンス マニュアルの本セクションは、デバイス データシートの補足を目的としています。本書の内容は dsPIC33/PIC24 ファミリの一部のデバイスには対応していません。

本書の内容がお客様のご使用になるデバイスに対応しているかどうかは、 新デバイス データシート内の「割り込みコントローラ」の冒頭に記載している注意書きでご確認ください。

デバイス データシートとファミリ リファレンス マニュアルの各セクションは、Microchip社のウェブサイト(http://www.microchip.com)からダウンロードできます。

DS70000600D_JP - p. 2 2015 Microchip Technology Inc.

Page 3: 33E 24E FRM Interrupts - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/70000600D_JP.pdf2015 Microchip Technology Inc. DS70000600D_JP - p. 5 割り込み 図1-3: ブートセグメント

割り込み

図 1-1: 割り込みベクタテーブル

IVTテ

ーブ

ルの

下ほ

ど自

然順

序優

先度

は低

リセット – GOTO命令 0x000000

リセット – GOTOアドレス 0x000002

オシレータ障害トラップベクタ 0x000004

アドレスエラー トラップベクタ 0x000006

一般ハードトラップ ベクタ 0x000008

スタックエラー トラップベクタ 0x00000A

算術エラー トラップベクタ 0x00000C

DMAC エラー トラップベクタ 0x00000E

一般ソフト トラップベクタ 0x000010

予約済み 0x000012

割り込みベクタ 0 0x000014

割り込みベクタ 1 0x000016

: :

: :

: :

割り込みベクタ 52 0x00007C

割り込みベクタ 53 0x00007E

割り込みベクタ 54 0x000080

: :

: :

: :

割り込みベクタ 116 0x0000FC

割り込みベクタ 117 0x0000FE

割り込みベクタ 118 0x000100

割り込みベクタ 119 0x000102

割り込みベクタ 120 0x000104

: :

: :

: :

割り込みベクタ 244 0x0001FC

割り込みベクタ 245 0x0001FE

コードの先頭 0x000200

割り込みベクタの詳細は、

各デバイス データシート内

の「割り込みコントローラ」

を参照してください。

2015 Microchip Technology Inc. DS70000600D_JP - p. 3

Page 4: 33E 24E FRM Interrupts - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/70000600D_JP.pdf2015 Microchip Technology Inc. DS70000600D_JP - p. 5 割り込み 図1-3: ブートセグメント

DSPIC33/PIC24 ファミリ リファレンス マニュアル

図 1-2: 代替割り込みベクタテーブル

Note 1: アドレスは、BSLIM<12:0> で定義されたブートセグメントのサイズによって決まります。[(BSLIM<12:0> – 1) x 0x400] + オフセット

AIV

T

テー

ブル

の下

ほど

自然

順序

優先

度は

低い

予約済み BSLIM(1) + 0x000000

予約済み BSLIM(1) + 0x000002

オシレータ障害トラップベクタ BSLIM(1) + 0x000004

アドレスエラー トラップベクタ BSLIM(1) + 0x000006

一般ハードトラップ ベクタ BSLIM(1) + 0x000008

スタックエラー トラップベクタ BSLIM(1) + 0x00000A

算術エラー トラップベクタ BSLIM(1) + 0x00000C

予約済み BSLIM(1) + 0x00000E

一般ソフト トラップベクタ BSLIM(1) + 0x000010

予約済み BSLIM(1) + 0x000012

割り込みベクタ 0 BSLIM(1) + 0x000014

割り込みベクタ 1 BSLIM(1) + 0x000016

: :

: :

: :

割り込みベクタ 52 BSLIM(1) + 0x00007C

割り込みベクタ 53 BSLIM(1) + 0x00007E

割り込みベクタ 54 BSLIM(1) + 0x000080

: :

: :

: :

割り込みベクタ 116 BSLIM(1) + 0x0000FC

割り込みベクタ 117 BSLIM(1) + 0x0000FE

割り込みベクタ 118 BSLIM(1) + 0x000100

割り込みベクタ 119 BSLIM(1) + 0x000102

割り込みベクタ 120 BSLIM(1) + 0x000104

: :

: :

: :

割り込みベクタ 244 BSLIM(1) + 0x0001FC

割り込みベクタ 245 BSLIM(1) + 0x0001FE

割り込みベクタの詳細は、

各デバイス データシート

内の「割り込みコント

ローラ」を参照してくだ

さい。

DS70000600D_JP - p. 4 2015 Microchip Technology Inc.

Page 5: 33E 24E FRM Interrupts - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/70000600D_JP.pdf2015 Microchip Technology Inc. DS70000600D_JP - p. 5 割り込み 図1-3: ブートセグメント

割り込み

図 1-3: ブートセグメント メモリにおける AIVT の配置

1.3 リセット シーケンス

割り込みコントローラはリセット処理に関与しないため、デバイスリセットは厳密には例外処理ではありません。dsPIC33/PIC24 は、リセット時にレジスタをクリアしてプログラム カウンタ (PC) を 0 に設定した後に、0x000000 からプログラムの実行を開始します。ユーザ アプリケーションでリセットアドレスに GOTO 命令を書き込む事により、プログラムの実行を適切な起動ルーチンにリダイレクトできます。

補助フラッシュを備えたデバイスでは、オプションの設定により、リセット位置を補助フラッシュに設定する事ができます。補助フラッシュが利用可能かどうかと、リセット位置を補助フラッシュに設定する方法については、各デバイスデータシートの「メモリ構成」と「特殊機能」を参照してください。

Note 1: AIVT を有効にするには、コンフィグレーション ビット AIVTDIS (FSEC<15>) をセットし、BSLIM<12:0> ビット (FBSLIM) を設定します。そして AIVTEN(INTCON2<8>) = 1 に設定する事で、割り込みベクタテーブルを IVT から AIVTに切り換えます。

IVT(256 IW)

Boot Segment(256 IW)

Boot Segment(512 IW)

AIVT (256 IW)

UNUSED (256 IW)

Boot Segment

0x0004

0x0200

2nd Page

BSLIM<12:0> = 0x1FFC

0x01FE

0x0400

1st Page

3rd Page

0x0402

0x08020x0804

0x0A04

0x0C06

0x0A06

(1)

Note: IVT の未実装または未使用ベクタ位置には、RESET 命令を実行する既定値割り込みハンドラルーチンのアドレスを書き込む必要があります。

2015 Microchip Technology Inc. DS70000600D_JP - p. 5

Page 6: 33E 24E FRM Interrupts - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/70000600D_JP.pdf2015 Microchip Technology Inc. DS70000600D_JP - p. 5 割り込み 図1-3: ブートセグメント

DSPIC33/PIC24 ファミリ リファレンス マニュアル

1.4 CPU 優先度ステータス

CPU は 16 段階の優先度 (0 ~ 15) で動作できます。割り込みまたはトラップ要因の優先度がその時点の CPU 優先度よりも高い場合にのみ、例外処理が起動します。周辺モジュールおよび外部の割り込み要因は、優先度 1 ~ 7 に設定できます。CPU 優先度 8 ~ 15 は、トラップ要因向けに予約されています。

トラップとは、ハードウェアおよびソフトウェア問題の検出を目的とするノンマスカブル割り込み要因です (2.0「ノンマスカブル トラップ」参照 )。各トラップ要因の優先度は固定されており、1 つの優先度には 1 つのトラップだけが割り当てられます。優先度 0 に設定された割り込み要因は、CPU 優先度よりも高くなる事がないため、実質的に無効になります。

現在の CPU 優先度は、以下のステータスビットにより示されます。

• CPU ステータス レジスタ (SR<7:5>) の CPU 割り込み優先度ステータスビット (IPL<2:0>)

• コア制御レジスタ (CORCON<3>) の CPU 割り込み優先度ステータスビット (IPL3)

IPL<2:0> ステータスビットは読み書き可能です。従ってユーザ アプリケーションでこれらのビットに書き込んで CPU 優先度を設定する事により、その優先度以下の全ての割り込み要因を無効にできます。例えば IPL<2:0> = 011に設定した場合、優先度 1/2/3 の全ての要因は CPUに対して割り込めません。

トラップイベントは、全てのユーザ割り込み要因よりも高い優先度を持ちます。トラップイベントの実行中は IPL3 ビットがセットされます。ユーザ アプリケーションは IPL3 ビットをクリアできますが、セットする事はできません。アプリケーションによっては、トラップ発生時にIPL3 ビットをクリアして、トラップの原因となった命令の直後の命令とは異なる命令に分岐させる必要があります。IPL<2:0> を「111」に設定する事により、全てのユーザ割り込みを無効にできます。

1.5 割り込み優先度

周辺モジュール割り込み要因には、7 段階の優先度を割り当てる事ができます。ユーザは、IPCxレジスタ内の各ニブルの下位 3 ビットを使って、各割り込みに優先度を割り当てる事ができます。各ニブルの bit 3 は使われず、常に「0」として読み出されます。これらのビットは各割り込みの優先度を定義します。割り当て可能な優先度は 1 ( 低優先度 ) ~ 7 ( 高優先度 ) です。ある割り込み要因に対応する IPCx ビットを全てクリアすると、その割り込み要因は実質的に無効 ( 優先度 0) になります。

複数の割り込み要因に対して同一の優先度を割り当てる事ができます。ユーザによって同一の優先度が割り当てられた複数の割り込み要因間の競合を解消するため、各割り込み要因には IVT 内の並び順に従う自然順序優先度が割り当てられています (割り込みベクタテーブルの正確な情報は、各デバイスデータシート内の「割り込み」に記載しています )。番号が若い割り込みベクタほど高い自然順序優先度を持ちます。保留中の割り込み要因の総合優先度は、まずユーザ アプリケーションが IPCx レジスタで割り当てた優先度に従い、これが同じであれば、IVT/AVT 内の自然順序優先度によって決まります。

自然順序優先度は、同一のユーザ アプリケーション割り当て優先度を持つ複数の割り込みが同時に保留状態にある場合にのみ、それらの競合を回避するために使われます。優先度の競合が解消して例外処理が始まった後は、これよりも高いユーザ アプリケーション割り当て優先度を持つ割り込み要因だけが CPU に対して割り込めます。すなわち、例外処理の実行中に、同一ユーザ アプリケーション割り当て優先度を持ち自然順序優先度がより高い割り込みが新たに要求されても、それらは実行中の例外処理が完了するまで全て保留されます。

各割り込み要因には 7 段階の優先度を設定できます。ユーザ アプリケーションで優先度を設定する事により、自然順序優先度の低い割り込みに非常に高い総合優先度を持たせる事ができます。例えば、自然順序優先度が低い UART1 RX 割り込みに優先度 7 を設定し、逆に自然順序優先度が高い外部割り込み 0 (INT0) に優先度 1 を設定する事ができます。

Note: dsPIC33/PIC24の IVT/AIVTに含まれている周辺モジュールと割り込み要因はデバイスごとに異なります。本書には、dsPIC33/PIC24 ファミリの全デバイスを包括した全ての割り込み要因を記載しています。詳細は各デバイスのデータシートを参照してください。

DS70000600D_JP - p. 6 2015 Microchip Technology Inc.

Page 7: 33E 24E FRM Interrupts - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/70000600D_JP.pdf2015 Microchip Technology Inc. DS70000600D_JP - p. 5 割り込み 図1-3: ブートセグメント

割り込み

2.0 ノンマスカブル トラップ

トラップはノンマスカブルでネストが可能な割り込みです。トラップの優先度は固定されています。トラップを使うと、アプリケーションのデバッグ中と動作中に異常動作を修正できます。トラップエラー発生時にユーザ アプリケーションでトラップ条件の修正処理を実行しない場合、トラップベクタにはデバイスリセット用ソフトウェア ルーチンのアドレスを書き込む必要があります。そうでない場合、ユーザ アプリケーションはトラップ条件修正サービスルーチンのアドレスをトラップベクタに書き込む必要があります。

dsPIC33/PIC24 は以下のノンマスカブル トラップ要因を実装しています。

• オシレータ障害トラップ

• スタックエラー トラップ

• アドレスエラー トラップ

• 算術エラートラップ

• DMAC エラートラップ

• 一般ハードトラップ

• 一般ソフトトラップ

多くのトラップ条件では、トラップを引き起こした命令の実行が完了してから例外処理が始まります。従って、トラップを引き起こした命令の動作をユーザ アプリケーションで修正しなければならない場合があります。

各トラップ要因の優先度は IVT/AIVT内の順位によって決まります (優先度は固定されています )。オシレータ障害トラップが 高の優先度を持ち、DMA コントローラ (DMAC) エラートラップが 低の優先度を持ちます ( 図 1-1 参照 )。さらに、トラップ要因はソフトトラップとハードトラップに分類されます。

2.1 ソフトトラップ

DMAC エラートラップ ( 優先度 10)、算術エラートラップ ( 同 11)、スタックエラー トラップ( 同 12) はソフトトラップに分類されます。ソフトトラップは、IVT/AIVT 内の順位によって優先度が決まるノンマスカブル割り込み要因と同様に扱う事ができます。ソフトトラップは割り込みと同様に処理され、例外処理の前に検出と認識のために 2 サイクルを要します。従って、ソフトトラップが認識される前に別の命令が実行される可能性があります。

2.1.1 スタックエラー トラップ ( ソフトトラップ、優先度 12)

スタックはリセット時に 0x1000 に初期化されます。スタックポインタのアドレスが 0x1000 より小さいと、スタックエラー トラップが発生します。

スタックポインタに関連付けられたスタックリミット レジスタ (SPLIM) は、リセット時に初期化されません。SPLIM レジスタにワード書き込みをするまで、スタック オーバーフロー チェックは有効になりません。

W15 を使ってソースまたはデスティネーション ポインタとして生成された全ての実効アドレス (EA) は、SPLIM レジスタの値と比較されます。EA が SPLIM レジスタの値より大きいと、スタックエラー トラップが発生します。また、EA の計算がデータ空間の終端 (0xFFFF) でロールオーバーした場合も、スタックエラー トラップが発生します。

スタックエラーは、INTCON1 レジスタのスタックエラー トラップ ステータスビット(STKERR) をポーリングする事により、ソフトウェアで検出できます。トラップ サービスルーチン (TSR) への再入を防ぐため、STKERR ステータスフラグをソフトウェアでクリアする必要があります。

2015 Microchip Technology Inc. DS70000600D_JP - p. 7

Page 8: 33E 24E FRM Interrupts - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/70000600D_JP.pdf2015 Microchip Technology Inc. DS70000600D_JP - p. 5 割り込み 図1-3: ブートセグメント

DSPIC33/PIC24 ファミリ リファレンス マニュアル

2.1.2 算術エラー トラップ ( ソフトトラップ、優先度 11)

算術エラートラップは、以下のイベントによって発生する可能性があります。

• アキュムレータ A のオーバーフロー

• アキュムレータ B のオーバーフロー

• アキュムレータの致命的オーバーフロー

• ゼロ除算

• ±16 ビットを超えるアキュムレータ シフト (SFTAC) 動作

INTCON1 レジスタの以下の 3 ビットを設定する事で、3 種類のアキュムレータ オーバーフロートラップを有効にできます。

• INTCON1レジスタのアキュムレータAオーバーフロー トラップ イネーブルビット (OVATE)は、アキュムレータ A のオーバーフロー イベントに対するトラップを有効にします。

• INTCON1レジスタのアキュムレータBオーバーフロー トラップ イネーブルビット (OVBTE)は、アキュムレータ B のオーバーフロー イベントに対するトラップを有効にします。

• INTCON1 レジスタの致命的オーバーフロー トラップ イネーブル ビット (COVTE) は、アキュムレータ A または B の致命的オーバーフロー イベントに対するトラップを有効にします。

これらのトラップが検出されると、その内容に応じてINTCON1レジスタ内の以下のエラービットがセットされます。

- アキュムレータ A オーバーフロー トラップ フラグビット (OVAERR)

- アキュムレータ B オーバーフロー トラップ フラグビット (OVBERR)

- アキュムレータ A 致命的オーバーフロー トラップ フラグビット (COVAERR)

- アキュムレータ B 致命的オーバーフロー トラップ フラグビット (COVBERR)

アキュムレータ A ( または B) のオーバーフローとは、アキュムレータ A ( または B) で bit 31 からの桁上げが発生した事を意味します。31 ビット飽和モードを有効にしているアキュムレータでは、オーバーフローは発生しません。致命的オーバーフローとは、どちらかのアキュムレータで bit 39 からの桁上げが発生した事を意味します。アキュムレータ飽和 (bit 31 または 39) を有効にした場合、致命的オーバーフローは発生しません。

ゼロ除算トラップは無効にできません。ゼロ除算は、除算命令を実行する REPEATループの初回実行時にチェックされます。ゼロ除算が検出されると、INTCON1 レジスタのゼロ除算エラーステータスビット (DIV0ERR) がセットされます。

アキュムレータ シフトトラップは無効にできません。SFTAC 命令を使うと、リテラル値またはいずれかのワーキング レジスタ内の値を使ってアキュムレータをシフトできます。シフト値が ±16 ビットを超えると算術エラートラップが発生し、INTCON1 レジスタのアキュムレータシフトエラー ステータスビット (SFTACERR) がセットされます。この場合、SFTAC命令は実行されますが、シフト結果は対象のアキュムレータに書き込まれません。

算術エラートラップは、INTCON1レジスタの算術エラー ステータスビット (MATHERR)をポーリングする事により、ソフトウェアで検出できます。トラップ サービスルーチンへの再入を防ぐため、MATHERR ステータスフラグをソフトウェアでクリアする必要があります。MATHERRステータスビットをクリアする前に、トラップの発生原因となった全ての条件をクリアする必要があります。アキュムレータ オーバーフローによるトラップが発生した場合、SR レジスタのアキュムレータ オーバーフロー ビット (OA または OB) をクリアする必要があります。

2.1.3 DMAC エラー トラップ ( ソフトトラップ、優先度 10)

ダイレクト メモリアクセス (DMAC) エラートラップは以下の条件で発生します。

• RAM 書き込みコリジョン

• DMA 対応周辺モジュールの RAM 書き込みコリジョン

書き込みコリジョン エラーは、ノンマスカブル CPU トラップイベントを保証するためのシステム整合性に重大な影響を及ぼします。CPU と DAM チャンネルが同時に同一アドレスに書き込みを試みた場合、CPU が優先されます (DMA 書き込みは無視 )。この場合 DMAC エラートラップが発生し、INTCON1 レジスタの DMAC エラートラップ ステータスビット (DMACERR)がセットされます。

2.1.4 一般ソフトトラップ ( 優先度 13)

一般ソフトトラップは、INTCON3 レジスタ内のいずれかのビットがセットされた時に発生します。INTCON3 レジスタ内の各ビットは、それぞれ特定のトラップエラー条件に割り当てられています。

DS70000600D_JP - p. 8 2015 Microchip Technology Inc.

Page 9: 33E 24E FRM Interrupts - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/70000600D_JP.pdf2015 Microchip Technology Inc. DS70000600D_JP - p. 5 割り込み 図1-3: ブートセグメント

割り込み

2.1.5 USB アドレスエラー ソフトトラップ (UAE)

USB エンドポイントは全て RAM 内のバッファとして実装されます。バッファには、CPU とUSB モジュールのどちらからもアクセスできます。

アプリケーションでは、エンドポイント バッファ記述子テーブル (BDT) を使って、エンドポイント バッファとその他のデータの位置を指定します。エンドポイント BDT のサイズは 512 バイトです。エンドポイント BDT は、各エンドポイントに対応するエントリ (「エンドポイント記述子」と呼ぶ ) を格納します。エンドポイント バッファ記述子用の空間は、エンドポイントが有効であっても無効であっても関係なく割り当てられます。

エンドポイント BDT の開始アドレスはアプリケーションで指定します。この 32 ビットアドレスは UxBDTP1、UxBDTP2、UxBDTP3 レジスタで指定しますが、アドレスを 512 バイト境界に配置する必要があります ( つまり、アドレスの下位 9 ビットは 0 である事が必要です )。

UxBDTP1、UxBDTP2、UxBDTP3 レジスタが未実装メモリ領域またはバッファの任意の 512 バイトを指すアドレスに初期化された場合、 USB モジュールは未実装メモリにアクセスする結果となり、USB アドレスエラー ソフトトラップが発行されて UAE ビットがセットされます。その他の情報については『dsPIC33E/PIC24E ファミリ リファレンス マニュアル、セクション 25.USB On-The-Go (OTG)』(DS70571) を参照してください。

2.1.6 DMA アドレスエラー ソフトトラップ (DAE)

ダイレクトメモリ アクセス (DMA) コントローラは、周辺モジュール用データレジスタとデータ空間 (SRAM) の間でデータを転送します。DMA モジュールが未実装メモリアドレスにアクセスを試みると、DMA アドレスエラー ソフトトラップが発行され、DAE ビットがセットされます。その他の情報については『dsPIC33E/PIC24E ファミリ リファレンス マニュアル、セクション 22. ダイレクト メモリアクセス (DMA)』(DS70348) を参照してください。

2.1.7 DOスタック オーバーフロー ソフトトラップ (DOOVR)

大で 4 重にネストした DOループをハードウェアで実行できます。CORCON レジスタの DOレベルビット (DL<2:0>) は、DO ループのネストの深さを示し、DO スタックを指定するために使います。これらのビットは、DO ループがネストされるたびに自動的に更新されます。DO レベルが 0 (DL<2:0> = 000) の場合、DOループはネストされていない (DOステートを保存する必要はない ) 事を意味します。DOレベルが 4 (DL<2:0> = 100) の場合、既に 4 つの DOループがネストされて処理中である事を示します。

DOスタックが既にフル状態(すなわちDL<2:0> = 100: 既に4つのDOループが処理中)である時にユーザがさらに DO ループのネストを試みた場合、DO スタック オーバーフロー ソフトトラップが発行されます (DOOVR = 1)。DO 命令の実行によってトラップが発生した場合、その命令の実行前の DOステートと DOスタックは変更されません。ユーザはフォルト条件の復元を試みるか、タスクを中止するか、デバイスを単純にリセットする事ができます。

2.2 ハードトラップ

ハードトラップは優先度 13 ~ 15 の例外を含みます。アドレスエラー ( 優先度 14) とオシレータエラー ( 同 15) はハードトラップです。

ソフトトラップと同様に、ハードトラップもノンマスカブル割り込み要因です。ただしソフトトラップとは異なり、ハードトラップはトラップを引き起こした命令の実行後に、CPU のコード実行を強制的に停止します。通常のプログラム実行フローは、トラップが認識されて処理されるまで再開しません。

2.2.1 ハードトラップの優先度と競合

トラップの処理中に、それよりも優先度の高いトラップが発生すると、処理中のトラップは割り込まれ、高優先度のトラップが認識 / 処理されます。低優先度トラップは、高優先度トラップの処理が終了するまで保留されます。

どのようなタイプのコード実行であっても、発生した各ハードトラップが認識 / 処理されるまで、コード実行を再開する事はできません。あるハードトラップが保留中 / 認識済み / 実行中のいずれかである時に、これよりも低い優先度のハードトラップが発生した場合、高優先度トラップの処理が完了するまで低優先度トラップを認識できないため、ハードトラップの競合が発生します。

ハードトラップ競合条件では、デバイスが自動的にリセットされます。リセットが発生すると、リセット制御レジスタ (RCON<15>)のトラップ リセットフラグ ステータスビット (TRAPR)がセットされるため、ソフトウェアでリセットの発生を検出できます。詳細は『dsPIC33E/PIC24Eファミリ リファレンス マニュアル、セクション 08. リセット』(DS70602) を参照してください。

2015 Microchip Technology Inc. DS70000600D_JP - p. 9

Page 10: 33E 24E FRM Interrupts - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/70000600D_JP.pdf2015 Microchip Technology Inc. DS70000600D_JP - p. 5 割り込み 図1-3: ブートセグメント

DSPIC33/PIC24 ファミリ リファレンス マニュアル

2.2.2 オシレータ障害トラップ ( ハードトラップ、優先度 15)

オシレータ障害トラップイベントは以下の条件により発生します。

• フェイルセーフ クロックモニタ (FSCM) が有効な時に、システムクロック源の喪失を検出した

• PLL を使って動作中に PLL ロックの喪失を検出した

• FSCM が有効な状態でパワーオン リセット (POR) が発生した時に PLL がロックに失敗した

オシレータ障害トラップイベントは、INTCON1 レジスタのオシレータ障害トラップビット(OSCFAIL) または OSCCON レジスタのクロック障害ビット (CF) をポーリングする事により、ソフトウェアで検出可能です。トラップ サービスルーチンへの再入を防ぐため、OSCFAIL ステータスフラグをソフトウェアでクリアする必要があります。フェイルセーフ クロック監視機能の詳細については、『dsPIC33E/PIC24E ファミリ リファレンス マニュアル、セクション 07.オシレータ』(DS70580) と『dsPIC33E/PIC24E ファミリ リファレンス マニュアル、セクション 30. デバイス構成等のデバイス全体に影響する各種の機能』(DS70618)を参照してください。

2.2.3 アドレスエラー トラップ ( ハードトラップ、優先度 14)

アドレスエラー トラップが発生する可能性のある動作条件には以下が含まれます。

• 不正な位置でデータワード フェッチを試みたこのような条件は、奇数の実効アドレス ( 下位ビット (LSb) が 「1」) を使ってワードアクセスを行う命令を実行した場合に発生します。dsPIC33/PIC24 によるワードアクセスでは、必ず偶数アドレスの境界位置を指定する必要があります。

• ビット操作命令が、奇数の実効アドレス ( 下位ビット (LSb) が「1」) で間接アドレス指定モードを使った

• 未実装のデータアドレス空間からデータフェッチを試みた

• BRA #literal命令または GOTO #literal命令の「literal」が未実装のプログラムメモリ アドレスであった

• dsr/dsw ページが 0 の時に、ページングによるアドレス指定でデータの読み出しまたは書き込みを試みた

• PC が未実装のプログラムメモリ アドレスに変更された後に命令を実行したPC は、値をスタックに書き込んだ後に RETURN命令を実行する事によって変更できます。

アドレスエラー トラップが発生すると、データの破損を防ぐために、データ空間への書き込みは禁止されます。

アドレスエラーは、ADDRERR ステータスビット (INTCON1<3>) をポーリングする事により、ソフトウェアで検出できます。トラップ サービスルーチンへの再入を防ぐため、ADDRERR ステータスフラグをソフトウェアでクリアする必要があります。

2.2.4 一般ハードトラップ

一般ハードトラップは以下の条件で発生します。

• INTCON2 レジスタの SWTRAP ビットがセットされた

• INTCON4 レジスタのいずれかのビットがセットされた

Note: MACクラスの命令では、データ空間が X 領域と Y 領域に分割されます。このような命令では、全ての Y 領域も未実装 X 領域として扱われ、全ての X 領域も未実装Y 領域として扱われます。

Note: ユーザが SWTRAP ビット (INTCON2<13>) を「1」にセットすると、SGHT ビット (INTCON4<0>) が自動的に「1」にセットされ、これによりコード実行は一般ハードトラップ ハンドラへ移行します。トラップハンドラ内では、トラップの再入を防ぐために、SWTRAP および SGHT ビットの両方をクリアする (「0」に設定する ) 必要があります。

DS70000600D_JP - p. 10 2015 Microchip Technology Inc.

Page 11: 33E 24E FRM Interrupts - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/70000600D_JP.pdf2015 Microchip Technology Inc. DS70000600D_JP - p. 5 割り込み 図1-3: ブートセグメント

割り込み

2.3 割り込み命令の無効化

DISI (割り込み無効化 )命令は、 大で 16384命令サイクルの割り込みを無効にします。この命令は、処理時間が重視されるコードセグメントを実行する際に便利です。

DISI命令は優先度1~6の割り込みだけを無効にします。優先度7の割り込みと全てのトラップイベントは、DISI命令がアクティブであっても CPU に割り込む事ができます。

DISI命令は、CPU内の割り込み無効化カウント (DISICNT)レジスタと連動します。DISICNTレジスタが「0」以外の時、優先度 1 ~ 6 の割り込みは無効です。DISICNT レジスタは、命令サイクルごとに 1 つデクリメントします。DISICNT レジスタが「0」までデクリメントすると、優先度 1 ~ 6 の割り込みが再び有効になります。DISI命令で指定する値には、PSV アクセスや命令ストール等によって発生する全てのサイクルが含まれます。

DISICNT レジスタは読み書き可能です。ユーザ アプリケーションで DISICNT レジスタをクリアする事により、先に実行した DISI 命令の効果を早期に終了できます。あるいは、DISINCTレジスタに値を書き込むか加算する事により、割り込み無効化期間を延長できます。

DISICNT レジスタが既に 0 である場合、0 以外の値を書き込んで割り込みを無効にする事はできません。割り込みを無効にするには、 初に DISI命令を実行する必要があります。DISI命令を実行してから DISICNT レジスタがゼロまでデクリメントするまでの間であれば、ユーザアプリケーションで DISINCT レジスタの値を変更して割り込み無効化期間を延長できます。

DISI命令の効果によって割り込みが無効になると、INTCON2レジスタのDISI命令ステータスビット (DISI) がセットされます。

2.3.1 グローバル割り込みイネーブル (GIE) ビット

グローバル割り込みイネーブルビット (GIE) を使うと、全ての割り込みを一括で有効または無効にできます。GIE ビットをクリアした場合の割り込みコントローラの挙動は、CPU の IPLxビット ( レジスタ 4-1 参照 ) を 7 に設定した場合と同様となり、トラップを除く全ての割り込みが無効になります。GIE ビットを再びセットすると割り込みコントローラは IPL 値に基づいて動作し、システムは、以前の割り込み優先度ビットの設定に応じて、以前の動作ステートに戻ります。

Note: DISI命令を使うと、ユーザ割り込み要因を簡単に無効にできます ( ただし、それらの要因中に CPU 優先度 7 の要因が含まれていない場合 )。

Note 1: GIE ビットを変更しても CPU の IPLx ビットは変更されません。

2: GIE ビットをクリアしてから割り込みが無効になるまでに 1 サイクルの遅延が生じます。

2015 Microchip Technology Inc. DS70000600D_JP - p. 11

Page 12: 33E 24E FRM Interrupts - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/70000600D_JP.pdf2015 Microchip Technology Inc. DS70000600D_JP - p. 5 割り込み 図1-3: ブートセグメント

DSPIC33/PIC24 ファミリ リファレンス マニュアル

2.4 割り込み動作

全ての割り込みイベントフラグは各命令サイクルで監視されます。保留中の割り込み要求(IRQ)は、IFSx レジスタ内のフラグビット = 1によって示されます。割り込みイネーブル制御 (IECx)レジスタ内の対応するビットがセットされていれば、IRQ によって割り込みが発生します。IRQが検出された命令サイクルの残りの期間中に、保留中の全ての IRQ の優先度が評価されます。

CPU が IRQ に応答する際、実行中の命令は中断されません。すなわち、IRQ が検出された時に実行中であった命令が完了してから、割り込みサービスルーチン (ISR) が実行されます。

現在のプロセッサ優先度 (IPL<2:0>ステータスビット (SR<7:5>))よりも高いユーザ割り当て優先度を持つ保留 IRQ が存在すると、プロセッサに対する割り込みが発生します。この場合プロセッサは、以下の情報をソフトウェア スタックに保存します。

• 現在のプログラム カウンタ (PC) の値

• 割り込みサイクルの開始直前に下位バイト プロセッサ ステータスレジスタ (SRL) に格納されていたプロセッサ優先度 (IPL<2:0>) の値

• IPL3 ステータスビット (CORCON<3>) の値

• SFA: スタックフレーム アクティブ (CORCON<2>)

これにより、戻り PC アドレス値、MCU ステータスビット、現在のプロセッサ優先度が自動的に保存されます。

これらの情報をスタックに保存した後に、CPU はその保留割り込みの優先度を IPL<2:0> ビットに書き込みます。この動作は、RETFIE命令によって ISR が終了するまでの間、その ISR の優先度以下の全ての割り込みを無効にします。

図 2-1: 割り込みイベントのスタック動作

<Free Word>

PC<15:1>

PC<22:16>

015

W15 (before call)(1)

W15 (after call)(2)

Sta

ck G

row

s To

war

dH

ighe

r A

ddre

ss

SR<7:0>

8 7 1

IPL3

SFA

Note 1: SFA は論理 HIGH 状態

DS70000600D_JP - p. 12 2015 Microchip Technology Inc.

Page 13: 33E 24E FRM Interrupts - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/70000600D_JP.pdf2015 Microchip Technology Inc. DS70000600D_JP - p. 5 割り込み 図1-3: ブートセグメント

割り込み

2.4.1 割り込みからの復帰

RETFIE ( 割り込みからの復帰 ) 命令は、割り込みシーケンス開始前のプロセッサの状態と優先度を復元するために、PC 戻りアドレス、IPL3 ステータスビット、SFA ビット、SRL レジスタをアンスタックします。

2.4.2 割り込みのネスティング

既定値状態では割り込みのネスティングが可能です。つまり、実行中の ISR よりも高いユーザアプリケーション割り当て優先度を持つ割り込み要因は、その ISR に割り込む事ができます。割り込みのネスティングは、INTCON1 レジスタの割り込みネスティング ディセーブル ビット(NSTDIS) をセットする事により無効にできます。NSTDIS 制御ビットをセットすると、 実行中の割り込みは常に IPL<2:0> を 111に設定します ( すなわち CPU 優先度を強制的に 7 に設定します )。この操作は、RETFIE 命令によって実行中の ISR が終了するまでの間、他の割り込み要因をマスクします。割り込みネスティングを無効にした場合、ユーザ アプリケーション割り当て割り込み優先度 (IPL) は、保留中の割り込み間で競合を解消する以外の効果を持ちません。

また、IPL<2:0> ビット (SR<7:5>) は読み出し専用になります。これにより、ユーザ アプリケーションが IPL<2:0> を 111 ( 優先度 7) より低い値に設定してしまう事 ( すなわち割り込みのネスティングを実質的に有効にしてしまう事 ) を防ぎます。

図 2-2 に、ネスティングされた割り込みシーケンスの代表例を示します。この例では 2 つの周辺モジュールと代替ワーキング レジスタを使っています。一部のデバイスは代替ワーキング レジスタを備えていません。デバイスが代替ワーキング レジスタ機能を備えているかどうかは、そのデバイスのデータシートを参照してください。この例では、Timer1 (T1IP) の割り込み優先度は 4 に設定され、PWM1 モジュール (PWM1IP) の割り込み優先度は 6 に設定されています。従って、PWM1 モジュールの方が Timer1 よりも高優先度です。加えて、代替ワーキング レジスタセット 1 の優先度は 4 に設定され、代替ワーキング レジスタセット 2 の優先度は 6 に設定されています。代替ワーキング レジスタセットの詳細は、『dsPIC33E/PIC24E ファミリ リファレンス マニュアル、セクション 02. CPU』(DS70359) を参照してください。

図 2-2 に示すように、アプリケーションは、既定値ワーキング レジスタを使ってメイン アプリケーション コード内で始まります。Timer1 モジュールによって割り込みが発生すると、即座に Timer1 割り込みフラグ (T1IF) がセットされます。Timer1 の割り込み優先度は、FALTREGレジスタのCTXT1およびCTXT2ビットフィールドの値と比較されます。上記のように、Timer1の割り込み優先度 (T1IP) は、ワーキング レジスタセット 1 の割り込み優先度 (CTXT1) と同じです。従って、Timer1 ISR の処理には代替ワーキング レジスタセット 1 が使われます。Timer1ISR の実行中に、PWM1 モジュールによって割り込みが発生し、PWM1 の割り込みフラグ(PWM1IF) がセットされます。PWM1 モジュールは Timer1 よりも高い優先度を持つため、コードは PWM1 ISR の処理へジャンプします。PWM1 の割り込み優先度 (PWM1IP) は、CTXT1 および CTXT2 と比較されます。PWM1 の割り込み優先度は CTXT2 に等しいため、PWM ISR の処理にはワーキング レジスタセット 2 が使われます。PWM1 ISR の処理が終了すると PWM1IFフラグはクリアされ、RETFIE ( 割り込みからの復帰 ) 命令がプログラム カウンタとステータス レジスタをアンスタックします。これにより、プロセッサは、この割り込みシーケンスが始まる前の状態に戻ります。

制御が Timer1 ISR に返され、これにより代替ワーキング レジスタセット 1 が再び使われます。Timer1 ISR が処理を完了すると T1IF フラグがクリアされ、RETFIE 命令が再び呼び出されます。これによりアプリケーションは初期状態に戻り、次の周辺モジュール割り込みが発生するまで既定値のワーキング レジスタセットを使います。

Note: 代替ワーキング レジスタをオプションとして提供するデバイスでは、割り込みのネスティングを無効にした特殊なケースで代替ワーキング レジスタを使うべきではありません。

2015 Microchip Technology Inc. DS70000600D_JP - p. 13

Page 14: 33E 24E FRM Interrupts - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/70000600D_JP.pdf2015 Microchip Technology Inc. DS70000600D_JP - p. 5 割り込み 図1-3: ブートセグメント

DSPIC33/PIC24 ファミリ リファレンス マニュアル

図 2-2: ネスティングした割り込みシーケンス

例 2-1: コンフィグレーション レジスタの設定

Note: 図 2-2 の例は、アプリケーション ソフトウェアが例 2-1 に示す設定用コードを含んでいると想定しています。

1. 第 1 の割り込み処理

a) Timer1割り込みフラグ (T1IF)がセット

される。

b) T1IP は FALTREG レジスタの CTXT1およびCTXT2ビットの両方と比較され

る。

c) T1IPはCTXT1に等しいため、代替ワー

キング レジスタセット 1がTimer1 ISRの処理に使われる。

d) Timer1 ISR の処理中に PWM1 割り込

みフラグ (PWM1IF) がセットされる。

e) PWM ISR から戻る。

f) Timer1 ISR 処理を再開し、完了する。

T1IF フラグがクリアされる。

g) RETFIE ( 割り込みからの復帰 )命令がプログラム カウンタとステータ

ス レジスタをアンスタックする事で、

処理は第 1 の割り込みシーケンスが始

まる前の状態に戻る。

-メイン アプリケーションと既定値ワー

キング レジスタに戻る。

2. 第 2 の割り込み処理

a) PWM1IP は FALTREG レジスタの

CTXT1 および CTXT2 ビットの両方と

比較される。

b) PWM1IP は CTXT2 に等しいため、代替

ワーキング レジスタセット 2 が PWM1ISR の処理に使われる。

c) PWM1 ISR の処理が完了し、PWM1IFフラグがクリアされる。

d) RETFIE ( 割り込みからの復帰 ) 命令が

プログラム カウンタとステータス レジ

スタをアンスタックする事で、処理は

第 2 の割り込みシーケンスが始まる前

の状態に戻る。

MAIN APPWorking

Registers

Timer1 ISRAlternateWorkingRegister

Set 1

PWM1 ISRAlternateWorkingRegister

Set 2

1st Interrupt Occurs

2nd Interrupt Occurs

_FALTREG (CTXT1_IPL4 & CTXT2_IPL6); // Where CTXT1 represents IPL for working register set 1// and CTXT2 represents IPL for working register set 2

IPC0bits.T1IP = 4; // Timer1 interrupt priority level = 4IPC23bits.PWM1IP = 6; // PWM1 interrupt priority level = 6

DS70000600D_JP - p. 14 2015 Microchip Technology Inc.

Page 15: 33E 24E FRM Interrupts - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/70000600D_JP.pdf2015 Microchip Technology Inc. DS70000600D_JP - p. 5 割り込み 図1-3: ブートセグメント

割り込み

2.5 スリープおよびアイドルからの復帰

IECx レジスタ内の制御ビットで有効にされた割り込み要因は、いずれもプロセッサをスリープまたはアイドルから復帰させる事ができます。ある要因の割り込みステータスフラグがセットされ、かつ IEC制御レジスタ内の対応するビットでその割り込み要因が有効にされている場合、復帰信号が dsPIC33/PIC24 CPU へ送られます。デバイスがスリープまたはアイドルから復帰すると、次のいずれかの動作が発生します。

• その要因の割り込み優先度が現在の CPU 優先度よりも高い場合、プロセッサは割り込みを処理します ( すなわち、その割り込み要因の ISR に分岐します )。

• その要因に対してユーザ アプリケーションが割り当てた割り込み優先度が現在の CPU 優先度以下である場合、プロセッサは CPU をスリープまたはアイドルに移行させた PWRSAV 命令の直後の命令から動作を再開します。

2.6 外部割り込みサポート

dsPIC33/PIC24 は、 大で 5 つの外部割り込みピン要因 (INT0 ~ INT4) をサポートします。各外部割り込みピンは、割り込みイベント検出用のエッジ検出回路を備えます。INTCON2 レジスタは、各エッジ検出回路の極性を選択するための 5 つの制御ビット (INT0EP ~ INT4EP) を備えます。これらのビットにより、各外部割り込みピンの極性 ( 立ち上がり / 立ち下がりのどちらのエッジで CPU に割り込むか ) を個別に設定できます。詳細はレジスタ 4-4 を参照してください。

2.6.1 アナログ - デジタル コンバータ (ADC) の外部変換要求

一部のデバイスでは、INT0 外部割り込み要求ピンは、ADC 向けの外部変換要求信号ピンとしても使えます。INT0割り込み要因と同様に、ADC外部変換要求でもエッジ極性を選択できます。

Note: 優先度 0 を割り当てられたユーザ割り込み要因は実質的に無効であるため、CPUをスリープまたはアイドルから復帰させる事はできません。割り込みを復帰要因として使うには、そのユーザ割り込み要因に 1 以上の優先度を割り当てる必要があります。

2015 Microchip Technology Inc. DS70000600D_JP - p. 15

Page 16: 33E 24E FRM Interrupts - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/70000600D_JP.pdf2015 Microchip Technology Inc. DS70000600D_JP - p. 5 割り込み 図1-3: ブートセグメント

DSPIC33/PIC24 ファミリ リファレンス マニュアル

3.0 割り込み処理タイミング

3.1 1 サイクル命令に対する割り込みレイテンシ

図3-1に、1サイクル命令の実行中に周辺モジュール割り込みが要求された場合のイベント シーケンスを示します。割り込み処理には 10 命令サイクルを要します。図の各割り込み処理サイクルには、参照番号 ( 丸囲み番号 ) を表記しています。

命令サイクル中に周辺モジュール割り込みが発生すると、割り込みフラグ ステータスビットがセットされます。実行中の命令はこの命令サイクル内で完了します。割り込み発生の次の命令サイクル②では、PC と下位バイト ステータスレジスタ (SRL) の内容をテンポラリ バッファ レジスタに保存します。この命令サイクル②では、2 サイクル命令に対する割り込みシーケンスとの整合性を保つために、NOP を実行します (3.2「2 サイクル命令に対する割り込みレイテンシ」参照 )。命令サイクル③では、割り込み要因のベクタテーブル アドレスを PC に書き込み、ISR の開始アドレスをフェッチします。命令サイクル④では、PC に ISR アドレスを書き込みます。このサイクルは NOPとして実行し、この間に ISR 内の先頭命令をフェッチします。

図 3-1: 1 サイクル命令実行中に割り込みが発生した場合のタイミング

11

FNOP

1 2 3 4 5 86 7 9 10

INST INST FNOPFNOP FetchVector

FNOP FNOP FNOPFNOP FNOPISR

PC + 2

4 6 6 6 6 6CPU Priority

Interrupt FlagStatus bit

InstructionExecuted

44

12 13

6

ISR

14

6

PUSH Low 16 bits of PC

PUSH SRL and High 8 bits of PCSave PC in

Peripheral Interrupt EventOccurs At or Before Midpoint

TemporaryBuffer

of this Cycle

(from temporary buffer)

(from temporary buffer)

(PC – 2)

4 444

Fetch(PC)

CPU IRQ

PC Vector # ISR

DS70000600D_JP - p. 16 2015 Microchip Technology Inc.

Page 17: 33E 24E FRM Interrupts - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/70000600D_JP.pdf2015 Microchip Technology Inc. DS70000600D_JP - p. 5 割り込み 図1-3: ブートセグメント

割り込み

3.2 2 サイクル命令に対する割り込みレイテンシ

2 サイクル命令実行中の割り込みレイテンシは、1 サイクル命令の場合と同じです。割り込み処理のサイクル①と②により、2 サイクル命令の動作を完了する事ができます。図 3-2 は、2 サイクル命令実行前のサイクル中に周辺モジュール割り込みイベントが発生した場合のタイミング図です。

図 3-3 は、2 サイクル命令の第 1 サイクル実行中に周辺モジュール割り込みイベントが発生した場合のタイミング図です。この場合の割り込み処理は 1 サイクル命令の場合 (3.1「1 サイクル命令に対する割り込みレイテンシ」参照 ) と同じです。

図 3-2: 2 サイクル命令実行前のサイクル中に割り込みが発生した場合のタイミング

図 3-3: 2 サイクル命令の第 1 サイクル実行中に割り込みが発生した場合のタイミング

11

FNOP

1 2 3 4 5 86 7 9 10

FNOPFNOP FetchVector

FNOP FNOPFNOP FNOPISR

PC + 2

4 6 6 6 6 6CPU Priority

Interrupt FlagStatus bit

INSTExecuted

44

12 13

6

ISR

14

6

PUSH Low 16 bits of PC

PUSH SRL and High 8 bits of PCSave PC in

Peripheral Interrupt EventOccurs At or Before Midpoint

TemporaryBuffer

of this Cycle

(from temporary buffer)

(from temporary buffer)

4 444

FetchINST

1stCycle

INST

2ndCycle

INST(PC – 2)

CPU IRQ

PC Vector # ISR

FNOPFNOPFNOP FetchVector

FNOP FNOPFNOP FNOPISR

PC + 2

4 6 6 6 6 6CPU Priority

nterrupt FlagStatus bit

INSTExecuted

44 6

ISR

6

PUSH Low 16 bits of PC

PUSH SRL and High 8 bits of PCSave PC in

Peripheral Interrupt EventOccurs At or Before Midpoint

TemporaryBuffer

of this Cycle

(from temporary buffer)

(from temporary buffer)

4 444

FetchINST1st

INST2nd

Cycle

INST(PC – 2)

ISR + 2

Cycle

CPU IRQ

111 2 3 4 5 86 7 9 10 12 13 14

PC Vector # ISR

2015 Microchip Technology Inc. DS70000600D_JP - p. 17

Page 18: 33E 24E FRM Interrupts - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/70000600D_JP.pdf2015 Microchip Technology Inc. DS70000600D_JP - p. 5 割り込み 図1-3: ブートセグメント

DSPIC33/PIC24 ファミリ リファレンス マニュアル

3.3 割り込みからの戻り

割り込みから戻るには、プログラムで RETFIE命令を呼び出す必要があります。

RETFIE命令のサイクル①と②では、PC と SRL レジスタの内容をスタックからポップします。サイクル③では、更新されたプログラム カウンタが指すアドレスの命令をフェッチします。このサイクルは NOP命令として実行します。サイクル④では、割り込み発生位置からプログラム実行を再開します。

図 3-4: 割り込みからの戻りのタイミング

3.4 例外レイテンシ

割り込みレイテンシは、固定レイテンシまたは可変レイテンシとして選択できます。例外プロセスは、これら 2 つのモードのどちらかで実行できます。このモードは、コア制御レジスタのVAR ビット (CORCON<15>) の状態によって決まります。

3.4.1 固定レイテンシ (VAR = 0 かつ CPU が 優先マスタ )

VAR = 0 ( 既定値のリセット状態 ) かつ CPU が 高優先度の EDS バスマスタ (MSTRPR<2:0>= 000) である場合、CPU は優先度の高い例外に対しても常に一定のレイテンシで応答します。割り込みレイテンシとは、割り込みが認識されてから ISR の先頭命令が実行されるまでの遅延時間を意味します。固定レイテンシモードでは、TBLRDx命令や PSV アクセスを要求する命令を含む全ての命令に対して、割り込みレイテンシは一定です。

ただし以下の状況では、割り込みレイテンシが変化します。

• PSV を介してデータにアクセスする MOV.D命令では、次の PSV フェッチを完了するために1 サイクルが追加されます。

• ストールサイクルに関連する TBLRDxまたは PSV アクセス命令では、1 サイクルが追加されます。

• PSV アクセスの繰り返し実行では、 後の繰り返しで 1 サイクルが追加されます。

3.4.2 可変レイテンシ (VAR = 1 かつ CPU が 優先マスタ )

VAR = 1かつ CPU が 高優先度の EDS バスマスタ (MSTRPR<2:0> = 000) である場合、CPUは全ての例外に対して可変レイテンシで応答します。複数の割り込みを有効にしてデバイスをネスト無効モードで動作させる場合、割り込みの処理中に、それよりも高い優先度を持つ割り込み要求が発生する可能性があります。従って、 も長い ISR を実行するのに必要な時間を大レイテンシに追加する必要があります。

VAR = 0の場合、例外処理には 13 命令サイクルのフラッシュアクセス時間 (60 MHz の動作速度で 216 ns) が要求されます。

VAR = 1の場合、例外処理時間は一定ではなく、9 ~ 13 命令サイクルのフラッシュアクセス時間 (60 MHz の動作速度で 150 ~ 216 ns) が要求されます。

4 4 4 46 4CPUPriority

RETFIE RETFIEINSTExecuted

FNOPISR Last

6

ISR + 2PC

2nd Cycle

TCY

Instruction

1 2 3 4 5

FNOP FNOP

PC

6

4

PC

7

FNOP

ISR

DS70000600D_JP - p. 18 2015 Microchip Technology Inc.

Page 19: 33E 24E FRM Interrupts - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/70000600D_JP.pdf2015 Microchip Technology Inc. DS70000600D_JP - p. 5 割り込み 図1-3: ブートセグメント

割り込み

3.5 割り込みレイテンシに関する特殊な条件

dsPIC33/PIC24 では、命令の実行中に発生した周辺モジュール割り込み要因を保留して、命令の実行を完了させる事ができます。1 サイクル命令と 2 サイクル命令の割り込みレイテンシはどちらも同じです。しかし、割り込みの発生タイミングによっては、割り込みレイテンシが1 サイクル増える場合があります。アプリケーションがこのようなレイテンシの変化を受け付けない場合、以下の動作を避ける必要があります。

• PSV を使ってプログラムメモリ空間内の値にアクセスする MOV.D命令の実行

• 2 サイクル命令に対する命令ストールサイクルの追加

• PSV アクセスを行う 1 サイクル命令に対する命令ストールサイクルの追加

• PSVを使ってプログラムメモリ空間内の値にアクセスするビットテストおよびスキップ命令(BTSC、BTSS)

2015 Microchip Technology Inc. DS70000600D_JP - p. 19

Page 20: 33E 24E FRM Interrupts - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/70000600D_JP.pdf2015 Microchip Technology Inc. DS70000600D_JP - p. 5 割り込み 図1-3: ブートセグメント

DSPIC33/PIC24 ファミリ リファレンス マニュアル

4.0 割り込み制御 / ステータス レジスタ

割り込みコントローラは以下のレジスタを使います。

• INTCON1: 割り込み制御レジスタ 1( レジスタ 4-3 ~レジスタ 4-6)

これらのレジスタは、グローバルな割り込み機能を制御します。レジスタ名内の「x」はレジスタ番号を表します。

- INTCON1: 割り込み制御レジスタ 1 は、割り込みネスティング ディセーブル ビット(NSTDIS) と、プロセッサ トラップ要因の制御 / ステータスフラグを格納します。

- INTCON2: 割り込み制御レジスタ 2 は、外部割り込み要求信号の挙動と代替割り込みベクタテーブルの使用を制御します。

- INTCON3: 割り込み制御レジスタ 3 は、ソフトトラップ ステータスビットを制御します。

- INTCON4: 割り込み制御レジスタ 4 は、ソフトウェアが生成するハードトラップのステータスビットを制御します。

• IFSx: 割り込みフラグ ステータス レジスタ (1)

全ての割り込み要求フラグは IFSx レジスタに格納されます (「x」はレジスタ番号 )。各割り込み要因にはステータスビットが割り当てられています。これらのステータスビットは、対応する周辺モジュールまたは外部信号によりセットされ、ソフトウェアでクリアします。

• IECx: 割り込みイネーブル制御レジスタ (1)

全ての割り込みイネーブル制御ビットは IECx レジスタに格納されます (「x」はレジスタ番号 )。これらの制御ビットを使うと、周辺モジュールまたは外部信号からの割り込みを個別に有効にできます。

• IPCx: 割り込み優先度制御レジスタ (1)

各ユーザ割り込み要因には 7 段階の優先度を割り当てる事ができます。IPCx レジスタは、各割り込み要因の割り込み優先度 (IPL) を設定します。

• INTTREG: 割り込み制御 / ステータス レジスタ

このレジスタは、対応する割り込みベクタ番号と、新しい CPU 割り込み優先度を格納します。これらはベクタ番号 (VECNUM<7:0>) および割り込み優先度 (ILR<3:0>) ビットフィールドにラッチされます。新しい割り込み優先度とは、保留中割り込みの優先度の事です。

• SR: ステータス レジスタ

SR そのものは割り込みコントローラ ハードウェアの一部ではありませんが、現在の CPU 優先度を示す IPL<2:0>ステータスビット (SR<7:5>)を格納しています。ユーザ アプリケーションでこの IPLx ビットに書き込む事により、現在の CPU 優先度を変更できます。

• CORCON: コア制御レジスタ

CORCON レジスタそのものは割り込みコントローラ ハードウェアの一部ではありませんが、現在の CPU 優先度を示す IPL3 ステータスビットを格納しています。IPL3 は読み出し専用ビットであるため、ユーザ アプリケーションでトラップイベントをマスクする事はできません。

• FALTREG: 代替ワーキング レジスタセット優先度レジスタ

FALTREG レジスタは割り込みコントローラ ハードウェアの一部ではありませんが、割り込みサービスルーチン (ISR) 処理専用に使える代替ワーキング レジスタセットの割り込み優先度 (CTXT1 および CTXT2 ビットフィールド ) を格納しています。

この後に各レジスタの詳細な説明を記載しています。

Note: 割り込み要因の総数とタイプはデバイスごとに異なります。詳細は各デバイスのデータシートを参照してください。

DS70000600D_JP - p. 20 2015 Microchip Technology Inc.

Page 21: 33E 24E FRM Interrupts - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/70000600D_JP.pdf2015 Microchip Technology Inc. DS70000600D_JP - p. 5 割り込み 図1-3: ブートセグメント

割り込み

レジスタ 4-1: SR: ステータス レジスタ

R-0 R-0 R/C-0 R/C-0 R-0 R/C-0 R-0 R-0

OA OB SA SB OAB SAB DA DC

bit 15 bit 8

R/W-0 R/W-0 R/W-0 R-0 R/W-0 R/W-0 R/W-0 R/W-0

IPL2(1,2) IPL1(1,2) IPL0(1,2) RA N OV Z C

bit 7 bit 0

凡例 : C = クリア可能ビット

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 1 = ビットはセット 0 = ビットはクリア x = ビットは未知

bit 15-8 割り込みコントローラには使用せず

(SR ビットについては、『dsPIC33E/PIC24E ファミリ リファレンス マニュアル、セクション 02. CPU』(DS70359) 参照してください )

bit 7-5 IPL<2:0>: CPU 割り込み優先度ステータスビット (1,2)

111 = CPU 割り込み優先度は 7 (15) ( ユーザ割り込みは無効 )110 = CPU 割り込み優先度は 6 (14)101 = CPU 割り込み優先度は 5 (13)100 = CPU 割り込み優先度は 4 (12)011 = CPU 割り込み優先度は 3 (11)010 = CPU 割り込み優先度は 2 (10)001 = CPU 割り込み優先度は 1 (9)000 = CPU 割り込み優先度は 0 (8)

bit 4-0 割り込みコントローラには使用せず

(SR ビットについては、『dsPIC33E/PIC24E ファミリ リファレンス マニュアル、セクション 02. CPU』(DS70359) 参照してください )

Note 1: IPL<2:0> ビットは、IPL<3> ビット (CORCON<3>) と連結して CPU 割り込み優先度を構成します。カッコ内の値は IPL<3> = 1の場合の優先度です。

2: NSTDIS (INTCON1<15>) = 1 の場合、IPL<2:0> ステータスビットは読み出し専用です。

2015 Microchip Technology Inc. DS70000600D_JP - p. 21

Page 22: 33E 24E FRM Interrupts - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/70000600D_JP.pdf2015 Microchip Technology Inc. DS70000600D_JP - p. 5 割り込み 図1-3: ブートセグメント

DSPIC33/PIC24 ファミリ リファレンス マニュアル

レジスタ 4-2: CORCON: コア制御レジスタ

R/W-0 U-0 R/W-0 R/W-0 R/W-0 R-0 R-0 R-0

VAR — US1 US0 EDT DL2 DL1 DL0

bit 15 bit 8

R/W-0 R/W-0 R/W-1 R/W-0 R/C-0 R-0 R/W-0 R/W-0

SATA SATB SATDW ACCSAT IPL3(1) SFA RND IF

bit 7 bit 0

凡例 : C = クリア可能ビット

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 1 = ビットはセット 0 = ビットはクリア x = ビットは未知

bit 15 VAR: 例外処理可変レイテンシ制御ビット

1 = 例外処理レイテンシを可変にする0 = 例外処理レイテンシを固定にする( 詳細は 3.4「例外レイテンシ」参照 )

bit 14-4 割り込みコントローラには使用せず

(SR ビットについては、『dsPIC33E/PIC24E ファミリ リファレンス マニュアル、セクション 02. CPU』(DS70359) 参照してください )

bit 3 IPL3: CPU 割り込み優先度ステータスビット 3 (1)

1 = CPU 割り込み優先度は 8 以上0 = CPU 割り込み優先度は 7 以下

bit 2-0 割り込みコントローラには使用せず

(SR ビットについては、『dsPIC33E/PIC24E ファミリ リファレンス マニュアル、セクション 02. CPU』(DS70359) 参照してください )

Note 1: IPL3 ビットは IPL<2:0> ビット (SR<7:5>) と連結して CPU 割り込み優先度を構成します。

DS70000600D_JP - p. 22 2015 Microchip Technology Inc.

Page 23: 33E 24E FRM Interrupts - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/70000600D_JP.pdf2015 Microchip Technology Inc. DS70000600D_JP - p. 5 割り込み 図1-3: ブートセグメント

割り込み

レジスタ 4-3: INTCON1: 割り込み制御レジスタ 1

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

NSTDIS OVAERR OVBERR COVAERR COVBERR OVATE OVBTE COVTE

bit 15 bit 8

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 U-0

SFTACERR DIV0ERR DMACERR MATHERR ADDRERR STKERR OSCFAIL —

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 1 = ビットはセット 0 = ビットはクリア x = ビットは未知

bit 15 NSTDIS: 割り込みネスティング ディセーブル ビット

1 = 割り込みネスティングを無効にする0 = 割り込みネスティングを有効にする

bit 14 OVAERR: アキュムレータ A オーバーフロー トラップ フラグビット

1 = アキュムレータ A のオーバーフローによるトラップが発生した0 = アキュムレータ A のオーバーフローによるトラップは発生していない

bit 13 OVBERR: アキュムレータ B オーバーフロー トラップ フラグビット

1 = アキュムレータ B のオーバーフローによるトラップが発生した0 = アキュムレータ B のオーバーフローによるトラップは発生していない

bit 12 COVAERR: アキュムレータ A 致命的オーバーフロー トラップ フラグビット

1 = アキュムレータ A の致命的オーバーフローによるトラップが発生した0 = アキュムレータ A の致命的オーバーフローによるトラップは発生していない

bit 11 COVAERR: アキュムレータ A 致命的オーバーフロー トラップ フラグビット

1 = アキュムレータ A の致命的オーバーフローによるトラップが発生した0 = アキュムレータ A の致命的オーバーフローによるトラップは発生していない

bit 10 COVAERR: アキュムレータ A 致命的オーバーフロー トラップ フラグビット

1 = アキュムレータ A の致命的オーバーフローによるトラップが発生した0 = アキュムレータ A の致命的オーバーフローによるトラップは発生していない

bit 9 OVBTE: アキュムレータ B オーバーフロー トラップ イネーブルビット

1 = アキュムレータ B のオーバーフロー トラップを有効にする0 = このトラップを無効にする

bit 8 COVTE: 致命的オーバーフロー トラップ イネーブルビット

1 = アキュムレータ A または B の致命的オーバーフロー トラップを有効にする0 = このトラップを無効にする

bit 7 SFTACERR: アキュムレータ シフトエラー ステータスビット

1 = 無効なアキュムレータ シフトによる算術エラートラップが発生した0 = 無効なアキュムレータ シフトによる算術エラートラップは発生していない

bit 6 DIV0ERR: ゼロ除算エラー ステータスビット

1 = ゼロ除算によるエラートラップが発生した0 = ゼロ除算によるエラートラップは発生していない

bit 5 DMACERR: DAMC エラートラップ ステータスビット

1 = DMAC トラップが発生した0 = DMAC トラップは発生していない

bit 4 MATHERR: 算術エラー ステータスビット

1 = 算術エラートラップが発生した0 = 算術エラートラップは発生していない

2015 Microchip Technology Inc. DS70000600D_JP - p. 23

Page 24: 33E 24E FRM Interrupts - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/70000600D_JP.pdf2015 Microchip Technology Inc. DS70000600D_JP - p. 5 割り込み 図1-3: ブートセグメント

DSPIC33/PIC24 ファミリ リファレンス マニュアル

bit 3 ADDRERR: アドレスエラー トラップ ステータスビット

1 = アドレスエラー トラップが発生した0 = アドレスエラー トラップは発生していない

bit 2 STKERR: スタックエラー トラップ ステータスビット

1 = スタックエラー トラップが発生した0 = スタックエラー トラップは発生していない

bit 1 OSCFAIL: オシレータ障害トラップ ステータスビット

1 = オシレータ障害トラップが発生した0 = オシレータ障害トラップは発生していない

bit 0 未実装 :「0」として読み出し

レジスタ 4-3: INTCON1: 割り込み制御レジスタ 1 ( 続き )

DS70000600D_JP - p. 24 2015 Microchip Technology Inc.

Page 25: 33E 24E FRM Interrupts - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/70000600D_JP.pdf2015 Microchip Technology Inc. DS70000600D_JP - p. 5 割り込み 図1-3: ブートセグメント

割り込み

レジスタ 4-4: INTCON2: 割り込み制御レジスタ 2

R/W-1 R/W-0 R/W-0 U-0 U-0 U-0 U-0 R/W-0

GIE DISI SWTRAP — — — — AIVTEN

bit 15 bit 8

U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

— — ~ INT4EP INT3EP INT2EP INT1EP INT0EP

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 1 = ビットはセット 0 = ビットはクリア x = ビットは未知

bit 15 GIE: グローバル割り込みイネーブルビット

1 = 割り込みおよび対応する割り込みイネーブルビットを有効にする 0 = 割り込みを無効にする ( トラップは有効なまま )

bit 14 DISI: DISI命令ステータスビット

1 = DISI命令はアクティブ0 = DISI命令は非アクティブ

bit 13 SWTRAP: ソフトウェア トラップ ステータスビット

1 = ソフトウェア トラップは有効0 = ソフトウェア トラップは無効

bit 12-9 未実装 :「0」として読み出し

bit 8 AIVTEN: 代替割り込みベクタテーブル イネーブルビット

1 = 代替割り込みベクタテーブルを使う 0 = 標準割り込みベクタテーブルを使う

bit 7-5 未実装 :「0」として読み出し

bit 4 INT4EP: 外部割り込み 4 エッジ検出極性選択ビット

1 = 立ち下がりエッジで割り込む 0 = 立ち上がりエッジで割り込む

bit 3 INT3EP: 外部割り込み 3 エッジ検出極性選択ビット

1 = 立ち下がりエッジで割り込む 0 = 立ち上がりエッジで割り込む

bit 2 INT2EP: 外部割り込み 2 エッジ検出極性選択ビット

1 = 立ち下がりエッジで割り込む 0 = 立ち上がりエッジで割り込む

bit 1 INT1EP: 外部割り込み 1 エッジ検出極性選択ビット

1 = 立ち下がりエッジで割り込む 0 = 立ち上がりエッジで割り込む

bit 0 INT0EP: 外部割り込み 0 エッジ検出極性選択ビット

1 = 立ち下がりエッジで割り込む 0 = 立ち上がりエッジで割り込む

2015 Microchip Technology Inc. DS70000600D_JP - p. 25

Page 26: 33E 24E FRM Interrupts - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/70000600D_JP.pdf2015 Microchip Technology Inc. DS70000600D_JP - p. 5 割り込み 図1-3: ブートセグメント

DSPIC33/PIC24 ファミリ リファレンス マニュアル

レジスタ 4-5: INTCON3: 割り込み制御レジスタ 3

U-0 U-0 U-0 U-0 U-0 U-0 U-0 R/W-0

— — — — — — — NAE

bit 15 bit 8

U-0 R/W-0 R/W-0 R/W-0 U-0 R/W-0 U-0 R/W-0

— UAE DAE DOOVR — USBPLL(1) — APLL(1)

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 1 = ビットはセット 0 = ビットはクリア x = ビットは未知

bit 15-9 未実装 :「0」として読み出し

bit 8 NAE: NVM アドレスエラー ソフトトラップ ステータスビット

1 = NVM アドレスエラー ソフトトラップが発生した0 = NVM アドレスエラー ソフトトラップは発生していない

bit 7 未実装 :「0」として読み出し

bit 6 UAE: USB アドレスエラー ソフトトラップ ステータスビット

1 = USB アドレスエラー ( ソフト ) トラップが発生した0 = USB アドレスエラー ( ソフト ) トラップは発生していない

bit 5 DAE: DAE アドレスエラー ソフトトラップ ステータスビット

1 = DMA アドレスエラー ソフトトラップが発生した0 = DMA アドレスエラー ソフトトラップは発生していない

bit 4 DOOVR: DOスタック オーバーフロー ソフトトラップ ステータスビット

1 = DOスタック オーバーフロー ソフトトラップが発生した0 = DOスタック オーバーフロー ソフトトラップは発生していない

bit 3 未実装 :「0」として読み出し

bit 2 USBPLL: USB PLL ロック喪失ソフトトラップ ステータスビット (1)

1 = USB PLL ロック喪失トラップが発生した0 = USB PLL ロック喪失トラップは発生していない

bit 1 未実装 :「0」として読み出し

bit 0 APLL: 補助 PLL (APLL) ロック喪失ソフトトラップ ステータスビット (1)

1 = APLL ロック喪失ソフトトラップが発生した0 = APLL ロック喪失ソフトトラップは発生していない

Note 1: 一部のデバイスはこのビットフィールドを備えていません。詳細は各デバイスのデータシートを参照してください。

DS70000600D_JP - p. 26 2015 Microchip Technology Inc.

Page 27: 33E 24E FRM Interrupts - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/70000600D_JP.pdf2015 Microchip Technology Inc. DS70000600D_JP - p. 5 割り込み 図1-3: ブートセグメント

割り込み

レジスタ 4-6: INTCON4: 割り込み制御レジスタ 4

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 15 bit 8

U-0 U-0 U-0 U-0 U-0 U-0 U-0 R/W-0

— - — — — — — SGHT

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 1 = ビットはセット 0 = ビットはクリア x = ビットは未知

bit 15-1 未実装 :「0」として読み出し

bit 0 SGHT: ソフトウェア生成ハードトラップ ステータスビット

1 = ソフトウェア生成ハードトラップが発生した0 = ソフトウェア生成ハードトラップは発生していない

2015 Microchip Technology Inc. DS70000600D_JP - p. 27

Page 28: 33E 24E FRM Interrupts - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/70000600D_JP.pdf2015 Microchip Technology Inc. DS70000600D_JP - p. 5 割り込み 図1-3: ブートセグメント

DSPIC33/PIC24 ファミリ リファレンス マニュアル

レジスタ 4-7: IFSx: 割り込みフラグ ステータス レジスタ (1)

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

IFS<15:8>

bit 15 bit 8

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

IFS<7:0>

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 1 = ビットはセット 0 = ビットはクリア x = ビットは未知

bit 15-0 IFS<15:0>: 割り込みフラグ ステータスビット

1 = 割り込み要求が発生した0 = 割り込み要求は発生していない

Note 1: ここには IFSx レジスタの一般的な定義しか記載していません。正確なビット定義については、各デバイスデータシート内の「割り込みコントローラ」を参照してください。

レジスタ 4-8: IECx: 割り込みイネーブル制御レジスタ (1)

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

IEC<15:8>

bit 15 bit 8

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

IEC<7:0>

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 1 = ビットはセット 0 = ビットはクリア x = ビットは未知

bit 15 IEC<15:0>: 割り込みイネーブル制御ビット

1 = 割り込み要求を有効にする0 = 割り込み要求を無効にする

Note 1: ここには IECx レジスタの一般的な定義しか記載していません。正確なビット定義については、各デバイスデータシート内の「割り込みコントローラ」を参照してください。

DS70000600D_JP - p. 28 2015 Microchip Technology Inc.

Page 29: 33E 24E FRM Interrupts - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/70000600D_JP.pdf2015 Microchip Technology Inc. DS70000600D_JP - p. 5 割り込み 図1-3: ブートセグメント

割り込み

レジスタ 4-9: IPCx: 割り込み優先度制御レジスタ (1)

U-0 R/W-1 R/W-0 R/W-0 U-0 R/W-1 R/W-0 R/W-0

— IP3<2:0> — IP2<2:0>

bit 15 bit 8

U-0 R/W-1 R/W-0 R/W-0 U-0 R/W-1 R/W-0 R/W-0

— IP1<2:0> — IP0<2:0>

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 1 = ビットはセット 0 = ビットはクリア x = ビットは未知

bit 15 未実装 :「0」として読み出し

bit 14-12 IP3<2:0>: 割り込み優先度ビット

111 = 割り込み優先度は 7 ( 優先 )•••001 = 割り込み優先度は 1000 = 割り込み要因は無効

bit 11 未実装 :「0」として読み出し

bit 10-8 IP2<2:0>: 割り込み優先度ビット

これらのビットの定義は bit 14-12 と同じです。

bit 7 未実装 :「0」として読み出し

bit 6-4 IP1<2:0>: 割り込み優先度ビット

これらのビットの定義は bit 14-12 と同じです。

bit 3 未実装 :「0」として読み出し

bit 2-0 IP0<2:0>: 割り込み優先度ビット

これらのビットの定義は bit 14-12 と同じです。

Note 1: ここには IPCx レジスタの一般的な定義しか記載していません。正確なビット定義については、各デバイスデータシート内の「割り込みコントローラ」を参照してください。

2015 Microchip Technology Inc. DS70000600D_JP - p. 29

Page 30: 33E 24E FRM Interrupts - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/70000600D_JP.pdf2015 Microchip Technology Inc. DS70000600D_JP - p. 5 割り込み 図1-3: ブートセグメント

DSPIC33/PIC24 ファミリ リファレンス マニュアル

レジスタ 4-10: INTTREG: 割り込み制御 / ステータス レジスタ

U-0 U-0 U-0 U-0 R-0 R-0 R-0 R-0

— — — — ILR<3:0>

bit 15 bit 8

R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0

VECNUM<7:0>

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = Writable bit U = 未実装ビット、「0」として読み出し

-n = POR 時の値 1 = ビットはセット 0 = ビットはクリア x = ビットは未知

bit 15-12 未実装 :「0」として読み出し

bit 11-8 ILR<3:0>: 新しい CPU 割り込み優先度ビット

1111 = CPU 割り込み優先度は 15•••0001 = CPU 割り込み優先度は 10000 = CPU 割り込み優先度は 0

bit 7-0 VECNUM<7:0>: 保留中割り込みベクタ番号ビット

11111111 = 保留中割り込みのベクタ番号は 263•••00000001 = 保留中割り込みのベクタ番号は 900000000 = 保留中割り込みのベクタ番号は 8

DS70000600D_JP - p. 30 2015 Microchip Technology Inc.

Page 31: 33E 24E FRM Interrupts - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/70000600D_JP.pdf2015 Microchip Technology Inc. DS70000600D_JP - p. 5 割り込み 図1-3: ブートセグメント

割り込み

レジスタ 4-11: FALTREG: 代替ワーキング レジスタセット優先度レジスタ

U-1 U-1 U-1 U-1 U-1 U-1 U-1 U-1

— — — — — — — —

bit 15 bit 8

U-1 R/W-1 R/W-1 R/W-1 U-1 R/W-1 R/W-1 R/W-1

— CTXT2<2:0> — CTXT1<2:0>

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 1 = ビットはセット 0 = ビットはクリア x = ビットは未知

bit 15-7 未実装 :「1」として読み出し

bit 6-4 CTXT2<2:0>: 代替ワーキング レジスタセット 2 割り込み優先度指定ビット

111 = 未使用110 = 優先度 7101 = 優先度 6100 = 優先度 5011 = 優先度 4010 = 優先度 3001 = 優先度 2000 = 優先度 1

bit 3 未実装 :「1」として読み出し

bit 2-0 CTXT1<2:0>: 代替ワーキング レジスタセット 1 割り込み優先度指定ビット

111 = 未使用110 = 優先度 7101 = 優先度 6100 = 優先度 5011 = 優先度 4010 = 優先度 3001 = 優先度 2000 = 優先度 1

2015 Microchip Technology Inc. DS70000600D_JP - p. 31

Page 32: 33E 24E FRM Interrupts - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/70000600D_JP.pdf2015 Microchip Technology Inc. DS70000600D_JP - p. 5 割り込み 図1-3: ブートセグメント

DSPIC33/PIC24 ファミリ リファレンス マニュアル

5.0 割り込みの設定手順

5.1 初期化

割り込み要因の設定手順は以下の通りです。

1. 割り込みをネストしない場合、NSTDIS 制御ビット (INTCON1<15>) をセットします。

2. 割り込み要因のユーザ アプリケーション割り当て優先度を選択します ( 対応する IPCx 制御レジスタの制御ビットに書き込みます )。優先度はアプリケーションと割り込み要因のタイプによって決まります。複数レベルの優先度を設定する必要がない場合、全ての有効割り込み要因の IPCx レジスタ制御ビットをゼロ以外の同じ値に設定できます。

3. 対応する IFSx ステータス レジスタで、その割り込み要因に対応する割り込みフラグ ステータスビットをクリアします。

4. 適切な IECx 制御レジスタで、その割り込み要因に対応する割り込みイネーブル制御ビットをセットして有効にします。

5.2 割り込みサービスルーチン

ISR を宣言して IVT を適正なベクタアドレスに初期化する方法は、プログラミング言語 (C またはアセンブリ ) と、アプリケーションの開発に使う言語 / 開発ツールスイートによって異なります。

一般的にユーザ アプリケーションは、ISR が処理する割り込み要因の割り込みフラグを、対応する IFSx レジスタ内でクリアする必要があります。これをクリアしないと、アプリケーションは ISR ルーチン終了後即座に同じ ISR ルーチンに再入します。ISR をアセンブリ言語でコーディングする場合、保存した PC 値、SRL 値、以前の CPU 優先度をアンスタックするために、RETFIE命令を使って ISR を終了する必要があります。

5.3 トラップサービス ルーチン

TSR も ISR と同様にコーディングできますが、TSR への再入を防ぐため、INTCON1 レジスタ内の適切なトラップ ステータスフラグをクリアする必要があります。

5.4 割り込みの無効化

INTCON2 レジスタの GIE ビットをセットするとユーザ割り込みが有効になります。このビットをクリアすると、割り込みは無効になります。

DISI命令を使うと、優先度1~6の割り込みを簡単に一定期間無効にできます。優先度7の割り込み要因を DISI命令で無効にする事はできません。

Note: デバイスリセット時に IPCx レジスタは初期化され、全てのユーザ割り込み要因に優先度 4 が割り当てられます。

Note: この場合、優先度が 7 以下のユーザ割り込みだけを無効にできます。トラップ要因 ( 優先度 8 ~ 15) は無効にできません。

DS70000600D_JP - p. 32 2015 Microchip Technology Inc.

Page 33: 33E 24E FRM Interrupts - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/70000600D_JP.pdf2015 Microchip Technology Inc. DS70000600D_JP - p. 5 割り込み 図1-3: ブートセグメント

割り込み

5.5 サンプルコード

例 5-1 のサンプルコードは、割り込みのネスティングを有効にして Timer1/Timer2/Timer3/ 入力状態変化通知 (CN) 割り込みをそれぞれ優先度 2/5/6/3/4 に設定する方法と、ステータス レジスタを使って割り込みを有効 / 無効にする方法を示しています。各 ISR には、割り込みフラグをクリアするコードを記入済みです。

例 5-1: 割り込みセットアップのサンプルコード

void enableInterrupts(void){

/* Enable level 1-7 interrupts *//* No restoring of previous CPU IPL state performed here */INTCON2bits.GIE = 1;

return;}

void disableInterrupts(void){

/* Disable level 1-7 interrupts *//* No saving of current CPU IPL setting performed here */

INTCON2bits.GIE = 0;

return;}

void initInterrupts(void){

/* Interrupt nesting enabled here */INTCON1bits.NSTDIS = 0;

/* Set Timer3 interrupt priority to 6 (level 7 is highest) */IPC2bits.T3IP = 6;

/* Set Timer2 interrupt priority to 5 */IPC1bits.T2IP = 5;

/* Set Change Notice interrupt priority to 4 */IPC4bits.CNIP = 4;

/* Set Timer4 interrupt priority to 3 */IPC6bits.T4IP = 3;

/* Set Timer1 interrupt priority to 2 */IPC0bits.T1IP = 2;

/* Reset Timer1 interrupt flag */IFS0bits.T1IF = 0;

/* Reset Timer2 interrupt flag */IFS0bits.T2IF = 0;

/* Reset Timer3 interrupt flag */IFS0bits.T3IF = 0;

/* Reset Timer4 interrupt flag */IFS1bits.T4IF = 0;

/* Enable CN interrupts */IEC1bits.CNIE = 1;

2015 Microchip Technology Inc. DS70000600D_JP - p. 33

Page 34: 33E 24E FRM Interrupts - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/70000600D_JP.pdf2015 Microchip Technology Inc. DS70000600D_JP - p. 5 割り込み 図1-3: ブートセグメント

DSPIC33/PIC24 ファミリ リファレンス マニュアル

例 5-1: 割り込みセットアップのサンプルコード ( 続き )

/* Enable Timer1 interrupt */IEC0bits.T1IE = 1;

/* Enable Timer2 interrupt (PWM time base) */IEC0bits.T2IE = 1;

/* Enable Timer3 interrupt */IEC0bits.T3IE = 1;

/* Enable Timer4 interrupt (replacement for Timer2 */IEC1bits.T4IE = 1;

/* Reset change notice interrupt flag */IFS1bits.CNIF = 0;

return;}

void __attribute__((__interrupt__,no_auto_psv)) _T1Interrupt(void){

/* Insert ISR Code Here*/

/* Clear Timer1 interrupt */IFS0bits.T1IF = 0;

}

void __attribute__((__interrupt__,no_auto_psv)) _T2Interrupt(void){

/* Insert ISR Code Here*/

/* Clear Timer2 interrupt */IFS0bits.T2IF = 0;

}

void __attribute__((__interrupt__,no_auto_psv)) _T3Interrupt(void){

/* Insert ISR Code Here*/

/* Clear Timer3 interrupt */IFS0bits.T3IF = 0;

}

void __attribute__((__interrupt__,no_auto_psv)) _T4Interrupt(void){

/* Insert ISR Code Here*/

/* Clear Timer4 interrupt */IFS1bits.T4IF = 0;

}

void __attribute__((__interrupt__,no_auto_psv)) _CNInterrupt(void){

/* Insert ISR Code Here*/

/* Clear CN interrupt */IFS1bits.CNIF = 0;

}

DS70000600D_JP - p. 34 2015 Microchip Technology Inc.

Page 35: 33E 24E FRM Interrupts - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/70000600D_JP.pdf2015 Microchip Technology Inc. DS70000600D_JP - p. 5 割り込み 図1-3: ブートセグメント

2015

Microchip T

echnology Inc.D

S70000600D

_JP - p. 35

割り込み

ます。

S t 3 Bit 2 Bit 1 Bit 0 全

リセット

INT ERR STKERR OSCFAIL — 0000

INT EP INT2EP INT1EP INT0EP 8000

INT — — APLL 0000

INT — — SGHT 0000

IFS 3 IFS2 IFS1 IFS0 0000

IEC 3 IEC2 IEC1 IEC0 0000

IPC IP0<2:0> 4444

INT UM3 VECNUM2 VECNUM1 VECNUM0 0000

No

6.0 レジスタマップ

dsPIC33/PIC24 ファミリの割り込みモジュールに関連するレジスタをまとめて表 6-1 に示し

6-1: 割り込みコントローラ関連のレジスタマップ (1)

FR 名 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bi

CON1 NSTDIS OVAERR OVBERR COVAERR COVBERR OVATE OVBTE COVTE SFTACERR DIV0ERR DMACTRAP MATHERR ADDR

CON2 GIE DISI SWTRAP — — — — AIVTEN — — — INT4EP INT3

CON3 — — — — — — — NAE — UAE DAE DOOVR —

CON4 — — — — — — — — — — — — —

x IFS15 IFS14 IFS13 IFS12 IFS11 IFS10 IFS9 IFS8 IFS7 IFS6 IFS5 IFS4 IFS

x IEC15 IEC14 IEC13 IEC12 IEC11 IEC10 IEC9 IEC8 IEC7 IEC6 IEC5 IEC4 IEC

x — IP3<2:0> — IP2<2:0> — IP1<2:0> —

TREG — — — — ILR3 ILR2 ILR1 ILR0 VECNUM7 VECNUM6 VECNUM5 VECNUM4 VECN

例 : — = 未実装、「0」として読み出し、リセット値は 16 進表記

te 1: 一部のデバイスでは使えないビットもあります。詳細は各デバイス データシート内の「割り込みコントローラ」を参照してください。

Page 36: 33E 24E FRM Interrupts - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/70000600D_JP.pdf2015 Microchip Technology Inc. DS70000600D_JP - p. 5 割り込み 図1-3: ブートセグメント

DSPIC33/PIC24 ファミリ リファレンス マニュアル

7.0 関連アプリケーション ノート

本セクションに関連するアプリケーション ノートの一覧を下に記載します。一部のアプリケーション ノートは dsPIC33/PIC24 ファミリ向けではありません。ただし概念は共通しており、変更が必要であったり制限事項が存在するものの利用が可能です。割り込みモジュールに関連する 新のアプリケーション ノートは以下の通りです。

タイトル アプリケーション ノート番号

現在、関連するアプリケーション ノートはありません。 N/A

Note: dsPIC33/PIC24 ファミリ関連のアプリケーション ノートとサンプルコードは、Microchip 社のウェブサイト (www.microchip.com) でご覧になれます。

DS70000600D_JP - p. 36 2015 Microchip Technology Inc.

Page 37: 33E 24E FRM Interrupts - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/70000600D_JP.pdf2015 Microchip Technology Inc. DS70000600D_JP - p. 5 割り込み 図1-3: ブートセグメント

割り込み

8.0 改訂履歴

リビジョン A (2009 年 7 月 )

本書の初版です。

リビジョン B (2010 年 4 月 )

本書全体を通して以下の内容を更新しました。

• ビット名の変更 ( 表 6-2: 割り込みコントローラ レジスタマップ参照 )

- DMACTRAP を DMACERR に変更しました ( レジスタ 6-3 参照 )。

- CMPIF を CMIF に変更しました ( レジスタ 6-8 参照 )。

- PCEPIF を PSEMIF に変更しました ( レジスタ 6-10 参照 )。

- PCESIF を PSESMIF に変更しました ( レジスタ 6-11 参照 )。

- CMPIE を CMIE に変更しました ( レジスタ 6-17 参照 )。

- RTCCIE を RTCIE に変更し、PCEPIE を PSEMIE に変更しました ( レジスタ 6-19 参照 )。

- PCESIE を PSESMIE に変更しました ( レジスタ 6-20 参照 )。

- CMPIP を CMIP に変更しました ( レジスタ 6-29 参照 )。

- PCEPIP を PSEMIP に変更しました ( レジスタ 6-39 参照 )。

- RTCCIP を RTCIP に変更しました ( レジスタ 6-40 参照 )。

- PCEPIP を PSESMIP に変更しました ( レジスタ 6-43 参照 )。

その他に以下を更新しました。

• 以下の項目を追加しました。

- 6.2.1.4.1「USB アドレスエラー ソフトトラップ (UAE)」

- 6.2.1.4.2「DMA アドレスエラー ソフトトラップ (DAE)」

- 6.2.1.4.3「DO スタック オーバーフロー ソフトトラップ (DOOVR)」

• 割り込みセットアップ用サンプルコードの void __attribute 行を更新し、 ウォーターマークを削除しました ( 例 6-1 参照 )。

• 表 6-1 内の以下の割り込み要因名を変更しました。

- CMP1 を CM に変更しました ( 割り込みベクタ番号 26 参照 )。

- PCEP を PSEM – PWM 特殊イベント一致に変更しました ( 割り込みベクタ番号 65 参照 )。

- RTCC を RTC に変更しました ( 割り込みベクタ番号 70 参照 )。

- PCES をPSESM – PWM セカンダリ特殊イベント一致に変更しました (割り込みベクタ番号 81 参照 )。

- SI2C3 を予約済みに変更しました ( 割り込みベクタ番号 95 参照 )。

- MI2C3 を予約済みに変更しました ( 割り込みベクタ番号 96 参照 )。

- USBOIG を USB1 に変更しました ( 割り込みベクタ番号 97 参照 )。

- PCG1~PCG7をPWM1~PWM7に変更しました (割り込みベクタ番号105~ -111参照 )。

• レジスタの追加と削除 ( 表 6-2: 割り込みコントローラ レジスタマップ参照 )

- レジスタ 6-2 に VAR ビットの定義を追加しました。

- 6.2.2.4「一般ハードトラップ」に、ハードトラップの動作を説明する網掛け注釈を追加しました。

- 割り込み制御レジスタ 2( レジスタ 6-4 参照 ) 内の GIE ビットの POR 時の既定値を「0」から「1」に変更しました。

- IFS3 から FLT1IF ビットを削除しました ( レジスタ 6-10 参照 )。

- IFS4 に CRCIF ビットを追加し FLT4IF、FLT3IF、FLT2IF ビットを削除しました ( レジスタ 6-11 参照 )。

- IFS5 から MI2C3IF および SI2C3IF ビットを削除しました ( レジスタ 6-12 参照 )。

- IFS6 から PWM9IF および PWM7IF ビットを削除しました ( レジスタ 6-13 参照 )。

- IFS8 に ICDIF および DMA12IF ビットを追加しました ( レジスタ 6-15 参照 )。

- IEC3 から FLT1IE ビットを削除しました ( レジスタ 6-19 参照 )。

- IEC4 から FLT4IE および FLT3IE ビットを削除しました ( レジスタ 6-20 参照 )。

- IEC6 から PWM9IE および PWM8IE ビットを削除しました ( レジスタ 6-22 参照 )。

2015 Microchip Technology Inc. DS70000600D_JP - p. 37

Page 38: 33E 24E FRM Interrupts - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/70000600D_JP.pdf2015 Microchip Technology Inc. DS70000600D_JP - p. 5 割り込み 図1-3: ブートセグメント

DSPIC33/PIC24 ファミリ リファレンス マニュアル

リビジョン B (2010 年 1 月 ) ( 続き )

• レジスタの追加と削除 ( 続き ) ( 表 6-2: 割り込みコントローラのレジスタマップ参照 )。

- IEC8 に ICDIE および DMA12IE ビットを追加しました ( レジスタ 6-24 参照 )。

- IPC15 から FLT1IP<2:0> ビットを削除しました ( レジスタ 6-40 参照 )。

- IPC16 から FLT2IP<2:0> ビットを削除しました ( レジスタ 6-41 参照 )。

- IPC18 から FLT3IP<2:0> ビットを削除しました ( レジスタ 6-43 参照 )。

- IPC19 を削除しました ( 元はレジスタ 6-44 でした )。

- IPC21からMI2C3IP<2:0>およびSI2C3IP<2:0>ビットを削除しました(レジスタ6-45参照)。

- IPC35 に ICDIP<2:0> ビットを追加しました ( レジスタ 6-56 参照 )。

- INTTREG内のVECNUMビットを<6:0>から<7:0>に変更しました (レジスタ 6-57参照 )。

リビジョン C (2012 年 2 月 )

このリビジョンでの変更内容は以下の通りです。

• 4.0「割り込み制御/ステータス レジスタ」にINTTREGレジスタに関する段落を追加しました。

• 割り込みベクタの詳細 ( 表 6-1) を削除しました。

• 6.4.1「制御レジスタに対する割り込みの割り当て」を削除しました。

• IFSx、IECx、IPCxレジスタのフォーマットを変更しました(レジスタ4-7~レジスタ4-9参照)。

• CPU IRQ を割り込みタイミング図に追加しました ( 図 3-1 ~図 3-3 参照 )。

• 表現および体裁の変更等、本書全体の細部を修正しました。

リビジョン D (2013 年 10 月 )

このリビジョンでの変更内容は以下の通りです。

• 新しいテンプレート書式を適用しました。

• 図 1-1 に Note を追加しました。

• 代替割り込みベクタテーブル ( 図 1-2) を追加しました。

• 1.2「代替割り込みベクタテーブル (AIVT)」を追加しました。

• 図 2-2:「ネスティングした割り込みシーケンス」を追加しました。

• 例 2-1 を追加しました。

• AIVTEN、NAE、APPL、FALTREG ビットの説明を追加しました。

• 表現および体裁の変更等、本書全体の細部を修正しました。

DS70000600D_JP - p. 38 2015 Microchip Technology Inc.

Page 39: 33E 24E FRM Interrupts - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/70000600D_JP.pdf2015 Microchip Technology Inc. DS70000600D_JP - p. 5 割り込み 図1-3: ブートセグメント

2015 Microchip Technology Inc. DS70000600D_JP - p. 39

本書に記載されているデバイス アプリケーション等に関する

情報は、ユーザの便宜のためにのみ提供されているものであ

り、更新によって無効とされる事があります。お客様のアプ

リケーションが仕様を満たす事を保証する責任は、お客様に

あります。Microchip 社は、明示的、暗黙的、書面、口頭、法

定のいずれであるかを問わず、本書に記載されている情報に

関して、状態、品質、性能、商品性、特定目的への適合性を

はじめとする、いかなる類の表明も保証も行いません。

Microchip 社は、本書の情報およびその使用に起因する一切の

責任を否認します。Microchip 社の明示的な書面による承認な

しに、生命維持装置あるいは生命安全用途に Microchip 社の製

品を使用する事は全て購入者のリスクとし、また購入者はこ

れによって発生したあらゆる損害、クレーム、訴訟、費用に

関して、Microchip 社は擁護され、免責され、損害をうけない

事に同意するものとします。暗黙的あるいは明示的を問わず、

Microchip社が知的財産権を保有しているライセンスは一切譲

渡されません。

商標

Microchip 社の名称と Microchip ロゴ、dsPIC、FlashFlex、KEELOQ、KEELOQ ロゴ、MPLAB、PIC、PICmicro、PICSTART、PIC32 ロゴ、rfPIC、SST、SST ロゴ、SuperFlash、UNI/O は、

米国およびその他の国における Microchip TechnologyIncorporated の登録商標です。

FilterLab、Hampshire、HI-TECH C、Linear Active Thermistor、MTP、SEEVAL、Embedded Control Solutions Company は、

米国における Microchip Technology Incorporated の登録商標

です。

Silicon Storage Technologyは、その他の国におけるMicrochipTechnology Incorporated の登録商標です。

Analog-for-the-Digital Age、Application Maestro、BodyCom、

chipKIT、chipKIT ロゴ、CodeGuard、dsPICDEM、dsPICDEM.net、dsPICworks、dsSPEAK、ECAN、ECONOMONITOR、FanSense、HI-TIDE、In-Circuit Serial Programming、ICSP、Mindi、MiWi、MPASM、MPF、MPLAB 認証ロゴ、MPLIB、MPLINK、mTouch、Omniscient Code Generation、PICC、PICC-18、PICDEM、

PICDEM.net、PICkit、PICtail、REAL ICE、rfLAB、Select Mode、SQI、Serial Quad I/O、Total Endurance、TSHARC、UniWinDriver、WiperLock、ZENA、Z-Scale は、米国およびその他の国におけ

る Microchip Technology Incorporatedの登録商標です。

SQTP は、米国における Microchip Technology Incorporatedのサービスマークです。

GestICとULPPは、その他の国におけるMicrochip TechnologyGermany II GmbH & Co. & KG (Microchip TechnologyIncorporated の子会社 ) の登録商標です。

その他、本書に記載されている商標は各社に帰属します。

©2013, Microchip Technology Incorporated, Printed in theU.S.A., All Rights Reserved.

ISBN: 978-1-63276-765-3

Microchip 社製デバイスのコード保護機能に関して次の点にご注意ください。

• Microchip 社製品は、該当する Microchip 社データシートに記載の仕様を満たしています。

• Microchip 社では、通常の条件ならびに仕様に従って使用した場合、Microchip 社製品のセキュリティ レベルは、現在市場に流

通している同種製品の中でも最も高度であると考えています。

• しかし、コード保護機能を解除するための不正かつ違法な方法が存在する事もまた事実です。弊社の理解ではこうした手法は、

Microchip 社データシートにある動作仕様書以外の方法で Microchip 社製品を使用する事になります。このような行為は知的所

有権の侵害に該当する可能性が非常に高いと言えます。

• Microchip 社は、コードの保全性に懸念を抱くお客様と連携し、対応策に取り組んでいきます。

• Microchip 社を含む全ての半導体メーカーで、自社のコードのセキュリティを完全に保証できる企業はありません。コード保護

機能とは、Microchip 社が製品を「解読不能」として保証するものではありません。

コード保護機能は常に進歩しています。Microchip 社では、常に製品のコード保護機能の改善に取り組んでいます。Microchip 社

のコード保護機能の侵害は、デジタル ミレニアム著作権法に違反します。そのような行為によってソフトウェアまたはその他の著

Microchip 社では、Chandler および Tempe ( アリゾナ州 )、Gresham( オレゴン州 ) の本部、設計部およびウェハー製造工場そしてカリフォルニア州とインドのデザインセンターが ISO/TS-16949:2009 認証を取得しています。Microchip 社の品質システム プロセスおよび手順は、PIC® MCU および dsPIC® DSC、KEELOQ® コード ホッピング デバイス、シリアル EEPROM、マイクロペリフェラル、不揮発性メモリ、アナログ製品に採用されています。さらに、開発システムの設計と製造に関する Microchip 社の品質システムは ISO 9001:2000 認証を取得しています。

QUALITY MANAGEMENT SYSTEM CERTIFIED BY DNV

== ISO/TS 16949 ==

Page 40: 33E 24E FRM Interrupts - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/70000600D_JP.pdf2015 Microchip Technology Inc. DS70000600D_JP - p. 5 割り込み 図1-3: ブートセグメント

DS70000600D_JP - p. 40 2015 Microchip Technology Inc.

北米本社2355 West Chandler Blvd.Chandler, AZ 85224-6199Tel:480-792-7200 Fax:480-792-7277技術サポート : http://www.microchip.com/supportURL: www.microchip.com

アトランタDuluth, GA Tel:678-957-9614 Fax:678-957-1455

オースティン (TX)Tel:512-257-3370

ボストンWestborough, MA Tel:774-760-0087 Fax:774-760-0088

シカゴItasca, IL Tel:630-285-0071 Fax:630-285-0075

クリーブランドIndependence, OH Tel:216-447-0464

Fax:216-447-0643

ダラスAddison, TX Tel:972-818-7423 Fax:972-818-2924

デトロイトNovi, MI Tel:248-848-4000

ヒューストン (TX) Tel:281-894-5983

インディアナポリスNoblesville, IN Tel:317-773-8323Fax:317-773-5453

ロサンゼルスMission Viejo, CA Tel:949-462-9523 Fax:949-462-9608

ニューヨーク (NY) Tel:631-435-6000

サンノゼ (CA) Tel:408-735-9110

カナダ - トロントTel:905-673-0699 Fax:905-673-6509

アジア / 太平洋

アジア太平洋支社Suites 3707-14, 37th FloorTower 6, The GatewayHarbour City, KowloonHong KongTel:852-2943-5100Fax:852-2401-3431

オーストラリア - シドニーTel:61-2-9868-6733Fax:61-2-9868-6755

中国 - 北京Tel:86-10-8569-7000 Fax:86-10-8528-2104

中国 - 成都Tel:86-28-8665-5511Fax:86-28-8665-7889

中国 - 重慶Tel:86-23-8980-9588Fax:86-23-8980-9500

中国 - 東莞

Tel:86-769-8702-9880

中国 - 杭州Tel:86-571-8792-8115 Fax:86-571-8792-8116

中国 - 香港 SARTel:852-2943-5100 Fax:852-2401-3431

中国 - 南京Tel:86-25-8473-2460Fax:86-25-8473-2470

中国 - 青島Tel:86-532-8502-7355Fax:86-532-8502-7205

中国 - 上海Tel:86-21-5407-5533 Fax:86-21-5407-5066

中国 - 瀋陽Tel:86-24-2334-2829Fax:86-24-2334-2393

中国 - 深圳Tel:86-755-8864-2200 Fax:86-755-8203-1760

中国 - 武漢Tel:86-27-5980-5300Fax:86-27-5980-5118

中国 - 西安Tel:86-29-8833-7252Fax:86-29-8833-7256

アジア / 太平洋

中国 - 厦門Tel:86-592-2388138 Fax:86-592-2388130

中国 - 珠海Tel:86-756-3210040 Fax:86-756-3210049

インド - バンガロールTel:91-80-3090-4444 Fax:91-80-3090-4123

インド - ニューデリーTel:91-11-4160-8631Fax:91-11-4160-8632

インド - プネTel:91-20-3019-1500

日本 - 大阪Tel:81-6-6152-7160 Fax:81-6-6152-9310

日本 - 東京Tel:81-3-6880- 3770 Fax:81-3-6880-3771

韓国 - 大邱Tel:82-53-744-4301Fax:82-53-744-4302

韓国 - ソウルTel:82-2-554-7200Fax:82-2-558-5932 または 82-2-558-5934

マレーシア - クアラルンプールTel:60-3-6201-9857Fax:60-3-6201-9859

マレーシア - ペナンTel:60-4-227-8870Fax:60-4-227-4068

フィリピン - マニラTel:63-2-634-9065Fax:63-2-634-9069

シンガポールTel:65-6334-8870Fax:65-6334-8850

台湾 - 新竹Tel:886-3-5778-366Fax:886-3-5770-955

台湾 - 高雄Tel:886-7-213-7828

台湾 - 台北Tel:886-2-2508-8600 Fax:886-2-2508-0102

タイ - バンコクTel:66-2-694-1351Fax:66-2-694-1350

ヨーロッパ

オーストリア - ヴェルスTel:43-7242-2244-39

Fax:43-7242-2244-393

デンマーク - コペンハーゲンTel:45-4450-2828 Fax:45-4485-2829

フランス - パリTel:33-1-69-53-63-20 Fax:33-1-69-30-90-79

ドイツ - デュッセルドルフTel:49-2129-3766400

ドイツ - ミュンヘンTel:49-89-627-144-0 Fax:49-89-627-144-44

ドイツ - プフォルツハイムTel:49-7231-424750

イタリア - ミラノ Tel:39-0331-742611 Fax:39-0331-466781

イタリア - ベニスTel:39-049-7625286

オランダ - ドリューネンTel:31-416-690399 Fax:31-416-690340

ポーランド - ワルシャワTel:48-22-3325737

スペイン - マドリッドTel:34-91-708-08-90Fax:34-91-708-08-91

スウェーデン - ストックホルムTel:46-8-5090-4654

イギリス - ウォーキンガムTel:44-118-921-5800Fax:44-118-921-5820

各国の営業所とサービス

01/27/15