MB9D560 Series 割込みコントローラの使用方法 32-Bit Microcontroller Spansion® TraveoTM Family APPLICATION NOTE Publication Number MB9D560_AN708-00006 CONFIDENTIAL Revision 1.0 Issue Date July 16, 2015 v1.1 A P P L I C A T I O N N O T E 対象製品 本操作マニュアルに記載されている内容の対象製品は、下記のとおりです。 シリーズ名 MB9D560 2 CONFIDENTIAL 品種型格(パッケージサフィックスは除く) MB9DF564MAE/F565MAE/F566MAE MB9DF564MGE/F565MGE/F566MGE MB9D560_AN708-00006-1v0-J, July 16, 2015 v1.1 A P P L I C A T I O N N O T E Table of Contents 1. 2. 3. 4. 5. 6. 7. はじめに ......................................................................................................................................... 6 1.1 この文書について................................................................................................................ 6 1.2 開発環境 ........................................................................................................................... 6 割込みコントローラの概要 ............................................................................................................ 7 2.1 割込みコントローラ構成 ..................................................................................................... 7 割込みコントローラ操作時の注意 .................................................................................................. 8 3.1 割込み受け付け停止状態 ..................................................................................................... 8 3.2 割込み抑止状態 ................................................................................................................... 8 3.2.1 IRQ 割込み状況ビット読出し時の注意 .............................................................. 9 3.3 割込み抑止状態解除 ............................................................................................................ 9 3.4 割込み受け付け停止状態時のみ書込み可能なレジスタ .................................................... 10 多重割込みに対応した割込みハンドラ実装時の注意 ................................................................... 11 4.1 割込み抑止状態解除 .......................................................................................................... 11 4.2 割込み処理終了時のホールドクリア ................................................................................. 11 4.3 割込みを無効にする方法 ................................................................................................... 12 ......................................................................................................................... 15 4.4 実装例 多重割込みに対応しない割込みハンドラ実装時の注意 ................................................................ 16 5.1 割込み受け付け停止方法 ................................................................................................... 16 5.2 IRQ 割込み状況ビットからの読出し ................................................................................. 16 5.3 実装例 ......................................................................................................................... 17 参考文書 ....................................................................................................................................... 18 主な変更内容 ................................................................................................................................ 19 July 16, 2015, MB9D560_AN708-00006-1v0-J CONFIDENTIAL 3 V1.1 A P P L I C A T I O N N O T E Figures Figure 2-1 割込みコントローラ構成 .......................................................................................................... 7 Figure 4-1 方法 1 実装例 ......................................................................................................................... 13 Figure 4-2 方法 2 実装例 ......................................................................................................................... 13 Figure 4-3 方法 3 実装例 ......................................................................................................................... 14 Figure 4-4 方法 4 実装例 ......................................................................................................................... 14 Figure 4-5 多重割込み対応割込みハンドラ実装例 ................................................................................... 15 Figure 5-1 多重割込みに対応しない割込みハンドラ実装例 ..................................................................... 17 4 CONFIDENTIAL MB9D560_AN708-00006-1v0-J, July 16, 2015 v1.1 A P P L I C A T I O N N O T E Tables Table 1-1 開発環境 ..................................................................................................................................... 6 Table 3-1 IRQ 割込み状況ビットの値が示す割込みコントローラの割込み状態 ........................................ 8 Table 3-2 割込み抑止解除レジスタ ........................................................................................................... 9 Table 3-3 割込み受け付け停止状態時のみ書込み可能なレジスタ ........................................................... 10 Table 4-1 割込みを無効にする方法 ......................................................................................................... 12 July 16, 2015, MB9D560_AN708-00006-1v0-J CONFIDENTIAL 5 V1.1 A P P L I C A T I O N N O T E 1. はじめに 1.1 この文書について 本アプリケーションノートは、スパンション製マイコン Traveo ファミリ MB9D560 の利用を検討されて いる方を対象としています。 割込みを検出してから割込みコントローラが処理を行うタイミングと CPU が処理を行うタイミングが異な るため、割込みコントローラを操作する際には特有の注意が必要になります。 本アプリケーションノートでは、割込みコントローラを操作する際の注意点について記載します。 1.2 開発環境 本アプリケーションノートの内容は Table 1-1 に示す環境で開発されています。 Table 1-1 開発環境 6 CONFIDENTIAL マイコン MB9DF566MGB 統合開発環境 MULTI v6.1.4 評価ボード MB2198-770-02-E0 最適化 Optimize for Speed MB9D560_AN708-00006-1v0-J, July 16, 2015 v1.1 A P P L I C A T I O N N O T E 2. 割込みコントローラの概要 割込みコントローラは割込みを検出すると、以下の処理を行います。 CPU への nIRQ 通知 割込みのプライオリティレベル/マスクレベルを制御 割込みベクタアドレスの通知 2.1 割込みコントローラ構成 割込みコントローラは Figure 2-1 の基本ブロックから構成されています。 Figure 2-1 割込みコントローラ構成 Bus Bus Slave IRQ Processing Stage CPUn nIRQ Hold Stage Preprocessed Status Stage NMI IRQ Channel Enable Stage RAW Status Stage IRQ Software Interrupt Stage Control Registers FIQ Processing Stage nFIQ 割込みコントローラ 各ブロックの詳細は、MB9D560 シリーズハードウェアマニュアル CHAPTER10:割込みコントローラを参 照してください。 July 16, 2015, MB9D560_AN708-00006-1v0-J CONFIDENTIAL 7 V1.1 A P P L I C A T I O N N O T E 3. 割込みコントローラ操作時の注意 割込みコントローラは CPU とは異なるタイミングで割込みの優先順位を制御しています。そのため割込み コントローラのレジスタには、割込みコントローラが割込みを受け付けられる状態で書込みを行うと誤動作 を引き起こすものがあります。該当レジスタに書込みを行う際は割込みコントローラを割込み受け付け停止 状態にする必要があります。 本章では割込みコントローラを割込み受け付け停止状態にする方法と、割込み受け付け停止状態時のみ書込 み可能なレジスタについて記します。 3.1 割込み受け付け停止状態 割込みコントローラに対して割込みの受け付けを停止させるには以下の 2 つの方法があります。 割込みコントローラを IRQ 処理ブロック無効にする (IRC 制御/ステータスレジスタの IRQ 処理ブロック有効/無効設定ビット(IRCn_CSR[bit0])に”0”を設定) 割込みコントローラを割込み抑止状態にする (IRC IRQ ステータスレジスタの IRQ 割込み状況ビット(IRCn_IRQST[bit24])を読出す) 3.2 割込み抑止状態 割込みコントローラが割込み抑止状態に遷移すると CPU に対して割込みの発生を通知しません。割込みコ ントローラは以下のいずれかの条件が満たされた場合、割込み抑止状態に遷移します。 割込みコントローラが CPU へ割込み通知を行った IRC IRQ ステータスレジスタの IRQ 割込み状況ビット(IRCn_IRQST[bit24])が読出された IRC IRQ ステータスレジスタの IRQ 割込み状況ビット(IRCn_IRQST[bit24])は割込みコントローラの割込 み状態の表示及び、割込みの抑止制御を行うためのビットです。IRQ 割込み状況ビットに対して読出しを行 うことにより任意のタイミング(CPU の I-FLAG が”1”(割込み禁止)時を除く)で割込みコントローラを 割込み抑止状態へ遷移させることができます。 IRQ 割込み状況ビットの値が示す割込みコントローラの状態を Table 3-1 に記します。 Table 3-1 IRQ 割込み状況ビットの値が示す割込みコントローラの割込み状態 IRQ 割込み状況ビットの値 割込みコントローラの状態 以下のいずれかであることを示す。 0 ・割込みコントローラが CPU に対して割込みを通知している。 ・割込みコントローラが割込み抑止状態である。 1 8 CONFIDENTIAL 受け付け中の割込みが存在せず、nIRQ ビットの読出しにより割込みコントローラが割 込み抑止状態へ遷移した。 MB9D560_AN708-00006-1v0-J, July 16, 2015 v1.1 A P P L I C A T I O N 3.2.1 N O T E IRQ 割込み状況ビット読出し時の注意 IRC IRQ ステータスレジスタの IRQ 割込み状況ビット(IRCn_IRQST[bit24])に対して読出しを行う場合は 以下の点に注意してください。 読出される値について IRQ 割込み状況ビットから”1”を読出すことにより割込みコントローラは割込み抑止状態となるため、IRQ 割込み状況ビットに対する 2 回目以降の読出し結果は常に”0”となります。再度”1”が読出されるタイミン グは割込み抑止状態を解除した直後の読出し時のみとなります。 読出しが禁止されているタイミングについて CPU の I-FLAG が”1”(割込み禁止)のときに IRQ 割込み状況ビットに対して読出しを行うことは禁止で す。CPU の I-FLAG が”1”のときに割込みコントローラが次の割込みを受け付けた場合、IRQ 割込み状況 ビットに対して読出しを行っても割込みコントローラが割込み抑止状態へ遷移しない可能性があります。 3.3 割込み抑止状態解除 Table 3-2 の割込み抑止解除レジスタに対して書込みを行うことで割込み抑止状態は解除されます。 Table 3-2 割込み抑止解除レジスタ レジスタ略称 レジスタ名 IRCn_IRQVAr IRC IRQ ベクタアドレスレジスタ IRCn_IRQPL0-127 IRC IRQ プライオリティレベルレジスタ IRCn_IRQS0-15 IRC IRQ ソフトウェア割込みセットレジスタ IRCn_IRQR0-15 IRC IRQ ソフトウェア割込みリセットレジスタ IRCn_IRQCES0-15 IRC IRQ チャネル許可セットレジスタ IRCn_IRQCEC0-15 IRC IRQ チャネル許可クリアレジスタ IRCn_IRQCE0-15 IRC IRQ チャネル許可設定レジスタ IRCn_IRQHC IRC IRQ ホールドクリアレジスタ IRCn_IRQPLM IRC IRQ プライオリティレベルマスクレジスタ IRCn_CSR IRC 制御/ステータスレジスタ 割込みコントローラは割込み抑止状態へ遷移すると、割込み抑止解除レジスタに対して書込みを行うまで割 込み抑止状態のままになります。そのため、再度割込みを有効にする場合はレジスタ操作が不要であっても 割込み抑止解除レジスタに対して書込み(ダミーライト)を行ってください。 July 16, 2015, MB9D560_AN708-00006-1v0-J CONFIDENTIAL 9 V1.1 A P P L I C A T I O N 3.4 N O T E 割込み受け付け停止状態時のみ書込み可能なレジスタ Table 3-3 のレジスタへの書込みは必ず、割込みコントローラが割込み受け付け停止状態時に行ってください。 割込みの受け付けを停止していないときに書込みを行うと誤動作の原因となります。 Table 3-3 割込み受け付け停止状態時のみ書込み可能なレジスタ レジスタ略称 レジスタ名 IRCn_IRQPL0-127 IRC IRQ プライオリティレベルレジスタ IRCn_IRQHC IRC IRQ ホールドクリアレジスタ IRCn_IRQPLM IRC IRQ プライオリティレベルマスクレジスタ IRCn_CSR IRC 制御/ステータスレジスタ なお、Table 3-3 のレジスタは割込み抑止解除レジスタ(Table 3-2)に含まれているため、Table 3-3 のレジス タへ書込みを行った後は割込み抑止状態が解除されます。そのため、Table 3-3 のレジスタに対して複数回書 込みを行う場合は以下のいずれかの方法で行ってください。 Table 3-3 のレジスタへ書込みを行うごとに IRC IRQ ステータスレジスタの IRQ 割込み状況ビット (IRCn_IRQST[bit24])から読出しを行う Table 3-3 のレジスタへ書込みを行う前に割込みコントローラを IRQ 処理ブロック無効に設定(IRC 制御/ ステータスレジスタの IRQ 処理ブロック有効/無効設定ビット(IRCn_CSR[bit0])に”0”を設定)する 10 CONFIDENTIAL MB9D560_AN708-00006-1v0-J, July 16, 2015 v1.1 A P P L I C A T I O N N O T E 4. 多重割込みに対応した割込みハンドラ実装時の注意 ARM アーキテクチャでは多重割込みをサポートしていないため、ソフトウェアで実装する必要があります。 本章では多重割込みに対応した割込みハンドラを実装する際の注意点について記します。 4.1 割込み抑止状態解除 割込みコントローラは CPU へ割込み通知を行うと割込み抑止状態へ遷移します。そのため、割込みハンド ラ処理開始時、割込みコントローラは割込み抑止状態となっています。多重割込みを行う場合は割込みハン ドラの先頭にて割込み抑止解除レジスタ(Table 3-2)に対して書込みを行わなければなりません。 また、割込みハンドラ処理開始時、CPU の I-FLAG にはハードウェアによって”1” (割込み禁止)が設定さ れています。割込み抑止解除と同時に CPU の I-FLAG に”0” (割込み許可)を設定してください。 4.2 割込み処理終了時のホールドクリア 割込み処理終了時のホールドクリアは必ず CPU の I-FLAG が”1”(割込み禁止)の状態で行ってください。 CPU の I-FLAG が”0”(割込み許可)の状態でホールドクリアを行った場合、ホールドクリアを行ったタイ ミングで割込み抑止状態が解除されます。そのため実行中の割込みハンドラの処理が完了する前に次の割込 み処理が実行され、スタックオーバーフローを引き起こす可能性があります。 IRC IRQ ホールドクリアレジスタ(IRCn_IRQHC)は割込み受け付け停止状態時のみ書込み可能なレジスタ (Table 3-3)に含まれるため、CPU の I-FLAG が”1”(割込み禁止)の状態でホールドクリアを行うために は以下の手順で行う必要があります。 1. 2. 3. IRC IRQ ステータスレジスタの IRQ 割込み状況ビット(IRCn_IRQST[bit24])を読出す CPU の I-FLAG に”1”を設定 IRC IRQ ホールドクリアレジスタ(IRCn_IRQHC)にクリアする IRQ チャネル番号を書込む July 16, 2015, MB9D560_AN708-00006-1v0-J CONFIDENTIAL 11 V1.1 A P P L I C A T I O N 4.3 N O T E 割込みを無効にする方法 Table 4-1 の方法を行うことにより、多重割込み対応割込みハンドラ処理内で割込みを無効にすることが可能 です。 ただし、割込み無効中にそれぞれの禁止事項に記載している処理は行わないでください。 各方法の実装例を Figure 4-1~Figure 4-4 に記します。 Table 4-1 割込みを無効にする方法 割込みを無効にする方法 禁止事項 IRQ 割込み状況ビットからの読出し。 方法 1 CPU の I-FLAG に”1”(割込み禁止)を設定。 割込み受け付け停止状態時のみ書込み可能なレジスタ (Table 3-3)への書込み。 方法 2 IRQ 割込み状況ビットからの読出し。 ※1 割込み受け付け停止状態時のみ書込み可能なレジスタ (Table 3-3)への複数回書込み。 CPU の I-FLAG へ”1”(割込み禁止)を設定後の IRQ 割込み 方法 3 IRQ 割込み状況ビット読出し実施直後に CPU 状況ビットからの読出し。 の I-FLAG に”1”(割込み禁止)を設定。 ※1 割込み受け付け停止状態時のみ書込み可能なレジスタ (Table 3-3)への複数回書込み。 方法 4 IRQ 処理ブロック有効/無効設定ビットに”0” (IRQ 処理ブロック無効)を設定。 ※2 IRQ 割込み状況ビットからの読出し。 ※1 IRQ 割込み状況ビット:IRCn_IRQST[bit24] ※2 IRQ 処理ブロック有効/無効設定ビット:IRCn_CSR[bit0] 12 CONFIDENTIAL MB9D560_AN708-00006-1v0-J, July 16, 2015 v1.1 A P P L I C A T I O N N O T E Figure 4-1 方法 1 実装例 sample.c 事前の処理によって以下の状態であるものとする。 - CPUのI-FLAGが"0"(割込み許可) - 割込み抑止解除状態 - CPUのI-FLAGに"1"(割込み禁止)を設定。 __DI(); FRT16B00_TCCS = 0x014800FF; FRT16B00_CPCLRB = 0xFFFF; FRT16B00_TCDT = 0x0000; FRT16B00_TCCS = 0x010800FF; 割込み無効期間中に行う処理 __EI(); CPUのI-FLAGに"0"(割込み許可)を設定。 - Figure 4-2 方法 2 実装例 sample.c - 事前の処理によって以下の状態であるものとする。 - CPUのI-FLAGが"0"(割込み許可) - 割込み抑止解除状態 割込み抑止状態に遷移。 while(IRC0_IRQST_nIRQ == 0); IRC0_IRQPL0_IRQPL0 = 1; - July 16, 2015, MB9D560_AN708-00006-1v0-J CONFIDENTIAL 割込み無効期間中に行う処理 割込み抑止状態解除レジスタへの書込み。 割込み抑止状態解除。 13 V1.1 A P P L I C A T I O N N O T E Figure 4-3 方法 3 実装例 sample.c - 事前の処理によって以下の状態であるものとする。 - CPUのI-FLAGが"0"(割込み許可) - 割込み抑止解除状態 割込み抑止状態に遷移。 必ずCPUのI-FLAGに"1"設定前に実施。 while(IRC0_IRQST_nIRQ == 0); CPUのI-FLAGに"1"(割込み禁止)を設定。 __DI(); IRC0_IRQPL0_IRQPL0 = 1; FRT16B00_TCCS = 0x014800FF; FRT16B00_CPCLRB = 0xFFFF; FRT16B00_TCDT = 0x0000; FRT16B00_TCCS = 0x010800FF; 割込み無効期間中に行う処理 __EI(); CPUのI-FLAGに"0"(割込み許可)を設定。 - Figure 4-4 方法 4 実装例 sample.c - 事前の処理によって以下の状態であるものとする。 - CPUのI-FLAGが"0"(割込み許可) - 割込み抑止解除状態 IRQ処理ブロック無効を設定。 while(IRC0_IRQST_nIRQ == 0); IRC0_UNLOCK = INTERRUPTS_INT_CTRL_KEY_UNLOCK; IRC0_CSR = 0; IRC0_UNLOCK = INTERRUPTS_INT_CTRL_KEY_LOCK; IRC0_IRQPL0_IRQPL0 = 1; IRC0_IRQPLM_IRQPLM = 25; FRT16B00_TCCS = 0x014800FF; FRT16B00_CPCLRB = 0xFFFF; FRT16B00_TCDT = 0x0000; FRT16B00_TCCS = 0x010800FF; IRC0_UNLOCK = INTERRUPTS_INT_CTRL_KEY_UNLOCK; IRC0_CSR = 1; IRC0_UNLOCK = INTERRUPTS_INT_CTRL_KEY_LOCK; 割込み受け付け停止状態時のみ書込み可能 レジスタへの書込み。 IRQ処理ブロック無効が設定されているため、 IRQ割込み状況ビットの読出しは行わない。 割込み無効期間中に行う処理 IRQ処理ブロック有効を設定。 - 14 CONFIDENTIAL MB9D560_AN708-00006-1v0-J, July 16, 2015 v1.1 A P P L I C A T I O N 4.4 N O T E 実装例 多重割込みに対応した割込みハンドラの実装例を Figure 4-5 に記します。 MULTI コンパイラでは Cortex-R の多重割込みに対応した疑似命令が存在しないため、必要な処理をアセン ブラで実装する必要があります。 Figure 4-5 多重割込み対応割込みハンドラ実装例 sample.asm ADDRESS_OF_IRC0_CSR ADDRESS_OF_IRQST_nIRQ ADDRESS_OF_IRC0_IRQHC ADDRESS_OF_IRC0_UNLOCK VALUE_OF_IRC0_UNLOCK VALUE_OF_IRC0_LOCK nested_handler: SUB SRSFD CPS PUSH FSTMDBD FMRX PUSH AND SUB PUSH .equ .equ .equ .equ .equ .equ 0xb0400c98 0xb040000f 0xb0400c48 0xb0400d30 0x17ACC911 0x17B10C11 lr, lr, #4 sp!, #0x1f #0x1f {r0-r3, r12} sp!, {d0-d7} r1, fpscr r1 r1, sp, #4 sp, sp, r1 {r1, lr} CPSIE i MOVW MOVT MOVW MOVT STR r1, #(ADDRESS_OF_IRC0_UNLOCK & 0xFFFF) r1, #(ADDRESS_OF_IRC0_UNLOCK >> 16) r0, #(VALUE_OF_IRC0_UNLOCK & 0xFFFF) r0, #(VALUE_OF_IRC0_UNLOCK >> 16) r0, [r1] MOVW MOVT MOV STR r1, #(ADDRESS_OF_IRC0_CSR & 0xFFFF) r1, #(ADDRESS_OF_IRC0_CSR >> 16) r0, #1 r0, [r1] MOVW MOVT MOVW MOVT STR r1, #(ADDRESS_OF_IRC0_UNLOCK & 0xFFFF) r1, #(ADDRESS_OF_IRC0_UNLOCK >> 16) r0, #(VALUE_OF_IRC0_LOCK & 0xFFFF) r0, #(VALUE_OF_IRC0_LOCK >> 16) r0, [r1] LDR BLX r1, =isr_name r1 割込み許可 ダミーライトを行うために書込みロック解除 割込み抑止状態を解除するためのダミーライト実施 再度、書込みロック状態に設定 割込み処理実施関数に遷移 MOVW r1, #(ADDRESS_OF_IRQST_nIRQ & 0xFFFF) MOVT r1, #(ADDRESS_OF_IRQST_nIRQ >> 16) IRQST_check_loop: LDRB r0, [r1] CMP r0, #0 BEQ IRQST_check_loop CPSID i MOVW MOVW MOVT STR r0, #(irq_num & 0x1FF) r1, #(ADDRESS_OF_IRC0_IRQHC & 0xFFFF) r1, #(ADDRESS_OF_IRC0_IRQHC >> 16) r0, [r1] POP ADD POP FMXR FLDMIAD POP RFEFD {r1, lr} sp, sp, r1 r1 fpscr, r1 sp!, {d0-d7} {r0-r3, r12} sp! July 16, 2015, MB9D560_AN708-00006-1v0-J CONFIDENTIAL ※isr_name = 割込み処理実施関数の先頭アドレス 割込み抑止状態に遷移 割込み禁止 ホールドクリア実施 ※irq_num = IRQのISR に対応するチャネル番号 15 V1.1 A P P L I C A T I O N N O T E 5. 多重割込みに対応しない割込みハンドラ実装時の注意 実行中の割込みハンドラの処理が完了するまで次の割込みを受け付けないようにするため、割込みハンドラ 処理が完了するまで以下の全ての条件を満たし続ける必要があります。 割込みコントローラが割込み受け付け停止状態であること CPU の I-FLAG が”1”(割込み禁止)であること 本章では多重割込みに対応しない割込みハンドラを実装する際の注意点について記します。 5.1 割込み受け付け停止方法 割込みハンドラの先頭で IRC 制御/ステータスレジスタの IRQ 処理ブロック有効/無効設定ビット (IRCn_CSR[bit0])に”0”(IRQ 処理ブロック無効)を書込むことで割込みコントローラを割込み受け付け 停止状態にしてください。 割込みハンドラに処理が遷移したときには割込み抑止状態となっているため、割込みコントローラは割込み 受け付け停止状態となっています。しかし、割込み抑止状態であることによる割込み受け付け停止状態の場 合、割込み抑止解除レジスタへ書込みを行ったタイミングで割込み受け付け停止状態が解除されてしまいま す。 なお、割込みハンドラ処理完了後に次の割込みを受付けられるよう、必ず割込みハンドラの最後で IRQ 処 理ブロックを有効に戻してください。 ホールドクリア時に書込みを行う IRC IRQ ホールドクリアレジスタ(IRCn_IRQHC)は割込み受け付け停止 状態時のみ書込み可能なレジスタ(Table 3-3)であるため、ホールドクリア実施後に IRQ 処理ブロックを有 効にしてください。 5.2 IRQ 割込み状況ビットからの読出し 割込みハンドラの処理中は CPU の I-FLAG は”1”でなければならないことから、割込みハンドラ処理内での IRC IRQ ステータスレジスタの IRQ 割込み状況ビット(IRCn_IRQST[bit24])からの読出しは禁止されてい ます。 割込みハンドラ処理中は IRQ 処理ブロックを無効にしているため、割込みコントローラは割込み受け付け 停止状態になっています。割込み受け付け停止状態時のみ書込み可能なレジスタ(Table 3-3)へ書込みを行 う場合は、割込みの受け付けを停止させる処理は不要です。 16 CONFIDENTIAL MB9D560_AN708-00006-1v0-J, July 16, 2015 v1.1 A P P L I C A T I O N N O T E 実装例 5.3 多重割込みに対応しない割込みハンドラの実装例を Figure 5-1 に記します。 多重割込み対応しない割込みハンドラは MULTI コンパイラの疑似命令(__interrupt)を使用した実装が可能 です。 Figure 5-1 多重割込みに対応しない割込みハンドラ実装例 sample.c #define INTERRUPTS_INT_CTRL_KEY_UNLOCK #define INTERRUPTS_INT_CTRL_KEY_LOCK (0x17ACC911) (0x17B10C11) __interrupt void NotNestedHandler(void) { IRC0_UNLOCK = INTERRUPTS_INT_CTRL_KEY_UNLOCK; IRC0_CSR = 0; IRC0_UNLOCK = INTERRUPTS_INT_CTRL_KEY_LOCK IRQ処理ブロック無効を設定。 FRT16B00_TCCS = 0x014800FF; FRT16B00_CPCLRB = 0xFFFF; FRT16B00_TCDT = 0x0000; FRT16B00_TCCS = 0x010800FF; ホールドクリア実施。 IRQ割込み状況ビットの読出しは行ってはいけない。 IRC0_IRQHC = irq_num; ※irq_num = IRQのISR に対応するチャネル番号 IRC0_UNLOCK = INTERRUPTS_INT_CTRL_KEY_UNLOCK; IRC0_CSR = 1; IRC0_UNLOCK = INTERRUPTS_INT_CTRL_KEY_LOCK; IRQ処理ブロック有効を設定。 } July 16, 2015, MB9D560_AN708-00006-1v0-J CONFIDENTIAL 17 V1.1 A P P L I C A T I O N N O T E 6. 参考文書 [1]. 32 ビット・マイクロコントローラ MB9D560 シリーズハードウェアマニュアル 18 CONFIDENTIAL MB9D560_AN708-00006-1v0-J, July 16, 2015 v1.1 A P P L I C A T I O N N O T E 7. 主な変更内容 ページ 場所 - - 変更箇所 Revision 1.0 July 16, 2015, MB9D560_AN708-00006-1v0-J CONFIDENTIAL Initial release 19 V1.1 A P P L I C A T I O N N O T E 免責事項 本資料に記載された製品は、通常の産業用, 一般事務用, パーソナル用, 家庭用などの一般的用途 (ただし、用途の限定はあ りません) に使用されることを意図して設計・製造されています。(1) 極めて高度な安全性が要求され、仮に当該安全性が 確保されない場合、社会的に重大な影響を与えかつ直接生命・身体に対する重大な危険性を伴う用途 (原子力施設における 核反応制御, 航空機自動飛行制御, 航空交通管制, 大量輸送システムにおける運行制御, 生命維持のための医療機器, 兵器シ ステムにおけるミサイル発射制御等をいう) 、ならびに(2) 極めて高い信頼性が要求される用途 (海底中継器, 宇宙衛星等を いう) に使用されるよう設計・製造されたものではありません。上記の製品の使用法によって惹起されたいかなる請求また は損害についても、Cypress は、お客様または第三者、あるいはその両方に対して責任を一切負いません。半導体デバイス はある確率で故障が発生します。当社半導体デバイスが故障しても、結果的に人身事故, 火災事故, 社会的な損害を生じさ せないよう、お客様において、装置の冗長設計, 延焼対策設計, 過電流防止対策設計, 誤動作防止設計などの安全設計をお願 いします。本資料に記載された製品が、外国為替及び外国貿易法、米国輸出管理関連法規などの規制に基づき規制されてい る製品または技術に該当する場合には、本製品の輸出に際して、同法に基づく許可が必要となります。 商標および注記 このドキュメントは、断りなく変更される場合があります。本資料には Cypress が開発中の Cypress 製品に関する情報が記 載されている場合があります。Cypress は、それらの製品に対し、予告なしに仕様を変更したり、開発を中止したりする権 利を有します。このドキュメントに含まれる情報は、現状のまま、保証なしに提供されるものであり、その正確性, 完全性, 実施可能性および特定の目的に対する適合性やその市場性および他者の権利を侵害しない事を保証するものでなく、また、 明示, 黙示または法定されているあらゆる保証をするものでもありません。Cypress は、このドキュメントに含まれる情報を 使用することにより発生したいかなる損害に対しても責任を一切負いません。 Copyright © 2015 Cypress Semiconductor Corp. All rights reserved. 商標:Cypress, Cypress ロゴ,Spansion®, Spansion ロゴ (図形マーク), MirrorBit®, MirrorBit® Eclipse™, ORNAND™, Easy DesignSim™, Traveo™ 及びこれらの組合せは、米国・日本ほか諸外国における Cypress Semiconductor Corp.の商標です。第三 者の社名・製品名等の記載はここでは情報提供を目的として表記したものであり、各権利者の商標もしくは登録商標となっ ている場合があります。 20 CONFIDENTIAL MB9D560_AN708-00006-1v0-J, July 16, 2015 v1.1
© Copyright 2024 ExpyDoc