0.5MB

本ドキュメントはCypress (サイプレス) 製品に関する情報が記載されております。
AN706-00049-1v0-J
32-BIT MICROCONTROLLER
FM3 ファミリ アプリケーションノート
割込み要因ベクタ リロケート機能の利用方法
ARM is the registered trademark of ARM Limited in the EU and other countries.
Cortex is trademark of ARM Limited in the EU and other countries.
AN706-00049-1v0-J
注意事項

本資料の記載内容は、予告なしに変更することがありますので、ご用命の際は営業部
門にご確認ください。

本資料に記載された動作概要や応用回路例は、半導体デバイスの標準的な動作や使い
方を示したもので、実際に使用する機器での動作を保証するものではありません。し
たがいまして、これらを使用するにあたってはお客様の責任において機器の設計を行
ってください。これらの使用に起因する損害などについては、当社はその責任を負い
ません。

本資料に記載された動作概要・回路図を含む技術情報は、当社もしくは第三者の特許
権、著作権等の知的財産権やその他の権利の使用権または実施権の許諾を意味するも
のではありません。また、これらの使用について、第三者の知的財産権やその他の権
利の実施ができることの保証を行うものではありません。したがって、これらの使用
に起因する第三者の知的財産権やその他の権利の侵害について、当社はその責任を負
いません。

本資料に記載された製品は、通常の産業用、一般事務用、パーソナル用、家庭用など
の一般的用途に使用されることを意図して設計・製造されています。極めて高度な安
全性が要求され、仮に当該安全性が確保されない場合、社会的に重大な影響を与えか
つ直接生命・身体に対する重大な危険性を伴う用途(原子力施設における核反応制御、
航空機自動飛行制御、航空交通管制、大量輸送システムにおける運行制御、生命維持
のための医療機器、兵器システムにおけるミサイル発射制御をいう)、ならびに極め
て高い信頼性が要求される用途(海底中継器、宇宙衛星をいう)に使用されるよう設
計・製造されたものではありません。したがって、これらの用途にご使用をお考えの
お客様は、必ず事前に営業部門までご相談ください。ご相談なく使用されたことによ
り発生した損害などについては、責任を負いかねますのでご了承ください。

半導体デバイスはある確率で故障が発生します。当社半導体デバイスが故障しても、
結果的に人身事故、火災事故、社会的な損害を生じさせないよう、お客様は、装置の
冗長設計、延焼対策設計、過電流防止対策設計、誤動作防止設計などの安全設計をお
願いします。

本資料に記載された製品を輸出または提供する場合は、外国為替及び外国貿易法およ
び米国輸出管理関連法規等の規制をご確認の上、必要な手続きをおとりください。

本書に記載されている社名および製品名などの固有名詞は、各社の商標または登録商
標です。
Copyright© 2012 FUJITSU SEMICONDUCTOR LIMITED all rights reserved
1
AN706-00049-1v0-J
改版履歴
版数
日付
内容
1.0 版
2012/06/12
新規作成
2
AN706-00049-1v0-J
目次
注意事項 ..................................................................................................................................1
改版履歴 ..................................................................................................................................2
目次..........................................................................................................................................3
対象製品 ..................................................................................................................................4
1
はじめに ...........................................................................................................................5
2
割込み要因ベクタリロケート機能...................................................................................6
3
ファイルの修正 ..............................................................................................................10
4
3.1
修正対象ファイル ...................................................................................................10
3.2
スタートアップルーチンの修正 .............................................................................10
3.3
IO 定義ファイルの修正...........................................................................................13
割込み要因ベクタリロケート機能の設定......................................................................14
4.1
5
6
レジスタの設定.......................................................................................................14
設定例(サンプルプログラム).....................................................................................15
5.1
割込み要因定義ファイル ........................................................................................15
5.2
サンプルプログラム................................................................................................15
注意事項 .........................................................................................................................17
3
AN706-00049-1v0-J
対象製品
本アプリケーションノートに記載されている内容の対象製品は、下記の通りです。
(TYPE4)
シリーズ名
品種型格(パッケージサフィックスは除く)
MB9B110R
MB9BF112N, MB9BF112R, MB9BF114N, MB9BF114R,
MB9BF115N, MB9BF115R, MB9BF116N, MB9BF116R
MB9B310R
MB9BF312N, MB9BF312R, MB9BF314N, MB9BF314R,
MB9BF315N, MB9BF315R, MB9BF316N, MB9BF316R
MB9B410R
MB9BF412N, MB9BF412R, MB9BF414N, MB9BF414R,
MB9BF415N, MB9BF415R, MB9BF416N, MB9BF416R
MB9B510R
MB9BF512N, MB9BF512R, MB9BF514N, MB9BF514R,
MB9BF515N, MB9BF515R, MB9BF516N, MB9BF516R
(TYPE5)
シリーズ名
品種型格(パッケージサフィックスは除く)
MB9A110K
MB9AF111K, MB9AF112K
MB9A310K
MB9AF311K, MB9AF312K
(TYPE6)
シリーズ名
品種型格(パッケージサフィックスは除く)
MB9A140N
MB9AF141L, MB9AF141M, MB9AF141N,
MB9AF142L, MB9AF142M, MB9AF142N,
MB9AF144L, MB9AF144M, MB9AF144N
MB9A340N
MB9AF341L, MB9AF341M, MB9AF341N,
MB9AF342L, MB9AF342M, MB9AF342N,
MB9AF344L, MB9AF344M, MB9AF344N
MB9AA40N
MB9AFA41L, MB9AFA41M, MB9AFA41N,
MB9AFA42L, MB9AFA42M, MB9AFA42N,
MB9AFA44L, MB9AFA44M, MB9AFA44N
MB9AB40N
MB9AFB41L, MB9AFB41M, MB9AFB41N,
MB9AFB42L, MB9AFB42M, MB9AFB42N,
MB9AFB44L, MB9AFB44M, MB9AFB44N
4
AN706-00049-1v0-J
1
はじめに
このアプリケーションノートでは、FM3 に搭載されている「割込み要因ベクタリロケート
機能」の利用方法について説明します。
5
AN706-00049-1v0-J
割込み要因ベクタリロケート機能
2
割込み要因ベクタリロケート機能は、FM3 に設定されている割込み要因ベクタのアサイン
を切替える機能です。IRQCMODE レジスタの IRQCOMODE ビットの設定により、表 2-1
に示す 2種類の割込み要因ベクタアサインを選択できます。また IRQCMODE=1 設定時は、
IRQ No.3-10 に対して表 2-2 に示す割込み要因を選択できます。なお割込み要因の選択には
RCINTSEL0/1 レジスタの INTSELx ビットを使用します。
表 2.1 例外と割込み要因ベクタ一覧
例外と割込み要因ベクタ
ベクタ
No.
IRQ
No.
0
-
スタックポインタ初期値
1
-
リセット
2
-
ノンマスカブル割込み(NM I) / ハードウェアウォッチドッグタイマ
3
-
ハードフォルト
4
-
メモリ管理
5
-
バスフォルト
6
-
用途フォルト
7-10
-
Reserved
11
-
SVCall(スーパバイザコール)
12
-
デバッグモニタ
13
-
Reserved
14
-
PendSV
15
-
SysTick
16
0
クロックスーパバイザによる異常周波数検出(FCS)
17
1
ソフトウェアウォッチドッグタイマ
18
2
低電圧検出(LVD)
19
3
MFT unit0, unit1, unit2 波形ジェネレー
タ/ DTIF(モータ緊急停止)
RCINTSEL0 レジスタで割込み要因選択
20
4
外部端子割込み ch.0~ch.7
RCINTSEL0 レジスタで割込み要因選択
21
5
外部端子割込み ch.8~ch.31
RCINTSEL0 レジスタで割込み要因選択
22
6
デュアルタイマ / クアッドカウンタ
(QPRC) ch.0, ch.1, ch.2
RCINTSEL0 レジスタで割込み要因選択
23
7
MFS ch.0 の受信割込み
RCINTSEL1 レジスタで割込み要因選択
24
8
MFS ch.0 の送信, ステータス割込み
RCINTSEL1 レジスタで割込み要因選択
25
9
MFSch.1 の受信割込み
RCINTSEL1 レジスタで割込み要因選択
26
10
MFS ch.1 の送信, ステータス割込み
RCINTSEL1 レジスタで割込み要因選択
27
11
MFS ch.2 の受信割込み
MFT unit0 波形ジェネレータ/ DTIF(モー
タ緊急停止)
IRQCMODE=0*
IRQCMODE=1
AN706-00049-1v0-J
例外と割込み要因ベクタ
ベクタ
No.
IRQ
No.
28
12
MFS ch.2 の送信, ステータス割込み
外部端子割込み ch.0~ch.7
29
13
MFS ch.3 の受信割込み
外部端子割込み ch.8~ch.31
30
14
MFS ch.3 の送信, ステータス割込み
デュアルタ イマ / ク アッド カウン タ
(QPRC) ch.0
31
15
MFS ch.4 の受信割込み
MFS ch.0 の受信, 送信, ステータス割 込
み
32
16
MFS ch.4 の送信, ステータス割込み
MFS ch.1 の受信, 送信, ステータス割 込
み
33
17
MFS ch.5 の受信割込み
MFS ch.2 の受信, 送信, ステータス割 込
み
34
18
MFS ch.5 の送信, ステータス割込み
MFS ch.3 の受信、送信, ステータス割 込
み
35
19
MFS ch.6 の受信割込み
MFS ch.4 の受信割込み
36
20
MFS ch.6 の送信, ステータス割込み
MFS ch.4 の送信, ステータス割込み
37
21
MFS ch.7 の受信割込み
MFS ch.5 の受信割込み
38
22
MFS ch.7 の送信, ステータス割込み
MFS ch.5 の送信, ステータス割込み
39
23
PPG ch.0/2/4/8/10/12/16/18/20
40
24
外部メイン発振 / 外部サブ発振 / メイン PLL / USB 用 PLL /
時計カウンタ/リアルタイムカウンタ
41
25
A/D コンバータ unit0
42
26
A/D コンバータ unit1
43
27
A/D コンバータ unit2 / LCD コントローラ
44
28
MFT unit0, unit1, unit2 フリーランタイマ
MFT unit0 フリーランタイマ, インプッ
トキャプチャ, アウトプットキャプチャ
45
29
MFT unit0, unit1, unit2 インプットキャプ
チャ
MFT unit1 フリーランタイマ, インプッ
トキャプチャ, アウトプットキャプチャ
46
30
MFT unit0, unit1, unit2 アウトプットコン
ペア
MFT unit2 フリーランタイマ, インプッ
トキャプチャ, アウトプットキャプチャ
47
31
ベースタイマ ch.0~ch.7
48
32
CAN ch.0 / Ethernet ch.0
49
33
CAN ch.1 / Ethernet ch.1
50
34
USB ch.0 ファンクション(End Point 1~5 の DRQ)
51
35
USB ch.0 ファンクション(End Point 0 の DRQI, DRQO と各ステータス) /
USB ch.0 ホスト(各ステータス)
52
36
USB ch.1 ファンクション(End Point 1~5 の DRQ) / HDMI-CEC,リモコン受信 ch.0
53
37
USB ch.1 ファンクション(End Point 0 の DRQI, DRQO と各ステータス) /
USB ch.1 ホスト(各ステータス) / HDMI-CEC,リモコン受信 ch.1
54
38
DMA コントローラ(DMAC ) ch.0
IRQCMODE=0*
IRQCMODE=1
7
DMA コントローラ(DMAC ) ch.0~ch.7
AN706-00049-1v0-J
例外と割込み要因ベクタ
ベクタ
No.
IRQ
No.
55
39
DMA コントローラ(DMAC ) ch.1
MFT unit1 波形ジェネレータ/ DTIF(モー
タ緊急停止)
56
40
DMA コントローラ(DMAC ) ch.2
MFT unit2 波形ジェネレータ/ DTIF(モー
タ緊急停止)
57
41
DMA コントローラ(DMAC ) ch.3
クアッドカウンタ(QPRC) ch.1
58
42
DMA コントローラ(DMAC ) ch.4
MFS ch.6 の受信割込み
59
43
DMA コントローラ(DMAC ) ch.5
MFS ch.6 の送信, ステータス割込み
60
44
DMA コントローラ(DMAC ) ch.6
MFS ch.7 の受信割込み
61
45
DMA コントローラ(DMAC ) ch.7
MFS ch.7 の送信, ステータス割込み
62
46
ベースタイマ ch.8~ch.15
63
47
Flash RDY, HANG 割込み
IRQCMODE=0*
IRQCMODE=1
クアッドカウンタ(QPRC) ch.2 /
Flash RDY, HANG 割込み
* : TYPE0~TYPE2 製品と互換です。
表 2.2 選択割込み要因
RCINTSELx:INTSELx 設定値
割込み要因
0x00
割込み要因選択なし
0x01
外部割込み ch.0
0x02
外部割込み ch.1
0x03
外部割込み ch.2
0x04
外部割込み ch.3
0x05
外部割込み ch.4
0x06
外部割込み ch.5
0x07
外部割込み ch.6
0x08
外部割込み ch.7
0x09
外部割込み ch.8
0x0A
外部割込み ch.9
0x0B
外部割込み ch.10
0x0C
外部割込み ch.11
0x0D
ベースタイマ ch.0 の IRQ0/IRQ1
0x0E
ベースタイマ ch.1 の IRQ0/IRQ1
0x0F
ベースタイマ ch.2 の IRQ0/IRQ1
0x10
ベースタイマ ch.3 の IRQ0/IRQ1
0x11
ベースタイマ ch.4 の IRQ0/IRQ1
8
AN706-00049-1v0-J
RCINTSELx:INTSELx 設定値
割込み要因
0x12
ベースタイマ ch.5 の IRQ0/IRQ1
0x13
ベースタイマ ch.6 の IRQ0/IRQ1
0x14
ベースタイマ ch.7 の IRQ0/IRQ1
0x15
MFS ch.0 の受信割込み
0x16
MFS ch.1 の受信割込み
0x17
MFS ch.2 の受信割込み
0x18
MFS ch.3 の受信割込み
0x19
MFT unit0 フリーランタイマ ch.0 ゼロ検出割込み
0x1A
MFT unit1 フリーランタイマ ch.0 ゼロ検出割込み
0x1B
MFT unit2 フリーランタイマ ch.0 ゼロ検出割込み
0x1C
DMAC ch.0
0x1D
DMAC ch.1
0x1E
DMAC ch.2
0x1F
DMAC ch.3
0x20~0xFF
Reserved
9
AN706-00049-1v0-J
ファイルの修正
3
この章では割込み要因ベクタリロケート機能を利用する時に必要となるファイルの修正方
法について説明します。
3.1
修正対象ファイル
リロケート機能の設定により割込み要因が変更となることで、FM3 テンプレートプロジェ
クトの次のファイルの修正が必要となります。
・ ス タートアップルーチン(startup_mb9xfxxx.s)
・ IO 定 義ファイル(mb9xxxxx.h)
3.2
スタートアップルーチンの修正
スタートアップルーチンには割込みハンドラが定義されています。
リロケート機能を使用する場合は、startup_mb9xfxxx.s の「IRQ No.3~No.22, No.28~
No.30, No.38~ No.45, No.47」の割込みハンドラの定義名がリロケート後の割込み名と
一致しなくなります。割込みハンドラの定義名を変更してご利用下さい。なお使用する
定義名は任意の名称でかまいません。
IRQ No.3 の割込みハンドラをデフォルトの「多機能タイマ波形ジェネレータ/DTIF」から「外
部割込み ch.0」に変更する例を図に示します。図 3-1 が ARM 用、図 3-2 が IAR 用です。
10
AN706-00049-1v0-J
例 ) IRQ No.3 の 割 込 み ハンド ラ定義 を「 多機能 タイマ 波形 ジェネ レータ /DTIF」 から
「 外 部 割 込 み ch.0」 に変更 (ARM 用 )
・ フ ァ イ ル 名: example¥ARM¥startup_mb9xfxxx.s
< 変更前>
__Vectors
DCD
DCD
DCD
・・・
DCD
DCD
DCD
DCD
・・・
Default_Handler PROC
・・・
EXPORT
EXPORT
EXPORT
E X PORT
・・・
CSV_Handler
SWDT_Handler
LVD_Handler
M F T_WG_IRQHandler
< 変更後>
__Vectors
DCD
DCD
DCD
・・・
DCD
DCD
DCD
DCD
・・・
Default_Handler PROC
・・・
EXPORT
EXPORT
EXPORT
E X PORT
・・・
CSV_Handler
SWDT_Handler
LVD_Handler
I N T0_Handler
__initial_sp
Reset_Handler
NMI_Handler
; Top of Stack
; Reset Handler
; NMI Handler
CSV_Handler
SWDT_Handler
LVD_Handler
M FT_WG_IRQHandler
;
;
;
;
CSV_Handler
SWDT_Handler
LVD_Handler
M FT_WG_IRQHandler
[WEAK]
[WEAK]
[WEAK]
[ WEAK]
__initial_sp
Reset_Handler
NMI_Handler
; Top of Stack
; Reset Handler
; NMI Handler
CSV_Handler
SWDT_Handler
LVD_Handler
INT0_Handler
;
;
;
;
CSV_Handler
SWDT_Handler
LVD_Handler
I NT0_Handler
[WEAK]
[WEAK]
[WEAK]
[ WEAK]
0: Clock Super Visor
1: Software Watchdog Timer
2: Low Voltage Detector
3 : Wave Form Generator / DTIF
0:
1:
2:
3:
Clock Super Visor
Software Watchdog Timer
Low Voltage Detector
External Interrupt ch.0 (INTSEL0)
図 3.1 割込みハンドラの定義例(ARM 用)
11
AN706-00049-1v0-J
例 ) IRQ No.3 の 割 込 み ハンド ラ定義 を「 多機能 タイマ 波形 ジェネ レータ /DTIF」 から
「 外 部 割 込 み ch.0」 に変更 (IAR 用)
・ フ ァ イ ル 名: example¥IAR¥startup_mb9xfxxx.s
< 変更前>
__vector_table DCD
sfe(CSTACK)
DCD
Reset_Handler
DCD
NMI_Handler
・・・
DCD
CSV_Handler
DCD
SWDT_Handler
DCD
LVD_Handler
DCD
M FT_WG_IRQHandler
・・・
PUBWEAK SWDT_Handler
SECTION .text:CODE:REORDER(1)
SWDT_Handler
B
SWDT_Handler
; Top of Stack
; Reset
; NMI
;
;
;
;
0: Clock Super Visor
1: Software Watchdog Timer
2: Low Voltage Detector
3 : Wave Form Generator / DTIF
PUBWEAK LVD_Handler
SECTION .text:CODE:REORDER(1)
LVD_Handler
B
LVD_Handler
P U BWEAK MFT_WG_IRQHandler
S ECTION .text:CODE:REORDER(1)
M F T_WG_IRQHandler
B
MFT_WG_IRQHandler
< 変更後>
__vector_table DCD
sfe(CSTACK)
DCD
Reset_Handler
DCD
NMI_Handler
・・・
DCD
CSV_Handler
DCD
SWDT_Handler
DCD
LVD_Handler
DCD
INT0_Handler
・・・
PUBWEAK SWDT_Handler
SECTION .text:CODE:REORDER(1)
SWDT_Handler
B
SWDT_Handler
; Top of Stack
; Reset
; NMI
;
;
;
;
0:
1:
2:
3:
Clock Super Visor
Software Watchdog Timer
Low Voltage Detector
External Interrupt ch.0 (INTSEL0)
PUBWEAK LVD_Handler
SECTION .text:CODE:REORDER(1)
LVD_Handler
B
LVD_Handler
P U BWEAK INT0_Handler
S ECTION .text:CODE:REORDER(1)
I N T0_Handler
B
INT0_Handler
図 3.2 割込みハンドラの定義例(IAR 用)
12
AN706-00049-1v0-J
3.3
IO 定義ファイルの修正
IO 定義ファイルには割込み要因に対する割込み番号が定義されています。割込み番号を定
義している部分は
「Interrupt Number Definition」の「 typedef enum IRQn {・ ・・}IRQn_Type;」
です。
リロケート機能を使用する場合は、mb9xxxxx.h の「IRQ No.3~No.22, No.28~No.30, No.38
~No.45, No.47」の割込み要因の定義がリロケート後の割込み名と一致しなくなります。割
込み要因の定義名を変更してご利用下さい。なお使用する定義名は任意の名称でかまいま
せん。
図 3-3 に IRQ No.3 の割込み要因定義をデフォルトの「多機能タイマ波形ジェネレータ
/DTIF」から「外部割込み ch.0」に変更する例を示します。
例 ) IRQ No.3 の 割 込 み 要因定 義を「 多機 能タイ マ波形 ジェ ネレー タ/DTIF」 から
「 外 部 割 込 み ch.0」 に変更
・ フ ァ イ ル 名: common¥mb9xxxxx.h
< 変更前>
typedef enum IRQn
{
NMI_IRQn
HardFault_IRQn
・・・
CSV_IRQn
SWDT_IRQn
LVD_IRQn
W F G_IRQn
・・・
} IRQn_Type;
< 変更後>
typedef enum IRQn
{
NMI_IRQn
HardFault_IRQn
・・・
CSV_IRQn
SWDT_IRQn
LVD_IRQn
E X INT0_IRQn
・・・
} IRQn_Type;
= -14, /*
= -13, /*
=
=
=
=
*/
*/
0, /* Clock Super Visor
1, /* Software Watchdog Timer
2, /* Low Voltage Detector
3 , /* Wave Form G enerator
= -14, /*
= -13, /*
=
=
=
=
2 Non Maskable
3 Hard Fault
2 Non Maskable
3 Hard Fault
*/
*/
0, /* Clock Super Visor
1, /* Software Watchdog Timer
2, /* Low Voltage Detector
3 , /* External Interrupt ch.0 (INTSEL0 setting)
図 3.3 割込み要因の定義例
13
*/
*/
*/
*/
*/
*/
*/
*/
AN706-00049-1v0-J
割込み要因ベクタリロケート機能の設定
4
この章では割込み要因ベクタリロケート機能を利用する時に必要となるレジスタの設定に
ついて説明します。
レジスタの設定
4.1
リロケート機能を利用するには、次のレジスタの設定が必要です。
・ 割 込み要因ベクタリロケート設定レジスタ(IRQCMODE)
・ 割 込み要因選択レジスタ 0(RCINTSEL0)
・ 割 込み要因選択レジスタ 1(RCINTSEL1)
RCINTSEL0/1 レジスタにて、IRQ No.3~No.10(ベクタ No.19~No.26)に割当てる割込
み要因を設定します。設定可能な割込み要因は「表 2.2 選択割込み要因」の通りです。
RCINTSEL0 レジスタは IRQ No.3~No.6、RCINTSEL1 レジスタは IRQ No.7~No.10 に対
応しています。なお RCINTSEL0/1 レジスタの初期値は「割込み要因選択なし」となってい
ます。
IRQCMODE レジスタはリロケート機能の切替えを実施します。IRQCMODE ビットを”1”
に設定する事で割込み要因ベクタが「表 2.1 例外と割込み要因ベクタ一覧」の通りに切替
わります。
図 4-1 にレジスタの設定例を示します。
例 ) レ ジ ス タ設 定
FM3_INTREQ->RCINTSEL0 |= 0x00000001;
FM3_INTREQ->RCINTSEL0 |= 0x00000200;
FM3_INTREQ->RCINTSEL0 |= 0x00030000;
FM3_INTREQ->RCINTSEL0 |= 0x04000000;
/*
/*
/*
/*
FM3_INTREQ->RCINTSEL1 |= 0x0000000D;
FM3_INTREQ->RCINTSEL1 |= 0x00001500;
FM3_INTREQ->RCINTSEL1 |= 0x00190000;
FM3_INTREQ->RCINTSEL1 |= 0x1C000000;
/* bit7-0:INTSEL4=0x0D Select BT ch.0 IRQ0/1 */
/* bit15-8:INTSEL5=0x15 Select MFS ch.0 RX */
/* bit23-16:INTSEL6=0x19 Select MFT0 FRT ch.0 */
/* bit31-24:INTSEL7=0x1C Select DMAC ch.0 */
FM3_INTREQ->IRQCMODE = 0x00000001;
bit7-0:INTSEL0=0x01 Select Ext-Int ch.0 */
bit15-8:INTSEL1=0x02 Select Ext-Int ch.1 */
bit23-16:INTSEL2=0x03 Select Ext-Int ch.2 */
bit31-24:INTSEL3=0x04 Select Ext-Int ch.3 */
/* bit0:IRQCMODE=0b1 Interrupt Vector Relocate */
図 4.1 レジスタの設定
14
AN706-00049-1v0-J
設定例(サンプルプログラム)
5
割込み要因ベクタリロケート機能を利用したサンプルプログラム例を示します。
5.1
割込み要因定義ファイル
割込み要因が定義されたスタートアップルーチン(startup_mb9xfxxx.s)および IO 定義フ
ァイル(mb9xxxxx.h)は「3.ファイルの修正」で修正した定義ファイルを使用します。
5.2
サンプルプログラム
ベクタリロケート機能のサンプルプログラムを図 5-1 に示します。サンプルプログラムの設
定は次の通りです。
・ IRQ No.3 に外部割込み ch.0 を設定
・ IRQ No.4~No.10 は割込み要因選択なし
・ 割込み要因ベクタリロケート機能 ON
・ 外部割込み ch.0 の端子は INT00_0 を使用
・ 外部割込み ch.0 は立下りエッジを検出
15
AN706-00049-1v0-J
フ ァ イ ル 名 :main.c
IRQ No.3 に 外 部 割 込み ch.0 を 選 択
int32_t main( void )
IRQ No.4~ 10 は 割 込み 要因 選択な し( デフォ ルト )
{
/* setting Interrupt Factor Vector Relocate */
FM3_INTREQ->RCINTSEL0 = 0x00000001; /* bit7-0:INTSEL0=0x01 Select Ext-Int ch.0 */
FM3_INTREQ->RCINTSEL1 = 0x00000000;
/* Interrupt request no select */
FM3_INTREQ->IRQCMODE = 0x00000001;
/* bit0:IRQCMODE=0b1 Interrupt Vector Relocate */
← 割 込 み 要 因ベ クタリ ロケ ート機 能 ON
/* setting INT00_0 */
FM3_GPIO->EPFR06 = 0x00000000;
/* bit5,4:EINT00S=0b00 EINT-ch0 use INT00_0 */
FM3_GPIO->PFR5 |= 0x0001;
/* bit2:PFR5_0=0b1 P50 use peripheral port */
/* setting External Interrupt ch.0 */
FM3_EXTI->ENIR = 0x00000000;
/* INT interrupt disable */
FM3_EXTI->ELVR = 0x00000003;
/* bit1,0:LB0,LA0=0b11 INT0 low level edge */
FM3_EXTI->EICL = 0x00000000;
/* bit2:ECL=0b0 INT0 interrupt request clear */
FM3_EXTI->ENIR = 0x00000001;
/* bit2:EN0=0b1 enable INT0 */
/* interrupt priority setting */
NVIC_SetPriority( EXINT0_IRQn , 0x00);
← IO 定 義 フ ァイル で定 義した 名称 を使用
/* interrupt enable set bit setting for INT00_0 interrupt */
NVIC_EnableIRQ( EXINT0_IRQn );
← IO 定 義 フ ァイル で定 義した 名称 を使用
/* main loop */
while(1){;}
}
/******************************
** Interrupt Handler
******************************/
← ス タ ー ト アッ プルー チン で定義 した 名称を 使用
void INT0_Handler (void)
{
FM3_EXTI->EICL &= 0xFFFFFFFE;
/* clear interrupt request */
}
図 5.1 サンプルプログラム
16
AN706-00049-1v0-J
6
注意事項
・ RCINTSEL0/1 レジスタで選択した割込み要因は IRQ11~IRQ47 ではマスクされます。
(IRQ11MON~IRQ47MON レジスタの該当ビットもマスクされます。
)
・ INTSEL0~INTSEL7 ビットで選択する割込み要因は重複しないように設定して下さい。
・ IO 定義ファイル内の IRQxxMONレジスタのビットフィールド定義およびビットバンド
定義はリロケート前の定義となっております。リロケート後は定義内容が異なりますの
でご注意下さい。リロケート後に IRQxxMON レジスタを利用したい場合は、レジスタ
定義をご利用下さい。
例)レジスタ定義を使った IRQ12MON レジスタへのリードアクセス
Unsigned int tmp;
tmp = FM3_INTREQ->IRQ12MON;
- 以上 -
17