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

Section 41. Interrupts (Part IV)

N/A
N/A
Protected

Academic year: 2021

シェア "Section 41. Interrupts (Part IV)"

Copied!
56
0
0

読み込み中.... (全文を見る)

全文

(1)

(

パート

IV)

第

41 章 割り込み (パートIV)

ハイライト

本章では次のトピックについて説明します。 41.1 はじめに ...41-2 41.2 ノンマスカブル トラップ ...41-7 41.3 割り込み処理タイミング ...41-12 41.4 割り込み制御レジスタとステータス レジスタ ...41-15 41.5 割り込みセットアップ プロシージャ ...41-50 41.6 レジスタ マップ ...41-53 41.7 設計のヒント ...41-54 41.8 関連するアプリケーション ノート ...41-55 41.9 改版履歴 ...41-56

(2)

41.1 はじめに

dsPIC33F 割り込み制御モジュールは、周辺からの多数の割り込み要求信号を、dsPIC33F のCPU への 1 つの割り込み要求信号にします。モジュールの機能は以下のとおりです。 • 8 個までのプロセッサ例外とソフトウェア トラップ • ユーザー選択可能な 7 つの優先度 • 126 個までのベクタを持つ割り込みベクタ テーブル (IVT) • それぞれの割り込みまたは例外要因に一意のベクタ • 指定したユーザー優先度内での固定優先度 • デバッグ サポート用の代替割り込みベクタ テーブル (AIVT) • 割り込み受付時と戻り時の遅延は一定

41.1.1

割り込みベクタ

テーブル

図41-1 に示した割り込みベクタ テーブル (IVT) はプログラム メモリにあり、開始位置は 0x000004 です。IVT には 126 個のベクタがあり、内訳はノンマスカブル トラップ ベクタ 8 個と最大 118 個までの割り込み要因です。通常、各割り込み要因には固有のベクタがあ ります。各割り込みベクタには、24 ビット幅のアドレスがあります。それぞれの割り込み ベクタ位置にプログラムされる値は、それと連動する割り込みサービス ルーチン (ISR) の 開始アドレスです。

41.1.2

代替割り込みベクタ

テーブル

代替割り込みベクタ テーブル (AIVT) は、IVT の後に位置します ( 図 41-1 参照 )。AIVT へ

のアクセスは、割り込み制御レジスタ2 (INTCON2<15>)のALTIVT (Enable Alternate Interrupt Vector Table: 代替割り込みベクタ テーブル許可 ) 制御ビットにより与えられます。ALTIVT ビットがセットされると、すべての割り込みと例外処理は、デフォルトのベクタではなく 代替ベクタを使用します。代替ベクタはデフォルト ベクタと同じ構成です。 AIVT は、割り込みベクタを再プログラムすることなく、アプリケーションとサポート環 境を切り替える方法を提供することで、エミュレーションとデバッグをサポートしていま す。また、この機能により、アプリケーションを切り替えて、異なるソフトウェア アルゴ リズムの実行時の評価ができます。AIVT が不要な場合には、IVT 内で使用されているの と同じアドレスをAIVT にプログラムします。

41.1.3

リセット

シーケンス

デバイス リセットは、割り込みコントローラがリセット処理にかかわっていないため、真 の例外ではありません。dsPIC33F デバイスは、リセットに応答してレジスタをクリアし、 これによってプログラム カウンタ (PC) がゼロになります。プロセッサは、0x000000 の位 置からプログラムの実行を開始します。ユーザー アプリケーションでは、適切な起動ルー チンにプログラムの実行を転送する GOTO 命令をリセット アドレスにプログラムします。

注: IVT と AVIT 内の未実装または未使用のベクタの位置には、RESET 命令を含むデ

(3)

割り込み

(

パート

IV)

図41-1: 割り込みベクタ テーブル IV T AI VT Decreasing Natur al Or der Prior ity

Reset – GOTO Instruction 0x000000 Reset – GOTO Address 0x000002 Reserved 0x000004 Oscillator Fail Trap Vector 0x000006 Address Error Trap Vector 0x000008 Stack Error Trap Vector 0x00000A Math Error Trap Vector 0x00000C Reserved 0x00000E Reserved 0x000010 Reserved 0x000012 Interrupt Vector 0 0x000014 Interrupt Vector 1 0x000016 : : : : : : Interrupt Vector 52 0x00007C Interrupt Vector 53 0x00007E Interrupt Vector 54 0x000080

: :

: :

: :

Interrupt Vector 116 0x0000FC Interrupt Vector 117 0x0000FE Reserved 0x000100 Reserved 0x000102 Reserved 0x000104 Oscillator Fail Trap Vector 0x000106 Address Error Trap Vector 0x000108 Stack Error Trap Vector 0x00010A Math Error Trap Vector 0x00010C Reserved 0x00010E Reserved 0x000110 Reserved 0x000112 Interrupt Vector 0 0x000114 Interrupt Vector 1 0x000116 : : : : : : Interrupt Vector 52 0x00017C Interrupt Vector 53 0x00017E Interrupt Vector 54 0x000180

: :

: :

: :

Interrupt Vector 116 0x0001FC Interrupt Vector 117 0x0001FE START OF CODE 0x000200

See Table 41-1 for Interrupt Vector details.

(4)

表41-1: 割り込みベクタ

IRQ

Number IVT Address AIVT Address Interrupt Source

Highest Natural Order Priority 0 0x000004 0x000104 Reserved 1 0x000006 0x000106 Oscillator Failure 2 0x000008 0x000108 Address Error 3 0x00000A 0x00010A Stack Error 4 0x00000C 0x00010C Math Error 5 0x00000E 0x00010E Reserved 6 0x000010 0x000110 Reserved 7 0x000012 0x000112 Reserved

8 0x000014 0x000114 INT0 – External Interrupt 0 9 0x000016 0x000116 IC1 – Input Capture 1 10 0x000018 0x000118 OC1 – Output Compare1 11 0x00001A 0x00011A T1 – Timer1

12 0x00001C 0x00011C Reserved

13 0x00001E 0x00011E IC2 – Input Capture 2 14 0x000020 0x000120 OC2 – Output Compare 2 15 0x000022 0x000122 T2 – Timer2

16 0x000024 0x000124 T3 – Timer3 17 0x000026 0x000126 SPI1E – SPI1 Fault 18 0x000028 0x000128 SPI1 – SPI1 Transfer Done 19 0x00002A 0x00012A U1RX – UART1 Receiver 20 0x00002C 0x00012C U1TX – UART1 Transmitter 21 0x00002E 0x00012E ADC – ADC Group Convert Done 22 0x000030 0x000130 Reserved

23 0x000032 0x000132 Reserved

24 0x000034 0x000134 SI2C1 – I2C1 Slave Event 25 0x000036 0x000136 MI2C1 – I2C1 Master Event

26 0x000038 0x000138 CMP1 – Analog Comparator 1 Interrupt 27 0x00003A 0x00013A CN – Input Change Notification Interrupt 28 0x00003C 0x00013C INT1 – External Interrupt 1

29 0x00003E 0x00013E Reserved 30 0x000040 0x000140 Reserved 31 0x000042 0x000142 Reserved 32 0x000044 0x000144 Reserved 33 0x000046 0x000146 Reserved 34 0x000048 0x000148 Reserved 35 0x00004A 0x00014A Reserved 36 0x00004C 0x00014C Reserved

37 0x00004E 0x00014E INT2 – External Interrupt 2 38-64 0x000050-0x000084 0x000150-0x000184 Reserved

65 0x000086 0x000186 PWM PSEM Special Event Match 66-72 0x000088-0x000094 0x000188-0x000194 Reserved

73 0x000096 0x000196 U1E – UART1 Error Interrupt 74-101 0x000098-0x0000CE 0x000198-0x0001CE Reserved

102 0x0000D0 0x0001D0 PWM 1 – PWM1 Interrupt 103 0x0000D2 0x0001D2 PWM 2 – PWM2 Interrupt 104 0x0000D4 0x0001D4 PWM 3 – PWM3 Interrupt 105 0x0000D6 0x0001D6 PWM 4 – PWM4 Interrupt 106 0x0000D8 0x0001D8 Reserved

(5)

割り込み

(

パート

IV)

107 0x0000DA 0x0001DA Reserved 108 0x0000DC 0x0001DC Reserved 109 0x0000DE 0x0001DE Reserved 110 0x0000E0 0x0001E0 Reserved

111 0x0000E2 0x00001E2 CMP2 – Analog Comparator 2 112 0x0000E4 0x0001E4 CMP3 – Analog Comparator 3 113 0x0000E6 0x0001E6 CMP4 – Analog Comparator 4 114 0x0000E8 0x0001E8 Reserved

115 0x0000EA 0x0001EA Reserved 116 0x0000EC 0x0001EC Reserved 117 0x0000EE 0x0001EE Reserved

118 0x0000F0 0x0001F0 ADC Pair 0 Convert Done 119 0x0000F2 0x0001F2 ADC Pair 1 Convert Done 120 0x0000F4 0x0001F4 ADC Pair 2 Convert Done 121 0x0000F6 0x0001F6 ADC Pair 3 Convert Done 122 0x0000F8 0x0001F8 ADC Pair 4 Convert Done 123 0x0000FA 0x0001FA ADC Pair 5 Convert Done 124 0x0000FC 0x0001FC ADC Pair 6 Convert Done 125 0x0000FE 0x0001FE Reserved

Lowest Natural Order Priority

表41-1: 割り込みベクタ ( 続き )

IRQ

(6)

41.1.4

CPU 優先度ステータス

CPU は、0 ~ 15 までの 16 の優先度のいずれかで動作できます。割り込みまたはトラップ 要因は、例外処理を開始するため、現在のCPU 優先度よりも高い優先度を持っている必 要があります。周辺および外部割り込み要因は0 ~ 7 の優先度にプログラムできます。CPU 優先度8 ~ 15 は、トラップ要因に使用します。 トラップは、ハードウェアおよびソフトウェアの問題を検出するためのノンマスカブル割 り込み要因です(41.2 項「ノンマスカブル トラップ」を参照 )。各トラップ要因の優先度 は固定されています。1 つの優先度には 1 つのトラップしか割り当てられません。優先度 0 にプログラムされた割り込み要因は、CPU 優先度よりも大きくなることがないため、結 果的には無効です。 現在のCPU 優先度は、以下のステータス ビットで示されます。

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

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

IPL<2:0> ステータス ビットは、読み書きが可能であり、ユーザー アプリケーションは、 これらのビットを変更して、所定の優先度より低いすべての割り込み要因を無効にできま す。例えば、IPL<2:0> = 3 である場合、CPU では、プログラムされた優先度 0、1、2 また は3 のいずれの要因でも割り込みが発生しません。 トラップ イベントは、ユーザー割り込み要因よりも高い優先度を持ちます。IPL3 ビット がセットされている場合、トラップ イベントが進行中です。IPL3 ビットはユーザー アプ リケーションでクリアできますが、セットできません。一部のアプリケーションでは、ト ラップが発生した時点でIPL3 ビットをクリアし、そのトラップを発生させた元の命令以 外の命令に分岐させる必要があります。 IPL<2:0> ビットを 111 にセットすることで、すべてのユーザー割り込み要因を無効にで きます。

41.1.5

割り込み優先度

各周辺割り込み要因に対して、7 つの優先度のいずれかを割り当てられます。各割り込み のユーザー アプリケーションで割り当て可能な割り込み優先度制御ビットは、IPCx レジ スタ内の各ニブルの最下位3 ビットに含まれます。各ニブルのビット 3 は使用されず、「0」 として読み出されます。これらのビットは、特定の割り込みに割り当てられた優先度を示 しています。使用可能な優先度は、1 ( 最低の優先度 ) ~ 7 ( 最高の優先度 ) となっていま す。割り込み要因に関連付けられたIPC ビットがすべてクリアされた場合、その割り込み 要因は無効になります。 1 つの優先度に対して複数の割り込み要求要因を割り当てられます。ユーザー アプリケー ションで割り当てられたレベル内で優先度の衝突を解決するには、各割り込み要因が、IVT での対応する場所に基づいて、自然順序による優先度を持っています。表41-1 に、IVT で の各割り込み要因の場所を示します。数字が小さい割り込みベクタは高い自然順序の優先 度を持ち、数字が大きいベクタは低い自然順序の優先度を持ちます。保留中の割り込み要 因の全体での優先度を決定するには、まず、IPCx レジスタの該当する割り込み要因にユー ザー アプリケーションが割り当てた優先度を使用します。次に、IVT 内の自然順序による 優先度を使用します。 自然順序による優先度が使用されるのは、ユーザー アプリケーション割り当ての優先度が 同じ複数の割り込みが同時に保留になっている衝突を解決する場合のみです。優先度の衝 突が解決されて例外処理が開始された後は、ユーザー アプリケーションで割り当てた優先 度がより高い要因によってのみ、CPU を割り込むことが可能です。例外処理中に、ユー ザー アプリケーション割り当ての優先度が同じで、自然順序の優先度が高い割り込みが保 留となっても、現在の例外処理が完了するまで保留のままとなります。 注: IPL<2:0> ビットは、割り込みネスティングが無効になっている場合に読み出し専 用となります。詳細は、41.2.4.2 項「割り込みのネスティング ( 入れ子 )」を参照 してください。 注: 割り込み優先度を動作中に再設定している間は、アプリケーション プログラム で割り込みが無効になっていなければなりません。割り込みが無効になっていな いと、予期しない結果を生じることがあります。

(7)

割り込み

(

パート

IV)

各割り込み要因に7 つの優先度のいずれかを割り当てることで、ユーザー アプリケーショ ンから、低い自然順序の優先度と、非常に高い全体的優先度を持つ割り込みを設定できま す。例えば、UART1 Rx 割り込みに優先度 7 を、外部割り込み 0 (INT0) に非常に低い優先 度1 を割り当てることができます。

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

トラップはノンマスカブルで、固定の優先度構造に基づいたネスト可能な割り込みです。 トラップは、アプリケーションのデバッグ中や動作中に、誤った処理を修正する手段とな ります。ユーザー アプリケーションでトラップのエラー状態を修正しない場合、デバイス をリセットするには、このベクタにソフトウェア ルーチンのアドレスをロードする必要が あります。あるいは、ユーザー アプリケーションで、トラップ状態を修正するサービス ルーチンのアドレスをトラップ ベクタにプログラムします。 dsPIC33F では、4 つの要因のノンマスカブル トラップを実装しています。 • 発振器異常トラップ • スタック エラー トラップ • アドレス エラー トラップ • 算術エラー トラップ 多くのトラップ状態で、トラップの原因となった命令は、例外処理が開始される前に完了 できます。したがって、ユーザー アプリケーションは、トラップの原因となった命令のア クションを修正する必要があります。 各トラップ要因は、IVT に定義された位置に基づいて、固定の優先度を持ちます。発振器 異常トラップは最も高い優先度を取り、算術エラー トラップは最も低い優先度となります ( 図 41-1 を参照 )。また、トラップ要因は、ソフト トラップとハード トラップという 2 つ のカテゴリに大別されます。

41.2.1

ソフト

トラップ

算術エラー トラップ ( 優先度 11) とスタック エラー トラップ ( 優先度 12) は、ソフト ト ラップ要因に分類されます。ソフト トラップは、IVT 内の位置によって割り当てられた優 先度に従い、ノンマスカブル割り込みとして処理されます。ソフト トラップは割り込みと 同様に処理され、例外処理に先立ってサンプリングと確認応答に2 つのサイクルが必要で す。このため、ソフト トラップを応答できるまで、追加の命令が実行されます。 41.2.1.1 スタック エラー トラップ ( ソフト トラップ、レベル 12) スタックは、リセット中に 0x0800 に初期化されます。スタック エラー トラップは、ス タック ポインタ アドレスが 0x0800 未満になった場合に生成されます。 スタック ポインタに関連付けられたスタック制限 (SPLIM) レジスタは、リセット時に初 期化されません。SPLIM レジスタに何らかのワードが書き込まれるまで、スタック オー バーフロー チェックは有効になりません。 W15 をソース ポインタまたは格納先ポインタとして使用して有効アドレス (EA) が生成さ

れる場合は、SPLIM レジスタの値と比較されます。EA が SPLIM レジスタの内容よりも大

きい場合、スタック エラー トラップが生成されます。また、EA の計算結果がデータ ス

ペースの末尾(0xFFFF) を越える場合も、スタック エラー トラップが生成されます。

スタック エラー トラップ (STKERR) ステータス ビット (INTCON1<2>) をポーリングする

と、スタック エラーをソフトウェアで検出できます。トラップ サービス ルーチン (TSR)

への再入を防ぐため、プログラムがトラップから戻る前に、ソフトウェアで STKERR ス

テータス フラグをクリアしてから RETFIE (Return From Interrupt) 命令を実行する必要があ

ります。

注: IVT で使用可能な周辺モジュールと割り込み要因は、dsPIC33F デバイスによって

異なります。本書に記載した割り込み要因は、dsPIC33F デバイスで見られるす

べての割り込み要因の包括的なリストとなっています。詳細は各デバイスのデー タシートを参照してください。

(8)

41.2.1.2 算術エラー トラップ ( ソフト トラップ、レベル 11) 以下のイベントはいずれも、算術エラー トラップを生成します。 • アキュムレータ A オーバーフロー • アキュムレータ B オーバーフロー • 修復不可アキュムレータ オーバーフロー • ゼロ除算 • ±16 ビットを超えるシフト アキュムレータ (SFTAC) 動作 INTCON1 レジスタのこれら 3 つのビットは、以下の 3 種類のアキュムレータ オーバーフ ロー トラップを有効にします。 • アキュムレータ A オーバーフロー トラップ有効 (OVATE) の制御ビット (INTCON1<10>) は、アキュムレータ A オーバーフロー イベントのトラップを有効にし ます。 • アキュムレータ B オーバーフロー トラップ有効 (OVBTE) の制御ビット (INTCON1<9>) は、アキュムレータB オーバーフロー イベントのトラップを有効にします。 • 修復不可オーバーフロー トラップ有効 (COVTE) の制御ビット (INTCON1<8>) は、各ア キュムレータの修復不可オーバーフローのトラップを有効にします。このトラップが 検出されると、INTCON1 レジスタの対応する ERROR ビットがセットされます。 - アキュムレータ A オーバーフロー トラップ フラグ (OVAERR) - アキュムレータ B オーバーフロー トラップ フラグ (OVBERR) - アキュムレータ A 修復不可オーバーフロー トラップ有効 (COVAERR) - アキュムレータ B 修復不可オーバーフロー トラップ有効 (COVBERR) アキュムレータA またはアキュムレータ B のオーバーフロー イベントは、ビット 31 から のキャリーアウトとして定義されます。31 ビット飽和モードがアキュムレータで有効に なっている場合、アキュムレータ オーバーフローは発生しません。修復不可アキュムレー タ オーバーフローは、いずれかのアキュムレータのビット 39 からのキャリーアウトとし て定義されます。アキュムレータ飽和(31 ビットまたは 39 ビット ) が有効になっている場 合、修復不可オーバーフローは発生しません。 ゼロ除算トラップは無効にできません。ゼロ除算チェックは、除算命令を実行する REPEAT ループの最初の反復中に実行されます。このトラップが検出されると、算術エラー ステー タス(DIV0ERR) ビット (INTCON1<6>) がセットされます。 アキュムレータ シフト トラップは無効にできません。SFTAC 命令を使用すると、リテラ ル値またはW レジスタのいずれかの値でアキュムレータをシフトさせることができます。 シフト値が±16 ビットを超える場合に算術トラップが生成され、シフト アキュムレータ エ

ラー ステータス (SFTACERR) ビット (INTCON1<7>) がセットされます。SFTAC 命令が実

行されますが、シフトの結果はターゲット アキュムレータには書き込まれません。

算術エラー ステータス (MATHERR) ビット (INTCON1<4>) をポーリングすると、算術エ

ラー トラップをソフトウェアで検出できます。トラップ サービス ルーチンへの再入を防

ぐため、プログラムがトラップから戻る前に、ソフトウェアでMATHERR ステータス フ

ラグをクリアしてから RETFIE (Return From Interrupt) 命令を実行する必要があります。 MATHERR ステータス ビットをクリアする前に、トラップの原因となった状態もすべてク リアする必要があります。トラップがアキュムレータのオーバーフローによる場合、ア キュムレータ オーバーフロー (OA および OB) ステータス ビット (SR<15:14>) をクリアす る必要があります。OA ステータス ビットおよび OB ステータス ビットは読み出し専用な ので、ユーザー ソフトウェアはオーバーフローしたアキュムレータに対しダミー処理を実 行し(「0」を加算するなど )、ハードウェアで OA ステータス ビットまたは OB ステータ ス ビットをクリアする必要があります。

41.2.2

ハード

トラップ

優先度13 ~ 15 の例外はハード トラップに分類されます。アドレス エラー ( レベル 13) と 発振器エラー( レベル 14) のトラップが、このカテゴリに含まれます。 ソフト トラップと同様に、ハード トラップはノンマスカブルの割り込み要因です。ハー ド トラップとソフト トラップの違いは、トラップを引き起こした命令の終了後、ハード トラップでは CPU のコード実行を強制停止させることにあります。通常のプログラム実 行フローは、トラップの確認応答と処理が終了するまで再開されません。

(9)

割り込み

(

パート

IV)

41.2.2.1 トラップ優先度とハード トラップの衝突 低い優先度のトラップの進行中に、高い優先度のトラップが発生した場合、低い優先度の トラップの処理は中断され、高い優先度のトラップの確認応答と処理が実行されます。低 い優先度のトラップは、高い優先度のトラップの処理が完了するまで保留となります。 発生した各ハード トラップには、コードの実行を継続する前に確認応答が必要です。高い 優先度のトラップの保留中、確認応答中、または処理中に、低い優先度のハード トラップ が発生した場合、低い優先度のトラップは高い優先度のトラップの処理が完了するまで確 認応答できないため、ハード トラップの衝突が発生します。 ハード トラップの衝突状態が発生すると、デバイスは自動的にリセットされます。リセッ トが発生した場合にその状態をソフトウェアで検出できるように、リセット制御レジスタ ( リセット モジュールの RCON<15>) のトラップ リセット フラグ (TRAPR) ステータス ビッ トがセットされます。 41.2.2.2 発振器異常トラップ ( ハード トラップ、レベル 14) 発振器異常トラップ イベントは、以下のいずれかの理由で発生します。 • フェイルセーフ クロック モニタ (FSCM) が有効になっており、システム クロック ソー スの損失が検出された場合。 • PLL を使用した通常の動作中に PLL ロックの損失が検出された場合。 • FSCM が有効になっており、PLL がパワーオン リセット (POR) でロックを実現できな かった場合。 発振器異常トラップ(OSCFAIL) ステータス ビット (INTCON1<1>) またはクロック フェイル (CF) ステータス ビット ( 発振器モジュールの OSCCON<3>) をポーリングすると、発振器異 常トラップ イベントをソフトウェアで検出できます。トラップ サービス ルーチンへの再入 を防ぐため、プログラムがトラップから戻る前に、ソフトウェアでOSCFAIL ステータス フ

ラグをクリアしてから RETFIE (Return From Interrupt) 命令を実行する必要があります。 41.2.2.3 アドレス エラー トラップ ( ハード トラップ、レベル 13) アドレス エラー トラップを発生させる動作条件には、以下のようなものがあります。 • 誤った配置のデータ ワードのフェッチを試みた場合。この条件は、有効アドレスの最 下位ビット(LSB) が「1」にセットされた状態で、命令がワード アクセスを実行した場 合に発生します。dsPIC33F の CPU では、すべてのワード アクセスを偶数アドレス境 界に合わせて行うことが要求されます。 • ビットの操作命令で、有効アドレスの LSB を「1」にセットして、間接アドレス処理 モードを使用した場合。 • データ フェッチは、未実装のデータ アドレス空間へ行った場合。

• literal が未実装のプログラム メモリ アドレスであるときに、BRA #literal 命令 または GOTO #literal 命令を実行した場合。 • 未実装のプログラム メモリ アドレスをポイントするようにプログラム カウンタを変更 した後に、命令を実行した場合。スタックに値をロードし、RETURN 命令を実行する と、プログラム カウンタを変更できます。 アドレス エラー トラップが発生した場合、データが破壊されないように、データ空間の 書き込みは禁止されます。 ADDRERR ステータス ビット ((INTCON1<3>) をポーリングすると、アドレス エラーをソ フトウェアで検出できます。トラップ サービス ルーチンへの再入を防ぐため、プログラ ムがトラップから戻る前に、ソフトウェアでADDRERR ステータス フラグをクリアして

から RETFIE (Return From Interrupt) 命令を実行する必要があります。

41.2.3

割り込み禁止命令

DISI ( 割り込み禁止 ) 命令は、最大で 16384 命令サイクルまで割り込みを無効にできま す。この命令は、時間がクリティカルな要素となるコード セグメントを実行するときに便 注: MAC クラスの命令では、データ空間が X および Y 空間に分割されています。 これらの命令の場合、未実装のX 空間にすべての Y 空間が、未実装の Y 空間に すべてのX 空間が包含されます。

(10)

DISI 命令は、CPU の割り込み禁止カウント (DISICNT) レジスタと合わせて動作します。 DISICNT レジスタがゼロ以外の場合、優先度 1 ~ 6 の割り込みは無効になります。DISICNT レジスタは、後続の命令サイクルが実行されるたびに値が減ります。DISICNT レジスタが ゼロになると、優先度1 ~ 6 の割り込みが再び有効になります。DISI 命令に指定される 値には、PSV アクセス、命令ストールなどによるすべてのサイクルが含まれます。 DISICNT レジスタは、読み込みと書き込みの両方が可能です。DISICNT レジスタをクリ アすることによって、ユーザー アプリケーションで、DISI 命令を早期に終わらせること ができます。また、DISICNT レジスタに書き込むか、加算することによって、割り込みが 無効となる時間を延長できます。 DISICNT レジスタがゼロである場合、レジスタにゼロ以外の値を書き込むだけでは、割り 込みを無効にできません。割り込みを無効にするには、まず DISI 命令を使用します。 DISI 命令が実行され、DISICNT にゼロ以外の値が格納されている場合、DISICNT の内容 を変更することによって、アプリケーションで割り込み無効時間を延長できます。 DISI 命令の結果として割り込みが無効になっている場合、DISI 命令 (DISI) ステータス

ビット(INTCON2<14>) がセットされます。

41.2.4

割り込み処理

割り込みイベント フラグはすべて、各命令サイクル中にサンプリングされます。保留の割

り込み要求(IRQ) は、IFSx レジスタのフラグ ビット = 1 で示されます。割り込み許可 (IECx)

レジスタの対応するビットがセットされている場合、IRQ は割り込みを発生させます。IRQ

がサンプリングされる残りの命令サイクルでは、すべての保留割り込み要求の優先度が評 価されます。

CPU が IRQ に応答するときに、命令は中止されません。IRQ のサンプリング時に進行中

であった命令が完了してから、割り込みサービス ルーチン (ISR) を実行します。 IPL<2:0> ステータス ビット (SR<7:5>) で示される現在のプロセッサ優先度より高いレベル の、ユーザー アプリケーション割り当ての優先度を持つ保留 IRQ がある場合、割り込み がプロセッサに渡されます。プロセッサは、ソフトウェア スタックに以下の情報を保存し ます。 • 現在の PC 値 • プロセッサ ステータス レジスタ (SRL) の下位バイト • IPL3 ステータス ビット (CORCON<3>) これら3 つの値により、戻りプログラム カウンタ アドレス値、MCU ステータス ビット、 および現在のプロセッサ優先度が自動的に保存されます。 この情報がスタックに保存されたら、CPU は、保留中の割り込みの優先度を IPL<2:0> ビッ ト位置に書き込みます。このアクションは、RETFIE 命令によって ISR が終了されるまで、 低いまたは等しい優先度を持つすべての割り込みを無効にします。 図41-2: 割り込みイベントのスタック処理 注: DISI 命令は、CPU 優先度 7 にどの要因も割り当てられていない場合に、すべて のユーザー割り込み要因をただちに無効にするときに便利です。 <Free Word> PC<15:0> PC<22:16> 0 15 W15 (before IRQ) W15 (after IRQ) S tack Grow s T owar d H ighe r Addre ss SR<7:0>

This stack stores the IPL3 status bit (CORCON<3>)

(11)

割り込み

(

パート

IV)

41.2.4.1 割り込みからの復帰 RETFIE 命令は、PC 戻りアドレス、IPL3 ステータス ビット、および SRL レジスタをス タックから取り出し、割り込みシーケンスの前の状態および優先度にプロセッサを復帰さ せます。 41.2.4.2 割り込みのネスティング ( 入れ子 ) 割り込みはデフォルトでネスティングされます。処理中の ISR は、高いユーザー アプリ ケーション割り当ての優先度を持つ別の割り込み要因で割り込ませることができます。割 り込みネスティング無効(NSTDIS) 制御ビット (INTCON1<15>) をセットすると、割り込み ネスティングを無効にできます。NSTDIS 制御ビットをセットすると、IPL<2:0> = 111 に セットされ、処理中のすべての割り込みがCPU 優先度を強制的にレベル 7 にします。こ のアクションは、RETFIE 命令が実行されるまで、すべての割り込み要因をマスクします。 割り込みネスティングを無効にすると、同時保留割り込み間の衝突を解決しない限り、 ユーザー アプリケーション割り当ての割り込み優先度が無意味になります。 IPL<2:0> ビット (SR<7:5>) は、割り込みネスティングが無効になっている場合は、読み出 し専用となります。これにより、ユーザー ソフトウェアが IPL<2:0> を低い値にセットす る( 結果的に割り込みネスティングが再び有効になってしまう ) のを防止できます。

41.2.5

スリープおよびアイドルからのウェイクアップ

IECx レジスタの対応する制御ビットを使用して個別に有効にできる割り込み要因は、ス リープまたはアイドルモードからプロセッサをウェイクアップできます。割り込み要因の 割り込みステータス フラグがセットされ、IEC 制御レジスタの対応するビットで割り込み 要因が有効になっている場合、ウェイクアップ信号がdsPIC33F CPU へ送られます。デバ イスがスリープまたはアイドル モードからウェイクアップすると、2 つのアクションのい ずれかが発生します。 • 該当する割り込み要因の割り込み優先度が、現在の CPU 優先度よりも高い場合、プロ セッサは割り込みを処理し、割り込み要因のISR に分岐します。 • 該当する割り込み要因のユーザー アプリケーション割り当ての優先度が、現在の CPU 優先度と同じか、それより低い場合、プロセッサはCPU をスリープまたはアイドル モードにした PWRSAV 命令の直後の命令から実行を継続します。

41.2.6

A/D コンバータ (ADC) 外部変換要求

INT0 外部割り込み要求ピンは、ADC の外部変換要求信号と共有されます。INT0 割り込み 要因は、プログラマブル エッジ極性を持ち、ADC 外部変換要求機能でも使用できます。

41.2.7

外部割り込みサポート

dsPIC33F は、最大 3 つの外部割り込みピンソース (INT0 ~ INT2) をサポートします。各外 部 割 り 込 み ピ ン に は、割 り 込 み イ ベ ン ト を 検 出 す る エ ッ ジ 検 出 回 路 が 含 ま れ ま す。 INTCON2 レジスタには、エッジ検出回路の極性を選択する 3 つの制御ビット (INT0EP ~ INT2EP) があります。各外部割り込みピンは、立ち上がりエッジまたは立ち下がりエッジ イベントでCPU を割り込むようにプログラムできます。詳細は、レジスタ 41-4 を参照し てください。 注: CPU 優先度 0 に割り当てられたユーザー割り当て要因は、割り込み要因が無効 になっているため、スリープまたはアイドル モードから CPU をウェイクアップ できません。割り込みをウェイクアップ要因として使用するには、プログラムで 割り込みのCPU 優先度をレベル 1 以上にセットする必要があります。

(12)

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

41.3.1

1 サイクル命令の割り込みレイテンシ

図41-3 に、1 サイクル命令中に周辺割り込みが発生するときのイベント シーケンスを示 します。この割り込み処理には4 つの命令サイクルがあります。図 41-3 で各サイクルに 番号を示しています。 割り込みフラグ ステータス ビットは、周辺割り込みが発生した後、命令サイクル中にセッ トされます。現在の命令は、この命令サイクル中に完了します。割り込みイベントの後の 2 番目の命令サイクルでは、プログラム カウンタ (PC) および下位バイト ステータス (SRL) レジスタが一時バッファ レジスタに保存されます。割り込み処理の 2 番目のサイクルは、 NOP 命令として実行され、2 サイクル命令中のシーケンスと一貫性が保たれます (41.3.2 項 「2 サイクル命令の割り込みレイテンシ」を参照 ) 3 番目のサイクルでは、PC に割り込み 要因のベクタ テーブル アドレスがロードされ、ISR の開始アドレスがフェッチされます。 4 番目のサイクルでは、PC に ISR アドレスがロードされます。4 番目のサイクルは、ISR の最初の命令がフェッチされるので、NOP として実行されます。 図41-3: 1 サイクル命令中の割り込みタイミング 4 6 6 6 4 4

INST(PC - 2) INST(PC) FNOP FNOP ISR

INST Executed

Interrupt Flag

PUSH Low 16 bits of PC

PUSH SRL and High 8 bits of PC

6 4 ISR + 2 ISR + 4 CPU Priority Fetch 2000 (ISR) 2002 2004 2006 PC PC Vector Save PC in Status bit Vector#

Peripheral interrupt event occurs at or before midpoint

TCY 1 2 3 4

temporary buffer

of this cycle

(from temporary buffer)

(from temporary buffer) PC + 2

(13)

割り込み

(

パート

IV)

41.3.2

2 サイクル命令の割り込みレイテンシ

2 サイクル命令の割り込みレイテンシは、1 サイクル命令の場合と同じです。最初と 2 番 目の割り込み処理サイクルでは、2 サイクル命令の実行が完了します。図 41-4 のタイミン グ図に、2 サイクル命令実行の前の命令サイクルで発生する周辺割り込みイベントを示し ます。 図41-5 に、周辺割り込みが 2 サイクル命令の最初のサイクル中に発生する場合のタイミ ングを示します。この場合、1 サイクル命令の割り込み処理と同じです (41.3.1 項「1 サイ クル命令の割り込みレイテンシ」を参照)。 図41-4: 2 サイクル命令中の割り込みタイミング 図41-5: 割り込みタイミング、2 サイクル命令の最初のサイクル中に発生する割り込み 4 6 6 6 4 4

INST(PC - 2) INST(PC) INST(PC) FNOP ISR

INST Executed

Interrupt Flag

PUSH Low 16 bits of PC

PUSH SRL and High 8 bits of PC

6 4 ISR + 2 ISR + 4 CPU Priority Fetch 2000 (ISR) 2002 2004 2006 PC PC + 2 PC Vector Save PC in Status bit Vector#

Peripheral interrupt event occurs at or before TCY 1 2 3 4 2nd cycle 1st cycle temporary buffer midpoint of this cycle

(from temporary buffer) (from temporary buffer)

4 6 6 6

4 4

INST(PC) INST(PC) FNOP ISR

INST Executed

Interrupt Flag

PUSH Low 16 bits of PC

PUSH SRL and High 8 bits of PC

6 4 ISR + 2 ISR + 4 CPU Priority Fetch 2000 (ISR) 2002 2004 2006 PC PC + 2 PC Vector Save PC in Status bit Vector#

Peripheral interrupt event occurs at or before TCY 1 2 3 4 2nd cycle 1st cycle temporary buffer FNOP

midpoint of this cycle

(from temporary buffer) (from temporary buffer)

(14)

41.3.3

割り込みからの復帰

割り込みから復帰するには、プログラムが RETFIE 命令を実行しなければいけません。 RETFIE 命令の最初の 2 サイクル中に、PC および SRL レジスタの内容がスタックから取 り出されます。3 番目の命令サイクルは、更新されたプログラム カウンタに基づいて、 命令をフェッチするために使用されます。このサイクルは、NOP 命令として実行されま す。4 番目のサイクルでは、割り込みが発生したポイントからプログラムの実行が再開さ れます。 図41-6: 割り込みからの復帰タイミング

41.3.4

割り込みレイテンシの特殊条件

dsPIC33F では、周辺割り込み要因が保留となるまで、現在の命令を完了できます。割り込 みレイテンシは、1 サイクル命令と 2 サイクル命令の場合は同じです。ただし、割り込み が発生したタイミングによっては、所定の条件が割り込みレイテンシを1 サイクルだけ長 くすることがあります。アプリケーションで固定のレイテンシが不可欠である場合、以下 の条件を避ける必要があります。 • プログラム メモリ空間でPSVを使用して値にアクセスするMOV.D命令を実行すること。 • 2 サイクル命令に命令ストール サイクルを付加すること。 • PSV アクセスを実行する 1 サイクル命令に命令ストール サイクルを付加すること。 • プログラム メモリ空間で PSV を使用して値にアクセスするビット テストおよびスキッ プ命令(BTSC、BTSS)。 4 4 4 4 6 6 CPU Priority RETFIE RETFIE PC INST

Executed ISR last FNOP

6 PC + 2 PC + 4 PC PC + 2 PC + 4 PC + 6 ISR ISR + 2 PC 2nd cycle TCY instruction 1 2 3 4

(15)

割り込み

(

パート

IV)

41.4 割り込み制御レジスタとステータス レジスタ

以下のレジスタは、割り込みコントローラと関連付けられます。 • INTCON1: 割り込み制御レジスタ 1 グローバル割り込み機能を制御するINTCON1 レジスタは、割り込みネスティング無 効 (NSTDIS) ビットと、プロセッサ トラップ ソースの制御およびステータス フラグ を含みます。 • INTCON2: 割り込み制御レジスタ 2 グローバル割り込み機能を制御するINTCON2 レジスタは、外部割り込み要求信号の 動作や代替ベクタ テーブルの使用も制御します。 • IFSx: 割り込みフラグ ステータス レジスタ ( レジスタ 41-5 からレジスタ 41-11 を参照 ) すべての割り込み要求フラグは、IFSx レジスタに保存されます。ここで、「x」は、レ ジスタ番号を示します。各割り込み要因には、それぞれについてのステータス ビット があります。このステータス ビットは、対応する周辺モジュールや外部信号によって セットされ、ソフトウェアでクリアされます。 • IECx: 割り込み許可制御レジスタ ( レジスタ 41-12 からレジスタ 41-18 を参照 ) すべての割り込み許可制御ビットは、IECx レジスタに保存されます。ここで、「x」は、 レジスタ番号を示します。これらの制御ビットは、周辺モジュールや外部信号による 割り込みの個別許可に使用されます。 • IPCx: 割り込み優先度制御レジスタ ( レジスタ 41-19 からレジスタ 41-34 を参照 ) 各ユーザー割り込み要因に対して、8 つの優先度のうち 1 つを設定できます。IPC レ ジスタは、割り込み要因ごとに優先度を設定します。 • SR: CPU ステータス レジスタ SR レジスタは、割り込みコントローラ ハードウェアの一部ではありませんが、 IPL<2:0> ステータス ビット (SR<7:5>) を含みます。これは、現在の CPU 優先度を示 します。ユーザー アプリケーションはこの IPL ビットを書き換えることで、CPU の 優先度を変更できます。 • CORCON: コア制御レジスタ CORCON レジスタは、割り込みコントローラ ハードウェアの一部ではありませんが、 IPL3 ステータス ビットを含みます。これは、現在の CPU 優先度を示します。IPL3 は

読み出し専用のビットなので、トラップ イベントはユーザー ソフトウェアではマス クできません。 • INTTREG: 割り込み制御およびステータス レジスタ INTTREG レジスタには、割り込みベクタ番号と、新たな CPU の割り込み優先度が含 まれていて、それらはINTTREG レジスタ内のベクタ番号 (VECNUM<6:0>) と割り込 みレベル (ILR<3:0>) ビット フィールドになります。新たな割り込みの優先度は、待 機中割り込みの優先度です。 これらのレジスタの詳細は、以下の項で説明します。

41.4.1

制御レジスタへの割り込みの割り当て

割り込み要因は、表41-1 と同じ順序で、IFSx、IECx、および IPCx のレジスタに割り当て られます。例えば、INT0 ( 外部割り込み 0) 要因はベクタ番号を持ち、自然順序の優先度 は0 です。したがって、外部割り込み 0 フラグ ステータス (INT0IF) ビットは、IFS0<0> に あります。INT0 割り込みは、IEC0 レジスタのビット 0 を許可ビットとして使用します。 IPC0<2:0> ビットは、INT0 割り込みの割り込み優先度を割り当てます。 注: 割り込み要因の合計数と種類は、デバイスによって異なります。詳細は各デバイ スのデータシートを参照してください。

(16)

レジスタ41-1: SR: CPU ステータス レジスタ 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 IPL<2:0>(1,2) RA N OV Z C bit 7 bit 0 記号の説明: C = クリア可 R = 読み出し可 W = 書き込み可 U = 未実装ビット。「0」として読み出し -n = POR 時の値 「1」= セット 「0」 = クリア x = 不明 ビット 15-8 割り込みコントローラでは使用せず

(SR ビットの説明は、『dsPIC30F/33F Programmer’s Reference Manual』(DS70157) を参照してく

ださい)。 ビット 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) ビット 4-0 割り込みコントローラでは使用せず

(SR ビットの説明は、『dsPIC30F/33F Programmer’s Reference Manual』(DS70157) を参照してく

ださい)。

注 1: IPL<2:0> ビットは IPL<3> ビット (CORCON<3>) と連結して、CPU 割り込み優先度を表します。

括弧内の値は、IPL<3> = 1 のときの IPL を表します。

(17)

割り込み

(

パート

IV)

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

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

— — — — EDT DL<1:0>

bit 15 bit 8

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

SATA SATB SATDW ACCSAT IPL3(1) PSV RND IF

bit 7 bit 0

記号の説明: C = クリア可

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

-n = POR 時の値 「1」= セット 「0」 = クリア x = 不明

ビット 15-4 割り込みコントローラでは使用せず

(CORCON ビットの説明は、『dsPIC30F/33F Programmer’s Reference Manual』(DS70157) を参照

してください)。

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

1 = CPU 割り込み優先度が 7 より高い 0 = CPU 割り込み優先度が 7 以下

ビット 2-0 割り込みコントローラでは使用せず

(CORCON ビットの説明は、『dsPIC30F/33F Programmer’s Reference Manual』(DS70157) を参照

してください)。

(18)

レジスタ41-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 U-0 R/W-0 R/W-0 R/W-0 R/W-0 U-0

SFTACERR DIV0ERR — MATHERR ADDRERR STKERR OSCFAIL —

bit 7 bit 0 記号の説明: R = 読み出し可 W = 書き込み可 U = 未実装ビット。「0」として読み出し -n = POR 時の値 「1」= セット 「0」 = クリア x = 不明 ビット 15 NSTDIS: 割り込みネスティング無効ビット 1 = 割り込みネスティングは無効 0 = 割り込みネスティングが有効 ビット 14 OVAERR: アキュムレータ A オーバーフロー トラップ フラグ ビット 1 = アキュムレータ A のオーバーフローによりトラップが発生 0 = アキュムレータ A のオーバーフローによるトラップは発生していない ビット 13 OVBERR: アキュムレータ B オーバーフロー トラップ フラグ ビット 1 = アキュムレータ B のオーバーフローによりトラップが発生 0 = アキュムレータ B のオーバーフローによるトラップは発生していない ビット 12 COVAERR: アキュムレータ A 修復不可オーバーフロー トラップ フラグ ビット 1 = アキュムレータ A の修復不可オーバーフローによりトラップが発生 0 = アキュムレータ A の修復不可オーバーフローによるトラップは発生していない ビット 11 COVBERR: アキュムレータ B 修復不可オーバーフロー トラップ フラグ ビット 1 = アキュムレータ B の修復不可オーバーフローによりトラップが発生 0 = アキュムレータ B の修復不可オーバーフローによるトラップは発生していない ビット 10 OVATE: アキュムレータ A オーバーフロー トラップ有効化ビット 1 = アキュムレータ A のオーバーフロー トラップは有効 0 = トラップは無効 ビット 9 OVBTE: アキュムレータ B オーバーフロー トラップ有効化ビット 1 = アキュムレータ B のオーバーフロー トラップは有効 0 = トラップは無効 ビット 8 COVTE: 修復不可オーバーフロー トラップ有効化ビット 1 = アキュムレータ A または B の修復不可オーバーフロー トラップは有効 0 = トラップは無効 ビット 7 SFTACERR: アキュムレータ シフト エラー ステータス ビット 1 = 不正なアキュムレータ シフトにより算術エラー トラップが発生 0 = 不正なアキュムレータ シフトによる算術エラー トラップは発生していない ビット 6 DIV0ERR: ゼロ除算エラー ステータス ビット 1 = ゼロ除算によりゼロ除算エラー トラップが発生 0 = ゼロ除算によるゼロ除算エラー トラップは発生していない ビット 5 未実装:「0」として読み出し ビット 4 MATHERR: 算術エラー ステータス ビット 1 = 算術エラー トラップが発生 0 = 算術エラー トラップは発生していない ビット 3 ADDRERR: アドレス エラー トラップ ステータス ビット 1 = アドレス エラー トラップが発生 0 = アドレス エラー トラップは発生していない

(19)

割り込み

(

パート

IV)

ビット 2 STKERR: スタック エラー トラップ ステータス ビット 1 = スタック エラー トラップが発生 0 = スタック エラー トラップは発生していない ビット 1 OSCFAIL: 発振器異常トラップ ステータス ビット 1 = 発振器異常トラップが発生 0 = 発振器異常トラップは発生していない ビット 0 未実装:「0」として読み出し レジスタ41-3: INTCON1: 割り込み制御レジスタ 1 ( 続き )

(20)

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

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

ALTIVT DISI — — — — — —

bit 15 bit 8

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

— — — — — INT2EP INT1EP INT0EP

bit 7 bit 0 記号の説明: R = 読み出し可 W = 書き込み可 U = 未実装ビット。「0」として読み出し -n = POR 時の値 「1」= セット 「0」 = クリア x = 不明 ビット 15 ALTIVT: 代替割り込みベクタ テーブル許可ビット 1 = 代替ベクタ テーブルを使用 0 = 標準 ( デフォルト ) ベクタ テーブルを使用 ビット 14 DISI: DISI 命令ステータス ビット 1 = DISI 命令が動作中 0 = DISI 命令は動作中でない ビット 13-3 未実装:「0」として読み出し ビット 2 INT2EP: 外部割り込み 2 エッジ検出極性選択ビット 1 = 立ち下がりエッジで割り込み発生 0 = 立ち上がりエッジで割り込み発生 ビット 1 INT1EP: 外部割り込み 1 エッジ検出極性選択ビット 1 = 立ち下がりエッジで割り込み発生 0 = 立ち上がりエッジで割り込み発生 ビット 0 INT0EP: 外部割り込み 0 エッジ検出極性選択ビット 1 = 立ち下がりエッジで割り込み発生 0 = 立ち上がりエッジで割り込み発生

(21)

割り込み

(

パート

IV)

レジスタ41-5: IFS0: 割り込みフラグ ステータス レジスタ 0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

— — ADIF U1TXIF U1RXIF SPI1IF SPI1EIF T3IF

bit 15 bit 8

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

T2IF OC2IF IC2IF — T1IF OC1IF IC1IF INT0IF

bit 7 bit 0 記号の説明: R = 読み出し可 W = 書き込み可 U = 未実装ビット。「0」として読み出し -n = POR 時の値 「1」= セット 「0」 = クリア x = 不明 ビット 15-14 未実装 :「0」として読み出し ビット 13 ADIF: ADC グループ変換完了割り込みフラグ ステータス ビット 1 = 割り込み要求が発生 0 = 割り込み要求は発生していない ビット 12 U1TXIF: UART1 送信割り込みフラグ ステータス ビット 1 = 割り込み要求が発生 0 = 割り込み要求は発生していない ビット 11 U1RXIF: UART1 受信割り込みフラグ ステータス ビット 1 = 割り込み要求が発生 0 = 割り込み要求は発生していない ビット 10 SPI1IF: SPI1 イベント割り込みフラグ ステータス ビット 1 = 割り込み要求が発生 0 = 割り込み要求は発生していない ビット 9 SPI1EIF: SPI1 フォルト割り込みフラグ ステータス ビット 1 = 割り込み要求が発生 0 = 割り込み要求は発生していない ビット 8 T3IF: タイマ 3 割り込みフラグ ステータス ビット 1 = 割り込み要求が発生 0 = 割り込み要求は発生していない ビット 7 T2IF: タイマ 2 割り込みフラグ ステータス ビット 1 = 割り込み要求が発生 0 = 割り込み要求は発生していない ビット 6 OC2IF: 出力コンペア チャネル 2 割り込みフラグ ステータス ビット 1 = 割り込み要求が発生 0 = 割り込み要求は発生していない ビット 5 IC2IF: 入力キャプチャ チャネル 2 割り込みフラグ ステータス ビット 1 = 割り込み要求が発生 0 = 割り込み要求は発生していない ビット 4 未実装:「0」として読み出し ビット 3 T1IF: タイマ 1 割り込みフラグ ステータス ビット 1 = 割り込み要求が発生 0 = 割り込み要求は発生していない ビット 2 OC1IF: 出力コンペア チャネル 1 割り込みフラグ ステータス ビット

(22)

ビット 1 IC1IF: 入力キャプチャ チャネル 1 割り込みフラグ ステータス ビット 1 = 割り込み要求が発生 0 = 割り込み要求は発生していない ビット 0 INT0IF: 外部割り込み 0 フラグ ステータス ビット 1 = 割り込み要求が発生 0 = 割り込み要求は発生していない レジスタ41-5: IFS0: 割り込みフラグ ステータス レジスタ 0 ( 続き )

(23)

割り込み

(

パート

IV)

レジスタ41-6: IFS1: 割り込みフラグ ステータス レジスタ 1

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

— — INT2IF — — — — —

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

— — — INT1IF CNIF AC1IF MI2C1IF SI2C1IF

bit 7 bit 0 記号の説明: R = 読み出し可 W = 書き込み可 U = 未実装ビット。「0」として読み出し -n = POR 時の値 「1」= セット 「0」 = クリア x = 不明 ビット 15-14 未実装 :「0」として読み出し ビット 13 INT2IF: 外部割り込み 2 フラグ ステータス ビット 1 = 割り込み要求が発生 0 = 割り込み要求は発生していない ビット 12-5 未実装:「0」として読み出し ビット 4 INT1IF: 外部割り込み 1 フラグ ステータス ビット 1 = 割り込み要求が発生 0 = 割り込み要求は発生していない ビット 3 CNIF: 入力変化通知割り込みフラグ ステータス ビット 1 = 割り込み要求が発生 0 = 割り込み要求は発生していない ビット 2 AC1IF: アナログ コンパレータ 1 割り込みフラグ ステータス ビット 1 = 割り込み要求が発生 0 = 割り込み要求は発生していない ビット 1 MI2C1IF: I2C1 マスター イベント割り込みフラグ ステータス ビット 1 = 割り込み要求が発生 0 = 割り込み要求は発生していない ビット 0 SI2C1IF: I2C1 スレーブ イベント割り込みフラグ ステータス ビット 1 = 割り込み要求が発生 0 = 割り込み要求は発生していない

(24)

レジスタ41-7: IFS3: 割り込みフラグ ステータス レジスタ 3

レジスタ41-8: IFS4: 割り込みフラグ ステータス レジスタ 4

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

— — — — — — PSEMIF —

bit 15 bit 8

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

— — — — — — — — bit 7 bit 0 記号の説明: R = 読み出し可 W = 書き込み可 U = 未実装ビット。「0」として読み出し -n = POR 時の値 「1」= セット 「0」 = クリア x = 不明 ビット 15-10 未実装 :「0」として読み出し ビット 9 PSEMIF: PWM 特殊イベント一致割り込みフラグ ステータス ビット 1 = 割り込み要求が発生 0 = 割り込み要求は発生していない ビット 8-0 未実装:「0」として読み出し

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 R/W-0 U-0

— — — — — — U1EIF — bit 7 bit 0 記号の説明: R = 読み出し可 W = 書き込み可 U = 未実装ビット。「0」として読み出し -n = POR 時の値 「1」= セット 「0」 = クリア x = 不明 ビット 15-2 未実装:「0」として読み出し ビット 1 U1EIF: UART1 エラー割り込みフラグ ステータス ビット 1 = 割り込み要求が発生 0 = 割り込み要求は発生していない ビット 0 未実装:「0」として読み出し

(25)

割り込み

(

パート

IV)

レジスタ41-9: IFS5: 割り込みフラグ ステータス レジスタ 5

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

PWM2IF PWM1IF — — — — — —

bit 15 bit 8

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

— — — — — — — — bit 7 bit 0 記号の説明: R = 読み出し可 W = 書き込み可 U = 未実装ビット。「0」として読み出し -n = POR 時の値 「1」= セット 「0」 = クリア x = 不明 ビット 15 PWM2IF: PWM 2 割り込みフラグ ステータス ビット 1 = 割り込み要求が発生 0 = 割り込み要求は発生していない ビット 14 PWM1IF: PWM 1 割り込みフラグ ステータス ビット 1 = 割り込み要求が発生 0 = 割り込み要求は発生していない ビット 13-0 未実装:「0」として読み出し

(26)

レジスタ41-10: IFS6: 割り込みフラグ ステータス レジスタ 6

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

ADCP1IF ADCP0IF — — — — AC4IF AC3IF

bit 15 bit 8

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

AC2IF — — — — — PWM4IF PWM3IF

bit 7 bit 0 記号の説明: R = 読み出し可 W = 書き込み可 U = 未実装ビット。「0」として読み出し -n = POR 時の値 「1」= セット 「0」 = クリア x = 不明 ビット 15 ADCP1IF: ADC ペア 1 変換完了割り込みフラグ ステータス ビット 1 = 割り込み要求が発生 0 = 割り込み要求は発生していない ビット 14 ADCP0IF: ADC ペア 0 変換完了割り込みフラグ ステータス ビット 1 = 割り込み要求が発生 0 = 割り込み要求は発生していない ビット 13-10 未実装 :「0」として読み出し ビット 9 AC4IF: アナログ コンパレータ 4 割り込みフラグ ステータス ビット 1 = 割り込み要求が発生 0 = 割り込み要求は発生していない ビット 8 AC3IF: アナログ コンパレータ 3 割り込みフラグ ステータス ビット 1 = 割り込み要求が発生 0 = 割り込み要求は発生していない ビット 7 AC2IF: アナログ コンパレータ 2 割り込みフラグ ステータス ビット 1 = 割り込み要求が発生 0 = 割り込み要求は発生していない ビット 6-2 未実装:「0」として読み出し ビット 1 PWM4IF: PWM 4 割り込みフラグ ステータス ビット 1 = 割り込み要求が発生 0 = 割り込み要求は発生していない ビット 0 PWM3IF: PWM 3 割り込みフラグ ステータス ビット 1 = 割り込み要求が発生 0 = 割り込み要求は発生していない

(27)

割り込み

(

パート

IV)

レジスタ41-11: IFS7: 割り込みフラグ ステータス レジスタ 7

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 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

— — — ADCP6IF ADCP5IF ADCP4IF ADCP3IF ADCP2IF

bit 7 bit 0 記号の説明: R = 読み出し可 W = 書き込み可 U = 未実装ビット。「0」として読み出し -n = POR 時の値 「1」= セット 「0」= クリア x = 不明 ビット 15-5 未実装:「0」として読み出し ビット 4 ADCP6IF: ADC ペア 6 変換完了割り込みフラグ ステータス ビット 1 = 割り込み要求が発生 0 = 割り込み要求は発生していない ビット 3 ADCP5IF: ADC ペア 5 変換完了割り込みフラグ ステータス ビット 1 = 割り込み要求が発生 0 = 割り込み要求は発生していない ビット 2 ADCP4IF: ADC ペア 4 変換完了割り込みフラグ ステータス ビット 1 = 割り込み要求が発生 0 = 割り込み要求は発生していない ビット 1 ADCP3IF: ADC ペア 3 変換完了割り込みフラグ ステータス ビット 1 = 割り込み要求が発生 0 = 割り込み要求は発生していない ビット 0 ADCP2IF: ADC ペア 2 変換完了割り込みフラグ ステータス ビット 1 = 割り込み要求が発生 0 = 割り込み要求は発生していない

(28)

レジスタ41-12: IEC0: 割り込み許可制御レジスタ 0

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

— — ADIE U1TXIE U1RXIE SPI1IE SPI1EIE T3IE

bit 15 bit 8

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

T2IE OC2IE IC2IE — T1IE OC1IE IC1IE INT0IE

bit 7 bit 0 記号の説明: R = 読み出し可 W = 書き込み可 U = 未実装ビット。「0」として読み出し -n = POR 時の値 「1」= セット 「0」= クリア x = 不明 ビット 15-14 未実装 :「0」として読み出し ビット 13 ADIE: ADC1 変換完了割り込み許可ビット 1 = 割り込み要求を許可 0 = 割り込み要求は禁止 ビット 12 U1TXIE: UART1 送信割り込み許可ビット 1 = 割り込み要求を許可 0 = 割り込み要求は禁止 ビット 11 U1RXIE: UART1 受信割り込み許可ビット 1 = 割り込み要求を許可 0 = 割り込み要求は禁止 ビット 10 SPI1IE: SPI1 イベント割り込み許可ビット 1 = 割り込み要求を許可 0 = 割り込み要求は禁止 ビット 9 SPI1EIE: SPI1 フォルト割り込み許可ビット 1 = 割り込み要求を許可 0 = 割り込み要求は禁止 ビット 8 T3IE: タイマ 3 割り込み許可ビット 1 = 割り込み要求を許可 0 = 割り込み要求は禁止 ビット 7 T2IE: タイマ 2 割り込み許可ビット 1 = 割り込み要求を許可 0 = 割り込み要求は禁止 ビット 6 OC2IE: 出力コンペア チャネル 2 割り込み許可ビット 1 = 割り込み要求を許可 0 = 割り込み要求は禁止 ビット 5 IC2IE: 入力キャプチャ チャネル 2 割り込み許可ビット 1 = 割り込み要求を許可 0 = 割り込み要求は禁止 ビット 4 未実装:「0」として読み出し ビット 3 T1IE: タイマ 1 割り込み許可ビット 1 = 割り込み要求を許可 0 = 割り込み要求は禁止 ビット 2 OC1IE: 出力コンペア チャネル 1 割り込み許可ビット 1 = 割り込み要求を許可 0 = 割り込み要求は禁止

(29)

割り込み

(

パート

IV)

ビット 1 IC1IE: 入力キャプチャ チャネル 1 割り込み許可ビット 1 = 割り込み要求を許可 0 = 割り込み要求は禁止 ビット 0 INT0IE: 外部割り込み 0 許可ビット 1 = 割り込み要求を許可 0 = 割り込み要求は禁止 レジスタ41-12: IEC0: 割り込み許可制御レジスタ 0 ( 続き )

(30)

レジスタ41-13: IEC1: 割り込み許可制御レジスタ 1

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

— — INT2IE — — — — —

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

— — — INT1IE CNIE AC1IE MI2C1IE SI2C1IE

bit 7 bit 0 記号の説明: R = 読み出し可 W = 書き込み可 U = 未実装ビット。「0」として読み出し -n = POR 時の値 「1」= セット 「0」= クリア x = 不明 ビット 15-14 未実装 :「0」として読み出し ビット 13 INT2IE: 外部割り込み 2 許可ビット 1 = 割り込み要求を許可 0 = 割り込み要求は禁止 ビット 12-5 未実装:「0」として読み出し ビット 4 INT1IE: 外部割り込み 1 許可ビット 1 = 割り込み要求を許可 0 = 割り込み要求は禁止 ビット 3 CNIE: 入力変化通知割り込み許可ビット 1 = 割り込み要求を許可 0 = 割り込み要求は禁止 ビット 2 AC1IE: アナログ コンパレータ 1 割り込み許可ビット 1 = 割り込み要求を許可 0 = 割り込み要求は禁止 ビット 1 MI2C1IE: I2C1 マスター イベント割り込み許可ビット 1 = 割り込み要求を許可 0 = 割り込み要求は禁止 ビット 0 SI2C1IE: I2C1 スレーブ イベント割り込み許可ビット 1 = 割り込み要求を許可 0 = 割り込み要求は禁止

(31)

割り込み

(

パート

IV)

レジスタ41-14: IEC3: 割り込み許可制御レジスタ 3 レジスタ41-15: IEC4: 割り込み許可制御レジスタ 4

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

— — — — — — PSEMIE —

bit 15 bit 8

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

— — — — — — — — bit 7 bit 0 記号の説明: R = 読み出し可 W = 書き込み可 U = 未実装ビット。「0」として読み出し -n = POR 時の値 「1」= セット 「0」= クリア x = 不明 ビット 15-10 未実装 :「0」として読み出し ビット 9 PSEMIE: PWM 特殊イベント一致割り込み許可ビット 1 = 割り込み要求を許可 0 = 割り込み要求は禁止 ビット 8-0 未実装:「0」として読み出し

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 R/W-0 U-0

— — — — — — U1EIE — bit 7 bit 0 記号の説明: R = 読み出し可 W = 書き込み可 U = 未実装ビット。「0」として読み出し -n = POR 時の値 「1」= セット 「0」= クリア x = 不明 ビット 15-2 未実装:「0」として読み出し ビット 1 U1EIE: UART1 エラー割り込み許可ビット 1 = 割り込み要求を許可 0 = 割り込み要求は禁止 ビット 0 未実装:「0」として読み出し

(32)

レジスタ41-16: IEC5: 割り込み許可制御レジスタ 5

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

PWM2IE PWM1IE — — — — — —

bit 15 bit 8

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

— — — — — — — — bit 7 bit 0 記号の説明: R = 読み出し可 W = 書き込み可 U = 未実装ビット。「0」として読み出し -n = POR 時の値 「1」= セット 「0」= クリア x = 不明 ビット 15 PWM2IE: PWM2 割り込み許可ビット 1 = 割り込み要求を許可 0 = 割り込み要求は禁止 ビット 14 PWM1IE: PWM1 割り込み許可ビット 1 = 割り込み要求を許可 0 = 割り込み要求は禁止 ビット 13-0 未実装:「0」として読み出し

(33)

割り込み

(

パート

IV)

レジスタ41-17: IEC6: 割り込み許可制御レジスタ 6

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

ADCP1IE ADCP0IE — — — — AC4IE AC3IE

bit 15 bit 8

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

AC2IE — — — — — PWM4IE PWM3IE

bit 7 bit 0 記号の説明: R = 読み出し可 W = 書き込み可 U = 未実装ビット。「0」として読み出し -n = POR 時の値 「1」= セット 「0」= クリア x = 不明 ビット 15 ADCP1IE: ADC ペア 1 変換完了割り込み許可ビット 1 = 割り込み要求を許可 0 = 割り込み要求は禁止 ビット 14 ADCP0IE: ADC ペア 0 変換完了割り込み許可ビット 1 = 割り込み要求を許可 0 = 割り込み要求は禁止 ビット 13-10 未実装 :「0」として読み出し ビット 9 AC4IE: アナログ コンパレータ 4 割り込み許可ビット 1 = 割り込み要求を許可 0 = 割り込み要求は禁止 ビット 8 AC3IE: アナログ コンパレータ 3 割り込み許可ビット 1 = 割り込み要求を許可 0 = 割り込み要求は禁止 ビット 7 AC2IE: アナログ コンパレータ 2 割り込み許可ビット 1 = 割り込み要求を許可 0 = 割り込み要求は禁止 ビット 6-2 未実装:「0」として読み出し ビット 1 PWM4IE: PWM4 割り込み許可ビット 1 = 割り込み要求を許可 0 = 割り込み要求は禁止 ビット 0 PWM3IE: PWM3 割り込み許可ビット 1 = 割り込み要求を許可 0 = 割り込み要求は禁止

図

図 41-1: 割り込みベクタ テーブル
表 41-1: 割り込みベクタ IRQ
表 41-2: 割り込み制御レジスタ マップ

参照

関連したドキュメント

タップします。 6通知設定が「ON」になっ ているのを確認して「た めしに実行する」ボタン をタップします。.

春から初夏に多く見られます。クマは餌がたくさんあ

C. 

旅行者様は、 STAYNAVI クーポン発行のために、 STAYNAVI

えて リア 会を設 したのです そして、 リア で 会を開 して、そこに 者を 込 ような仕 けをしました そして 会を必 開 して、オブザーバーにも必 の けをし ます

イヌワシは晩秋に繁殖行動を開始します。オスとメスが一緒に飛んだり、オス が波状飛行を繰り返します。その後、12月から

Bemmann, Die Umstimmung des Tatentschlossenen zu einer schwereren oder leichteren Begehungsweise, Festschrift für Gallas(((((),

はありますが、これまでの 40 人から 35