9.3MB

本ドキュメントはCypress (サイプレス) 製品に関する情報が記載されております。
富士通マイクロエレクトロニクス
CONTROLLER MANUAL
CM44-10138-3
F2MC-16LX
16 ビット・マイクロコントローラ
MB90980 Series
ハードウェアマニュアル
F2MC-16LX
16 ビット・マイクロコントローラ
MB90980 Series
ハードウェアマニュアル
富士通マイクロエレクトロニクスのマイコンを効率的に開発するための情報を下記 URL にてご紹介いたします。
ご採用を検討中 , またはご採用いただいたお客様に有益な情報を公開しています。
開発における最新の注意事項に関しては , 必ず「Check Sheet」を参照してください。
「Check Sheet」はシステム開発において , 問題を未然に防ぐことを目的として , 最低限必要と思われるチェック
項目をリストにしたものです。
http://edevice.fujitsu.com/micom/jp-support/
富士通マイクロエレクトロニクス株式会社
はじめに
■ 本書の目的と対象読者
富士通マイクロエレクトロニクス製品につきまして,平素より格別のご愛顧を賜り厚く
お礼申し上げます。
MB90980 シリーズは , 民生機器などの高速リアルタイム処理が要求される用途向けに
設計された 16 ビットマイクロコントローラです。PHS, 携帯 , CD-ROM, VTR などの制
御に適した機能を搭載しています。
本書は , 実際に MB90980 シリーズを使用して製品を開発される技術者を対象に ,
MB90980 シリーズの機能や動作について解説したものです。本書をご一読ください。
なお , 各種命令の詳細については ,『インストラクション・マニュアル』をご参照くだ
さい。
■ 商標
F2MC は FUJITSU Flexible Microcontroller の略で , 富士通マイクロエレクトロニクス株
式会社の商標です。
その他の記載されている社名および製品名などの固有名詞は,各社の商標または登録商
標です。
■ ライセンス
本製品には,お客様が Philips 社の定めた I2C 標準仕様書に従う I2C システムの中で使
用されることを条件に,Philips 社 I2C 特許がライセンスされております。
Purchase of Fujitsu I2C components conveys a license under the Philips I2C Patent Rights to
use,these components in an I2C system provided that the system conforms to the I2C Standard
Specification as defined by Philips.
i
•
•
•
•
•
•
•
本資料の記載内容は , 予告なしに変更することがありますので , ご用命の際は営業部門にご確認くださ
い。
本資料に記載された動作概要や応用回路例は , 半導体デバイスの標準的な動作や使い方を示したもので ,
実際に使用する機器での動作を保証するものではありません。したがいまして , これらを使用するにあ
たってはお客様の責任において機器の設計を行ってください。これらの使用に起因する損害などについ
ては , 当社はその責任を負いません。
本資料に記載された動作概要・回路図を含む技術情報は , 当社もしくは第三者の特許権 , 著作権等の知的
財産権やその他の権利の使用権または実施権の許諾を意味するものではありません。また , これらの使用
について , 第三者の知的財産権やその他の権利の実施ができることの保証を行うものではありません。し
たがって , これらの使用に起因する第三者の知的財産権やその他の権利の侵害について , 当社はその責任
を負いません。
本資料に記載された製品は , 通常の産業用 , 一般事務用 , パーソナル用 , 家庭用などの一般的用途に使用
されることを意図して設計・製造されています。極めて高度な安全性が要求され , 仮に当該安全性が確保
されない場合 , 社会的に重大な影響を与えかつ直接生命・身体に対する重大な危険性を伴う用途(原子力
施設における核反応制御 , 航空機自動飛行制御 , 航空交通管制 , 大量輸送システムにおける運行制御 , 生
命維持のための医療機器 , 兵器システムにおけるミサイル発射制御をいう), ならびに極めて高い信頼性
が要求される用途(海底中継器 , 宇宙衛星をいう)に使用されるよう設計・製造されたものではありませ
ん。したがって , これらの用途にご使用をお考えのお客様は , 必ず事前に営業部門までご相談ください。
ご相談なく使用されたことにより発生した損害などについては , 責任を負いかねますのでご了承くださ
い。
半導体デバイスはある確率で故障が発生します。当社半導体デバイスが故障しても , 結果的に人身事故 ,
火災事故 , 社会的な損害を生じさせないよう , お客様は , 装置の冗長設計 , 延焼対策設計 , 過電流防止対策
設計 , 誤動作防止設計などの安全設計をお願いします。
本資料に記載された製品を輸出または提供する場合は , 外国為替及び外国貿易法および米国輸出管理関
連法規等の規制をご確認の上 , 必要な手続きをおとりください。
本書に記載されている社名および製品名などの固有名詞は , 各社の商標または登録商標です。
Copyright ©2007-2008 FUJITSU MICROELECTRONICS LIMITED All rights reserved.
ii
目次
第1章
1.1
1.2
1.3
1.4
1.5
1.6
第2章
2.1
第3章
概要 ............................................................................................................ 1
MB90980 シリーズの特長 ...................................................................................................... 2
MB90980 シリーズのブロックダイヤグラム ......................................................................... 5
外形寸法図.............................................................................................................................. 6
端子配列図.............................................................................................................................. 7
端子機能説明 .......................................................................................................................... 8
入出力回路形式 .................................................................................................................... 10
デバイス使用上の注意 ............................................................................. 13
デバイス使用上の注意.......................................................................................................... 14
CPU の機能 .............................................................................................. 17
3.1 CPU の概略仕様 ................................................................................................................... 18
3.2 メモリ空間............................................................................................................................ 19
3.3 CPU のレジスタ ................................................................................................................... 23
3.3.1
アキュムレータ (A)..................................................................................................... 25
3.3.2
ユーザスタックポインタ (USP) とシステムスタックポインタ (SSP) ....................... 26
3.3.3
プロセッサステータス (PS) ....................................................................................... 27
3.3.4
プログラムカウンタ (PC)........................................................................................... 30
3.3.5
プログラムカウンタバンクレジスタ (PCB) ............................................................... 31
3.3.6
ダイレクトページレジスタ (DPR) ............................................................................. 32
3.3.7
汎用レジスタ ( レジスタバンク )................................................................................ 33
3.4 プリフィックスコード.......................................................................................................... 34
第4章
割込み ...................................................................................................... 37
4.1 割込みの概要 ........................................................................................................................ 38
4.2 割込み要因と割込みベクタ................................................................................................... 40
4.3 割込み制御レジスタと周辺機能 ........................................................................................... 42
4.3.1
割込み制御レジスタ (ICR00 ~ ICR15) ...................................................................... 43
4.4 ハードウェア割込み ............................................................................................................. 46
4.4.1
ハードウェア割込みの動作 ........................................................................................ 49
4.4.2
ハードウェア割込みの動作フロー.............................................................................. 51
4.4.3
ハードウェア割込みの使用手順 ................................................................................. 52
4.4.4
多重割込み ................................................................................................................. 53
4.4.5
ハードウェア割込みの処理時間 ................................................................................. 55
4.5 ソフトウェア割込み ............................................................................................................. 57
4.6 μDMAC による割込み........................................................................................................... 59
4.6.1
DMA ディスクリプタ ................................................................................................. 62
4.6.2
DMA ディスクリプタの各レジスタ............................................................................ 63
4.6.3
μDMAC の処理手順 .................................................................................................... 66
4.6.4
μDMAC の処理時間 .................................................................................................... 67
4.7 拡張インテリジェント I/O サービス (EI2OS) による割込み................................................. 69
4.7.1
拡張インテリジェント I/O サービス (EI2OS) ディスクリプタ (ISD).......................... 71
4.7.2
拡張インテリジェント I/O サービス (EI2OS) ディスクリプタ (ISD) の説明 .............. 72
iii
4.7.3
拡張インテリジェント I/O サービス (EI2OS) の動作 ................................................. 75
4.7.4
拡張インテリジェント I/O サービス (EI2OS) の設定手順 .......................................... 76
4.7.5
拡張インテリジェント I/O サービス (EI2OS) 処理時間.............................................. 77
4.8 例外処理割込み .................................................................................................................... 79
4.9 割込み処理のスタック動作................................................................................................... 80
4.10 割込み処理のプログラム例................................................................................................... 82
4.11 遅延割込み発生モジュール................................................................................................... 84
4.11.1
遅延割込み発生モジュールの動作.............................................................................. 85
第5章
5.1
5.2
5.3
5.4
5.5
5.6
第6章
6.1
6.2
6.3
6.4
6.5
6.6
第7章
リセット................................................................................................... 87
リセットの概要 .................................................................................................................... 88
リセット要因と発振安定待ち時間........................................................................................ 90
外部リセット端子 ................................................................................................................. 92
リセット動作 ........................................................................................................................ 93
リセット要因ビット ............................................................................................................. 95
リセットによる各端子の状態 ............................................................................................... 97
クロック................................................................................................... 99
クロックの概要 .................................................................................................................. 100
クロック発生部のブロックダイヤグラム ........................................................................... 102
クロック選択レジスタ (CKSCR), PLL 出力選択レジスタ (PLLOS)................................... 104
クロックモード .................................................................................................................. 109
発振安定待ち時間 ............................................................................................................... 113
振動子と外部クロックの接続 ............................................................................................. 114
低消費電力モード .................................................................................. 115
7.1 低消費電力モードの概要 .................................................................................................... 116
7.2 低消費電力制御回路のブロックダイヤグラム.................................................................... 119
7.3 低消費電力モード制御レジスタ (LPMCR) ......................................................................... 121
7.4 CPU 間欠動作モード .......................................................................................................... 124
7.5 スタンバイモード ............................................................................................................... 125
7.5.1
スリープモード ........................................................................................................ 126
7.5.2
タイムベースタイマモード ...................................................................................... 128
7.5.3
時計モード ............................................................................................................... 130
7.5.4
ストップモード ........................................................................................................ 132
7.6 スタンバイモードの状態遷移図 ......................................................................................... 134
7.7 スタンバイモード , ホールド , リセット時の端子状態 ....................................................... 136
7.8 低消費電力モード使用上の注意 ......................................................................................... 137
第8章
8.1
8.2
8.3
第9章
メモリアクセスモード ........................................................................... 141
メモリアクセスモードの概要 ............................................................................................. 142
モード端子 (MD2 ~ MD0).................................................................................................. 143
モードデータ ...................................................................................................................... 144
I/O ポート............................................................................................... 147
9.1 I/O ポートの概要 ................................................................................................................ 148
9.2 I/O ポートのレジスタ ......................................................................................................... 149
9.2.1
ポートレジスタ (PDR2 ~ PDR4,PDR6 ~ PDRA)................................................ 150
9.2.2
ポート方向レジスタ (DDR2 ~ DDR4, DDR6 ~ DDRA) ......................................... 151
iv
9.2.3
その他のレジスタ..................................................................................................... 152
第 10 章
タイムベースタイマ............................................................................... 155
10.1
10.2
10.3
10.4
10.5
10.6
10.7
タイムベースタイマの概要................................................................................................. 156
タイムベースタイマの構成................................................................................................. 157
タイムベースタイマ制御レジスタ (TBTC) ......................................................................... 159
タイムベースタイマの割込み ............................................................................................. 161
タイムベースタイマの動作................................................................................................. 162
タイムベースタイマ使用上の注意...................................................................................... 165
タイムベースタイマのプログラム例 .................................................................................. 166
第 11 章
11.1
11.2
11.3
11.4
11.5
11.6
第 12 章
12.1
12.2
12.3
12.4
ウォッチドッグタイマ ........................................................................... 167
ウォッチドッグタイマの概要 ............................................................................................. 168
ウォッチドッグタイマ制御レジスタ (WDTC) .................................................................... 169
ウォッチドッグタイマの構成 ............................................................................................. 171
ウォッチドッグタイマの動作 ............................................................................................. 173
ウォッチドッグタイマ使用上の注意 .................................................................................. 175
ウォッチドッグタイマのプログラム例............................................................................... 176
時計タイマ ............................................................................................. 177
時計タイマの概要 ............................................................................................................... 178
時計タイマの構成 ............................................................................................................... 179
時計タイマ制御レジスタ (WTC)......................................................................................... 180
時計タイマの動作 ............................................................................................................... 182
第 13 章
16 ビット入出力タイマ .......................................................................... 185
13.1 16 ビット入出力タイマの概要............................................................................................ 186
13.2 16 ビット入出力タイマの構成............................................................................................ 188
13.3 16 ビット入出力タイマのレジスタの構成と機能............................................................... 192
13.3.1
フリーランタイマ..................................................................................................... 193
13.3.2
アウトプットコンペア ............................................................................................. 198
13.3.3
インプットキャプチャ ............................................................................................. 202
13.4 16 ビット入出力タイマの割込み ........................................................................................ 204
13.5 16 ビット入出力タイマの動作............................................................................................ 207
13.5.1
フリーランタイマの動作 .......................................................................................... 208
13.5.2
アウトプットコンペアの動作................................................................................... 209
13.5.3
インプットキャプチャの動作................................................................................... 211
13.5.4
フリーランタイマのタイミング ............................................................................... 212
13.5.5
アウトプットコンペアのタイミング ........................................................................ 213
13.5.6
インプットキャプチャのタイミング ........................................................................ 214
13.6 16 ビット入出力タイマのプログラム例 ............................................................................. 215
第 14 章
8/16 ビットアップダウンカウンタ / タイマ ........................................... 227
14.1 8/16 ビットアップダウンカウンタ / タイマの概要............................................................. 228
14.2 8/16 ビットアップダウンカウンタ / タイマの構成............................................................. 230
14.3 8/16 ビットアップダウンカウンタ / タイマのレジスタの構成と機能................................ 233
14.3.1
カウンタコントロールレジスタ (ch.0) 上位 (CCRH0) ............................................. 234
14.3.2
カウンタコントロールレジスタ (ch.1) 上位 (CCRH1) ............................................. 236
14.3.3
カウンタコントロールレジスタ (ch.0/ch.1) 下位 (CCRL0/CCRL1) ......................... 238
v
14.3.4
カウンタステータスレジスタ 0/1(CSR0/CSR1) ...................................................... 240
14.3.5
アップダウンカウントレジスタ (ch.0/ch.1)(UDCR0/UDCR1) ................................. 242
14.3.6
リロード / コンペアレジスタ (ch.0/ch.1)(RCR0/RCR1)........................................... 243
14.4 8/16 ビットアップダウンカウンタ / タイマの割込み ......................................................... 244
14.5 8/16 ビットアップダウンカウンタ / タイマの動作............................................................. 246
14.5.1
リロード / コンペア機能........................................................................................... 249
14.5.2
アップダウンカウントレジスタ (UDCR) へのデータの書込み ................................ 252
14.6 8/16 ビットアップダウンカウンタ / タイマのプログラム例 .............................................. 254
第 15 章
16 ビットリロードタイマ ...................................................................... 261
15.1 16 ビットリロードタイマの概要 ........................................................................................ 262
15.2 16 ビットリロードタイマのレジスタの構成と機能 ........................................................... 266
15.2.1
タイマ制御ステータスレジスタ (TMCSR) ............................................................... 267
15.2.2
16 ビットタイマレジスタ (TMR)/16 ビットリロードレジスタ (TMRLR) ................ 270
15.3 16 ビットリロードタイマの割込み .................................................................................... 272
15.4 16 ビットリロードタイマの動作 ........................................................................................ 273
15.4.1
カウント動作の状態遷移 .......................................................................................... 274
15.4.2
内部クロックモード ( リロードモード ) の動作 ....................................................... 275
15.4.3
内部クロックモード ( ワンショットモード ) の動作 ................................................ 277
15.4.4
イベントカウントモード .......................................................................................... 279
15.5 16 ビットリロードタイマのプログラム例.......................................................................... 281
第 16 章
8/16 ビット PPG タイマ ........................................................................ 287
16.1 8/16 ビット PPG タイマの概要 .......................................................................................... 288
16.2 8/16 ビット PPG タイマの構成 .......................................................................................... 289
16.3 8/16 ビット PPG タイマのレジスタの構成と機能 ............................................................. 292
16.3.1
PPG0/PPG2 動作モード制御レジスタ (PPGC0/PPGC2) ........................................ 293
16.3.2
PPG1/PPG3 動作モード制御レジスタ (PPGC1) ..................................................... 295
16.3.3
PPG0 ~ PPG3 出力制御レジスタ (PPG01/PPG23)................................................ 298
16.3.4
リロードレジスタ (PRLL0 ~ PRLL3, PRLH0 ~ PRLH3) ....................................... 300
16.4 8/16 ビット PPG タイマの割込み ...................................................................................... 301
16.5 8/16 ビット PPG タイマの動作 .......................................................................................... 303
16.6 8/16 ビット PPG タイマのプログラム例............................................................................ 309
第 17 章
17.1
17.2
17.3
17.4
17.5
17.6
DTP/ 外部割込み .................................................................................... 313
DTP/ 外部割込みの概要...................................................................................................... 314
DTP/ 外部割込みのレジスタ構成と機能............................................................................. 316
DTP/ 外部割込み................................................................................................................. 319
DTP/ 外部割込みの動作...................................................................................................... 321
DTP/ 外部割込み使用上の注意 ........................................................................................... 323
DTP/ 外部割込みのプログラム例 ....................................................................................... 324
第 18 章
8/10 ビット A/D コンバータ................................................................... 327
18.1 8/10 ビット A/D コンバータの概要 .................................................................................... 328
18.2 8/10 ビット A/D コンバータの構成 .................................................................................... 329
18.3 8/10 ビット A/D コンバータのレジスタの構成 .................................................................. 331
18.3.1
コントロールステータスレジスタ 1(ADCS1) .......................................................... 332
18.3.2
コントロールステータスレジスタ 2(ADCS2) .......................................................... 335
18.3.3
データレジスタ (ADCR2, ADCR1)........................................................................... 338
vi
18.4 8/10 ビット A/D コンバータの割込み................................................................................. 339
18.5 8/10 ビット A/D コンバータの動作 .................................................................................... 340
18.5.1
単発モードにおける μDMAC の起動例 .................................................................... 342
18.5.2
連続モードにおける μDMAC の起動例 .................................................................... 343
18.5.3
停止モードにおける μDMAC の起動例 .................................................................... 344
18.6 8/10 ビット A/D コンバータの変換データ保護機能 ........................................................... 345
18.7 8/10 ビット A/D コンバータ使用上の注意.......................................................................... 347
18.8 8/10 ビット A/D コンバータのプログラム例 ...................................................................... 348
第 19 章
拡張 I/O シリアルインタフェース.......................................................... 353
19.1 拡張 I/O シリアルインタフェースの概要............................................................................ 354
19.2 拡張 I/O シリアルインタフェースの構成............................................................................ 355
19.3 拡張 I/O シリアルインタフェースのレジスタの構成と機能............................................... 357
19.3.1
シリアルモードコントロールステータスレジスタ 0/1 (SMCS0/SMCS1) ............... 358
19.3.2
シリアルデータレジスタ 0/1(SDR0/SDR1) ............................................................. 362
19.3.3
通信プリスケーラコントロールレジスタ 0/1(SDCR0/SDCR1) ............................... 363
19.4 拡張 I/O シリアルインタフェースの割込み ........................................................................ 364
19.5 拡張 I/O シリアルインタフェースの動作............................................................................ 365
19.5.1
シフトクロックモード ............................................................................................. 366
19.5.2
シリアル I/O の動作状態 .......................................................................................... 367
19.5.3
シフト動作のスタート / ストップタイミングと入出力のタイミング ...................... 369
19.5.4
割込み機能 ............................................................................................................... 371
19.6 拡張 I/O シリアルインタフェースのプログラム例 ............................................................. 372
第 20 章
UART ..................................................................................................... 375
20.1 UART の概要 ...................................................................................................................... 376
20.2 UART の構成 ...................................................................................................................... 377
20.3 UART のレジスタの構成と機能 ......................................................................................... 379
20.3.1
シリアルモードレジスタ (SMR)............................................................................... 380
20.3.2
シリアルコントロールレジスタ (SCR) .................................................................... 382
20.3.3
シリアルインプット / アウトプットレジスタ (SIDR/SODR) ................................... 384
20.3.4
シリアルステータスレジスタ (SSR) ........................................................................ 385
20.3.5
通信プリスケーラコントロールレジスタ (CDCR) ................................................... 388
20.4 UART の割込み................................................................................................................... 390
20.5 UART の動作 ...................................................................................................................... 392
20.5.1
非同期モード ( 動作モード 0, 1) 時の動作................................................................ 395
20.5.2
同期モード ( 動作モード 2) 時の動作 ....................................................................... 398
20.5.3
双方向通信機能 ( ノーマルモード ) .......................................................................... 400
20.5.4
マスタ / スレーブ型通信機能 ( マルチプロセッサモード )....................................... 402
20.6 UART 使用上の注意 ........................................................................................................... 404
20.7 UART のプログラム例........................................................................................................ 405
第 21 章
アドレス一致検出機能 ........................................................................... 413
21.1 アドレス一致検出機能の概要 ............................................................................................. 414
21.2 アドレス一致検出機能のブロックダイヤグラム ................................................................ 415
21.3 アドレス一致検出機能のレジスタ構成............................................................................... 416
21.3.1
プログラムアドレス検出制御ステータスレジスタ (PACSR)................................... 417
21.3.2
プログラムアドレス検出レジスタ (PADR0, PADR1) .............................................. 419
21.4 アドレス一致検出機能の動作説明...................................................................................... 421
vii
21.4.1
アドレス一致検出機能の使用例 ............................................................................... 422
21.5 アドレス一致検出機能のプログラム例............................................................................... 426
第 22 章
ROM ミラー機能選択モジュール........................................................... 427
22.1 ROM ミラー機能選択モジュールの概要 ............................................................................ 428
22.2 ROM ミラー機能選択レジスタ (ROMM) ............................................................................ 429
第 23 章
1.5M ビットフラッシュメモリ............................................................... 431
23.1 1.5M ビットフラッシュメモリの概要 ................................................................................ 432
23.2 1.5M ビットフラッシュメモリのセクタ構成...................................................................... 433
23.3 フラッシュメモリコントロールステータスレジスタ (FMCS) ........................................... 434
23.4 フラッシュメモリの自動アルゴリズム起動方法 ................................................................ 440
23.5 自動アルゴリズム実行状態の確認...................................................................................... 441
23.5.1
データポーリングフラグ (DQ7) ............................................................................... 442
23.5.2
トグルビットフラグ (DQ6) ...................................................................................... 443
23.5.3
タイミングリミット超過フラグ (DQ5) .................................................................... 444
23.5.4
セクタ消去タイマフラグ (DQ3) ............................................................................... 445
23.6 フラッシュメモリの書込み / 消去....................................................................................... 446
23.6.1
フラッシュメモリを読出し / リセット状態にする方法 ............................................ 447
23.6.2
フラッシュメモリにデータを書き込む方法 ............................................................. 448
23.6.3
フラッシュメモリの全データを消去する方法 ( チップ全消去 )............................... 450
23.6.4
フラッシュメモリの任意のデータを消去する方法 ( セクタ消去 ) ........................... 451
23.6.5
フラッシュメモリのセクタ消去を一時停止する方法............................................... 453
23.6.6
フラッシュメモリのセクタ消去を再開する方法 ...................................................... 454
第 24 章
MB90F983 シリアル書込み接続例......................................................... 455
24.1 MB90F983 シリアル書込み接続の基本構成....................................................................... 456
24.2 シングルチップモード時の接続例 ( ユーザ電源使用時 ).................................................... 459
24.3 フラッシュマイコンプログラマとの接続例 ( ユーザ電源使用時 ) ..................................... 461
第 25 章
PWC タイマ ........................................................................................... 463
25.1 PWC タイマの概要............................................................................................................. 464
25.2 PWC タイマの構成............................................................................................................. 465
25.3 PWC タイマのレジスタの構成と機能 ................................................................................ 467
25.3.1
PWC コントロール / ステータスレジスタ (PWCSR0, PWCSR1) ........................... 468
25.3.2
PWC データバッファレジスタ (PWCR0, PWCR1) ................................................. 473
25.3.3
分周比制御レジスタ (DIVR0, DIVR1)....................................................................... 474
25.4 PWC タイマの割込み ......................................................................................................... 475
25.5 PWC タイマの動作............................................................................................................. 477
25.5.1
タイマ機能の動作..................................................................................................... 478
25.5.2
パルス幅測定機能の動作 .......................................................................................... 479
25.5.3
カウントクロックおよび動作モードの選択 ............................................................. 480
25.5.4
タイマ / パルス幅測定の起動と停止......................................................................... 482
25.5.5
タイマモードの動作 ................................................................................................. 484
25.5.6
パルス幅測定モードの動作 ...................................................................................... 487
25.6 PWC タイマ使用上の注意 .................................................................................................. 493
viii
第 26 章
I2C インタフェース ................................................................................ 495
26.1 I2C インタフェースの概要.................................................................................................. 496
26.2 I2C インタフェースの構成.................................................................................................. 497
26.3 I2C インタフェースのレジスタの構成と機能..................................................................... 499
26.3.1
バスステータスレジスタ (IBSR) .............................................................................. 501
26.3.2
バスコントロールレジスタ (IBCR) .......................................................................... 503
26.3.3
クロックコントロールレジスタ (ICCR) ................................................................... 509
26.3.4
アドレスレジスタ (IADR)......................................................................................... 511
26.3.5
データレジスタ (IDAR) ............................................................................................ 512
26.4 I2C インタフェースの割込み .............................................................................................. 513
26.5 I2C インタフェースの動作.................................................................................................. 515
付録
付録 A
付録 B
付録 C
付録 D
................................................................................................................519
メモリマップ .................................................................................................................. 520
I/O マップ ....................................................................................................................... 522
割込み要因 , 割込みベクタおよび割込み制御レジスタ .................................................. 527
命令 ................................................................................................................................ 529
用語索引 ................................................................................................................591
ix
x
本版での主な変更内容
ページ
529
∼
589
変更内容(詳細は本文を参照してください。
「付録 D 命令」全体を変更
変更箇所は , 本文中のページ左側の│によって示しています。
< 参考 > 1 版→ 2 版での主な変更内容
ページ
85
変更内容(詳細は本文を参照してください。
図 4.11-3 遅延割込み発生モジュールの動作 を変更
(ICRXX → IL)
(ICRXX → ILM)
(NTA → INTA)
● IN0/IN1 端子として使用する場合の設定 を変更
(DDR9 bit15, bit14 → DDR9 bit7, bit6)
190
● FRCK 端子として使用する場合の設定 を変更
(DDR9 bit11 → DDR9 bit3)
231
● AIN0/BIN0/ZIN0, AIN1/BIN1/ZIN1 端子として使用する場合の設定 を変更
(DDR3 bit8 ∼ bit13 → DDR3 bit0 ∼ bit5)
264
● TIN0 端子として使用する場合の設定 を変更
(DDR7: bit12 → DDR7: bit3)
301
表 16.4-1 8/16 ビット入出力タイマの割込み を変更
(PUF1 (bit3) → PUF1 (bit11))
(PUE0 (bit4) → PIE0 (bit4))
(PUE1 (bit4) → PIE1 (bit12))
330
● AN0/AN1/AN2/AN3/AN4/AN5/AN6/AN7 端子として使用する場合の設定 を変更
(DDR6: bit8 ∼ bit0 → DDR6: bit7 ∼ bit0)
(ADER:bit15 ∼ bit8 → ADER:bit7 ∼ bit0)
● ADTG 端子として使用する場合の設定 を変更
(DDR9: bit11 → DDR9: bit3)
356
● SIN1/SCK1/SIN2/SCK2 端子として使用する場合の設定 を変更
(DDR9 bit8, bit10 → DDR9 bit0, bit2)
363
■ 通信プリスケーラコントロールレジスタ 0/1(SDCR0/SDCR1) を変更
([bit15] MD:通信プリスケーラ動作許可ビット → [bit7] MD:通信プリスケーラ動作許
可ビット )
([bit11 ∼ bit8] DIV3 ∼ DIV0:マシンクロック分周比選択ビット → [bit3 ∼ bit0] DIV3
∼ DIV0:マシンクロック分周比選択ビット )
378
● SIN0/SCK0 端子として使用する場合の設定 を変更
(DDR7 bit8, bit10 → DDR7 bit0, bit2)
466
● PWC0/PWC1 端子として使用する場合の設定 を変更
(DDR3 bit14, bit15 → DDR3 bit6, bit7)
xi
< 参考 > 1 版→ 2 版での主な変更内容
ページ
475
変更内容(詳細は本文を参照してください。
表 25.4-1 PWC タイマの割込み制御ビットと割込み要因 を変更
(DVIR → OVIR)
(DVIE → OVIE)
● クロック選択ビットの扱い を変更
(PWCR → PWCSR)
494
● 予約ビットの扱い を変更
(PWCR → PWCSR)
498
521
● SCL/SDA 端子として使用する場合の設定 を変更
(PDR7 :bit14, bit15 → PDR7 :bit6, bit7)
■ メモリ空間 を変更
(00 バンクの上位に FF バンクの ROM がイメージで見えるようになっていますが… →
MB90F983 では , 00 バンクの上位に FF バンク (FC0000H ∼ FC7FFFH または FE0000H ∼
FE7FFFH) の ROM がイメージで見えるようになっていますが…)
522
付表 B-1 I/O マップ の変更
アドレス 000017H の初期値を変更(XX000000B → XXX00000B)
527
付録 C 割込み要因 , 割込みベクタおよび割込み制御レジスタ を追加
554
表 D.8-1 転送系命令 ( バイト ) 41 命令 を変更
(/MOV @A,T を削除 )
555
表 D.8-2 転送系命令 ( ワード・ロングワード ) 38 命令 を変更
(/MOVW @A,T を削除 )
558
表 D.8-6 符号なし乗除算命令 ( ワード・ロングワード ) 11 命令 を変更
(MULL → MULU)
(MULEY → MULUW)
572
表 D.9-4 文字列操作系命令マップ ( 第 1 バイト =6EH) を変更
バンク E0 の +0 を変更 (FILSI → FILSWI)
表 D.9-5 2 バイト系命令マップ ( 第 1 バイト =6FH) を変更
573
バンク 10 の +6 を変更 (MOV → MOVX)
バンク 10 の +7 を変更 (ROLC → RORC)
608
レジスタ索引 を削除
608
端子機能索引 を削除
608
割込みベクタ索引 を削除
変更箇所は , 本文中のページ左側の│によって示しています。
xii
第1章
概要
MB90980 シリーズの特長や基本的な仕様について
説明します。
1.1 MB90980 シリーズの特長
1.2 MB90980 シリーズのブロックダイヤグラム
1.3 外形寸法図
1.4 端子配列図
1.5 端子機能説明
1.6 入出力回路形式
1
第 1 章 概要
1.1
MB90980 シリーズの特長
MB90980 シリーズは , 高速リアルタイム処理が要求される用途向けに設計された 16
ビットマイクロコントローラです。
■ MB90980 シリーズの特長
MB90980 シリーズには , 以下の特長があります。
● 最小命令実行時間
• 40.0ns/6.25MHz 原発振 4 逓倍 ( 内部動作 25MHz/3.3V±0.3V 時 )
• 62.5ns/4MHz 原発振 4 逓倍 ( 内部動作 16MHz/3.0V±0.3V 時 )
• PLL クロック逓倍方式
● 最大メモリ空間 :16M バイト
● コントロール用途に最適化された命令体系
• 取扱い可能なデータタイプ : ビット / バイト / ワード / ロングワード
• 標準アドレッシングモード :23 種類
• 32 ビットアキュムレータの採用による高精度演算の強化
• 符号付き乗除算 , 拡張 RETI 命令
● 高級言語 (C 言語 ) マルチタスクに対応をとった命令体系
• システムスタックポインタの採用
• 命令セットの対称性とバレルシフト命令
● 実行速度の向上 :4 バイトのキュー
● 強力な割込み機能 ( プライオリティがプログラマブルに 8 レベル設定可能 ) : 外部割込み 8 本
● データ転送機能 (μDMAC) : 最大 16 チャネル
● 内蔵 ROM: フラッシュ版 :192K バイト
マスク版
:128K バイト
● 内蔵 RAM: フラッシュ版 :12K バイト
マスク版
:10K バイト
● 汎用ポート : 最大 48 本
出力オープンドレイン設定可能 :10 本
● A/D コンバータ (RC 逐次比較型 ) :8 チャネル
( 分解能 10 ビット / 変換時間 3.68μs(25MHz 動作時 ))
● UART:1 チャネル
● 拡張 I/O シリアルインタフェース (SIO) :2 チャネル
2
第 1 章 概要
● 8/16 ビット PPG:2 チャネル
(8 ビット× 4 チャネル , 16 ビット× 2 チャネルモード切換え機能付き )
● 8/16 ビットアップダウンタイマ :1 チャネル (8 ビット× 2 チャネル , 16 ビット× 1 チャネル
モード切換え機能付き )
● 16 ビットリロードタイマ :1 チャネル
● 16ビット入出力タイマ(インプットキャプチャ×2チャネル,アウトプットコンペア×4チャ
ネル , フリーランタイマ× 1 チャネル )
● 2 系統クロックジェネレータ内蔵
● 低消費電力モード(ストップモード/スリープモード/CPU間欠動作モード/時計モード/タイ
ムベースタイマモード )
● パッケージ :LQFP-64
● CMOS テクノロジ
● 3V 単一電源 ( 一部ポートで 5V 電源での駆動が可能 )
● I2C インタフェース : 1 チャネル
P77 および P76 は , N-ch オープンドレイン端子 (P-ch なし ) です。
● 16 ビット PWC: 2 チャネル
入力比較機能付き
3
第 1 章 概要
■ 品種構成
表 1.1-1 に , MB90980 シリーズ品種構成を示します。
表 1.1-1 MB90980 シリーズ品種構成一覧
MB90V485B
MB90F983
MB90982
ROM 容量
-
192K バイト
128K バイト
RAM 容量
16K バイト
12K バイト
10K バイト
備考
評価用品
f=25MHz
3V/5V 電源 *2
PWC, I2C 搭載 *4
エミュレータ
専用電源 *1
フラッシュメモリ品
f=25MHz
3V/5V 電源 *3
PWC, I2C 搭載 *4
あり
マスク ROM 品
f=25MHz
3V/5V 電源 *3
PWC, I2C 搭載 *4
-
-
*1: エミュレータ (MB2147-01) をご使用いただく際のジャンパスイッチ (TOOL VCC) の
設定です。
詳細につきましては, MB2147-01またはMB2147-20 ハードウェアマニュアル (3.3 エ
ミュレータ専用電源切換え ) を参照してください。
*2: 3V/5V I/F 端子 : P20 ~ P27, P30 ~ P37, P40 ~ P47, P70 ~ P77。この端子以外は 3V
電源です。
*3: 3V/5V I/F 端子 : P24 ~ P27, P30 ~ P37, P40 ~ P42, P70 ~ P74,P76, P77。この端子
以外は 3V 電源です。
*4: P76/P77 端子は , N-ch オープンドレイン端 (P-ch なし ) になります。
■ 対応品種のパッケージ
● パッケージ
パッケージの相違点については , 下表を参照してください。
表 1.1-2 MB90980 シリーズ品種構成一覧
MB90982
MB90F983
MB90V485B
FPT-64P-M03
○
○
×
PGA-299C
×
×
○
○ : 使用可能
× : 使用不可能
● メモリ空間
メモリ空間の相違点については , 付録のメモリマップを参照してください。
● 消費電流
消費電流の相違点については , データシートの電気的特性を参照してください。
4
第 1 章 概要
1.2
MB90980 シリーズのブロックダイヤグラム
MB90980 シリーズのブロックダイヤグラムを示します。
■ MB90980 シリーズのブロックダイヤグラム
図 1.2-1 に , MB90980 シリーズのブロックダイヤグラムを示します。
図 1.2-1 MB90980 シリーズのブロックダイヤグラム
X0, X1, RST
X0A, X1A
MD2, MD1, MD0
8
CPU
F2MC-16LX コア
クロック
制御回路
RAM
割込みコントローラ
2
ROM
8/16 ビット PPG
PPG0, PPG1
2
PPG2, PPG3
μDMAC
8/16 ビット
アップダウン
カウンタ
F2MC-16LX バス
通信プリスケーラ
2
SIN0
SOT0
SCK0
SIN1, SIN2
SOT1, SOT2
SCK1, SCK2
AVCC
AVRH
AVSS
ADTG
AN0~ AN7
UART
2
2
2
I/O 拡張シリアル
インタフェース×
2 チャネル
2
2
2
AIN0, AIN1
BIN0, BIN1
ZIN0, ZIN1
入出力タイマ
16 ビットインプット
キャプチャ× 2 チャネル
16 ビットアウトプット
コンペア× 4 チャネル
16 ビットフリーランタイマ
2
4
16 ビット
リロードタイマ
TIN0
TOT0
I2C インタフェース
SCL
SDA
A/D コンバータ
(10 ビット )
8
IN0, IN1
OUT0, OUT1
OUT2, OUT3
外部割込み
PWC0
8
IRQ0~ IRQ7
PWC × 2 チャネル
PWC1
I/O ポート
4
8
3
P24
~
P27
P30 P40 P60
~
~
~
P37 P42 P67
8
5
2
8
P70 P76, P80
~ P77
~
P74
P87
4
2
4
P90 P96, PA0
~ P97
~
P93
PA3
P40 ~ P42(×3): オープンドレイン設定レジスタ付き
I2C の P77 および P76 端子は , N-ch オープンドレイン端子 (P-ch なし ) です。
<注意事項>
図 1.2-1 において , I/O ポートは内蔵の各機能ブロックと端子を共用しています。内蔵モ
ジュールの端子として使用する場合は , I/O ポートとしては使えません。
5
第 1 章 概要
外形寸法図
1.3
MB90980 シリーズには , 1 種類のパッケージが用意されています。
■ 外形寸法図 (LQFP-64)
図 1.3-1 に , LQFP-64 タイプの外形寸法図を示します。
図 1.3-1 LQFP-64 タイプの外形寸法図
プラスチック・LQFP, 64 ピン
リードピッチ
0.50mm
パッケージ幅×
パッケージ長さ
10.0× 10.0mm
リード形状
ガルウィング
封止方法
プラスチックモールド
取付け高さ
1.70mm MAX
質量
0.32g
コード(参考)
(FPT-64P-M03)
プラスチック・LQFP, 64 ピン
(FPT-64P-M03)
P-LFQFP64-10×10-0.50
注 1)* 印寸法はレジン残りを含まず。
注 2)端子幅および端子厚さはメッキ厚を含む。
注 3)端子幅はタイバ切断残りを含まず。
12.00±0.20(.472±.008)SQ
* 10.00±0.10(.394±.004)SQ
48
0.145±0.055
(.006±.002)
33
49
32
Details of "A" part
0.08(.003)
+0.20
1.50 –0.10
+.008
.059 –.004
INDEX
64
0 ~8
17
(Mounting height)
0.10±0.10
(.004±.004)
(Stand off)
"A"
LEAD No.
1
16
0.50(.020)
C
0.20±0.05
(.008±.002)
0.08(.003)
M
0.50±0.20
(.020±.008)
0.60±0.15
(.024±.006)
2003 FUJITSU LIMITED F64009S-c-5-8
最新の外形寸法図については , 下記の URL にてご確認ください。
http://edevice.fujitsu.com/jp/datasheet/jf-ovpklv.html
6
0.25(.010)
単位:mm (inches)
注意:括弧内の値は参考値です。
第 1 章 概要
1.4
端子配列図
MB90980 シリーズの端子配列を示します。
■ 端子配列図 (LQFP-64)
図 1.4-1 に , LQFP-64 タイプの端子配列図を示します。
図 1.4-1 MB90980 シリーズの端子配列図 (LQFP-64)
64
63
62
61
60
59
58
57
56
55
54
53
52
51
50
49
AVSS
P60/AN0
P61/AN1
P62/AN2
P63/AN3
P64/AN4
P65/AN5
P66/AN6
P67/AN7
P80/IRQ0
P81/IRQ1
P82/IRQ2
P83/IRQ3
RST
X0A
X1A
(TOP VIEW)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
48
47
46
45
44
43
42
41
40
39
38
37
36
35
34
33
VSS
X1
X0
MD2
MD1
MD0
P84/IRQ4
P85/IRQ5
P86/IRQ6
P87/IRQ7
P90/SIN1
P91/SOT1
P92/SCK1
P93/FRCK/ADTG
P96/IN0
VSS
VSS
P41/SOT2
P40/SIN2
P77/SDA
P76/SCL
P74/TOT0
P73/TIN0
P72/SCK0
P71/SOT0
P70/SIN0
PA3/OUT3
PA2/OUT2
PA1/OUT1
PA0/OUT0
P97/IN1
VCC3
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
AVCC
AVRH
P27/PPG3
P26/PPG2
P25/PPG1
P24/PPG0
P37/PWC1
P36/PWC0
P35/ZIN1
P34/BIN1
P33/AIN1
P32/ZIN0
P31/BIN0
P30/AIN0
P42/SCK2
VCC5
(FPT-64P-M03)
( 注意事項 )
• I2C の端子 P76, P77 は , N-ch オープンドレイン端子 (P-ch なし )
• P24 ~ P27, P30 ~ P37, P40 ~ P42, P70 ~ P74, P76, P77: 3V/5V I/F 端子
7
第 1 章 概要
端子機能説明
1.5
MB90980 シリーズの端子機能について説明します。
■ 端子機能説明
表 1.5-1 に , MB90980 シリーズの端子機能を示します。
表 1.5-1 端子機能説明 (1 / 2)
端子番号
FPT-64P-M03
46
47
50
49
51
3~6
14
13
12
11
10
9
7, 8
19
18
15
60 ~ 63
56 ~ 59
26
25
24
23
8
端子名
入出力
回路形式
X0
X1
X0A
X1A
RST
A
A
A
A
B
P24 ~ P27
PPG0 ~
PPG3
P30
AIN0
P31
BIN0
P32
ZIN0
P33
AIN1
P34
BIN1
P35
ZIN1
P36, P37
PWC0, PWC1
P40
SIN2
P41
SOT2
P42
SCK2
機 能
メインクロック用発振子接続端子です。
メインクロック用発振子接続端子です。
32kHz サブクロック用発振子接続端子です。
32kHz サブクロック用発振子接続端子です。
リセット入力端子です。
汎用の入出力ポートです。
E
(CMOS/H) PPG タイマ出力端子です。
E
汎用入出力ポートです。
(CMOS/H) 8/16 ビットアップ / ダウンカウンタ入力端子 (ch.0) です。
E
汎用入出力ポートです。
(CMOS/H) 8/16 ビットアップ / ダウンカウンタ入力端子 (ch.0) です。
E
汎用入出力ポートです。
(CMOS/H) 8/16 ビットアップ / ダウンカウンタ入力端子 (ch.0) です。
E
汎用入出力ポートです。
(CMOS/H) 8/16 ビットアップ / ダウンカウンタ入力端子 (ch.1) です。
E
汎用入出力ポートです。
(CMOS/H) 8/16 ビットアップ / ダウンカウンタ入力端子 (ch.1) です。
E
汎用入出力ポートです。
(CMOS/H) 8/16 ビットアップ / ダウンカウンタ入力端子 (ch.1) です。
E
汎用入出力ポートです。
(CMOS/H) PWC 入力端子です。
G
汎用入出力ポートです。
(CMOS/H) 単純シリアル入出力 2 入力端子です。
F
汎用入出力ポートです。
(CMOS) 単純シリアル入出力 2 出力端子です。
G
汎用入出力ポートです。
(CMOS/H) 単純シリアル入出力 2 クロック入出力端子です。
P60 ~ P63
H
汎用入出力ポートです。
AN0 ~ AN3 (CMOS) アナログ入力端子です。
P64 ~ P67
F
汎用入出力ポートです。
AN4 ~ AN7 (CMOS) アナログ入力端子です。
P70
G
汎用入出力ポートです。
(CMOS/H) UART データ入力端子です。
SIN0
P71
F
汎用入出力ポートです。
(CMOS) UART データ出力端子です。
SOT0
P72
G
汎用入出力ポートです。
(CMOS/H) UART クロック入出力端子です。
SCK0
P73
G
汎用入出力ポートです。
(CMOS/H) 16 ビットリロードタイマイベント入力端子です。
TIN0
第 1 章 概要
表 1.5-1 端子機能説明 (2 / 2)
端子番号
FPT-64P-M03
22
21
端子名
P74
TOT0
P76
SCL
P77
20
52 ~ 55
39 ~ 42
38
37
36
35
34
31
27 ~ 30
1
2
64
43 ~ 45
32
SDA
P80 ~ P83
IRQ0 ~ IRQ3
P84 ~ P87
IRQ4 ~ IRQ7
P90
SIN1
P91
SOT1
P92
SCK1
P93
FRCK
ADTG
P96
IN0
P97
IN1
PA0 ~ PA3
OUT0 ~
OUT3
AVCC
入出力
回路形式
機 能
汎用入出力ポートです。
16 ビットリロードタイマ出力端子です。
汎用入出力ポートです。
I
I2C インタフェースクロック入出力端子として機能します。I2C イン
(NMOS/H)
タフェース動作中はポート出力を Hi-Z 状態にしてください。
汎用入出力ポートです。
I
I2C インタフェースデータ入出力端子として機能します。I2C インタ
(NMOS/H)
フェース動作中はポート出力を Hi-Z 状態にしてください。
F
(CMOS)
E
汎用入出力ポートです。
(CMOS/H) 外部割込み入力端子です。
E
汎用入出力ポートです。
(CMOS/H) 外部割込み入力端子です。
E
汎用入出力ポートです。
(CMOS/H) 単純シリアル入出力 1 データ入力端子です。
D
汎用入出力ポートです。
(CMOS) 単純シリアル入出力 1 データ出力端子です。
E
汎用入出力ポートです。
(CMOS/H) 単純シリアル入出力 1 データ入出力端子です。
汎用入出力ポートです。
E
フリーランタイマ使用時,外部クロック入力端子として機能しま
(CMOS/H) す。
A/D コンバータ使用時,外部トリガ入力端子として機能します。
E
汎用入出力ポートです。
(CMOS/H) インプットキャプチャ ch.0 トリガ入力端子です。
E
汎用入出力ポートです。
(CMOS/H) インプットキャプチャ ch.1 トリガ入力端子です。
D
(CMOS)
―
AVRH
AVSS
汎用入出力ポートです。
アウトプットコンペアイベント出力端子です。
A/D コンバータ電源端子です。
A/D コンバータ外部基準電源端子です。
A/D コンバータ電源端子です。
―
―
J
MD0 ~ MD2
動作モード指定用入力端子です。
(CMOS/H)
VCC3
3.3V ± 0.3V 用電源端子 (VCC3) です。
―
16
VCC5
17,48
VSS
―
―
3V/5V 用電源端子です。
5V I/F 端子として P24 ~ P27, P30 ~ P37, P40 ~ P42, P70 ~ P74,
P76,P77 を使用する場合の 5V 電源端子です。
3V 単一の場合は , VCC = VCC3= VCC5 として 3V 系電源として使用し
てください。
電源入力 (GND) です。
9
第 1 章 概要
1.6
入出力回路形式
MB90980 シリーズの各端子の入出力回路形式を示します。
■ 入出力回路形式
表 1.6-1 に , MB90980 シリーズの各端子の入出力回路形式を示します。
表 1.6-1 入出力回路形式 (1 / 3)
分類
A
回 路
備 考
・発振帰還抵抗
X1, X0
: 約 1MΩ
クロック X1A, X0A : 約 10MΩ
入力
・スタンバイコントロール付き
X1, X1A
X0, X0A
ハード, ソフト
スタンバイ制御信号
・プルアップ付きヒステリシス入力
B
ヒステリシス入力
・入力プルアップ抵抗制御付き
C
入力プルアップ制御 ・CMOS レベル入出力
コントロール
P-ch
P-ch
デジタル出力
N-ch
デジタル出力
CMOS入力
スタンバイ制御信号
10
第 1 章 概要
表 1.6-1 入出力回路形式 (2 / 3)
分類
D
回 路
備 考
CMOS レベル入出力
P-ch
デジタル出力
N-ch
デジタル出力
CMOS入力
スタンバイ制御信号
E
P-ch
デジタル出力
・ヒステリシス入力
・CMOS レベル出力
N-ch
デジタル出力
CMOS入力
スタンバイ制御信号
F
P-ch
オープンドレイン
制御信号
・CMOS レベル入出力
・オープンドレインコントロール付き
N-ch
デジタル出力
CMOS入力
スタンバイ制御信号
G
P-ch
オープンドレイン
制御信号
・CMOS レベル出力
・ヒステリシス入力
・オープンドレインコントロール付き
N-ch
デジタル出力
ヒステリシス入力
スタンバイ制御信号
11
第 1 章 概要
表 1.6-1 入出力回路形式 (3 / 3)
分類
H
回 路
備 考
P-ch
デジタル出力
・CMOS レベル入出力
・アナログ入力
N-ch
デジタル出力
CMOS入力
スタンバイ制御信号
アナログ入力
I
デジタル出力
・ヒステリシス入力
・N-ch オープンドレイン出力
CMOS入力
スタンバイ制御信号
J
( フラッシュメモリ品 )
・CMOS レベル入力
・フラッシュテスト用の高電圧制御あり
(フラッシュメモリ品)
制御信号
モード入力
拡散抵抗
( マスク ROM 品 )
CMOS ヒステリシス入力
(マスクROM品)
CMOSヒステリシス入力
12
第2章
デバイス使用上の注意
本シリーズを使用する際の注意事項について説明
します。
2.1 デバイス使用上の注意
13
第 2 章 デバイス使用上の注意
2.1
デバイス使用上の注意
デバイスの電源電圧 , 端子の処理などについての注意事項を記載します。
■ デバイス使用上の注意
● 最大定格電圧 ( ラッチアップの防止 )
CMOS IC では , 中・高耐圧以外の入力端子や出力端子に VCC より高い電圧や VSS より
低い電圧が印加された場合 , または VCC と VSS の間に定格を超える電圧が印加された
場合 , ラッチアップ現象が発生することがあります。
ラッチアップが起きると電源電流が激増し , 素子が熱破壊する恐れがあります。使用に
際して , 最大定格を超えることのないよう十分注意してください。
アナログ系の電源投入時 , および切断時においてもアナログ電源 (AVCC, AVRH) とア
ナログ入力は , デジタル電源 (VCC) を超えないように注意してください。
● 未使用端子の処理
使用していない入力端子を開放のままにしておくと , 誤動作およびラッチアップによ
る永久破壊の原因になることがありますので , 2 kΩ 以上の抵抗を介して , プルアップ ,
または , プルダウンの処置をしてください。また , 使用していない入出力端子がある場
合は , 出力状態に設定して開放とするか , 入力状態に設定して入力端子と同じ処理をし
てください。
● 外部クロック使用時の注意について
外部クロック使用時においても , パワーオンリセット , サブクロックモードおよびス
トップモードからの解除には , 発振安定待ち時間がとられます。なお , 外部クロック使
用時には , 25 MHz 上限を目安に使用してください。
図 2.1-1 に外部クロック使用例を示します。
図 2.1-1 外部クロック例
X0
開放
X1
● 電源端子 (VCC/VSS) の取扱いについて
VCC 端子または VSS 端子が複数ある場合 , デバイスの設計上ラッチアップ , 不要輻射の
低減 , グランドレベルの上昇によるストローブ信号の誤動作の防止 , 総出力電流規格の
遵守などのために , 必ずすべての電源端子を外部で , 電源およびグランドに接続してく
ださい。また , 電源供給源は , できる限り低インピーダンスで本デバイスの VCC 端子
または VSS 端子に接続するような配慮をお願いします。さらに本デバイスの近くで ,
VCC 端子または VSS 端子の間に 0.1 μF 程度のコンデンサをバイパスコンデンサとして
接続することをお勧めします。
14
第 2 章 デバイス使用上の注意
● 水晶発振回路について
高速発振端子 (X0, X1) および低速発振端子 (X0A, X1A) の近辺のノイズは , 本デバイス
の誤動作の原因となります。高速発振端子と低速発振端子に対して , 水晶発振子 ( また
はセラミック発振子 ) およびグランドへのバイパスコンデンサは, できる限り近くに配
置するようプリント基板を設計してください。また , その配線とほかの配線とはできる
限り交差させないよう設計してください。
高速発振端子および低速発振端子の回りをグランドで囲むようなプリント板アート
ワークは , 安定した動作を期待できますので強くお勧めします。
● PLL クロックモード動作中の注意
PLL クロックモードで動作中に , 発振子が外れたり , あるいはクロック入力が停止した
場合 , 本マイコンは PLL 内部の自励発振回路の自走周波数で動作を継続する場合があ
ります。この動作は , 保証外の動作です。
● A/D コンバータの電源 , アナログ入力の投入および切断順序
A/D コンバータの電源 (AVCC, AVRH) およびアナログ入力 (AN0 ~ AN7) の投入は , デ
ジタル電源 (VCC) の投入後に行ってください。
電源切断時は, A/Dコンバータの電源 (AVCC, AVRH) およびアナログ入力 (AN0~AN7)
の切断の後で , デジタル電源 (VCC) の切断を行ってください。
その際 , AVRH は AVCC を超えないように投入 , 切断を行ってください。
アナログ入力と兼用している端子を入力ポートとして使用する場合においても , 入力
電圧は AVCC を超えないようにしてください。
● A/D コンバータ搭載品種の電源端子処理
A/D コンバータを使用しない場合においても , AVCC = AVRH = VCC, AVSS = VSS と
なるよう接続してください。
● 電源投入時の注意点
内部に内蔵している降圧回路の誤動作を防ぐために , 電源投入時における電圧の立上
り時間は 50 μs (0.2 V ~ 2.7 V の間 ) 以上を確保してください。
● 供給電源の安定化
VCC 電源電圧の動作範囲内においても , 電源の急激な変化があると誤動作を生じるこ
とがあります。安定化の基準として , 商用周波数 (50/60 MHz) での VCC リプル変動
(P-P 値 ) は , 標準 VCC 値の 10%以下に , また電源の切換え時などの瞬時変化において
は , 過渡変動率が 0.1 V/ms 以下になるよう電圧変動を押さえることをお勧めします。
● 電源使用時の注意
MB90980 シリーズは , 通常 3 V 系電源を使用しますが , VCC3 = 3 V 系 /VCC5 = 5 V 系
とすることで , P24 ~ P27, P30 ~ P37, P40 ~ P42, P70 ~ P74, P76, P77 をメインの 3 V
系電源とは別に , 5 V 系電源としてインタフェースできます。なお , A/D コンバータの
アナログ電源 (AVCC・AVSS 等) は, 3 V系としか使用できませんので注意してください。
● NC 端子の処理について
NC ( 内部接続 ) 端子は , 必ず開放にして使用してください。
15
第 2 章 デバイス使用上の注意
● フラッシュへ書込みについて
フラッシュへのシリアル書込みは , 必ず , 動作電圧:VCC = 3.13 V ~ 3.6 V 内で行って
ください。
フラッシュへの通常書込みは, 必ず, 動作電圧:VCC=3.0 V~3.6 V内で行ってください。
16
第3章
CPU の機能
MB90980 シリーズの CPU の機能について説明し
ます。
3.1 CPU の概略仕様
3.2 メモリ空間
3.3 CPU のレジスタ
3.4 プリフィックスコード
17
第 3 章 CPU の機能
3.1
CPU の概略仕様
CPU の概略仕様を説明します。
■ CPU の概略仕様
F2MC-16LX CPU コアは , 民生用機器などの高速リアルタイム処理が要求される用途向
けに設計された 16 ビット CPU です。F2MC-16LX の命令セットは , コントローラ用途
向けに設計され , 高速 , かつ高効率制御処理が可能です。
F2MC-16LX CPU コアは , 16 ビットデータはもちろん , 32 ビットデータ処理も内部 32
ビットアキュムレータ搭載により可能です。メモリ空間は , 最大 16M バイト ( 拡張可
能 ), リニアポインタまたはバンク方式のいずれかでアクセス可能です。また , 命令体
系は F2MC-8L の AT アーキテクチャをベースに高級言語対応命令の追加 , アドレッシ
ングモードの拡張,乗除算命令の強化およびビット処理の充実により命令が強化されて
います。次に F2MC-16LX CPU の特長を示します。
● 最小命令実行時間
• 40.0ns/6.25MHz 原発振 4 逓倍 ( 内部動作 25MHz/3.3V ± 0.3V 時 )
• 62.5ns/4MHz 原発振 4 逓倍 ( 内部動作 16MHz/3.0V ± 0.3V 時 )
• PLL クロック逓倍方式
● 最大メモリ空間 :16M バイト , リニア / バンク方式でアクセス
● コントロール用途に最適化された命令体系
• 取扱い可能なデータタイプ : ビット / バイト / ワード / ロングワード
• 標準アドレッシングモード :23 種類 /32 ビットアキュムレータの採用による高精度
演算の強化
• 符号付き乗除算 , 拡張 RETI 命令
● 強力な割込み機能 :8 つのプライオリティレベル ( プログラマブル )
● CPU に依存しない自動転送機能 : 最大 16 チャネルまでの μDMA
● 高級言語 (C 言語 ) マルチタスクに対応をとった命令体系
システムスタックポインタの採用 / 命令セットの対称性 / バレルシフト命令
● 実行速度の向上 :4 バイトのキュー
18
第 3 章 CPU の機能
3.2
メモリ空間
F2MC-16LX CPU は 16M バイトのメモリ空間を持ち , F2MC-16LX CPU が管理する
データプログラムの入出力はすべて , この 16M バイトのメモリ空間に配置されます。
CPU は 24 ビットのアドレスバスでこれらのアドレスを示し , 各リソースをアクセス
することができます。
■ メモリマップ
図 3.2-1 に , F2MC-16LX システムとメモリマップの関係を示します。
図 3.2-1 F2MC-16LX システムとメモリマップの関係例
プログラム
FFFFFFH
FF8000H
データ
810000H
割込み
800000H
F2MC-16LX
CPU
0000C0H
[デバイス]
周辺回路
0000B0H
汎用ポート
000020H
000000H
プログラム領域
データ領域
割込みコントローラ
周辺回路
汎用ポート
■ アドレス生成の種類
F2MC-16LX CPU には , 2 つのアドレス生成方式があります。1 つは , 24 ビットアドレ
スすべてを命令により指定するリニアアドレッシングです。もう 1 つは , アドレス上位
8 ビットを適当なバンクレジスタでアドレス下位 16 ビットを命令により指定するバン
クアドレッシングです。
リニアアドレッシングには 2 種類あり , オペランドで直接 24 ビットのアドレスを指定
する方式と 32 ビットの汎用レジスタの内容下位 24 ビットをアドレスとして引用する
方式があります。
● リニアアドレッシング (24 ビットオペランド指定 )
図 3.2-2 に , 24 ビットオペランド指定によるリニアアドレッシングの例を示します。
図 3.2-2 リニアアドレッシング (24 ビットオペランド指定 )
JMPP 123456H
旧プログラムカウンタ
17
452D
17452DH
123456H
新プログラムカウンタ
12
JMPP 123456H
次の命令
3456
19
第 3 章 CPU の機能
● リニアアドレッシング (32 ビットレジスタ間接指定 )
図 3.2-3 に , 32 ビットレジスタ間接指定によるリニアアドレッシングの例を示します。
図 3.2-3 リニアアドレッシング (32 ビットレジスタ間接指定 )
MOV A, @RL1+7
旧AL
090700H
XXXX
3A
+7
RL1
(上位8ビットは無視)
新AL
240906F9
003A
● バンクによるアドレッシングの種類
バンクアドレッシングは , 16M バイトの空間を 64K バイトごとの 256 個のバンクに分
割し , 次に示す 5 つのバンクレジスタで各空間に対するバンクを指定します。
• プログラムカウンタバンクレジスタ (PCB)
• データバンクレジスタ (DTB)
• ユーザスタックバンクレジスタ (USB)
• システムスタックバンクレジスタ (SSB)
• アディショナルデータバンクレジスタ (ADB)
PCB によって指定される 64K バイトのバンクをプログラム (PC) 空間とよびます。この
PC空間には,例えば,命令コードやベクタテーブルおよび即値データなどが存在します。
DTB によって指定される 64K バイトのバンクをデータ (DT) 空間とよびます。この DT
空間には , 書込み可能なデータや内外リソースの制御 / データレジスタなどが存在しま
す。
USB または SSB によって指定される 64K バイトのバンクをスタック (SP) 空間とよび
ます。この SP 空間は , プッシュ/ ポップ命令や割込みレジスタの退避などの際にスタッ
クアクセスが生じたときにアクセスされます。どのスタック空間をアクセスするかは ,
コンディションコードレジスタ中の S フラグの値に依存します。
ADB よって指定される 64K バイトのバンクをアディショナル (AD) 空間とよびます。
この AD 空間には , 例えば , DT 空間に入りきらなかったデータなどが存在します。
表 3.2-1 に示すように ,各アドレッシングモードで使用されるデフォルト空間が命令の
コード効率を向上するために事前に決められています。あるアドレッシングモードで
デフォルト以外の空間を使用するには,命令コードに先行してバンクに対応しているプ
リフィックスコードを指定します。これによって , そのプリフィックスコードに対応し
た任意のバンク空間にアクセスすることができます。
リセット後 , DTB, USB, SSB, ADB は , "00H" に初期化され , PCB は , リセットベクタに
より指定された値に初期化されます。
リセット後 , DT, SP, AD の各空間は , バンク "00H"(000000H ~ 00FFFFH) に配置され ,
PC 空間はリセットベクタにより指定されたバンクに配置されます。
20
第 3 章 CPU の機能
表 3.2-1 デフォルト空間
デフォルト空間
プログラム空間
データ空間
スタック空間
アディショナル空間
アドレッシングモード
PC 間接 , プログラムアクセス , 分岐命令
@RW0, @RW1, @RW4, @RW5 を用いたアドレッシングモード ,
@A, addr16, dir
PUCHW, POPW,@RW3,@RW7 を用いたアドレッシングモード
@RW2,@RW6 を用いたアドレッシングモード
図 3.2-4 にレジスタバンクの分割されたメモリ空間の例を示します。
図 3.2-4 各空間の物理アドレス
FFFFFFH
FF0000H
B3FFFFH
B30000H
物理アドレス
92FFFFH
920000H
68FFFFH
680000H
プログラム空間
FEH
:PCB(プログラムカウンタバンクレジスタ)
B3H
:ADB(アディショナルデータバンクレジスタ)
92H
:USB (ユーザスタックバンクレジスタ)
68H
:DTB (データバンクレジスタ)
4BH
:SSB (システムスタックバンクレジスタ)
アディショナル空間
ユーザスタック空間
データ空間
4BFFFFH
4B0000H
システムスタック空間
000000H
■ メモリ空間における多バイト長データの配置
図 3.2-5 にメモリにおける多バイト長データの構成を示します。データ項目は , 下位 8
ビットが n 番地に , 以下 n+1 番地 , n+2 番地 , n+3 番地の順に格納されます。
図 3.2-5 メモリにおける多バイト長データの配置の一例
MSB
01010101B
“H”
1100110B
11111111B
LSB
00000000B
01010101 B
11001100 B
11111111 B
n番地
00000000 B
“L”
データのメモリへの書込みは , アドレスの低い方から順に行われます。したがって , 32
ビット長のデータ項目であれば下位 16 ビットが先に転送され , 続いて上位 16 ビットが
転送されます。
なお , 下位ビットの書込み直後にリセット信号を入力すると , 上位ビットが書き込まれ
ないことがあります。
21
第 3 章 CPU の機能
■ 多バイト長データアクセス
図 3.2-6 に , 多バイト長データアクセスの例を示します。
これは , MOVW A, 030FFFFH の実行例です。
図 3.2-6 多バイト長データアクセス例
“H”
80FFFFH
実行前のAL
??
??
実行後のAL
23H
01H
01 H
·
·
·
800000H
23 H
“L”
22
第 3 章 CPU の機能
3.3
CPU のレジスタ
F2MC-16LX のレジスタは , CPU 内部の特殊レジスタとメモリ上にある汎用レジスタ
の 2 種類に分けられます。特殊レジスタは CPU 内部の専用ハードウェアであり , そ
の用途が CPU のアーキテクチャによって限定されています。汎用レジスタは , CPU
のアドレス空間を RAM と共用します。汎用レジスタは , アドレスを指定しないでア
クセスができるという点では特殊レジスタと同じですが , 通常のメモリ空間と同じく
その用途をユーザが指定できます。
■ 専用レジスタ
F2MC-16LX の専用レジスタは , 以下に示す 11 種類で構成されています。
• アキュムレータ (A=AH:AL)
:16 ビット× 2 本のアキュムレータ
( 単一の 32 ビットアキュムレータとし
ても使用可能 )
• ユーザスタックポインタ (USP)
:ユーザスタック領域を示す16ビットの
ポインタ
• システムスタックポインタ (SSP)
: システムスタック領域を示す
16 ビットのポインタ
• プロセッサステータス (PS)
: システムの状態を示す 16 ビットの
レジスタ
• プログラムカウンタ (PC)
:プログラムのアドレスを保持している
16 ビットのレジスタ
• ダイレクトページレジスタ (DPR)
: ダイレクトページを示す 8 ビットの
レジスタ
• プログラムカウンタバンクレジスタ (PCB) :PC 空間を示す 8 ビットのレジスタ
• データバンクレジスタ (DTB)
:DT 空間を示す 8 ビットのレジスタ
• ユーザスタックバンクレジスタ (USB)
: ユーザスタック空間を示す 8 ビットの
レジスタ
• システムスタックバンクレジスタ (SSB)
: システムスタック空間を示す 8 ビット
のレジスタ
• アディショナルデータバンクレジスタ (ADB):AD 空間を示す 8 ビットのレジスタ
図 3.3-1 に , 専用レジスタの構成を示します。
23
第 3 章 CPU の機能
図 3.3-1 専用レジスタの構成
AH
32ビット
AL
アキュムレータ
USP
ユーザスタックポインタ
SSP
システムスタックポインタ
PS
プロセッサステータス
PC
プログラムカウンタ
DPR
ダイレクトページレジスタ
PCB
プログラムカウンタバンクレジスタ
DTB
データバンクレジスタ
USB
ユーザスタックバンクレジスタ
SSB
システムスタックバンクレジスタ
ADB
アディショナルデータバンクレジスタ
8ビット
16ビット
■ 汎用レジスタ
F2MC-16LX の汎用レジスタは , 主記憶のアドレス "000180H" ~ "00037FH"( 最大構成 )
に存在し , レジスタバンクレジスタ (RP) によって先に述べたアドレスのどの部分が現
在レジスタバンクとして使用されているかを指定します。各バンクには , 次に示す 3 種
類のレジスタが存在します。これらは , 図 3.3-2 に示すようにお互いに依存します。
• R0 ~ R7
:8 ビットの汎用レジスタ
• RW0 ~ RW7 :16 ビットの汎用レジスタ
• RL0 ~ RL3
:32 ビットの汎用レジスタ
図 3.3-2 に , 汎用レジスタの構成を示します。
図 3.3-2 汎用レジスタの構成
MSB
LSB
16ビット
000180H+RP×10H
RW0
下位
RL0
RW1
RW2
RL1
RW3
R1
R0
RW4
R3
R2
RW5
R5
R4
RW6
R7
R6
RW7
RL2
RL3
上位
バイトレジスタとワードレジスタの上位 / 下位バイトの関係は , RW(i+4) = RW(i × 2+1) ×
256+R(i × 2) [i=0 ~ 3] という式で表せます。RLi の上位 / 下位の関係は , RW(i)=
RW(i × 2+1) × 65536+RW(i × 2) [i=0 ~ 3] という式で表せます。
24
第 3 章 CPU の機能
3.3.1
アキュムレータ (A)
アキュムレータ (A) の機能について説明します。
■ アキュムレータ (A)
アキュムレータ (A) は , 2 つの 16 ビット長の算術演算レジスタ (AH/AL) で構成され , 演
算結果やデータ転送の一時記憶として使用されます。32 ビットデータ処理のときには
AH と AL を連結して使用し , 16 ビットデータ処理モードのワード処理や 8 ビットデー
タ処理モードのバイト処理のときには AL のみが使用されます。アキュムレータ (A) に
格納されたデータは , メモリ / レジスタ (Ri, Rwi, Rli) 中のデータと演算することができ
ます。ワード長以下のデータ項目を AL に転送した場合 , 転送前の AL 中のデータ項目
が自動的に AH に転送されます ( データ保持機能 )。データ保持機能と AL-AH 間の演
算によって処理効率の向上が図られます。
AL へのバイト長以下のデータ項目の転送時は , データは符号拡張またはゼロ拡張され ,
16 ビット長データ項目として AL に格納されます。AL 中のデータは , ワード長として
もバイト長としても扱えます。
AL にバイト処理の算術演算命令を実行すると , 演算前の AL の上位 8 ビットは無視さ
れ , 演算結果の上位 8 ビットはすべて "0" になります。アキュムレータ (A) は , リセッ
トでは初期化されず , リセット直後は不定値となります。
図 3.3-3 に 32 ビットデータ転送の処理を , 図 3.3-4 に AL-AH 転送の処理を示します。
図 3.3-3 32 ビットデータ転送
MOVL A,@RW1+6
実行前のA
XXXXH
MSB LSB
XXXXH
DTB
実行後のA
8F74H
A6H
A61540H
8FH
74H
A6153EH
2BH
52H
15H
38H
+6
RW1
2B52H
図 3.3-4 AL-AH 転送
MOVW A,@RW1+6
実行前のA
XXXXH
MSB
1234H
DTB
実行後のA
1234H
2B52H
A6H
LSB
A61540H
8FH
74H
A6153EH
2BH
52H
15H
38H
+6
RW1
25
第 3 章 CPU の機能
ユーザスタックポインタ (USP) とシステムスタック
ポインタ (SSP)
3.3.2
ユーザスタックポインタ (USP) とシステムスタックポインタ (SSP) の機能について
説明します。
■ ユーザスタックポインタ (USP) とシステムスタックポインタ (SSP)
ユーザスタックポインタ (USP) およびシステムスタックポインタ (SSP) は 16 ビットの
レジスタで , プッシュ / ポップ命令またはサブルーチン実行時のデータ退避 / 復帰のメ
モリアドレスを示します。USP レジスタと SSP レジスタは , スタック系の命令により
使用されますが , プロセッサステータスレジスタ中の S フラグが "0" のときには USP
レジスタが有効になり , S フラグが "1" のときには SSP レジスタが有効になります ( 図
3.3-5 を 参照 )。また , 割込みが受け付けられると S フラグがセットされるため , レジス
タ値は割込み処理の間 SSP が示すメモリ領域に常に退避されます。割込みルーチンで
のスタック処理は SSP で , 割込みルーチン以外のスタック処理は USP が用いられます。
スタック空間を分けない場合 , SSP だけを用います。
スタック処理の間のアドレス上位 8 ビットは , SSP → SSB, USP → USB により示されま
す。また , USP および SSP は , リセットでは初期化されず , 不定値になります。
図 3.3-5 に , S フラグが "0" の場合と "1" の場合のスタック操作命令とスタックポインタ
の関係を示します。
図 3.3-5 スタック操作命令とスタックポインタ
例 1) S フラグが "0" の場合の PUSHW A MSB
実行前
実行後
USB
C6H
USP
F328H
Sフラグ 0
SSB
56H
SSP
1234H
AL
USB
C6H
USP
F328H
SSB
56H
SSP
1234H
AL
A624H
A624H
Sフラグ 0
C6F326H
LSB
XXH
XXH
Sフラグが"0"であるため
ユーザスタックを使用
C6F326H
A6H
24H
例 2) S フラグが "1" の場合の PUSHW A
実行前
AL
A624H
Sフラグ 1
実行後
AL
A624H
Sフラグ 1
USB
C6H
USP
F328H
SSB
56H
SSP
1234H
USB
C6H
USP
F328H
SSB
56H
SSP
1232H
561232H
XXH
XXH
561232H
A6H
24H
Sフラグが"1"であるため
システムスタックを使用
<注意事項>
スタックポインタを設定する場合には , 偶数アドレスを設定してください。
26
第 3 章 CPU の機能
プロセッサステータス (PS)
3.3.3
プロセッサステータス (PS) の機能について説明します。
■ プロセッサステータス (PS)
プロセッサステータス (PS) は , CPU 動作を行うビットと CPU 状態を示すビットから構
成されます。図 3.3-6 に示すように , PS レジスタの上位バイトはレジスタバンクポイン
タ (RP) とインタラプトレベルマスクレジスタ (ILM) から構成されます。RP はレジス
タバンクの先頭アドレスを示し , PS レジスタの下位バイトは実行結果 , または割込み
発生によりセット / リセットされるフラグを含むコンディションコードレジスタ (CCR)
です。
図 3.3-6 に , プロセッサステータス (PS) の構成を示します。
図 3.3-6 プロセッサステータス (PS) の構成
bit13 bit12
bit15
PS
bit0
bit8 bit7
ILM
CCR
RP
■ コンディションコードレジスタ (CCR)
図 3.3-7 に , コンディションコードレジスタの構成を示します。
図 3.3-7 コンディションコードレジスタの構成
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
初期値
-
I
S
T
N
Z
V
C
-
0
1
*
*
*
*
*
*:不定値
● 割込み許可フラグ (I)
ソフトウェアインタラプト以外の割込みは , I フラグが "1" の場合には許可 , "0" の場合
には禁止します。
I フラグは , リセット時クリアされます。
● スタックフラグ (S)
S フラグが "0" の場合にはスタック操作用ポインタとして USP が有効 , "1" の場合には
SSP が有効になります。S フラグは , 割込み時 , またはリセット時にセットされます。
● スティッキィビットフラグ (T)
論理右 / 算術右シフト命令を実行後にキャリよりシフトアウトされたデータに 1 つ以
上 "1" があると T フラグに "1" が設定されます。それ以外は "0" がセットされます。シ
フト量がゼロの場合も T フラグに "0" がセットされます。
● ネガティブフラグ (N)
演算結果の MSB が "1" なら N フラグはセットされ , それ以外はクリアされます。
● ゼロフラグ (Z)
演算結果がすべて "0" なら Z フラグはセットされ , それ以外はクリアされます。
27
第 3 章 CPU の機能
● オーバフローフラグ (V)
演算の実行結果として符号付き数値のオーバフローが生じた場合, Vフラグはセットさ
れ , それ以外はクリアされます。
● キャリフラグ (C)
演算の実行結果として MSB より桁上げ / 桁下げが生じた場合 , C フラグはセットされ,
それ以外はクリアされます。
■ レジスタバンクポインタ (RP)
レジスタバンクポインタ (RP) は , F2MC-16LX の汎用レジスタと内部 RAM アドレスと
の関係を示します。RP は , 現在使用中のレジスタバンクの先頭メモリアドレスを
[00180H+RP × 10H] という変換式で示します。
RP は 5 ビットにより構成されており , "00H" ~ "1FH" までの値をとります。
"000180H" ~ "00037FH" のメモリ中にレジスタバンクを配置できます。ただし , この範
囲内であってもレジスタバンクが内部 RAM でなければ , 汎用レジスタとして使用する
ことはできません。命令上では RP に 8 ビットの即値を転送できますが , 実際に使用さ
れるのはそのデータの下位 5 ビットのみです。
図 3.3-8 レジスタバンクポインタ (RP) の構成
初期値
B4
B3
B2
B1
B0
0
0
0
0
0
■ インタラプトレベルマスクレジスタ (ILM)
インタラプトレベルマスクレジスタ (ILM) は 3 ビットから構成されており , CPU の割
込みマスクのレベルを示します。この 3 ビットにより表示されるレベルより高い割込
みレベルの割込み要求のみが受け付けられます。レベルの高低は "0" が最強で "7" が最
弱と定義されています ( 表 3.3-1 を参照 )。したがって , 割込みが受け付けられるのは ,
現状の ILM の値より小さいレベル値でなければなりません。割込みが受け付けられる
と , その割込みのレベル値が ILM にセットされ , これ以降は同じか , それよりも低い優
先順位の割込みは受け付けられなくなります。ILM はリセットによりすべて "0" に初
期化されます。命令上では ILM レジスタに 8 ビットの即値を転送できますが , 実際に
使用されるのはそのデータの下位 3 ビットのみです。
図 3.3-9 にインタラプトレベルマスクレジスタの構成を , 表 3.3-1 にインタラプトレベ
ルマスクレジスタ (ILM) で示されるレベルを示します。
図 3.3-9 インタラプトレベルマスクレジスタの構成
初期値
28
ILM2
ILM1
ILM0
0
0
0
第 3 章 CPU の機能
表 3.3-1 インタラプトレベルマスクレジスタ (ILM) で示されるレベル
ILM2
ILM1
ILM0
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
レベル値
0
1
2
3
4
5
6
7
許可される割込みレベル
割込み禁止
"0" のみ
1 より小さいレベル値
2 より小さいレベル値
3 より小さいレベル値
4 より小さいレベル値
5 より小さいレベル値
6 より小さいレベル値
29
第 3 章 CPU の機能
プログラムカウンタ (PC)
3.3.4
プログラムカウンタ (PC) の機能について説明します。
■ プログラムカウンタ (PC)
PC は , 16 ビットのカウンタであり , CPU が実行すべき命令コードのメモリアドレスの
下位 16 ビットを示します。上位 8 ビットのアドレスは , プログラムカウンタバンクレ
ジスタ (PCB) により示されます。PC は条件分岐命令 , サブルーチンコール命令 , 割込
み , リセットなどにより内容が更新されます。また , オペランドアクセス時のベースポ
インタとしても使用できます。
図 3.3-10 に , プログラムカウンタ (PC) の機能を示します。
図 3.3-10 プログラムカウンタ (PC) の機能
PCB
FEH
PC
ABCDH
次に実行する命令
FEABCDH
30
第 3 章 CPU の機能
3.3.5
プログラムカウンタバンクレジスタ (PCB)
プログラムカウンタバンクレジスタ (PCB) の機能について説明します。
■ プログラムカウンタバンクレジスタ (PCB)< 初期値 : リセットベクタ中の値 >
プログラムカウンタバンクレジスタ (PCB) は , 以下のレジスタから構成されています。
• データバンクレジスタ (DTB)< 初期値 :00H>
• ユーザスタックバンクレジスタ (USB)< 初期値 :00H>
• システムスタックバンクレジスタ (SSB)< 初期値 :00H>
• アディショナルデータバンクレジスタ (ADB)< 初期値 :00H>
各バンクレジスタは , PC, DT, SP( ユーザ ), SP( システム ), AD の各空間が配置されるメ
モリバンクを示します。
すべてのバンクレジスタは 1 バイト長であり , リセットにより PCB は "00H" に初期化
されます。PCB 以外のバンクレジスタは読出しのみができます。PCB も読出しできま
すが , 書込みはできません。
16M バイト全空間に分岐する JMPP, CALLP, RETP, RETI, RETF 命令実行中 , または割
込み発生時に PCB は更新されます。各レジスタの動作は ,「3.2 メモリ空間」を参照し
てください。
31
第 3 章 CPU の機能
3.3.6
ダイレクトページレジスタ (DPR)
ダイレクトページレジスタ (DPR) の機能について説明します。
■ ダイレクトページレジスタ (DPR)< 初期値 :01H>
ダイレクトページレジスタ (DPR) は , 図 3.3-11 に示すように , ダイレクトアドレッシン
グモードでの命令オペランドのアドレス 8 ~アドレス 15 を指定します。DPR は 8 ビッ
ト長であり , リセットにより "01H" に初期化されます。また , 命令により読出し / 書込
みができます。
図 3.3-11 に , ダイレクトアドレッシングモードにおける物理アドレスの生成を示しま
す。
図 3.3-11 ダイレクトアドレッシングモードにおける物理アドレスの生成
DTBレジスタ
αααααααα
DPRレジスタ
命令中のダイレクトアドレス
ββββββββ
LSB
MSB
24ビット物理アドレス
32
γγγγγγγγ
ααααααααββββββββγγγγγγγγ
第 3 章 CPU の機能
3.3.7
汎用レジスタ ( レジスタバンク )
汎用レジスタ ( レジスタバンク ) の機能について説明します。
■ 汎用レジスタ ( レジスタバンク )
レジスタバンクは 8 ワードで構成され , バイトレジスタ (R0 ~ R7), ワードレジスタ
(RW0 ~ RW7), ロングワードレジスタ (RL0 ~ RL3) の算術演算用汎用レジスタとして
使用できます。また , レジスタバンクを命令ポインタとしても使用できます。表 3.3-2
に各レジスタ機能を , 図 3.3-12 に各レジスタの関係を示します。
レジスタバンクの値は , 通常の RAM 領域と同様に , リセットでは初期化されず , リセッ
ト前の状態が保持されます。ただし , パワーオン時は , 不定となります。
表 3.3-2 各レジスタの機能
R0 ~ R7
RW0 ~ RW7
RL0 ~ RL3
各種命令のオペランドとして使用
( 注意事項 ) R0 はバレルシフトのカウンタまたはノーマライズ命令のカウン
タとしても使用
ポインタとして使用 / 各種命令のオペランドとして使用
( 注意事項 ) RW0 はストリング命令のカウンタとして使用
ロングポインタとして使用 / 各種命令のオペランドとして使用
図 3.3-12 各レジスタの関係
RW0
RW1
RW2
RW3
R0
R1
R2
R3
RL0
RL1
RW4
RL2
RW5
R4
RW6
R5
RL3
R6
RW7
R7
33
第 3 章 CPU の機能
3.4
プリフィックスコード
命令の前にプリフィックスコードを置くことで , 命令動作の一部を変更できます。バ
ンクセレクトプリフィックス , コモンレジスタバンクプリフィックス , フラグ変化抑
止プリフィックスの 3 種類のプリフィックスコードを使用できます。
■ バンクセレクトプリフィックス (PCB, DTB, ADB, SPB)
データアクセスに使用されるメモリ空間は,アドレッシングモードごとに決められてい
ます。
バンクセレクトプリフィックスを命令の前に置くと,その命令によりデータアクセスに
使用するメモリ空間をアドレッシングモードとは無関係に選択します。
表 3.4-1 に , バンクセレクトプリフィックスと選択される空間の関係を示します。
表 3.4-1 バンクセレクトプリフィックス
バンクセレクトプリフィックス
PCB
DTB
ADB
SPB
選択される空間
PC 空間
データ空間
AD 空間
スタックフラグの値により SSB, または USB 空間のどち
らかが用いられます。
ただし , 次の命令を使用する場合は注意してください。
● ストリング命令 (MOVS, MOVSW, SCEQ, SCWEQ, FILS, FILSW)
プリフィックスとは無関係に , オペランドで指定されたバンクレジスタが使用されます。
● スタック操作命令 (PUSHW, POPW)
プリフィックスとは無関係に S フラグに応じて SSB, または USB が使用されます。
● I/O アクセス命令
MOVA A,io/MOV io,A/MOVX A,io/MOVW A,io/MOVW io,A
MOV io,#imm8/MOVW io,#imm8/MOBV A,io:bp/MOVB io:bp,A
SETB io:bp/CLRB io:bp/BBC io:bp,rel/BBS io:bp,rel WBTC
WBTS
バンクの I/O 空間は , プリフィックスの有無にかかわらず使用されます。
● フラグ変更命令 (AND CCR,#imm8, OR CCR,#imm8)
命令動作は正常ですが , プリフィックスの効果がそのまま次の命令まで及びます。
● POPW PS
プリフィックスとは無関係に S フラグに応じて SSB, または USB が使用されます。プ
リフィックスの効果が次の命令まで及びます。
● MOV ILM,#imm8
命令動作は正常ですが , プリフィックスの効果がそのまま次の命令まで及びます。
● RETI
プリフィックスとは無関係に SSB が使用されます。
34
第 3 章 CPU の機能
■ コモンレジスタバンクプリフィックス (CMR)
複数のタスク間でのデータ交換を容易にするには , レジスタバンクポインタ (RP) の値
とは無関係に比較的簡単に同一のレジスタバンクをアクセスできる必要があります。
レジスタバンクをアクセスする命令の前に CMR を置くと , その命令は現在の RP の値
に関係なく "000180H" ~ "00018FH" のアドレスにあるコモンバンク (RP=0 のときに選
択されるレジスタバンク ) にアクセスします。ただし , 次の命令を使用する場合は注意
してください。
● ストリング命令 (MOVS, MOVSW, SCEQ, SCWEQ, FILS, FILSW)
プリフィックスコードを付加したストリング命令実行中に割込み要求が発生すると,割
込み処理後にストリング命令が復帰したとき , プリフィックスコードが無効となりま
す。このため , 割込み処理後にストリング命令が誤動作します。上記のストリング命令
に対しては , CMR プリフィックスを付加しないでください。
● フラグ変更命令 (AND CCR,#imm8, OR CCR,#imm8)
命令動作は正常ですが , プリフィックスの効果がそのまま次の命令まで及びます。
● MOV ILM,#imm8
命令動作は正常ですが , プリフィックスの効果がそのまま次の命令まで及びます。
■ フラグ変化抑止プリフィックス (NCC)
フラグ変化を抑止するには , フラグ変化抑止プリフィックスコード (NCC) を用います。
命令の前に NCC を置くことで , その命令に伴うフラグ変化を抑止できます。ただし ,
次の命令を使用する場合は注意してください。
● ストリング命令 (MOVS, MOVSW, SCEQ, SCWEQ, FILS, FILSW)
プリフィックスコードを付加したストリング命令実行中に割込み要求が発生すると,割
込み処理後にストリング命令が復帰したとき , プリフィックスコードが無効となりま
す。このため , 割込み処理後にストリング命令が誤動作します。上記のストリング命令
に対しては , CMR プリフィックスを付加しないでください。
● フラグ変更命令 (AND CCR,#imm8, OR CCR,#imm8)
命令動作は正常ですが , プリフィックスの効果がそのまま次の命令まで及びます。
● 割込み命令 (INT #vct8, INT9, INT addr16, INTO addr24, POPW PS)
プリフィックスとは無関係に , CCR は命令の仕様どおりに変化します。
● [email protected]
プリフィックスとは無関係に , CCR は命令の仕様どおりに変化します。
● MOV ILM,#imm8
命令動作は正常ですが , プリフィックスの効果がそのまま次の命令まで及びます。
35
第 3 章 CPU の機能
■ 割込み抑止命令
次に示す 10 種類の命令に対しては , 割込み要求は受け付けられません。
MOV ILM,#imm8/PCB/SPB/OR CCR,#imm8/NCC
AND CCR,#imm8/ADB/CMR/POPW PS/DTB
上記命令のどれかを実行中に有効な割込み要求が発生した場合,上記以外の命令が実行
されたときだけ割込み処理をすることができます。詳細は , 図 3.4-1 を参照してくださ
い。
図 3.4-1 割込み抑止命令
割込み抑止命令
(a)
(a) 普通の命令
割込み要求
割込み受付け
■ 割込み抑止命令とプリフィックス命令に関する制約
プリフィックスコードを割込み抑止前に置くと , プリフィックスコードの効果が
図 3.4-2 に示すように割込み抑止命令以外のコードの後にある最初の命令まで及びま
す。
図 3.4-2 割込み抑止命令とプリフィックスコード
割込み抑止命令
MOV A, FFH
MOV ILM,#imm8
NCC
ADD A,01H
CCR:XXX10XXB
NCCによりCCRは変化しません。
■ 連続したプリフィックスコード
競合するプリフィックスコードが連続している場合 , 図 3.4-3 に示すように後方のもの
が有効になります。
競合するプリフィックスコードとは , 図 3.4-3 に示す PCB, ADB, DTB, SPB のことを意
味します。
図 3.4-3 プリフィックスコードの連続
プリフィックスコード
ADB
DTB
PCB
ADD A,01H
プリフィックスコードは
PCBが有効になります。
36
第4章
割込み
割込みとダイレクトアクセス (DMA) について説明
します。
4.1 割込みの概要
4.2 割込み要因と割込みベクタ
4.3 割込み制御レジスタと周辺機能
4.4 ハードウェア割込み
4.5 ソフトウェア割込み
4.6 μDMAC による割込み
4.7 拡張インテリジェント I/O サービス (EI2OS) による割込み
4.8 例外処理割込み
4.9 割込み処理のスタック動作
4.10 割込み処理のプログラム例
4.11 遅延割込み発生モジュール
37
第 4 章 割込み
4.1
割込みの概要
F2MC-16LX にはイベントなどが発生したとき , 現在実行中の処理を中断して , 別に
定義したプログラムへ制御を移す以下の 4 つの割込み機能があります。
• ハードウェア割込み
• ソフトウェア割込み
• μDMAC による割込み
• 例外処理
■ 割込みの種類と機能
● ハードウェア割込み
周辺機能からの割込み要求に対して,ユーザの定義した割込み処理用プログラムへ制御
を移行する機能です。
● ソフトウェア割込み
ソフトウェア割込み専用の命令 (INT 命令など ) の実行によって , ユーザの定義した割
込み処理用プログラムへ制御を移行する機能です。
● μDMAC による割込み
μDMAC は周辺機能とメモリ間の自動データ転送機能です。従来 , 割込み処理プログラ
ムで行っていたデータ転送を DMAC( ダイレクトメモリアクセス ) のように行うことが
できます。指定回数のデータ転送処理が終了すると , 自動的に割込み処理プログラムを
実行します。
μDMAC による割込みは , ハードウェア割込みの一種です。
● 例外処理
例外処理は , 命令の境目で例外事項 ( 未定義命令の実行 ) が発生したことを検出した段
階で通常処理を中断して行われます。ソフトウェア割込み命令の "INT10" と等価です。
38
第 4 章 割込み
■ 割込み動作の概略フロー
4 種類の割込み機能の起動および復帰処理を図 4.1-1 に示します。
図 4.1-1 割込み動作の概略フロー
START
メインプログラム
有効な
YES
ハードウェア割込み
要求あり
割込み起動/復帰処理
ストリング系*
NO
命令実行中
次の命令の取込み
とデコード
INT命令か?
YES
μDMACか?
μDMAC
NO
YES
システムスタックへ
専用レジスタ退避
NO
μDMAC処理
ソフトウェア
割込み/
例外処理
ハードウェア割込み
受付け禁止(I=0)
ハードウェア
割込み
YES
指定回数終了か?
または, 周辺機能からの
終了要求があるか?
システムスタックへ
専用レジスタ退避
NO
CPU割込み処理
レベル(ILM)更新
RETI命令か?
NO
通常命令実行
NO
YES
割込み
復帰処理
システムスタックから
専用レジスタが復帰し,
割込みルーチンを呼び
出し,前のルーチンへ
復帰
割込みベクタを
読み出し, PC,PCB
を更新し, 割込み
ルーチンへ分岐
ストリング系*
命令の繰返し完了
YES
PC更新で次命令へ
ポインタ移動
*:ストリング系命令の実行中は, 1ステップごとに割込み判定を行います。
39
第 4 章 割込み
割込み要因と割込みベクタ
4.2
F2MC-16LX には , 256 種類の割込み要因に対応する機能があり , メモリの最上位ア
ドレスに 256 組の割込みベクタテーブルを割り当てています。この割込みベクタは ,
すべての割込みで共有します。
ソフトウェア割込みは , このすべての割込み (INT0 ~ INT255) を使用できます。一
部の割込みベクタはハードウェア割込みや例外処理割込みで共有されています。ま
た , ハードウェア割込みでは , 各周辺機能に対し , 割込みベクタと割込み制御レジス
タ (ICR) が固定されています。
■ 割込みベクタ
割込み処理の際に参照する割込みベクタテーブルは , メモリ領域の最上位アドレス
("FFFC00H" ~ "FFFFFFH") に割り当てられています。また , 割込みベクタは , μDMAC,
ハードウェア割込み , ソフトウェア割込みおよび例外処理 , で同じ領域を共有していま
す。割込み番号と割込みベクタの割当てを表 4.2-1 に示します。
表 4.2-1 割込みベクタ一覧表
ソフトウェア
割込み命令
ベクタ
アドレス L
ベクタ
アドレス M
ベクタ
アドレス H
モード
データ
INT0
:
INT7
FFFFFCH
FFFFFDH
FFFFFEH
:
FFFFE0H
:
FFFFE1H
:
FFFFE2H
未使用
:
INT8
FFFFDCH
FFFFDDH
FFFFDEH
未使用
FFFFDFH
INT9
FFFFD8H
FFFFD9H
FFFFDAH
未使用
#9
INT10
FFFFD4H
FFFFD5H
FFFFD6H
未使用
#10
INT11
FFFFD0H
FFFFD1H
FFFFD2H
未使用
#11
INT12
FFFFCCH
FFFFCDH
FFFFCEH
未使用
#12
INT13
FFFFC8H
FFFFC9H
FFFFCAH
未使用
#13
INT14
FFFFC4H
FFFFC5H
FFFFC6H
未使用
#14
:
INT254
:
FFFC04H
:
FFFC05H
:
FFFC06H
:
未使用
:
#254
INT255
FFFC00H
FFFC01H
FFFC02H
未使用
#255
割込み No
#0
:
#7
#8
ハードウェア
割込み
なし
:
なし
(RESET ベクタ )
なし
< 例外処理 >
ハードウェア
割込み #0
ハードウェア
割込み #1
ハードウェア
割込み #2
ハードウェア
割込み #3
:
なし
なし
< 参考 >
使われない割込みベクタも , 例外処理などのアドレスに設定することを推奨します。
40
第 4 章 割込み
■ 割込み要因と割込みベクタ , 割込み制御レジスタ
表 4.2-2 に , ソフトウェア割込みを除く割込み要因と割込みベクタおよび割込み制御レ
ジスタの関係を示します。
表 4.2-2 割込み要因と割込みベクタ , 割込み制御レジスタ
割込み要因
EI2OS
のクリア
μDMAC
チャネル
番号
割込みベクタ
割込み制御レジスタ
番号
アドレス
番号
アドレス
リセット
INT9 命令
×
-
#08
FFFFDCH
-
-
×
-
#09
FFFFD8H
-
-
例外
INT0 (IRQ0)
×
-
#10
FFFFD4H
-
-
○
0
#11
FFFFD0H
INT1 (IRQ1)
○
×
#12
FFFFCCH
ICR00
0000B0H
INT2 (IRQ2)
○
×
#13
FFFFC8H
INT3 (IRQ3)
○
×
#14
FFFFC4H
ICR01
0000B1H
INT4 (IRQ4)
○
×
#15
FFFFC0H
INT5 (IRQ5)
○
×
#16
FFFFBCH
ICR02
0000B2H
INT6 (IRQ6)
○
×
#17
FFFFB8H
INT7 (IRQ7)
○
×
#18
FFFFB4H
ICR03
0000B3H
○
-
×
-
#19
FFFFB0H
#20
FFFFACH
ICR04
0000B4H
PWC0
○
×
#21
FFFFA8H
PPG0/PPG1 カウンタボロー
×
×
#22
FFFFA4H
ICR05
0000B5H
PPG2/PPG3 カウンタボロー
-
×
-
×
-
#23
FFFFA0H
#24
FFFF9CH
ICR06
0000B6H
8/16 ビットアップ / ダウンカウンタ , タイマコンペ
ア (ch.0, ch.1), アンダフロー / オーバフロー / アップ
ダウン反転
○
×
#25
FFFF98H
ICR07
0000B7H
FFFF94H
ICR08
0000B8H
ICR09
0000B9H
ICR10
0000BAH
ICR11
0000BBH
ICR12
0000BCH
ICR13
0000BDH
ICR14
0000BEH
ICR15
0000BFH
PWC1
-
インプットキャプチャ (ch.0) 取込み
○
5
#26
インプットキャプチャ (ch.1) 取込み
○
6
#27
FFFF90H
アウトプットコンペア (ch.0) 一致
○
8
#28
FFFF8CH
アウトプットコンペア (ch.1) 一致
○
9
#29
FFFF88H
アウトプットコンペア (ch.2) 一致
○
10
#30
FFFF84H
アウトプットコンペア (ch.3) 一致
-
○
-
×
-
#31
FFFF80H
#32
FFFF7CH
-
-
#33
FFFF78H
UART 送信完了
○
11
#34
FFFF74H
○
12
#35
FFFF70H
◎
7
#36
FFFF6CH
○
13
#37
FFFF68H
SIO2(ch.1)
○
14
#38
FFFF64H
I2C インタフェース
×
FFFF60H
○
×
15
#39
A/D コンバータ
#40
FFFF5CH
×
×
#41
FFFF58H
×
×
#42
FFFF54H
16 ビットフリーランタイマオーバフロー ,
16 ビットリロードタイマアンダフロー *2
UART 受信完了
SIO1(ch.0)
フラッシュの書込み / 消去 , タイムベースタイマ , 時
計タイマ *1
遅延割込み発生モジュール
× : 割込み要求フラグはクリアされません。
○ : 割込み要求フラグはクリアされます。
◎ : 割込み要求フラグはクリアされます。ストップ要求あり。
*1 : フラッシュ書込み / 消去とタイムベースタイマと時計タイマを同時には使用できませんので注意してください。
*2: リロードタイマアンダフロー割込みを許可(TMCSRレジスタのINTEビット = 1)から禁止(TMCSRレジスタのINTEビット = 0)にす
る場合は , 割込み制御レジスタ (ICR12) の IL2 ~ IL0 ビット = 111B として割込みを禁止にしてから INTE ビットに "0" を書き込
んでください。
41
第 4 章 割込み
4.3
割込み制御レジスタと周辺機能
割込み制御レジスタ (ICR00 ~ ICR15) は割込みコントローラ内にあり , 割込み機能
を持つすべての周辺機能に対応して存在します。このレジスタは , 割込みを制御しま
す。
■ 割込み制御レジスタ一覧
表 4.3-1 に , 割込み制御レジスタと対応する周辺機能の一覧を示します。
表 4.3-1 割込み制御レジスタ一覧
アドレス
0000B0H
レジスタ
略称
対応する周辺機能
割込み制御レジスタ 00
ICR00 INT0, INT1
0000B1H
割込み制御レジスタ 01
ICR01 INT2, INT3
0000B2H
割込み制御レジスタ 02
ICR02 INT4, INT5
0000B3H
割込み制御レジスタ 03
ICR03 INT6, INT7
0000B4H
割込み制御レジスタ 04
ICR04 PWC1
0000B5H
割込み制御レジスタ 05
0000B6H
割込み制御レジスタ 06
ICR05 8/16 ビット PPG タイマ 0, 1 PWC0
ICR06 8/16 ビット PPG タイマ 2, 3
0000B7H
割込み制御レジスタ 07
ICR07
8/16 ビットアップ / ダウンカウンタ 0, 1,
インプットキャプチャ 0
ICR08 インプットキャプチャ 1, アウトプットコンペア 0
ICR09 アウトプットコンペア 1, 2
0000B8H
割込み制御レジスタ 08
0000B9H
割込み制御レジスタ 09
0000BAH
割込み制御レジスタ 10
0000BBH
割込み制御レジスタ 11
ICR10 アウトプットコンペア 3
ICR11 UART 送信
0000BCH
割込み制御レジスタ 12
ICR12
0000BDH
割込み制御レジスタ 13
0000BEH
割込み制御レジスタ 14
0000BFH
割込み制御レジスタ 15
UART 受信 , 16 ビットフリーランタイマ ,
16 ビットリロードタイマ
ICR13 SIO0, SIO1
ICR14 A/D コンバータ , I2C インタフェース
フラッシュ書込み , タイムベースタイマ , 時計タイマ , 遅延割
ICR15
込み発生モジュール
<注意事項>
割込み制御レジスタ (ICR) に対するリードモディファイライト (RMW) 系命令でのアクセ
スは , 誤動作を引き起こしますので行わないでください。
42
第 4 章 割込み
割込み制御レジスタ (ICR00 ~ ICR15)
4.3.1
割込み制御レジスタ (ICR00 ~ ICR15) は , 割込み機能を持つすべての周辺機能に対
応し , 割込み要求発生時の処理を制御します。このレジスタは , 書込み時と読出し時
では一部の機能が異なります。
■ 割込み制御レジスタ (ICR00 ~ ICR15) の機能
割込み制御レジスタ (ICR00 ~ ICR15) は , 次に示す 4 つの機能を持つビットで構成され
ています。
• 割込みレベル設定ビット (IL2 ~ IL0)
• 拡張インテリジェント I/O サービス (EI2OS) 許可ビット (ISE3)
• 拡張インテリジェント I/O サービス (EI2OS) チャネル選択ビット (ICS3 ~ ICS0)
• 拡張インテリジェント I/O サービス (EI2OS) ステータスビット (S1, S0)
■ 割込み制御レジスタ (ICR00 ~ ICR15) の構成
図 4.3-1 に , 割込み制御レジスタ (ICR00 ~ ICR15) のビット構成を示します。
図 4.3-1 割込み制御レジスタ (ICR00 ~ ICR15) のビット構成
割込み制御レジスタ(ICR)書込み時
アドレス
0000B0H
0000BFH
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
初期値
ICS3 ICS2 ICS1 ICS0 ISE
00000111B
W
W
W
W
R/W
IL2
IL1
IL0
R/W
R/W
R/W
割込み制御レジスタ(ICR)読出し時
アドレス
0000B0 H
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
初期値
-
-
S1
S0
ISE
IL2
IL1
IL0
XX000111B
-
-
R
R
R/W
R/W
R/W
R/W
0000BFH
R/W:リード/ライト可能
R :リードオンリ
W :ライトオンリ
- :未定義
<注意事項>
• ICS3 ~ ICS0 ビットは , 拡張インテリジェント I/O サービス (EI2OS) を起動する場合の
み有効です。EI2OS を起動する場合は , ISE ビットに "1" を設定してください。EI2OS
を起動しない場合は , ISE ビットに "0" を設定してください。EI2OS を起動しない場合
は ICS3 ~ ICS0 ビットの設定は不要です。
• ICS1, ICS0 ビットは書込みのみ可能です。S1, S0 ビットは読出しのみ可能です。
43
第 4 章 割込み
■ 割込み制御レジスタ (ICR00 ~ ICR15) の各ビットの機能
● 割込みレベル設定ビット (IL2 ~ IL0)
対応する周辺機能の割込みレベルを設定します。リセットにより , レベル 7( 割込みな
し ) に初期化されます。割込みレベル設定ビットと各割込みレベルとの関係を ,
表 4.3-2 に示します。
表 4.3-2 割込みレベル設定ビットと割込みレベルの対応
IL2
IL1
IL0
割込みレベル
0
0
0
0
1
1
0
0
1
1
0
0
0
1
0
1
0
1
0( 最高割込み )
1
1
1
1
0
1
6( 最低割込み )
7( 割込みなし )
● 拡張インテリジェント I/O サービス (EI2OS) 許可ビット (ISE)
割込み要求発生時にこのビットが "1" の場合 , EI2OS が起動されます。割込み要求発生
時にこのビットが "0" の場合 , 割込みシーケンスが起動されます。EI2OS の終了条件が
満たされる (S1, S0=00B 以外 ) と , ISE ビットは "0" にクリアされます。対応するリソー
スが EI2OS 機能を持っていない場合は , ソフトウェアで ISE ビットに "0" を設定してく
ださい。ISE ビットは , リセットにより "0" に初期化されます。
● 拡張インテリジェント I/O サービス (EI2OS) チャネル選択ビット (ICS3 ~ ICS0)
ICS3 ~ ICS0 ビットは書込み専用のビットで , EI2OS のチャネルを指定します。EI2OS
ディスクリプタアドレスは , ICS3 ~ ICS0 ビットに設定した値により決定されます。
ICS3 ~ ICS0 ビットは , リセットにより "0000B" に初期化されます。
表 4.3-3 に EI2OS チャネル選択ビットとディスクリプタアドレスの対応関係を示しま
す。
表 4.3-3 EI2OS チャネル選択ビットとディスクリプタアドレスの対応関係
44
ICS3
ICS2
ICS1
ICS0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
選択されるチャネル
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ディスクリプタアドレス
000100H
000108H
000110H
000118H
000120H
000128H
000130H
000138H
000140H
000148H
000150H
000158H
000160H
000168H
000170H
000178H
第 4 章 割込み
● 拡張インテリジェント I/O サービス (EI2OS) ステータスビット (S1, S0)
S1, S0 ビットは , 読出し専用のビットです。S1, S0 ビットの値を EI2OS 終了時に確認す
ることにより , 動作状態と終了状態を判別することができます。S1, S0 ビットは , リ
セットにより "00B" に初期化されます。
表 4.3-4 に , S0, S1 ビットと EI2OS 状態の対応関係について示します。
表 4.3-4 EI2OS ステータスビットと EI2OS 状態の対応関係
S1
S0
EI2OS の状態
0
0
EI2OSが動作中かまたはアクティブになっていない
0
1
カウント終了したため停止している
1
0
未使用
1
1
リソースからの要求が発生したため停止している
45
第 4 章 割込み
4.4
ハードウェア割込み
ハードウェア割込みは , 周辺機能からの割込み要求信号に対応して , CPU がそれま
で実行していたプログラムの実行を一時中断し , ユーザの定義した割込み処理用プロ
グラムに制御を移行する機能です。また , μDMAC や外部割込みなどもハードウェア
割込みの一種として実行されます。
■ ハードウェア割込みの機能
● ハードウェア割込みの機能
ハードウェア割込みは , 周辺機能が出力する割込み要求信号の割込みレベルと , プロ
セッサステータス (PS) 内のインタラプトレベルマスクレジスタ (ILM) とを比較し , か
つプロセッサステータス (PS) 内の I フラグの内容をハードウェアで参照し , 割込みが
受け付けられるかどうかを判定します。
ハードウェア割込みが受け付けられると , 自動的に CPU 内部のレジスタ類をシステム
スタックへ退避し , インタラプトレベルマスクレジスタ (ILM) に現在要求している割込
みレベルを格納した後 , 対応する割込みベクタへ分岐します。
● 多重割込み
ハードウェア割込みは , 多重に起動できます。
● μDMAC
μDMACは,メモリとI/O間の自動転送機能です。転送完了時に,ハードウェア割込みが起
動されます。
なお , μDMAC は多重に起動されることはなく , ある μDMAC の処理中は , ほかの割込
み要求および μDMAC 要求はすべて保留されます。
● 外部割込み
外部割込み ( ウェイクアップ割込みを含む ) は , 周辺機能 ( 割込み要求検出回路 ) を通
じて , ハードウェア割込みとして受け付けられます。
● 割込みベクタ
割込み処理の際に参照する割込みベクタテーブルは , メモリ "FFFC00H" ~ "FFFFFFH"
に割り当ててあり , ソフトウェア割込みと共用しています。割込み番号と割込みベクタ
の割当てについては ,「4.2 割込み要因と割込みベクタ」を参照してください。
46
第 4 章 割込み
■ ハードウェア割込みの構造
ハードウェア割込みに関連する機構は , 表 4.4-1 に示す 4 つの部分に分かれて存在しま
す。
ハードウェア割込みを使用する場合は, あらかじめプログラムでこの4箇所を設定する
必要があります。
表 4.4-1 ハードウェア割込みに関連する機構
ハードウェア割込みに関する機構
周辺機能
割込みコントローラ
CPU
メモリ上の
"FFFC00H" ~ "FFFFFFH"
機 能
割込み許可ビット , 割込み要求ビット
周辺機能からの割込み要求の制御
割込み制御レジスタ (ICR)
割込みレベルの設定および μDMAC の制御
割込み許可フラグ (I)
割込み許可状態の識別
インタラプトレベルマスクレジスタ
(ILM)
要求割込みレベルと現割込みレベルの比較
マイクロコード
割込み処理ルーチンの実行
割込みベクタテーブル
割込み処理時の分岐先アドレスを格納
■ ハードウェア割込み抑止
ハードウェア割込みは , 以下の条件において割込み要求の受付けが抑止されます。
● 周辺機能制御レジスタ領域への書込み中のハードウェア割込み抑止
周辺機能制御レジスタ領域への書込み中は , ハードウェア割込み要求を受け付けませ
ん。これは各リソースの割込み制御レジスタ関係の書換えを行っている最中の割込み
要求に対して , CPU が割込み関係で誤動作を起こすことを避けるためです。周辺機能
制御レジスタ領域とは , "000000H" ~ "0000FFH" の I/O アドレッシング領域のことでは
なく,周辺機能制御レジスタの制御レジスタおよびデータレジスタに割り当てられてい
る領域のことを示します。
図 4.4-1 に , 周辺機能制御レジスタ領域へ書込み中のハードウェア割込み動作について
示します。
図 4.4-1 周辺機能制御レジスタ領域へ書込み中のハードウェア割込み要求
周辺機能制御レジスタ領域への書込み命令
・・・・
MOV
A,#08
MOV
io,A
ここで割込み
要求発生
MOV A,2000H
割込みに
分岐しない
割込み処理
割込みに
分岐する
47
第 4 章 割込み
● 割込み抑止命令のハードウェア割込み抑止
ハードウェア割込み抑止命令を表 4.4-2 に示します。ハードウェア割込み抑止命令を実
行中にハードウェア割込み要求が発生した場合は , ハードウェア割込み抑止命令処理
後 , ほかの命令が実行された後に割込み処理が行われます。
表 4.4-2 ハードウェア割込み抑止命令
プリフィックス
コード
割込み / ホールド抑止命令
( プリフィックスコードの効果を
遅延させる命令 )
PCB
DTB
ADB
SPB
CMR
NCC
MOV ILM,#imm8
OR CCR,#imm8
AND CCR,#imm8
POPW PS
割込みやホールド要求
を受け付けない命令
● ソフトウェア割込み実行中のハードウェア割込み抑止
ソフトウェア割込みを起動すると , I フラグを "0" にクリアするために , ほかの割込み
要求は受け付けられません。
48
第 4 章 割込み
4.4.1
ハードウェア割込みの動作
ハードウェア割込み要求発生から割込み処理完了までの動作について説明します。
■ ハードウェア割込みの起動
● 周辺機能の動作 ( 割込み要求の発生 )
ハードウェア割込み要求の機能を持つ周辺機能は , 割込みの要求のあり / なしを示す
「割込み要求フラグ」と , CPU への割込み要求の許可 / 禁止を選択する「割込み許可フ
ラグ」を持っています。割込み要求フラグは , 周辺機能固有のイベントの発生によって
セットされ , 割込み許可フラグが「許可」であったときに , 割込みコントローラへ割込
み要求を発生します。
● 割込みコントローラの動作 ( 割込み要求の制御 )
割込みコントローラは , 同時に受け取った割込み要求の割込みレベル (IL) どうしを比
較し , 最も高いレベルの要求 (IL の値の最も小さいもの ) を採択して CPU へ通知しま
す。同一レベルの要求が複数あった場合には , 割込み番号が小さいものを優先します。
● CPU の動作 ( 割込み要求の受付けと割込み処理 )
CPU は受け取った割込みレベル (ICR の IL2 ~ IL0) とインタラプトレベルマスクレジ
スタ (ILM) とを比較し , IL < ILM で , なおかつ割込みが許可 (PC の CCR の I=1) され
ている場合に , 現在実行中の命令が終了後 , 割込み処理マイクロコードを起動し , 割込
み処理を実行します。
割込み処理では , まず , システムスタック (SSB と SSP の示すシステムスタック空間 )
へ専用レジスタ (A, DPR, ADB, DTB, PCB, PC, PS の 12 バイト ) の内容を退避します。
次に , 割込みベクタのプログラムカウンタ (PCB, PC) へのロード , ILM の更新 , スタッ
クフラグ (S) の設定 (CCR の S=1 とし , システムスタックを有効にする ) を行います。
■ ハードウェア割込みからの復帰
割込み処理プログラムの中で,割込み要因となった周辺機能の割込み要求フラグをクリ
アして RETI 命令を実行すると , システムスタックに退避している 12 バイトデータを
専用レジスタに戻し , 割込み分岐前に実行していた処理に復帰します。割込み要求フラ
グをクリアすることで,周辺機能が割込みコントローラへ出力していた割込み要求は自
動的に取り下げられます。
49
第 4 章 割込み
■ ハードウェア割込みの動作
図 4.4-2 に , ハードウェア割込みの発生から割込み処理完了までの動作を示します。
図 4.4-2 ハードウェア割込みの動作
内部データバス
PS,PC・ ・
PS
(7)
I
ILM
IR
マイクロコード
(6)
チェック
2
F MC-16LX CPU
比較器
(5)
(4)
(3)
ほかの周辺機能
・・・
割込み要求を発生した周辺機能
許可FF
レベル
比較器
割込み
レベルIL
AND
(2)
要因FF
(8)
(1)
割込みコントローラ
RAM
IL :割込み制御レジスタ(ICR)の割込みレベル設定ビット
PS :プロセッサステータス
I :割込み許可フラグ
ILM:インタラプトレベルマスクレジスタ
IR :インストラクションレジスタ
FF :フリップフロップ
(1) 周辺機能の内部で割込み要因が発生します。
(2) 周辺機能の割込み許可ビットを参照し , 割込み許可になっていれば , 周辺から割込
みコントローラへ割込み要求を出力します。
(3) 割込み要求を受け取った割込みコントローラは,同時に要求のあった割込みの優先
順位を判定したうえで , 該当する割込み要求に対応する割込みレベル (IL) を CPU
へ転送します。
(4) CPU は , 割込みコントローラから要求のあった割込みレベル (IL) をインタラプト
レベルマスクレジスタ (ILM) と比較します。
(5) 比較の結果が現在の割込み処理レベルより優先順位が高い場合 , コンディション
コードレジスタ (CCR) の I フラグの内容をチェックします。
(6) (5) のチェックの結果 , I フラグが割込み許可 (I=1) の場合 , 現在実行中の命令の実
行が終了するまで待ち , 終了時点で ILM に要求されたレベル (IL) を設定します。
(7) レジスタを退避し , 割込み処理ルーチンへ分岐します。
(8) 割込み処理ルーチン内のソフトウェアによって , (1) で発生した割込み要因をクリ
アし , RETI 命令を実行することによって割込み処理が終了します。
50
第 4 章 割込み
ハードウェア割込みの動作フロー
4.4.2
周辺機能から割込み要求が発生すると , 割込みコントローラは割込みレベルを CPU
に伝達し , CPU が割込みを受け付けられる状態であれば , 現在実行中の命令を一時
中断して割込み処理ルーチンの実行 , または μDMAC の起動を行います。また , INT
命令によるソフトウェア割込みが発生した場合は , CPU の状態にかかわらず割込み
処理ルーチンを実行します。このとき , ハードウェア割込みは禁止されます。
■ ハードウェア割込みの動作フロー
図 4.4-3 に , 割込み動作時の処理フローを示します。
図 4.4-3 割込み動作時の処理フロー
START
メインプログラム
割込み起動/復帰処理
I&IF&IE=1
AND
ILM>IL
ストリング系*
命令実行中
YES
NO
ENX=1
次の命令の取込み
とデコード
INT命令か?
NO
YES
ソフトウェア
割込み/
例外処理
システムスタックへ
専用レジスタ退避
NO
I←0
ハードウェア割込みの禁止
NO
通常命令実行
(割込み処理を含む)
ストリング系*
命令の繰返し完了
μDMAC
μDMAC処理
指定回数終了か?
または, 周辺機能からの
終了要求があるか?
システムスタックへ
専用レジスタ退避
NO
ハードウェア
割込み
YES
ILM←IL
(受け付けられた割込
み要求の割込みレベ
ルをILMに転送)
YES
RETI命令か?
NO
YES
割込み
復帰処理
システムスタックから
専用レジスタが復帰し,
割込みルーチンを呼び
出し,前のルーチンへ
復帰
S←1
(システムスタックを
有効にする)
PCB,PC←割込みベクタ
(割込み処理ルーチン
へ分岐)
YES
PC更新で次命令へ
ポインタ移動
* :ストリング系命令の実行中は, 1ステップごとに割
込み判定を行います。
I :コンディションコードレジスタ(CCR)の割込み許可フラグ
IF :周辺機能の割込み要求フラグ
IE :周辺機能の割込み許可フラグ
ILM:インタラプトレベルマスクレジスタ(PS中の)
ENX:DMAイネーブルレジスタ(DER)のDMA起動要求フラグ
IL :割込み制御レジスタ(ICR)の割込みレベル設定ビット
S :コンディションコードレジスタ(CCR)のスタックフラグ
PCB:プログラムカウンタバンクレジスタ
PC :プログラムカウンタ
51
第 4 章 割込み
ハードウェア割込みの使用手順
4.4.3
ハードウェア割込みを使用するには , システムスタック領域 , 周辺機能および割込み
制御レジスタ (ICR) などの設定が必要です。
■ ハードウェア割込みの使用手順
ハードウェア割込みの使用手順の一例を , 図 4.4-4 に示します。
図 4.4-4 ハードウェア割込みの使用手順例
スタート
(1) システムスタック領域の設定
割込み処理プログラム
(2) 周辺機能の初期設定
(3)
割込みコントローラ内の
ICRの設定
(4)
周辺機能の動作開始
設定割込み許可ビット
を許可に設定
(5)
PS内のILM,Iの設定
スタック処理
割込みベクタへ分岐
(7)
ハードウェアに
よる処理
周辺機能への割込み
(8) に対する処理(割込み
処理ルーチンの実行)
(9) 割込み要因のクリア
(10) 割込み復帰命令(RETI)
メインプログラム
(6)
割込み要求発生
メインプログラム
(1) システムスタック領域を設定します。
(2) 割込み要求を発生可能な周辺機能の初期設定をします。
(3) 割込みコントローラ内の割込み制御レジスタ (ICR) に設定します。
(4) 周辺機能を動作開始状態にし , 割込み許可ビットを許可に設定します。
(5) 割込みレベルマスクレジスタ (ILM) および割込み許可フラグ (I) を割込み受付け可
能に設定します。
(6) 周辺機能の割込み発生で , ハードウェア割込み要求が発生します。
(7) 割込み処理ハードウェアでレジスタの退避が行われ,割込み処理プログラムに分岐
します。
(8) 割込み処理プログラムで , 割込み発生に対する周辺機能への処理をします。
(9) 周辺機能の割込み要求を解除します。
(10) 割込み復帰命令を実行し , 分岐前のプログラムに復帰します。
52
第 4 章 割込み
多重割込み
4.4.4
ハードウェア割込みでは , 周辺機能からの複数の割込み要求に対して , 割込み制御レ
ジスタ (ICR) の割込みレベル設定ビット (IL0 ~ IL2) に異なる割込みレベルを設定す
ることによって , 多重割込みを実現できます。ただし , μDMAC の多重起動はできま
せん。
■ 多重割込み動作
割込み処理ルーチン実行中に , より高い割込みレベルの割込み要求が発生すると , 現在
の割込み処理を中断してより高い割込み要求を受け付けます。高いレベルの割込みが
終了すると , 元の割込み処理に戻ります。割込みレベルは 0 ~ 7 まで設定できますが ,
レベル 7 に設定した場合は , CPU は割込み要求を受け付けません。
割込み処理実行中にその割込みと同等か , より低いレベルの割込みが発生した場合 , I
フラグか ILM を変更しない限り , 現在の割込み終了するまで新しい割込み要求は保留
されます。また , 割込み処理ルーチン内でコンディションコードレジスタ (CCR) の I フ
ラグを割込み禁止(CCRのI=0)に設定するか,インタラプトレベルマスクレジスタ(ILM)
を割込み禁止 (ILM=000B) に設定すると , 割込み中の多重割込みの起動を一時的に禁止
することができます。
<注意事項>
μDMACは多重起動できません。μDMACの処理中は,ほかの割込み要求およびμDMAC要求
はすべて保留されます。
53
第 4 章 割込み
■ 多重割込みの例
多重割込み処理の例として, A/Dコンバータよりタイマ割込みを優先させる場合を想定
し , A/D コンバータの割込みレベルを "2" に , タイマ割込みレベルを "1" に設定します。
このとき , A/D コンバータの割込み処理中にタイマ割込みが発生すると , 図 4.4-5 のよ
うな処理を行います。
図 4.4-5 多重割込みの例
メインプログラム
A/D割込み処理
割込みレベル2
(ILM=010B )
周辺初期化(1)
タイマ割込み処理
割込みレベル1
(ILM=001B)
(3)タイマ割込み発生
(4)タイマ割込み処理
A/D割込み発生(2)
中断
再開
メイン処理再開(8)
(6)A/D割込み処理
(5)タイマ割込み復帰
(7)A/D割込み復帰
● A/D 割込み発生
A/D コンバータ割込み処理開始時に , インタラプトレベルマスクレジスタ (ILM) が自動
的に A/D コンバータの割込みレベル (ICR の IL2 ~ IL0) と同じ値 ( 例では 2) になりま
す。このとき , レベル 1, またはレベル 0 の割込み要求が発生すると , この割込み処理を
優先して行います。
● 割込み処理の終了
割込み処理が終了して復帰命令 (RETI) を実行すると , スタック内に退避した専用レジ
スタ (A, DPR, ADB, DTB, PCB, PC, PS) の値が復帰し , インタラプトレベルマスクレジ
スタ (ILM) は中断前の値になります。
54
第 4 章 割込み
4.4.5
ハードウェア割込みの処理時間
ハードウェア割込み要求が発生して割込み処理ルーチンが実行されるまでには , 現在
実行中の命令が終了するまでの時間と割込みハンドリング時間が必要です。
■ ハードウェア割込み処理時間
割込み要求が発生し , 割込み処理ルーチンが実行されるまでには , 割込み要求サンプル
待ち時間と割込みハンドリング時間 ( 割込み処理準備に要する時間 ) が必要です。
図 4.4-6 に , 割込み処理時間を示します。
図 4.4-6 割込み処理時間
通常命令実行
CPUの動作
割込み待ち時間
割込み要求
サンプル待ち時間
割込みハンドリング
割込み処理ルーチン
割込みハンドリング時間
(θマシンサイクル)*
割込み要求発生
*
:命令最終サイクル, ここで割込み要求をサンプルします。
:1マシンサイクルは, マシンクロック( )の1クロック周期に相当します。
● 割込み要求サンプル待ち時間
割込み要求サンプル待ち時間とは,割込み要求が発生してから現在実行中の命令が終了
するまでの時間です。割込み要求が発生しているかどうかは , 各命令の最後のサイクル
で割込み要求をサンプリングして判断します。そのため , 各命令の実行中は , CPU が割
込み要求を認識することができず , 待ち時間が発生します。
なお , 割込み要求サンプル待ち時間は , 最も実行サイクルの長い PCPW, PW0,…RW7 命
令 (45 マシンサイクル ) 開始直後に割込み要求が発生した場合 , 最大となります。
● 割込みハンドリング時間 (θ マシンサイクル )
CPU は , 割込み要求を受け付けてから , 専用レジスタのシステムスタックへの退避およ
び割込みベクタの取込みなどを行うため , 割込みハンドリング時間は , 以下の式によっ
て求められます。
• 割込み起動時 :θ=24+6 × Z マシンサイクル
• 割込み復帰時 :θ=11+6 × Z マシンサイクル (RETI 命令 )
割込みハンドリング時間は,スタックポインタの指しているアドレスによって異なりま
す。表 4.4-3 に割込みハンドリング時間の補正値 (Z) を示します。
1 マシンサイクルは , マシンクロック (φ) の 1 クロック周期に相当します。
55
第 4 章 割込み
表 4.4-3 割込みハンドリング時間の補正値 (Z)
スタックポインタが指しているアドレス
外部
外部
外部
内部
内部
56
8 ビットの場合
偶数アドレスの場合
奇数アドレスの場合
偶数アドレスの場合
奇数アドレスの場合
補正値 (Z)
+4
+1
+4
0
+2
第 4 章 割込み
4.5
ソフトウェア割込み
ソフトウェア割込みは , ソフトウェア割込み命令 (INT 命令 ) を実行すると , CPU が
それまで実行していたプログラムからユーザの定義した割込み処理用のプログラム
へ制御を移す機能です。
ソフトウェア割込みの実行中 , ハードウェア割込みは停止します。
■ ソフトウェア割込みの起動
● ソフトウェア割込みの起動
ソフトウェア割込みの起動には , INT 命令を使用します。ソフトウェア割込み要求には ,
割込み要求フラグおよび許可フラグはなく, INT命令を実行すると常に割込み要求が発
生します。
● ハードウェア割込みの抑止
INT 命令には割込みレベルがないので , インタラプトレベルマスクレジスタ (ILM) の更
新は行われません。INT 命令実行中は , コンディションコードレジスタ (CCR) の I フラ
グが "0" に設定され , ハードウェア割込みを抑止します。ソフトウェア割込み処理中で
もハードウェア割込みを許可するときは , ソフトウェア割込み処理ルーチンの中で I フ
ラグを "1" に設定してください。
● ソフトウェア割込みの動作
CPU が INT 命令を取り込んで実行すると , ソフトウェア割込み処理用のマイクロコー
ドを起動します。
このマイクロコードにより , CPU 内部のレジスタ類をシステムスタッ
クに退避し , ハードウェア割込みを抑止 (CCR の I=0) した後 , 対応する割込みベクタへ
分岐します。
割込み番号と割込みベクタの割当てについては ,「4.2 割込み要因と割込みベクタ」を
参照してください。
■ ソフトウェア割込みからの復帰
割込み処理プログラムの中で割込み復帰命令 (RETI 命令 ) を実行すると , システムス
タックに退避している 12 バイトデータを専用レジスタに戻して , 割込み分岐前に実行
していた処理に復帰します。
57
第 4 章 割込み
■ ソフトウェア割込みの動作
図 4.5-1 に , ソフトウェア割込みの発生から割込み処理完了までの動作を示します。
図 4.5-1 ソフトウェア割込みの動作
内部データバス
PS,PC …
(2)マイクロコード
(1)
PS
I
S
IR
キュー
フェッチ
RA M
PS
I
S
IR
:プロセッサステータス
:割込み許可フラグ
:スタックフラグ
:インストラクションレジスタ
(1) ソフトウェア割込み命令を実行します。
(2) ソフトウェア割込み命令に対応したマイクロコードに従って専用レジスタを退避
するなどの必要な処理を行った後 , 分岐処理を行います。
(3) ユーザの割込み処理ルーチン内の RETI 命令で割込み処理が終了します。
■ ソフトウェア割込みに関する注意事項
プログラムカウンタバンクレジスタ (PCB) が "FFH" の場合 , CALLV 命令のベクタ領域
は INT#vct8 命令のテーブルと重なります。プログラム作成の際には , CALLV 命令と
INT#vct8 命令のアドレスの重複に注意してください。
58
第 4 章 割込み
4.6
μDMAC による割込み
μDMAC コントローラは , EI2OS と同等の機能を持った簡易 DMA です。DMA 転送の設
定は , DMA ディスクリプタを用いて行います。
■ μDMAC の機能
μDMAC は , 以下の機能をもっています。
• 周辺リソース (I/O) とメモリとの間で自動データ転送を行います。
• DMA 起動中は , CPU のプログラム実行は停止します。
• DMA 転送チャネルは 16 チャネルです ( チャネルの番号の小さい方が DMA 転送の
優先順位が高い )。
• 転送元 , 転送先アドレスのインクリメントあり , またはインクリメントなしを選択
可能です。
• DMA 転送は , 周辺リソース (I/O) の割込み要因により起動します。
• DMA 転送の制御は , μDMAC イネーブルレジスタ , μDMAC ストップステータスレ
ジスタ, μDMACステータスレジスタ, ディスクリプタ(RAM上の000100H ~00017FH
に割り当てられている ) で行います。
• リソースから DMA 転送を停止させる手段として STOP 要求があります。
• DMA 転送終了後 , DMA ステータスレジスタの転送終了チャネルに相当するビット
にフラグがセットされ , 割込みコントローラへ終了割込みが出力されます。
■ μDMAC のレジスタ一覧
● μDMAC イネーブルレジスタ (DER)
μDMAC イネーブルレジスタ (DER) のビット構成を , 下図に示します。
図 4.6-1 μDMAC イネーブルレジスタ (DER) のビット構成
0000ADH
0000ACH
bit15 bit14
bit13 bit12
bit11 bit10 bit9
bit8
EN15
EN14
EN13
EN12
EN11
EN10
EN9
EN8
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
EN7
EN6
EN5
EN4
EN3
EN2
EN1
EN0
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
DERH
初期値 00000000B
DERL
初期値 00000000B
μDMAC イネーブルレジスタ (DER) の各ビットの機能は , 下表のとおりです。
表 4.6-1 μDMAC イネーブルレジスタ (DER) の各ビット機能
ENx ビット
0
[ 初期値 ]
1
機 能
リソースからの割込み要求を割込みコントローラへ出力します
( リソースからの割込み要求を DMA 起動要求としません )。
リソースからの割込み要求を DMA 起動要求とします。
DMA 転送バイト数が "0" となったところで "0" にクリアされます。
59
第 4 章 割込み
<注意事項>
スタンバイモード ( スリープモード , ストップモード , 時計モード , タイムベースタイ
マモード ) または CPU 間欠動作モード ( メインクロック間欠動作モード , PLL クロッ
ク間欠モード , サブクロック間欠モード ) に移行する場合 , 必ず DMA イネーブルレジ
スタ (DER) に "0000H" を設定してからモードに移行してください。
● μDMAC ストップステータスレジスタ (DSSR)
μDMAC ストップステータスレジスタ (DSSR) のビット構成を , 下図に示します。
図 4.6-2 μDMAC ストップステータスレジスタ (DSSR) のビット構成
DSSR
0000A4H
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
STP7
STP6
STP5
STP4
STP3
STP2
STP1
STP0
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
初期値 00000000B
μDMAC ストップステータスレジスタ (DSSR) の各ビットの機能は , 下表のとおりです。
表 4.6-2 μDMAC ストップステータスレジスタ (DSSR) の各ビット機能
STPx ビット
機能
DMA 転送中に STOP 要求を受け付けていません。
0
[ 初期値 ]
DMA 転送中に STOP 要求を受け付けて , DMA 動作を停止しました。
STOP 要求を受け付けるのは UART 受信 (ch.7) のみです。bit7 以外のビット
は意味を持ちません。
ソフトウェアで "1" を書き込んでも意味を持ちません。
1
● μDMAC ステータスレジスタ (DSR)
μDMAC ステータスレジスタ (DSR) のビット構成を , 下図に示します。
図 4.6-3 μDMAC ステータスレジスタ (DSR) のビット構成
DSRH
00009DH
DSRL
00009CH
bit15
bit14
bit13
bit12
bit11
bit10
bit9
bit8
DE15
DE14
DE13
DE12
DE11
DE10
DE9
DE8
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
DE7
DE6
DE5
DE4
DE3
DE2
DE1
DE0
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
初期値 00000000B
初期値 00000000B
μDMAC ステータスレジスタ (DSR) の各ビットの機能は , 下表のとおりです。
表 4.6-3 μDMAC ステータスレジスタ (DSR) の各ビット機能
DEx ビット
0
[ 初期値 ]
1
機 能
DMA 転送は終了していません。
DMA 転送が終了すると割込み要求を割込みコントローラへ出力します。
( 注意事項 ) "1" を書き込んだ場合 , DMA 転送は終了しません。割込みコントローラ
へ割込みを出力します。
60
第 4 章 割込み
■ μDMAC の動作説明
図 4.6-4 に μDMAC の動作説明図を示します。DMA を使用したデータ転送は , 以下の
順番で行われます。
(1) 周辺リソース (I/O) が DMA 転送を要求する。
(2) DMA コントローラがディスクリプタを読み出す。
(3) 転送元 , 転送先や転送データ数をディスクリプタから読み出す。
(4) I/O とメモリ間で DMA データ転送を開始する。
(5) 転送終了でないとき : リソースの割込み要求をクリアします。
転送終了時 :DMA 転送終了後 , μDMAC ステータスレジスタに転送終了のフラグが
セットされ , 割込み要求を割込みコントローラへ出力します。
図 4.6-4 μDMAC の動作
by IOA
メモリ空間
I/Oレジスタ
I/Oレジスタ
周辺機能(I/O)
(1)
(3)
DMAディスクリプタ
(3)
DER
DMAコントローラ
(2)
by BAP
(4)
バッファ
by DCT
CPU
割込み
コントローラ
IOA:I/Oアドレスポインタ
BAP:バッファアドレスポインタ
DER:μDMACイネーブルレジスタ(ENx選択も行う)
DCT:データカウンタ
61
第 4 章 割込み
4.6.1
DMA ディスクリプタ
DMA ディスクリプタは , 内部 RAM の "000100H" ~ "00017FH" に存在し ,
8 バイト× 16 チャネルで構成されています。
■ DMA ディスクリプタの構成
DMA ディスクリプタは , 8 バイト× 16 チャネルで構成されており , 各 DMA ディスク
リプタは図 4.6-5 に示す構造になっています。チャネル番号と DMA ディスクリプタの
アドレスの対応は , 表 4.6-4 に示すとおりです。
図 4.6-5 DMA ディスクリプタの構成
MSB
LSB
データカウンタ上位8ビット(DCTH)
“H”
データカウンタ下位8ビット(DCTL)
I/Oレジスタアドレスポインタ上位8ビット(IOAH)
I/Oレジスタアドレスポインタ下位8ビット(IOAL)
DMAコントロールステータスレジスタ(DMACS)
バッファアドレスポインタ上位8ビット(BAPH)
バッファアドレスポインタ中位8ビット(BAPM)
ディスクリプタ
先頭アドレス
バッファアドレスポインタ下位8ビット(BAPL)
“L”
表 4.6-4 チャネル番号とディスクリプタアドレスの対応
μDMAC イネーブル
レジスタ
EN0
0
ディスクリプタ
アドレス
000100H
EN1
1
000108H
PWC0
EN2
2
000110H
PPG0/PPG1 カウンタボロー
EN3
3
000118H
PPG2/PPG3 カウンタボロー
EN4
4
000120H
インプットキャプチャ (ch.0) 取込み
リソース割込み要求
INT0
-
EN5
5
000128H
EN6
6
000130H
インプットキャプチャ (ch.1) 取込み
EN7
7
000138H
UART 受信完了
EN8
8
000140H
アウトプットコンペア (ch.0) 一致
EN9
9
000148H
アウトプットコンペア (ch.1) 一致
EN10
10
000150H
アウトプットコンペア (ch.2) 一致
EN11
11
000158H
EN12
12
000160H
EN13
13
000168H
UART 送信完了
16 ビットフリーランタイマ /
16 ビットリロードタイマオーバフロー
SIO1
EN14
14
000170H
SIO2
15
000178H
A/D コンバータ
EN15
62
チャネル
第 4 章 割込み
DMA ディスクリプタの各レジスタ
4.6.2
DMA ディスクリプタの各レジスタは , 次のレジスタから構成されています。
• データカウンタ (DCT)
• I/O レジスタアドレスポインタ (IOA)
• DMA コントロールステータスレジスタ (DMACS)
• バッファアドレスポインタ (BAP)
各レジスタの値は , リセット時には不定となるので , 必ず初期化してください。
■ データカウンタ (DCT)
データカウンタ (DCT) は , 16 ビット長のレジスタで , 転送データ数に対応したカウン
タとなります。各データの転送後に , カウンタは 1 デクリメント ( 減値 ) します。この
カウンタが "0" になると DMA は終了します。図 4.6-6 に , データカウンタ (DCT) の構
成を示します。
データカウンタ (DCT) に "0" を設定すると , 最大データ転送数 (65536 個 ) がセットさ
れます。
図 4.6-6 データカウンタ (DCT) の構成
DCTH
bit15 bit14 bit13 bit12
DCT
DCTL
bit11
bit10
bit9
bit8
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
B15
B14
B13
B12
B11
B10
B9
B8
B7
B6
B5
B4
B3
B2
B1
B0
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
初期値
XXXXXXXXXXXXXXXXB
R/W:リード/ライト可能
X:不定
■ I/O レジスタアドレスポインタ (IOA)
I/O レジスタアドレスポインタ (IOA) は , 16 ビット長のレジスタで , バッファとのデータ
転送を行う I/O レジスタの下位アドレス (A15 ~ A0) を示します。上位アドレス (A23 ~
A16) はすべて "0" で , "000000H" から "00FFFFH" 番地までの任意の I/O をアドレスで指
定できます。
図 4.6-7 に , I/O レジスタアドレスポインタ (IOA) の構成を示します。
図 4.6-7 I/O レジスタアドレスポインタ (IOA) の構成
IOAL
IOAH
IOA
bit15 bit14 bit13 bit12
bit11
bit10
bit9
bit8
A15
A14
A11
A10
A9
A8
A7
A6
A5
A4
A3
A2
A1
A0
R/W
R/W R/W R/W R/W R/W
R/W:リード/ライト可能
X:不定
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
A13
A12
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
初期値
XXXXXXXXXXXXXXXXB
63
第 4 章 割込み
■ DMA コントロールステータスレジスタ (DMACS)
DMA コントロールステータスレジスタ (DMACS) は 8 ビット長で , バッファアドレス
ポインタ (BAP) と I/O レジスタアドレスポインタ (IOA) の更新 / 固定 , 転送データ形式
( バイト / ワード ) および転送方向を示します。図 4.6-8 に , DMA コントロールステー
タスレジスタ (DMACS) の構成を示します。
図 4.6-8 DMA コントロールステータスレジスタ (DMACS) の構成
bit7
bit6
bit5
RESV RESV RESV
R/W
R/W
R/W
bit4
bit3
bit2
bit1
bit0
IF
BW
BF
DIR
SE
R/W
R/W
R/W
R/W
R/W
DMA終了制御ビット
SE
0
1
初期値
XXXXXXXXB
周辺機能からの要求で終了しません。
周辺機能からの要求で終了します。
DIR
データ転送方向指定ビット
0
1
I/Oレジスタアドレスポインタ→バッファアドレスポインタ。
バッファアドレスポインタ→I/Oレジスタアドレスポインタ。
BF
BAP更新/固定選択ビット
0
1
データ転送後のバッファアドレスポインタは更新されます。*1
データ転送後のバッファアドレスポインタは更新されません。
BW
0
1
IF
0
1
RESV
転送データ長指定ビット
バイト
ワード
IOA更新/固定選択ビット
データ転送後I/Oレジスタアドレスポインタは更新されます。*2
データ転送後I/Oレジスタアドレスポインタは更新されません。
予約ビット
これらのビットには必ず“0”を書き込んでください。
R/W:リード/ライト可能
X :不定
*1:バッファアドレスポインタは, 下位16ビットだけ変化し, インクリメント更新のみです。
*2:I/Oレジスタアドレスポインタは, インクリメント更新のみです。
64
第 4 章 割込み
■ バッファアドレスポインタ (BAP)
バッファアドレスポインタ (BAP) は , 24 ビットのレジスタで , DMA による次回の転送
で使用するアドレスを保持します。バッファアドレスポインタ (BAP) は , DMA の各
チャネルに対してそれぞれ独立に存在するので , DMA の各チャネルは , 16M バイトの
任意のアドレスと I/O の間でデータ転送できます。DMA コントロールステータスレジ
スタ (DMACS) の BF ビット (BAP 更新 / 固定選択ビット ) で " 更新あり " とした場合 ,
バッファアドレスポインタ (BAP) は下位 16 ビット (BAPM, BAPL) だけ変化し , 上位 8
ビット (BAPH) は変化しません。
図 4.6-9 に , バッファアドレスポインタ (BAP) の BAP 構成を示します。
図 4.6-9 バッファアドレスポインタ (BAP) の構成
bit16 bit15
bit23
BAP
bit8 bit7
bit0
BAPH
BAPM
BAPL
R/W
R/W
R/W
初期値
XXXXXXB
R/W:リード/ライト可能
X :不定
<注意事項>
• I/Oレジスタアドレスポインタ(IOA)で指定できる領域は, "000000H"~"00FFFFH"です。
• バッファアドレスポインタ (BAP) で指定できる領域は , "000000H" ~ "FFFFFFH" です。
65
第 4 章 割込み
4.6.3
μDMAC の処理手順
周辺リソース (I/O) から割込み要求が発生し , 対応する μDMAC イネーブルレジスタ
(DER) で DMA の起動が設定されていれば , DMA 転送を行います。指定回数のデー
タ転送が終了すれば , 割込み要求を割込みコントローラへ出力します。
■ μDMAC の処理手順
図 4.6-10 に簡単な μDMAC の処理手順を示します。
図 4.6-10 μDMAC の処理手順
ソフトウェアによる処理
ハードウェアによる処理
開 始
システムスタック領域の設定
初期設定
DMAディスクリプタの設定
周辺機能の初期設定
割込み制御レジスタ(ICR)
の設定
DMAコントローラ初期設定
PS内のILM,Iの設定
ユーザプログラムの実行
周辺の割込みをクリアする。
(割込み要求)および(DERのENx=1)
DMAデータ転送
カウントアウト またはリソース
からの終了要求の判定
(DMA転送終了)
周辺の割込みをクリアする
ソフトでDSRレジスタをクリアする
RETI
DERx: DMACイネーブルレジスタ
DSRx: DMACステータスレジスタ
66
YES
DSRx=1
NO
第 4 章 割込み
4.6.4
μDMAC の処理時間
μDMAC の処理に必要な時間は , 以下の要因によって変化します。
• DMA コントロールステータスレジスタ (DMACS) の設定
• I/O レジスタアドレスポインタ (IOA) の示すアドレス ( 領域 )
• バッファアドレスポインタ (BAP) の示すアドレス ( 領域 )
• 外部アクセス時の外部データバス幅
• 転送データのデータ長
また , μDMAC によるデータ転送終了時には , ハードウェア割込みが起動されるため ,
割込みハンドリング時間が加算されます。
■ μDMAC の処理時間 (1 回の転送時間 )
● データ転送継続時
データ転送継続時の μDMAC 処理時間は , DMA コントロールステータスレジスタ
(DMACS) の設定によって , 表 4.6-5 のようになります。
表 4.6-5 μDMAC の実行時間
IOA 更新 / 固定選択ビット (IF) の設定
BAP アドレス更新 / 固定
選択ビット (BF) の設定
固定
更新
固定
更新
17
19
19
21
( 注意事項 ) 単位はマシンサイクルです。1 マシンサイクルは , マシンクロック (φ) の 1
クロック周期に相当します。
さらに , 表 4.6-6 に示すように , μDMAC 実行時の条件によって補正が必要です。
表 4.6-6 μDMAC 実行時間のデータ転送の補正値
内部アクセス
I/O レジスタアドレスポインタ
バッファアドレス
ポインタ
内部アクセス
外部アクセス
B/ 偶
奇
B/ 偶
8/ 奇
外部アクセス
B/ 遇
奇
B/ 遇
8/ 奇
0
+2
+1
+4
+2
+4
+3
+6
+1
+3
+2
+5
+4
+6
+5
+8
( 注意事項 ) B はバイトデータ転送 , 8 は外部バス幅 8 ビットワード転送 , 偶は偶数ア
ドレスワード転送 , 奇は奇数アドレスワード転送を示します。
67
第 4 章 割込み
● 転送パフォーマンス
• 最小転送速度
1.7μs/10MHz( マシンクロック ) 時
1.07μs/16MHz( マシンクロック ) 時
- 内蔵 I/O →内蔵 RAM または内蔵 RAM →内蔵 I/O アドレスのインクリメントなし
- 偶数番地→偶数番地または 8 ビットアクセス
• 最大転送速度
2.8μs/10MHz( マシンクロック ) 時
1.75μs/16MHz( マシンクロック ) 時
表 4.6-7 に , 割込みハンドリング時間の補正値 (Z) を示します。
表 4.6-7 割込みハンドリング時間の補正値 (Z)
スタックポインタが指しているアドレス
外部
外部
外部
内部
内部
8 ビットの場合
偶数アドレスの場合
奇数アドレスの場合
偶数アドレスの場合
奇数アドレスの場合
補正値 (Z)
+4
+1
+4
0
+2
● 周辺機能 (I/O) からの終了要求による終了時
周辺機能 (I/O) からの終了要求で , μDMAC によるデータ転送を途中で終了した場合
(DEx=1) は , データ転送は行わずにハードウェア割込みを起動します。この場合の
μDMAC処理時間は,次の式で算出されます。式中のZは,割込みハンドリング時間の補正
値 ( 表 4.6-7 を参照 ) です。
途中終了時の μDMAC 処理時間 =36+6 × Z マシンサイクル
1 マシンサイクルは , マシンクロック (φ) の 1 クロック周期に相当します。
68
第 4 章 割込み
4.7
拡張インテリジェント I/O サービス (EI2OS) による割
込み
拡張インテリジェント I/O サービス (EI2OS) は , 周辺機能 ( リソース ) とメモリの間
でデータ転送を行う機能です。データ転送が終了した場合 , ハードウェア割込み処
理を行います。
■ 拡張インテリジェント I/O サービス (EI2OS)
拡張インテリジェント I/O サービスは , ハードウェア割込みの一種です。周辺機能 ( リ
ソース ) とメモリの間でデータ転送を行う機能です。ユーザは , EI2OS を起動する場合
と終了する場合にプログラムを作成し , データ転送プログラムは不要です。
● 拡張インテリジェント I/O サービス (EI2OS) の利点
割込み処理ルーチンで実行するデータ転送と比べた場合 , 次のような利点があります。
• 転送プログラムを記述する必要がないので , プログラムサイズを小さくできる。
• 周辺機能 ( リソース ) の割込み要因によって転送を起動できるので , データの転送要
因をポーリングする必要がない。
• 転送アドレスのインクリメントを設定できる。
• I/O レジスタアドレスのインクリメントおよび更新なしを設定できる。
● 拡張インテリジェント I/O サービス (EI2OS) の終了割込み
EI2OS による , データ転送が終了した場合 , 割込み処理ルーチンへ分岐します。
割込み処理プログラムで , 割込み制御レジスタ (ICR) の EI2OS ステータスビット (S1,
S0) をチェックすることにより , EI2OS の終了要因を判断することができます。割込み
番号や割込みベクタは , 各周辺で固定されています。詳細は「4.2 割込み要因と割込み
ベクタ」を参照してください。
● 割込み制御レジスタ (ICR)
EI2OS の起動 , EI2OS のチャネルを設定することができます。また , EI2OS 終了時の
EI2OS ステータスを判断することができます。
● 拡張インテリジェント I/O サービス (EI2OS) ディスクリプタ (ISD)
EI2OS ディスクリプタは , RAM 上の "000100H" ~ "00017FH" に配置されており , 転送
モード , 周辺機能 ( リソース ) のアドレスや転送バイト数 , 転送先アドレスを設定する
8 バイト× 16 チャネル分のレジスタです。割込み制御レジスタ (ICR) でチャネル設定
を行います。
<注意事項>
拡張インテリジェント I/O サービス (EI2OS) が動作している場合 , CPU のプログラムは実
行されません。
69
第 4 章 割込み
■ 拡張インテリジェント I/O サービス (EI2OS) の動作
図 4.7-1 拡張インテリジェント I/O サービス (EI2OS) の動作
メモリ空間
周辺機能(リソース)
by I/OA
リソース
レジスタ
リソースレジスタ (5)
CPU
割込み要求
(3)
ISD
by ICS
(2)
(3)
(1)
割込み制御レジスタ(ICR )
割込みコントローラ
by BAP
(4)
バッファ
by DCT
2
ISD :EI OS ディスクリプタ
I/OA :I/O アドレスポインタ
BAP :バッファアドレスポインタ
ICS :割込み制御レジスタ(ICR )のEI2OS チャネル設定ビット
DCT :データカウンタ
(1) 周辺機能 ( リソース ) から , 割込み要求を出力します。
(2) 割込みコントローラが EI2OS ディスクリプタを割込み制御レジスタ (ICR) の設定に
従って設定します。
(3) 転送元や転送先が EI2OS ディスクリプタから読み出されます。
(4) 周辺機能 ( リソース ) とメモリ間でデータの転送が行われます。
(5) データ転送終了後に周辺機能 ( リソース ) の割込み要求フラグビットは "0" にクリ
アされます。
70
第 4 章 割込み
4.7.1
拡張インテリジェント I/O サービス (EI2OS) ディスク
リプタ (ISD)
拡張インテリジェント I/O サービス (EI2OS) ディスクリプタ (ISD) は , RAM の
"000100H" ~ "00017FH" に存在し , 8 バイト× 16 チャネルで構成されています。
■ 拡張インテリジェント I/O サービス (EI2OS) ディスクリプタ (ISD) の構成
ISD は , 8 バイト× 16 チャネルで構成されています。
図 4.7-2 EI2OS ディスクリプタ (ISD) の構成
MSB
LSB
データカウンタ上位8ビット(DCTH)
"H"
データカウンタ下位8ビット(DCTL)
I/Oレジスタアドレスポインタ上位8ビット(IOAH)
I/Oレジスタアドレスポインタ下位8ビット(IOAL)
EI2OSステータスレジスタ(ISCS)
バッファアドレスポインタ上位8ビット(BAPH)
バッファアドレスポインタ中位8ビット(BAPM)
ISD先頭アドレス
(000100H +8×ICS )
バッファアドレスポインタ下位8ビット(BAPL)
" L"
MSB:最上位ビット
LSB:最下位ビット
表 4.7-1 チャネル番号とディスクリプタアドレスの対応
チャネル
ディスクリプタアドレス *
0
000100H
1
000108H
2
000110H
3
000118H
4
000120H
5
000128H
6
000130H
7
000138H
8
000140H
9
000148H
10
000150H
11
000158H
12
000160H
13
000168H
14
000170H
15
000178H
*:ISD のアドレスは , 8 バイトのうちの先頭アドレスを示しています。
71
第 4 章 割込み
拡張インテリジェント I/O サービス (EI2OS) ディスク
リプタ (ISD) の説明
4.7.2
拡張インテリジェント I/O サービス (EI2OS) ディスクリプタ (ISD) は , 以下に示す 4
種類の 8 バイトのレジスタで構成されています。
・データカウンタ (DCT:2 バイト )
・I/O レジスタアドレスポインタ (IOA:2 バイト )
・EI2OS ステータスレジスタ (ISCS:1 バイト )
・バッファアドレスポインタ (BAP:3 バイト )
各レジスタの初期値は , 不定です。
■ データカウンタ (DCT)
データカウンタ (DCT) は , 16 ビット長のレジスタです。転送データバイト数を設定し
ます。データを 1 バイト転送するごとに , カウンタ値は -1( デクリメント ) されます。
データカウンタ値が "0000H" になった場合 , EI2OS が終了します。
図 4.7-3 データカウンタ (DCT) の構成
DCTL
DCTH
DCT
bit15 bit14 bit13 bit12 bit11 bit10 bit9
bit8
bit7
bit6
bit5 bit4
bit3
bit2
bit1
B15 B14 B13 B12 B11 B10 B9
B8
B7
B6
B5
B3
B2
B1
B4
R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W
初期値
bit0
B0
XXXXXXXXXXXXXXXXB
R/W
R/W:リード/ライト可能
X :不定
■ I/O レジスタアドレスポインタ (IOA)
I/O レジスタアドレスポインタ (IOA) は , 16 ビット長のレジスタです。データ転送を行
うための I/O レジスタ下位アドレス (A15 ~ A0) を設定します。上位アドレス (A23 ~
A16) は "00H" であり , "0000H" から "FFFFH" 番地までの I/O をアドレスで設定できます。
図 4.7-4 I/O レジスタアドレスポインタ (IOA) の構成
I/OAH
IOA
I/OAL
bit15 bit14 bit13 bit12 bit11 bit10 bit9
bit8
bit7
bit6
bit5 bit4
bit3
bit2
bit1
bit0
A15 A14 A13 A12 A11 A10 A9
A8
A7
A6
A5
A3
A2
A1
A0
A4
R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W
R/W:リード/ライト可能
X :不定
72
R/W
初期値
XXXXXXXXXXXXXXXXB
第 4 章 割込み
■ 拡張インテリジェント I/O サービス (EI2OS) ステータスレジスタ (ISCS)
拡張インテリジェント I/O サービス (EI2OS) ステータスレジスタ (ISCS) は , 8 ビット長
で , バッファアドレスポインタと I/O レジスタアドレスポインタの更新 / 固定 , 転送デー
タ形式 ( バイト / ワード ) および転送方向を設定します。
図 4.7-5 EI2OS ステータスレジスタ (ISCS) の構成
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
予約
予約
予約
IF
R/W
R/W
R/W
R/W
BW
BF
DIR
R/W
R/W
R/W
SE
R/W
初期値
XXXXXXXXB
EI2OS終了制御ビット
SE
0
周辺機能からの要求で終了しません。
1
周辺機能からの要求で終了する。
データ転送方向設定ビット
DIR
0
I/Oレジスタアドレスポインタ→バッファアドレスポインタ
1
バッファアドレスポインタ→I/Oレジスタアドレスポインタ
BAP更新/固定設定ビット
BF
0
データ転送後バッファアドレスポインタは更新されます。*1
1
データ転送後バッファアドレスポインタは更新されません。
BW
転送データ長設定ビット
0
バイト
1
ワード
IF
I/OA更新/固定設定ビット
0
データ転送後I/Oレジスタアドレスポインタは更新されます。*2
1
データ転送後I/Oレジスタアドレスポインタは更新されません。
予約ビット
必ず"0"を設定してください。
R/W :リード/ライト可能
X :不定
*1 :バッファアドレスポインタは,下位16ビットだけ変化し,インクリメントだけ可能です。
*2 :アドレスポインタは,インクリメントだけ可能です。
73
第 4 章 割込み
■ バッファアドレスポインタ (BAP)
バッファアドレスポインタ (BAP) は , 24 ビットのレジスタです。EI2OS 動作で , データ
転送元のメモリアドレスを設定します。バッファアドレスポインタ (BAP) は , EI2OS の
各チャネルに存在しますので , 16M バイトのメモリアドレスと周辺機能 ( リソース ) ア
ドレスとの間でデータを転送できます。EI2OS ステータスレジスタ (ISCS) の BAP 更新 /
固定設定ビット (BF) に "0" を設定した場合は , 下位 16 ビット (BAPM, BAPL) がインク
リメントされ , 上位 8 ビット (BAPH) はインクリメントされません。
• データカウンタ (DCT) で設定できる最大転送回数は , 65,536 回 (64K バイト ) です。
• I/O アドレスポインタ (IOA) で設定できる領域は , "000000H" ~ "00FFFFH" です。
• バッファアドレスポインタ(BAP)で設定できる領域は, "000000H"~"FFFFFFH"です。
図 4.7-6 バッファアドレスポインタ (BAP) の構成
bit23
BAP
~
BAPH
R/W
R/W:リード/ライト可能
X:不定
74
bit16 bit15
~
bit8 bit7
~ BAPM
BAPL
R/W
R/W
bit0
初期値
XXXXXXB
第 4 章 割込み
拡張インテリジェント I/O サービス (EI2OS) の動作
4.7.3
周辺機能 ( リソース ) から割込み要求を出力し , 割込み制御レジスタ (ICR) に EI2OS
の起動を事前に設定している場合 , CPU は EI2OS によるデータ転送を行います。
EI2OS 処理が終了した場合 , ハードウェア割込み処理を行います。
■ 拡張インテリジェント I/O サービス (EI2OS) の処理手順
図 4.7-7 拡張インテリジェント I/O サービス (EI2OS) の動作フロー
周辺機能より
割込み要求発生
ISE=1
NO
YES
割込みシーケンス
ISD/ISCSリード
周辺機能から
の終了要求
YES
DIR=1
NO
YES
NO
I/OAで示されるデータ
(データ転送)
BAPで示されるメモリ
IF=0
BAPで示されるデータ
(データ転送)
I/OAで示されるメモリ
YES
NO
BF=0
DCT=00B
更新値は
BWによる
I/OA更新
更新値は
BWによる
BAP更新
YES
NO
DCTデクリメント
YES
SE=1
NO
(-1)
YES
EI2OS終了処理
NO
S1,S0に"00B"をセット
周辺機能割込み要求の
クリア
CPU動作復帰
2
ISD :EI OSディスクリプタ
ISCS :EI2OSステータスレジスタ
IF :EI2OSステータスレジスタ(ISCS)の
I/OA更新/固定設定ビット
BW :EI2OSステータスレジスタ(ISCS)の
転送データ長設定ビット
BF :EI2OSステータスレジスタ(ISCS)の
BAP更新/固定設定ビット
DIR :EI2OSステータスレジスタ(ISCS)の
データ転送方向設定ビット
SE :EI2OSステータスレジスタ(ISCS)の
EI2OS終了制御ビット
S1,S0に"01B"をセット
S1,S0に"11B"をセット
ISEを"0"にクリア
割込みシーケンス
DCT :データカウンタ
IOA :I/Oレジスタアドレスポインタ
BAP :バッファアドレスポインタ
ISE :割込み制御レジスタ(ICR)のEI2OS許可ビット
S1,S0 :割込み制御レジスタ(ICR)のEI2OSステータス
75
第 4 章 割込み
拡張インテリジェント I/O サービス (EI2OS) の設定手
順
4.7.4
拡張インテリジェント I/O サービス (EI2OS) の設定は , システムスタック領域 , 拡張
インテリジェント I/O サービス (EI2OS) ディスクリプタ , 周辺機能 ( リソース ) およ
び割込み制御レジスタ (ICR) で設定します。
■ 拡張インテリジェント I/O サービス (EI2OS) の設定手順
図 4.7-8 拡張インテリジェント I/O サービス (EI2OS) 設定手順
ソフトウェアによる処理
ハードウェアによる処理
開 始
システムスタック領域の設定
初
期
設
定
EI2 OS ディスクリプタの設定
周辺機能の初期設定
割込み制御レジスタ(ICR)
の設定
内蔵リソースの動作開始
設定割込み許可ビットの
設定
PS内のILM,Iの設定
S1,S0=00B
ユーザプログラムの実行
(割込み要求)と(ISE=1)
データ転送
NO
カウントアウトまたは
リソースからの終了要求
による割込みへ分岐の判定
(割込みベクタへ分岐)
拡張インテリジェントI/O
サービスの再設定
(チャネルの切換えなど)
バッファ中のデータの処理
RETI
ISE :割込み制御レジスタ(ICR )のEI2OS の許可ビット
S1,S0 :割込み制御レジスタ(ICR )のEI2OS ステータス
76
YES
S1,S0=01Bまたは
S1,S0=11B
第 4 章 割込み
4.7.5
拡張インテリジェント I/O サービス (EI2OS) 処理時間
拡張インテリジェント I/O サービス (EI2OS) の処理に必要な時間は拡張インテリ
ジェント I/O サービスディスクリプタ (ISD) の設定により異なります。
• EI2OS ステータスレジスタ (ISCS) の設定
• I/O レジスタアドレスポインタ (IOA) の示すアドレス設定
• バッファアドレスポインタ (BAP) の示すアドレス設定
• 外部アクセス時の外部データバス幅
• 転送データのデータ長
2
EI OS によるデータ転送が終了した場合は , ハードウェア割込みが起動されるため ,
割込みハンドリング時間が加算されます。
■ 拡張インテリジェント I/O サービス (EI2OS) 処理時間 (1 回の転送時間 )
● データ転送を継続する場合
データ転送を継続する場合の EI2OS 処理時間は , EI2OS ステータスレジスタ (ISCS) の
設定によって , 表 4.7-2 のようになります。
表 4.7-2 拡張インテリジェント I/O サービス実行時間
EI2OS 終了制御ビット (SE) の設定
周辺からの終了要求により終了
固定
更新
固定
更新
固定
32
34
33
35
更新
34
36
35
37
I/OA 更新 / 固定設定ビット (IF) の設定
BAP アドレス更新 / 固定
設定ビット (BF) の設定
周辺からの終了要求を無視
単位 : マシンサイクル (1 マシンサイクルは , マシンクロック (φ) の 1 クロック周期に相当します。)
データ転送を継続する場合の EI2OS 処理時間は , 表 4.7-3 に示すように , EI2OS 実行条
件によって補正が必要です。
表 4.7-3 EI2OS 実行時間のデータ転送の補正値
内部アクセス
I/O レジスタアドレスポインタ
内部アクセス
外部アクセス
B/ 偶
奇
B/ 偶
8/ 奇
B/ 偶
0
+2
+1
+4
奇
+2
+4
+3
+6
B/ 偶
+1
+3
+2
+5
8/ 奇
+4
+6
+5
+8
バッファアドレスポインタ
外部アクセス
B :バイトデータ転送
8 :外部バス幅 8 ビット・ワード転送
偶 :偶数アドレス・ワード転送
奇 :奇数アドレス・ワード転送
77
第 4 章 割込み
● データカウンタ (DCT) のカウント終了時 ( 最終回のデータ転送時 )
EI2OS によるデータ転送が終了した場合 , ハードウェア割込みが起動されるため , 割込
みハンドリング時間が加算されます。カウント終了時の EI2OS の処理時間は , 下式で
算出されます。式中の Z は , 割込みハンドリング時間の補正値です。
カウント終了時のEI2OS処理時間 = データ転送時のEI2OS処理時間 + (21+6×Z)マシンサイクル
↑
割込みハンドリング時間
割込みハンドリング時間は , スタックポインタが格納しているアドレスによって異な
ります。
表 4.7-4 割込みハンドリング時間の補正値 (Z)
スタックポインタが指しているアドレス
補正値 (Z)
外部割込みが 8 ビットの場合
+4
外部割込みが偶数アドレスの場合
+1
外部割込みが奇数アドレスの場合
+4
内部割込みが偶数アドレスの場合
0
内部割込みが奇数アドレスの場合
+2
● 周辺機能 ( リソース ) からの終了要求により終了した場合
周辺機能 ( リソース ) からの終了要求では , EI2OS によるデータ転送を途中で終了した
場合 (ICR:S1, S0=11B) は , データ転送は行わず , ハードウェア割込みを起動します。
EI2OS 処理時間は , 下式で算出されます。式中の Z は , 割込みハンドリング時間の補正
値です ( 表 4.7-4 を参照 )。
途中終了した場合のEI2OS処理時間 = 36+6×Z マシンサイクル
<参考>
1 マシンサイクルは , マシンクロック (φ) の 1 クロック周期に相当します。
78
第 4 章 割込み
4.8
例外処理割込み
F2MC-16LX では , 未定義命令が実行された場合 , 例外処理が行われます。例外処理
は , 基本的には割込みと同じものであり , 命令間で例外事項の発生が検出された場合
に , 通常処理を中断して行われます。例外処理は予想外の動作を行った結果によって
発生する処理なので , デバッグ時や緊急時の復旧ソフトウェアの起動だけに使用して
ください。
■ 未定義命令の実行による例外処理
● 例外処理の動作
F2MC-16LX では , 命令マップで定義していないコードはすべて未定義命令として扱い
ます。未定義命令を実行すると , ソフトウェア割込み命令の "INT#10" と等価な処理を
行います。例外処理では , 割込みルーチンへ分岐する前に次の処理が行われます。
• システムスタックへ A, DPR, ADB, DTB, PCB, PC, PS レジスタを退避します。
• コンディションコードレジスタ (CCR) の I フラグを "0" にクリアし , ハードウェア
割込みを抑止します。
• コンディションコードレジスタ (CCR) の S フラグを "1" にセットし , システムスタッ
クを有効にします。
スタックへ退避したプログラムカウンタ (PC) の値は , 未定義命令が格納されているア
ドレスです。2 バイト以上の命令コードでは , 未定義であることを識別できたコードが
格納されているアドレスになります。例外処理ルーチン内で , 例外要因の種類を判定す
る必要がある場合は , 退避された PC 値を使用してください。
● 例外処理からの復帰
例外処理から RETI 命令で復帰させると , PC が未定義命令を指しているために , 再度 ,
例外処理に入ります。ソフトウェアリセットするなどの対策をしてください。
79
第 4 章 割込み
割込み処理のスタック動作
4.9
割込みが受け付けられると , 割込み処理に分岐する前に専用レジスタの内容が自動的
にシステムスタックに退避されます。割込み処理終了時のスタックからの復元も自
動的に行われます。
■ 割込み処理開始時のスタック動作
割込みが受け付けられると , CPU は現在の専用レジスタ類の内容を次に示す順番で , 自
動的にシステムスタックに退避させます。
1)
アキュムレータ (A)
2)
ダイレクトページレジスタ (DPR)
3)
アディショナルデータバンクレジスタ (ADB)
4)
データバンクレジスタ (DTB)
5)
プログラムカウンタバンクレジスタ (PCB)
6)
プログラムカウンタ (PC)
7)
プロセッサステータス (PS)
図 4.9-1 に , 割込み処理開始時のスタック動作を示します。
図 4.9-1 割込み処理開始時のスタック動作
割込み直前
SSB
アドレス
08FFH
08FEH
00H
SSP
08FEH
A
0000H
AH
08FEH
AL
DPR
01H
ADB
00H
DTB
00H
PCB
FFH
PC
803FH
PS
20E0H
08F2H
割込み直後
メモリ
SSB
SP
XXH
XXH
XXH
XXH
XXH
XXH
XXH
XXH
XXH
XXH
XXH
XXH
“H”
00H
SSP
08F2H
A
0000H
AH
“L”
バイト
アドレス
08FFH
08FEH
08FEH
AL
DPR
01H
ADB
00H
DTB
00H
PCB
FFH
PC
803FH
PS
20E0H
08F2H
メモリ
SP
00H
00H
08H
FEH
01H
00H
00H
FFH
80H
3FH
20H
E0H
バイト
AH
AL
DPR
ADP
DTB
PCB
PC
PS
更新後
のSP
■ 割込み処理復帰のスタック動作
割込み処理終了時に割込み復帰命令 (RETI) を実行すると , 割込み処理開始時と逆の順
番で PS, PC, PCB, DTB, ADB, DPR, A の値がスタックから復帰し , 専用レジスタは割込
み開始直前の状態に戻ります。
80
第 4 章 割込み
■ スタック領域
● スタック領域の確保
スタック領域は , 割込み処理のほかにサブルーチンコール命令 (CALL) やベクタコール
命令 (CALLV) を実行するときのプログラムカウンタ (PC) の退避 / 復帰や , PUSHW,
POPW 命令による一時的なレジスタ類の退避 / 復帰にも使われます。スタック領域は ,
データ領域とともに RAM 上に確保します。図 4.9-2 にスタック領域を示します。
図 4.9-2 スタック領域
ベクタテーブル
FFFFFFH
(リセット・割込み
ベクタコール命令) FFFC00H
ROM領域
FC0000H *1
~
~
003100H
~
~
*2
内蔵RAM領域
スタック領域
000380H
汎用レジスタ
バンク領域
000180H
000100H
0000D0H
000000H
内蔵I/O領域
*1:品種によって, 内蔵ROM容量が異なります。
*2:品種によって, 内蔵RAM容量が異なります。
<注意事項>
• スタックポインタ (SSP, USP) にアドレスを設定する場合 , 原則として偶数アドレスを
設定してください。
• システムスタック領域 , ユーザスタック領域およびデータ領域は , お互いに重なり合わ
ないように配置してください。
● システムスタックとユーザスタック
割込み処理では , システムスタック領域を使用します。割込み発生時にユーザスタック
領域を使用していても , 強制的にシステムスタックに切り換えられます。このため ,
ユーザスタック領域を主に使用するシステムであっても,システムスタック領域を正し
く設定しておく必要があります。特に , スタック空間を分ける必要がなければシステム
スタックだけを使用してください。
81
第 4 章 割込み
4.10
割込み処理のプログラム例
割込み処理のプログラム例を示します。
■ 割込み処理のプログラム例
● 処理仕様
外部割込み 0(INT0) を利用した割込みプログラムの一例です。
以下にプログラムのコーディング例を示します。
[ コーディング例 ]
EQU
000011H
; ポート 1 方向レジスタ
EQU
028H
; 割込み /DTP 許可レジスタ
EQU
029H
; 割込み /DTP フラグ
EQU
02AH
; 割込み要求レベル設定レジスタ
EQU
0B0H
; 割込み制御レジスタ 00
SSEG
; スタック
RW
100
STACK_TRW
1
STACK ENDS
;- - - - - メインプログラム - - - - - - - - - - - - - - - - - - - - - - - - - - -- CODE CSEG
START:
MOV
RP,#0
; 汎用レジスタは先頭バンクを使用
MOV
ILM,#07H
;PS 内 ILM をレベル 7 に設定
MOV
A,#!STACK_T
; システムスタックの設定
MOV
SSB,A
MOVW
A,#STACK_T
; スタックポインタの設定 , このときは
MOVW
SP,A
;S フラグ =1 のため SSP にセットされる
MOV
DDR8,#00000000B
;P80/IRQ0 端子を入力に設定
OR
CCR,#40H
;PS 内 CCR の I フラグをセットして割込み許可
MOV
I:ICR00,#00H
; 割込みレベル 0( 最高 ) とする
MOV
I:ELVR,#00000001B
;INT0 を "H" レベル要求とする
MOV
I:EIRR,#00H
;INT0 の割込み要因をクリア
MOV
I:ENIR,#01H
;INT0 の入力許可
:
LOOP: NOP
; ダミーループ
NOP
NOP
NOP
BRA
LOOP
; 無条件ジャンプ
;- - - - - 割込みプログラム - - - - - - - - - - - - - - - - - - - - - - - - - - - ED_INT1:
MOV
I:EIRR,#00H
;INT0 の新規受付け禁止
NOP
NOP
NOP
NOP
NOP
NOP
RETI
; 割込みから復帰
CODE ENDS
DDR1
ENIR
EIRR
ELVR
ICR00
STACK
82
第 4 章 割込み
;- - - - - ベクタ設定 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - VECT CSEG
ABS=OFFH
ORG
OFFDOH
; 割込み #11(0BH) にベクタを設定
DSL
ED_INT1
ORG
OFFDCH
; リセットベクタ設定
DSL
START
DB
00H
; シングルチップモードに設定
VECT ENDS
END
START
83
第 4 章 割込み
4.11
遅延割込み発生モジュール
遅延割込み発生モジュールは , タスク切換え用の割込みを発生するためのモジュー
ルです。本モジュールを使用することによって , ソフトウェアで F2MC-16LX CPU
に対して割込み要求の発生 / 取消しを行えます。
■ 遅延割込み発生モジュールのブロックダイヤグラム
図 4.11-1 に , 遅延割込み発生モジュールのブロックダイヤグラムを示します。
図 4.11-1 遅延割込み発生モジュールのブロックダイヤグラム
F2MC-16LX バス
遅延割込み要求発生/解除デコーダ
要因ラッチ
■ 遅延割込み発生モジュールのレジスタ一覧
遅延割込み発生モジュール{遅延割込み要因発生/解除レジスタ(DIRR:Delayed Interrupt
Request Register)} のレジスタ構成は下図のとおりです。
図 4.11-2 遅延割込み発生モジュールのレジスタ構成
アドレス:
00009FH
bit15
bit14
bit13
bit12
bit11
bit10
bit9
bit8
-
-
-
-
-
-
-
R0
初期値
-------0B
R/W
R/W:リード/ライト可能
遅延割込み要因発生 / 解除レジスタ (DIRR) は , 遅延割込み要因の発生 / 解除を制御す
るレジスタです。このレジスタに対して "1" を書き込んだ場合は遅延割込みの要求を
発生させ , "0" を書き込んだ場合は遅延割込みの要求を解除します。リセット時には要
因解除状態になります。予約ビット領域は , 将来の拡張を考慮してアクセスする際には ,
セットビット , クリアビット命令を使用してください。
84
第 4 章 割込み
4.11.1
遅延割込み発生モジュールの動作
ソフトウェアにより CPU が DIRR の該当ビットに "1" を書き込むと , 遅延割込み発
生モジュールの中にある要求ラッチがセットされ , 割込みコントローラに割込み要求
が発生します。
■ 遅延割込み発生モジュールの動作
ソフトウェアにより CPU が DIRR の該当ビットに "1" を書き込むと , 遅延割込み発生
モジュールの中にある要求ラッチがセットされ,割込みコントローラに割込み要求が発
生します。ほかの割込み要求が本割込みより優先順位が低い , またはほかの割込み要求
がない場合に , 割込みコントローラは F2MC-16LX CPU に対して割込みを発生します。
CPU はプロセッサステータス (PS) 内のインタラプトマスクレジスタ (ILM) と割込み要
求レベルを比較し , 割込み要求レベルが ILM レジスタより高い場合には , 現在実行中
の命令が終了し次第 , ハードウェア割込み処理マイクロプログラムを起動します。この
結果,本割込みに対する割込みルーチンが実行されます。割込み処理ルーチン内でDIRR
の該当ビットに "0" を書き込むことによって本割込み要因をクリアし , 合わせてタスク
の切換えを行います。
以上の動作の流れを , 図 4.11-3 に示します。
図 4.11-3 遅延割込み発生モジュールの動作
遅延割込み発生モジュール
割込みコントローラ
F2MC-16LX CPU
ほかの要求
IL
ICRYY
DIRR
CMP
ICRXX
CMP
ILM
INTA
■ 遅延割込み発生モジュールの使用上の注意 ( 遅延割込み要求ラッチ )
このラッチは , DIRR の該当するビットに "1" を書き込むことによってセットされ , 同
じビットに "0" を書き込むことによってクリアされます。したがって , 割込み処理ルー
チン内で要因をクリアするようにソフトウェアを作成しておかないと,割込み要因処理
から復帰した途端に再割込み処理が起動されることになりますので注意してくださ
い。
85
第 4 章 割込み
86
第5章
リセット
MB90980 シリーズのリセットについて説明しま
す。
5.1 リセットの概要
5.2 リセット要因と発振安定待ち時間
5.3 外部リセット端子
5.4 リセット動作
5.5 リセット要因ビット
5.6 リセットによる各端子の状態
87
第 5 章 リセット
5.1
リセットの概要
リセット要因が発生すると , CPU は現在実行中の処理を直ちに中断し , リセット解
除待ち状態になります。リセット解除後は , リセットベクタで示されたアドレスから
処理を開始します。
リセットには , 次の 4 種類の要因があります。
• パワーオンリセットの発生
• ウォッチドッグタイマのオーバフローの発生
• RST 端子からの外部リセット要求の発生
• ソフトウェアリセット要求の発生
■ リセット要因
リセットの要因について表 5.1-1 に示します。
表 5.1-1 リセット要因
リセット
パワーオン
発生要因
電源投入時
ウォッチドッグ
タイマ
ウォッチドッグタイマオーバ
フロー
外部端子
RST 端子への "L" レベル入力
マシンクロック
メインクロック
(MCLK)
メインクロック
(MCLK)
メインクロック
(MCLK)
低消費電力モード制御レジス
タ (LPMCR) の内部リセット信 メインクロック
ソフトウェア
(MCLK)
号発生ビット (RST) に "0" を
書き込む
メインクロック : 発振クロックの 2 分周クロック
ウォッチ
ドッグ
タイマ
発振安定
待ち
停止
あり
停止
なし
停止
なし
停止
なし
● パワーオンリセット
パワーオンリセットは , 電源投入時に発生するリセットです。発振安定待ち時間は 217/
HCLK( 約 32.77ms: 発振クロック 4MHz 時 ) 固定です。発振安定待ち時間が経過した後 ,
リセット動作を行います。
● ウォッチドッグリセット
ウォッチドッグリセットは , ウォッチドッグタイマの起動後 , 定められた時間内に
ウォッチドッグタイマ制御レジスタ (WDTC) のウォッチドッグ制御ビット (WTE) に "0"
の書込みがない場合,ウォッチドッグタイマのオーバフローによってリセットを発生さ
せます。ウォッチドッグリセットでは , 発振安定待ち時間の経過を待ちません。
88
第 5 章 リセット
● 外部リセット
外部リセットは , 外部リセット端子 (RST 端子 ) に "L" レベルを入力することによって
リセットを発生させます。RST 端子への "L" レベル入力時間は , 16 マシンサイクル
(16/φ) 以上必要です。
外部リセット (RST 端子入力リセット ) では , 発振安定待ち時間は発生しません。
RST 端子によるリセット要求が発生した場合に限り , 書込み動作中 ( 転送系命令実行中
MOV 命令など ) にリセット要因が発生した場合は , 命令の終了後にリセット解除待ち
状態になります。そのため , 書込み中にリセットが入力されても , 正常に書込みを終了
します。ただし , ストリング系命令 (MOVS 命令など ) は指定したカウンタ分の転送が
完了する前に , リセットを受け付けますので , すべてのデータが転送されることは保証
されません。また , 外部バスアクセス時に RDY 端子によるバスサイクルの延長が 16 マ
シンサイクル以上続いた場合もリセットを受け付けます。
● ソフトウェアリセット
ソフトウェアリセットは , 低消費電力モード制御レジスタ (LPMCR) の内部リセット信
号発生ビット (RST) に "0" を書き込むことによって , 内部リセットを発生します。
ソフトウェアリセットでは , 発振安定待ち時間は発生しません。
クロックの定義
HCLK : 発振クロック ( 高速発振端子から供給されるクロック )
MCLK : メインクロック (HCLK の 2 分周クロック )
SCLK
: サブクロック ( 低速発振端子から供給されるクロックの 4 分周 )
φ
: マシンクロック (CPU 動作クロック )
1/φ
: マシンサイクル (CPU 動作クロック周期 )
マシンクロックの詳細は ,「6.1 クロックの概要」を参照してください。
<注意事項>
ストップモード , またはサブクロックモードでリセットが発生した場合は , 217/HCLK
( 約 32.77ms: 発振クロック 4MHz 時 ) の発振安定待ち時間を確保します。
クロックモードの詳細は ,「6.4 クロックモード」を参照してください。
89
第 5 章 リセット
5.2
リセット要因と発振安定待ち時間
MB90980 シリーズには , 4 種類のリセット要因があります。リセット時の発振安定
待ち時間はリセット要因によってそれぞれ異なります。
■ リセット要因と発振安定待ち時間
表 5.2-1 に , リセット要因と発振安定待ち時間について示します。
表 5.2-1 リセット要因と発振安定待ち時間
発振安定待ち時間
() 内は発振クロック 4MHz 時の周期
リセット要因
評価用品
: 218/HCLK( 約 65.54ns)
フラッシュメモリ品 / マスク ROM 品 :217/HCLK( 約 32.77ms)
なし : ただし , WS1, WS0 ビットは "11B" に初期化されます。
パワーオンリセット
ウォッチドッグタイマ
RST 端子からの外部リセット
ソフトウェアリセット
なし : ただし , WS1, WS0 ビットは "11B" に初期化されます。
なし : ただし , WS1, WS0 ビットは "11B" に初期化されます。
HCLK
: 発振クロック
WS1, WS0 : クロック選択レジスタ (CKSCR) の発振安定待ち時間選択ビット
図 5.2-1 に , パワーオンリセット時の評価用品 / フラッシュROM 品とマスク ROM 品の
発振安定待ち時間について示します。
図 5.2-1 パワーオンリセット時の評価用品 / フラッシュメモリ品とマスク ROM 品の
発振安定待ち時間
評価用品
Vcc
217/HCLK
217/HCLK
CLK
CPU動作
降圧回路の
安定待ち時間
発振安定
待ち時間
マスクROM品/フラッシュメモリ品
Vcc
217/HCLK
CLK
CPU動作
発振安定待ち時間
HCLK:発振クロック
<注意事項>
セラミックや水晶などの振動子は , 発振を開始してから固有の振動数に安定するまで , 一
般に数 ms から十数 ms の発振安定待ち時間が必要です。そのため , 使用する振動子に合
わせた値を設定してください。
詳細は ,「6.5 発振安定待ち時間」を参照してください。
90
第 5 章 リセット
■ 発振安定待ちリセット状態
電源投入時のリセット , サブクロックモード中のリセットおよびストップモードのリ
セットに対するリセット動作は,タイムベースタイマによって作られる発振安定待ち時
間が経過してからとなります。この場合 , 外部リセット入力が解除されていなければ ,
外部リセット解除後にリセット動作を行います。
91
第 5 章 リセット
5.3
外部リセット端子
外部リセット端子 (RST 端子 ) はリセット入力専用端子で , "L" レベルの入力によっ
て内部リセットを発生します。MB90980 シリーズは , CPU 動作クロックに同期して
リセットがかかりますが , 外部端子 (I/O ポートなど ) のみ非同期でリセット状態に遷
移します。
■ 外部リセット端子のブロックダイヤグラム
図 5.3-1 に , 内部リセット発生のブロックダイヤグラムを示します。
図 5.3-1 内部リセット発生のブロックダイヤグラム
CPU動作クロック
(PLL逓倍回路,HCLKの2分周)
RST
CPU
P-ch
同期化回路
端子
N-ch
入力バッファ
HCLK:発振クロック
周辺機能
外部端子
(I/Oポートなど)
<注意事項>
書込み動作中のリセットによるメモリ破壊を防ぐため, RST端子入力の受付けをメモリが
破壊されないサイクルで行います。また , 内部回路の初期化にはクロックが必要です。特
に外部クロックで動作させる場合は , リセット入力時にクロックを入力する必要がありま
す。
92
第 5 章 リセット
5.4
リセット動作
リセットが解除されると , モード端子の設定によるモードデータとリセットベクタの
読出し先が選択され , モードフェッチを行います。このモードフェッチにより , CPU
の動作モードとリセット動作終了後の実行開始アドレスが決定されます。電源投入
時 , またはストップモードおよびサブクロックモードからのリセットによる復帰で
は , 発振安定待ち時間が経過してからモードフェッチを行います。
■ リセット動作の概要
図 5.4-1 に , リセット動作フローを示します。
図 5.4-1 リセット動作フロー
パワーオンリセット
ストップモード
サブクロックモード
外部リセット
ソフトウェアリセット
ウォッチドッグタイマリセット
リセット中
発振安定待ちリセット状態
モードフェッチ
(リセット動作)
モードデータ取込み
外部バスモード関連の
端子状態および機能変更
リセットベクタ取込み
通常動作
(RUN状態)
リセットベクタが示す
アドレスから命令コードを
取込み命令を実行
■ モード端子
モード端子 (MD2 ~ MD0) は , リセットベクタとモードデータの取込み方法を指定しま
す。リセットベクタとモードデータの取込みは , リセットシーケンスで行います。モー
ド端子の詳細は ,「8.2 モード端子 (MD2 ~ MD0)」を参照してください。
■ モードフェッチ
リセットが解除されると , CPU は , リセットベクタとモードデータを CPU コア内の該
当レジスタ内にハードウェア転送します。リセットベクタとモードデータは ,
"FFFFDCH"~"FFFFDFH"の4バイトに割り当てられています。CPUは,リセット解除で直
ちにこれらのアドレスをバスに出力し , リセットベクタとモードデータを取り込みま
す。このモードフェッチで , CPU はリセットベクタが指すアドレスから処理を開始し
ます。
93
第 5 章 リセット
図 5.4-2 に , リセットベクタとモードデータの転送を示します。
図 5.4-2 リセットベクタとモードデータの転送
F2MC-16LX CPUコア
メモリ空間
モードレジスタ
FFFFDFH
モードデータ
FFFFDEH リセットベクタ・bit23~bit16
FFFFDDH
リセットベクタ・bit15~bit8
FFFFDCH
リセットベクタ・bit7~bit0
マイクロROM
リセットシーケンス
PCB
PC
<注意事項>
リセットベクタとモードデータを内部 ROM, または外部メモリのどちらから読み出すかは ,
モード端子によって指定します。モード端子で外部ベクタモードを指定すると , 外部メモ
リからリセットベクタとモードデータを読み出します。シングルチップモード , または内
部 ROM 外部バスモードで使用する場合は , モード端子を内部ベクタモードに設定してく
ださい。
● モードデータ ( アドレス :FFFFDFH)
モードレジスタの内容を変更できるのはリセット動作だけです。モードレジスタの設
定はリセット動作以降に有効となります。モードデータの詳細は ,「8.3 モードデータ」
を参照してください。
● リセットベクタ ( アドレス :FFFFDCH ~ FFFFDEH)
リセット動作終了後の実行開始アドレスを設定します。リセットベクタで設定された
アドレスから実行を開始します。
94
第 5 章 リセット
リセット要因ビット
5.5
リセット発生要因は , ウォッチドッグタイマ制御レジスタ (WDTC) を読み出すこと
によって識別します。
■ リセット要因ビット
図 5.5-1 に示すように , それぞれのリセット要因には対応したフリップフロップ回路が
用意されています。フリップフロップ回路の状態は , ウォッチドッグタイマ制御レジス
タ (WDTC) を読み出して確認できます。リセット解除後にリセット発生要因を識別す
る必要がある場合には , WDTC レジスタの値をソフトウェアで読み出した上で , 適切な
プログラムへ分岐するようにしてください。
図 5.5-1 リセット要因ビットブロックダイヤグラム
RST端子
電源投入
定期的なクリアなし
RST=L
パワーオン発生
検出回路
外部リセット
要求検出回路
ウォッチドッグ
タイマ制御
レジスタ
(WDTC)
S
R
S
F/F
R
F/F
Q
R
S
F/F
Q
LPMCR,RSTビット
書込み検出回路
ウォッチドッグ
タイマリセット
発生検出回路
S
R
F/F
Q
RSTビットセット
遅延回路
Q
ウォッチドッグタイマ
制御レジスタ
(WDTC)読出し
F2MC-16LX 内部バス
S:セット R:リセット Q:出力 F/F:フリップフロップ
■ リセット要因ビットとリセット要因の対応
ウォッチドッグタイマ制御レジスタ (WDTC) のリセット要因ビットの構成を図 5.5-2
に , リセット要因ビットの内容とリセット要因の対応を表 5.5-1 に示します。
詳細は ,「11.2 ウォッチドッグタイマ制御レジスタ (WDTC)」を参照してください。
図 5.5-2 リセット要因ビットの構成 ( ウォッチドッグタイマ制御レジスタ )
アドレス:
0000A8H
bit15 ~ bit8 bit7
(TBTC)
PONR
R
R:リードオンリ
bit6
bit5
bit4
bit3
bit2
bit1
bit0
初期値
予約
WRST
ERST
SRST
WTE
WT1
WT0
XXXXX111B
R
R
W
W
W
R
R
W:ライトオンリ
95
第 5 章 リセット
表 5.5-1 リセット要因ビットの内容とリセット要因の対応
リセット要因
パワーオンリセットの発生
ウォッチドッグタイマのオーバフロー発生
端子からの外部リセット要求発生
ソフトウェアリセット要求の発生
*: 不定
PONR
WRST
ERST
SRST
1
*
*
*
X
1
*
*
X
*
1
*
X
*
*
1
■ リセット要因ビットの注意事項
● 複数のリセット要因が発生した場合
リセット要因が複数発生する場合は , WDTC レジスタの対応するそれぞれのリセット
要因ビットが "1" にセットされます。例えば , RST 端子からの外部リセット要求の発生
とウォッチドッグタイマのオーバフローが同時に発生した場合,リセット要因ビットの
うち ERST ビットと WRST ビットが "1" になります。
● パワーオンリセットの場合
パワーオンリセット時には , リセット要因ビットのうち PONR ビットが "1" にセットさ
れ , PONR ビット以外のリセット要因ビットは不定となります。このため , PONR ビッ
トが "1" の場合は , PONR ビット以外のリセット要因ビットを無視するようにプログラ
ムを作成してください。
● リセット要因ビットのクリア
リセット要因ビットは , WDTC レジスタを読み出した場合のみクリアされます。一度
発生したリセット要因に対応するビットは , リセットが発生してもクリアされません
("1" のままです )。
<注意事項>
パワーオンリセットが発生しない条件で電源を立ち上げた場合, WDTCレジスタの値は保
証されません。
96
第 5 章 リセット
5.6
リセットによる各端子の状態
リセットによる各端子の状態について説明します。
■ リセット中の端子の状態
リセット中の端子の状態は , モード端子 (MD2 ~ MD0) の設定によって決定されます。
● 内部ベクタモード設定時 (MD2 ~ MD0=011B)
I/O 端子 ( リソース端子 ) はすべてハイインピーダンスになり , モードデータの読出し
先は内部 ROM になります。
リセット中の各端子の状態については「7.7
,
スタンバイモード , ホールド , リセット時
の端子状態」を参照してください。
■ モードデータ読出し後の端子の状態
モードデータ読出し後の端子の状態は , モードデータ (M1, M0) によって決定されます。
● シングルチップモード選択時 (M1, M0=00B)
I/O 端子 ( リソース端子 ) はすべてハイインピーダンスになり , モードデータの読出し
先は内部 ROM になります。
<注意事項>
リセット要因が発生した場合にハイインピーダンスとなる端子は , その端子に接続した機
器が誤動作しないように配慮してください。
97
第 5 章 リセット
98
第6章
クロック
MB90980 シリーズのクロックについて説明しま
す。
6.1 クロックの概要
6.2 クロック発生部のブロックダイヤグラム
6.3 クロック選択レジスタ (CKSCR), PLL 出力選択レジスタ
(PLLOS)
6.4 クロックモード
6.5 発振安定待ち時間
6.6 振動子と外部クロックの接続
99
第 6 章 クロック
6.1
クロックの概要
クロック発生部は , CPU や周辺機能の動作クロックである内部クロックの動作を制
御します。本書では , クロックの種類に応じて以下のようによびます。
• マシンクロック : 内部クロックのことをいいます。
• マシンサイクル : マシンクロックの 1 周期をいいます。
• 発振クロック
: 高速発振端子から供給されるクロックをいいます。
• PLL クロック : 内部の PLL 発振によるクロックをいいます。
• サブクロック
: 低速発振端子から供給されるクロックの 4 分周をいいます。
■ クロックの概要
クロック発生部は発振回路を内蔵しており , 外部に振動子を接続することによって , 発
振クロックおよびサブクロックを発生します。外部で生成したクロックを入力して , 発
振クロックにすることもできます。また , PLL クロック逓倍回路を内蔵しており , 発振
クロックの逓倍クロックを 4 種類発生できます。クロック発生部では , 発振安定待ち時
間の制御 , PLL クロック逓倍制御およびクロックセレクタでのクロックの切換えによる
内部クロックの動作制御を行います。
● 発振クロック (HCLK)
高速発振端子に振動子を接続するか , 外部クロックを入力して発生させたクロックで
す。
● サブクロック (SCLK)
時計タイマを動作させるクロックです。また , 低速のマシンクロックとしても使用可能
です。
低速発振端子に振動子を接続するか , 外部クロックを入力して発生させたクロックの 4
分周です。
● メインクロック (MCLK)
発振クロックの 2 分周クロックであり , タイムベースタイマとクロックセレクタへの入
力クロックとなります。
● PLL クロック (PCLK)
発振クロックを内蔵の PLL クロック逓倍回路 (PLL 発振回路 ) により逓倍したクロック
です。4 種類のクロックを選択できます。
● マシンクロック (φ)
CPU と周辺機能の動作クロックです。このクロックの 1 周期をマシンサイクル (1/φ) と
しています。メインクロック ( 発振クロックの 2 分周クロック ), サブクロックと 4 種
類の逓倍クロックの中から 1 種類を選択できます。
<注意事項>
発振クロックは 4.5MHz ~ 25MHz の発振が可能です。ただし , 20MHz ~ 25MHz でのマ
シンクロックの発生時に PLL を使用する場合 , PLLOS レジスタの PLL2 ビットを "1" に
設定してください。CPU および周辺機能の最大動作周波数は 25MHz です。最大動作周波
数を超える逓倍率を指定した場合 , デバイスは正常に動作しません。
PLL 発振は 4.5MHz ~ 25MHz の範囲で発振しますが , PLL 発振範囲は動作電圧および逓
倍率によって異なります。
100
第 6 章 クロック
■ クロック供給マップ
CPU や周辺機能の動作クロックとして , クロック発生部で生成したマシンクロックを供
給しています。CPU と周辺機能の動作は , メインクロックと PLL クロックの切換え
( クロックモード ) や PLL クロック逓倍率の切換えの影響を受けます。一部の周辺機能
へは , タイムベースタイマの分周出力が供給されており , 各周辺で動作クロックを選択
できるようになっています。
図 6.1-1 に , クロック供給マップを示します。
図 6.1-1 クロック供給マップ
4
4
クロック発生部
8/16ビット
PPGタイマ0
時計タイマ
X0A
端子
X1A
端子
X0
端子
X1
端子
8/16ビット
PPGタイマ1
タイムベースタイマ
サブ
クロック
発生回路
周辺機能
ウォッチドッグ
タイマ
1 2 3 4
16ビット
リロードタイマ
PLL逓倍回路
SCLK
4分周
PCLK
システム
φ
クロック
クロックセレクタ
2分周
発生回路 HCLK
MCLK
UART0
I/O拡張シリアル
インタフェース
2チャネル
CPU,μDMAC
8/16ビット
アップ/ダウン
カウンタ
16ビット
アウトプットコンペア
16ビット
フリーランタイマ
16ビット
インプットキャプチャ
10ビット
A/Dコンバータ
HCLK : 発振クロック
MCLK : メインクロック
SCLK : サブクロック
PCLK : PLLクロック
φ
:マシンクロック
外部割込み
3
PPG0,PPG1
端子
PPG2,PPG3
端子
TIN0
端子
TOT0
端子
SCK0,SIN0
端子
SOT0
端子
SCK1,SCK2 SIN1,SIN2
端子
SOT1,SOT2
端子
AIN0,AIN1
BIN0,BIN1
ZIN0,ZIN1
端子
OUT0,OUT1,
OUT2,OUT3
端子
FRCK
端子
IN0,IN1
端子
AN0~AN7,ADTG
端子
IRQ0~IRQ7
端子
発振安定待ち制御
101
第 6 章 クロック
6.2
クロック発生部のブロックダイヤグラム
クロック発生部は , 次のブロックで構成されています。
• システムクロック発生回路 / サブクロック発生回路
• PLL 逓倍回路
• クロックセレクタ
• クロック選択レジスタ (CKSCR), PLL 出力選択レジスタ (PLLOS)
• 発振安定待ち時間セレクタ
■ クロック発生部のブロックダイヤグラム
図 6.2-1 に , クロック発生部のブロックダイヤグラムを示します。
なお,図 6.2-1 には,スタンバイ制御回路,タイムベースタイマの回路も含まれています。
図 6.2-1 クロック発生部のブロックダイヤグラム
低消費電力モード制御レジスタ(LPMCR)
STP
SLP
SPL
RST
TMD
CG1
CG0 予約
端子ハイインピー
ダンス制御回路
RST
内部リセット
発生回路
端子
CPU間欠動作
セレクタ
CPUクロック
ストップ,スリープ信号
スタンバイ
制御回路
割込み解除
内部リセット
間欠サイクル選択
CPUクロック
制御回路
2
端子ハイインピー
ダンス制御
ストップ信号
マシンクロック
周辺クロック
制御回路
周辺クロック
発振安定待ち解除
クロック発生部
クロックセレクタ
-
-
-
-
-
-
PLL2
PLL出力選択レジスタ(PLLOS)
SCLK
発振安定
待ち時間
セレクタ
2
4分周
2
サブクロック
発生回路
PLL逓倍回路
XOA 端子
X1A 端子
X0 端子
SCM
MCM
WS1
WS0
SCS
MCS
CS1
CS0
クロック選択レジスタ(CKSCR)
システム
クロック
発生回路
HCLK
2分周
MCLK
1024分周
2分周
4分周
4分周
4分周
2分周
タイムベースタイマ
X1 端子
102
HCLK:発振クロック
MCLK:メインクロック
SCLK:サブクロック
ウォッチドッグタイマへ
第 6 章 クロック
● システムクロック発生回路
高速発振端子に接続した振動子によって , 発振クロック (HCLK) を発生します。外部ク
ロックを入力することもできます。
● サブクロック発生回路
低速発振端子に接続した振動子によって , サブクロック (SCLK) を発生します。外部ク
ロックを入力することもできます。
● PLL 逓倍回路
PLL 発振で発振クロックを逓倍し , CPU クロックセレクタへ供給します。
● クロックセレクタ
メインクロック , サブクロックと 4 種類の PLL クロックから , CPU 系クロック制御回
路および周辺系クロック制御回路へ供給されるクロックを選択します。
● クロック選択レジスタ (CKSCR)
発振クロックと PLL クロックの切換え , 発振安定待ち時間の選択 , PLL クロックの逓
倍率の選択などを行います。
● PLL 出力選択レジスタ (PLLOS)
PLL を使用してマシンクロックを 20MHz ~ 25MHz で使用する場合 , このレジスタで
CKSCR レジスタの設定した PLL の逓倍を 2 倍にします。
● 発振安定待ち時間セレクタ
ストップモードの解除時およびウォッチドッグリセット時の発振クロックの発振安定
待ち時間を選択する回路です。4 種類のタイムベースタイマ出力を選択します。
103
第 6 章 クロック
6.3
クロック選択レジスタ (CKSCR), PLL 出力選択レジス
タ (PLLOS)
クロック選択レジスタ (CKSCR) は , メインクロック , サブクロックと PLL クロック
の切換え , 発振安定待ち時間の選択 , PLL クロックの逓倍率の選択などを行います。
また , PLL 出力選択レジスタ (PLLOS) は , PLL を使用してマシンクロックを
20MHz ~ 25MHz にする場合 , 設定が必要となります。
■ クロック選択レジスタ (CKSCR) の構成
図 6.3-1 にクロック選択レジスタ (CKSCR) の構成を , 表 6.3-1 にクロック選択レジスタ
の各ビットの機能について説明します。
図 6.3-1 クロック選択レジスタ (CKSCR) の構成
アドレス bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit 8 bit7
0000A1 H
SCM MCM
R
R
WS1
WS0
SCS
MCS
CS1
CS0
R/W
R/W
R/W
R/W
R/W
R/W
CS1
CS0
bit0 初期値
(LPMCR)
11111100B
逓倍率選択ビット
( ) 内は発振クロック4MHZ時
0
0
1 × HCLK ( 4MHZ)
0
1
2 × HCLK ( 8MHZ)
1
0
3 × HCLK (12MHZ)
1
1
4 × HCLK (16MHZ)
(注意事項) 内部を20MHz~25MHzで動作させるときはPLLOSレジスタの
PLL2ビットを"1"にして逓倍を上記の2倍にして使用してください。
ただし,CS1=1, CS0=1のときはPLL2ビットは"1"にしないでください。
PLLクロック選択ビット
MCS
0
PLLクロック選択
1
メインクロック選択
サブクロック選択ビット
SCS
0
サブクロック選択
1
メインクロック選択
WS1 WS0
発振安定待ち時間選択ビット
( ) 内は発振クロック4MHZ時
0
0
210/HCLK (約 256μs)
0
1
213/HCLK (約 2.05ms)
1
0
215/HCLK (約 8.19ms)
1
1
217/HCLK (約32.77ms)*
*: パワーオンリセット時の評価用品/フラッシュメモリ品は
218/HCLK(約65.54ms), マスクROM品は217/HCLK
(約32.77ms) になります。
MCM
PLLクロックで動作中
1
メインクロックまたはサブクロックで動作中
SCM
HCLK
R/W
R
: 発振クロック
: リード/ライト可能
: リードオンリ
: 初期値
PLLクロック表示ビット
0
サブクロック表示ビット
0
サブクロックで動作中
1
メインクロックまたはPLLクロックで動作中
<注意事項>
マシンクロック選択ビット (MCS) は , リセットによってメインクロック選択に初期化され
ます。
104
第 6 章 クロック
表 6.3-1 クロック選択レジスタ (CKSCR) の各ビットの機能 (1 / 2)
ビット名
機 能
マシンクロックとして , メインクロック , またはサブクロックのど
ちらが選択されているかを表示するビットです。
bit15
bit14
SCM:
サブクロック
表示ビット
MCM:
PLL クロック
表示ビット
・このビットが "0" の場合 , サブクロックが選択されていることを示し ,
"1" の場合 , メインクロック , または PLL クロックが選択されていることを
示します。
・SCS=1 で , かつ SCM=0 ならば , メインクロック発振安定待ち時間中であ
ることを示します。
・書込みは , 動作に影響しません。
マシンクロックとしてメインクロック , または PLL クロックのどちらが選
択されているかを表示するビットです。
・このビットが "0" の場合 , PLL クロックが選択されていることを示し ,
"1" の場合 , メインクロック , またはサブクロックが選択されていることを
示します。
・PLL クロック選択ビット (MCS)=0 で , かつ MCM=1 ならば , PLL クロッ
ク発振安定待ち時間中であることを示します。
・書込みは , 動作に影響しません。
ストップモード解除時 , サブクロックモードからメインクロックモードへ
の移行時およびサブクロックモードから PLL クロックモードへの移行時
の発振クロックの発振安定待ち時間を選択します。
すべてのリセット要因で "11B" に初期化されます。
bit13,
bit12
bit11
WS1, WS0:
発振安定待ち
時間選択
ビット
SCS:
サブクロック
選択ビット
( 注意事項 )
発振安定待ち時間は , 使用する振動子に合わせて適切な値を設定する必
要があります。「5.2 リセット要因と発振安定待ち時間」を参照してくだ
さい。"00B" の設定はメインクロックモード時のみ設定してください。
メインクロックモードから PLL クロックモードに切り換えた場合の発振
安定待ち時間は , 214/HCLK で固定です。
サブクロックモードに切り換えた場合および PLL ストップモードから
PLL クロックモードに復帰する場合の発振安定待ち時間は , 本ビットに
設定された値に従います。PLL クロック発振安定待ち時間は 214/HCLK
以上必要ですので , サブクロックモードから PLL クロックモードに切り
換える場合および PLL ストップモードに移行する場合 , 本ビットには
"10B" または "11B" を設定してください。
マシンクロックとして , メインクロック , またはサブクロックのどちらを
選択するかを指定するビットです。
・このビットが "0" のときサブクロックを選択し , "1" のときメインクロッ
クを選択します。
・このビットが "1" のときに "0" を書き込むと , サブクロックに同期をとっ
て ( 約 130 μs), サブクロックモードに切り換わります。
・このビットが "0" のときに "1" を書き込むと , メインクロックの発振安定
待ち時間発生するために , 自動的にタイムベースタイマがクリアされま
す。
すべてのリセット要因で "1" に初期化されます。
( 注意事項 )
サブクロック選択時の動作クロックは , サブクロックを使用します ( 低速
発振 32kHz 時 , マシンクロックは 8kHz になります )。
SCS, MCS がともに "0" のときは , SCS が優先され , サブクロックが選択
されます。
105
第 6 章 クロック
表 6.3-1 クロック選択レジスタ (CKSCR) の各ビットの機能 (2 / 2)
ビット名
bit10
bit9,
bit8
MCS:
PLL クロック
選択ビット
CS1, CS0:
逓倍率選択
ビット
HCLK: 発振クロック
106
機 能
マシンクロックとして , メインクロック , または PLL クロックのどちらを
選択するかを指定するビットです。
・このビットが "0" の場合には PLL クロックを選択し , "1" の場合にはメイ
ンクロックを選択します。
・このビットが "1" の場合に "0" を書き込むと , PLL クロックの発振安定待
ち時間が発生するために , 自動的にタイムベースタイマがクリアされま
す。さらにタイムベースタイマ制御レジスタ (TBTC) の割込み要求フラ
グビット (TBOF) もクリアされます。
・メインクロックモードから PLL クロックモードに切り換えた場合の発振
安定待ち時間は , 214/HCLK で固定です ( 発振クロック 4MHz 時 , 発振安
定待ち時間は約 4.1ms になります )。サブクロックモードから PLL ク
ロックモードに切り換えた場合の発振安定待ち時間は , 発振安定待ち時
間選択ビット (CKSCR:WS1, WS0) に設定された値に従います。
・メインクロック選択時の動作クロックは , 発振クロックを 2 分周したク
ロックとなります ( 発振クロック 4MHz の場合 , 動作クロックは 2MHz
になります )。
すべてのリセット要因で "1" に初期化されます。
( 注意事項 )
MCS ビットが "1" の場合に "0" を書き込む場合には , TBTC レジスタの割
込み要求許可ビット (TBIE), またはインタラプトレベルマスクレジスタ
(ILM) によって , タイムベースタイマ割込みが抑止されている状態で行う
ようにしてください。
PLL クロックの逓倍率を選択するビットです。
4 種類の逓倍率から選択できます。
すべてのリセット要因で "00B" に初期化されます。
( 注意事項 )
MCS ビット , または MCM ビットが "0" の場合には , 書込みが抑止されま
す。いったん , MCS ビットを "1" に設定 ( メインクロックモード ) 後に ,
CS1, CS0 ビットを書き換えてください。
第 6 章 クロック
■ PLL 出力選択レジスタ (PLLOS) の構成
図 6.3-2 に PLL 出力選択レジスタ (PLLOS) の構成を , 表 6.3-2 に PLL 出力選択レジスタ
の各ビットの機能について説明します。
図 6.3-2 PLL 出力選択レジスタ (PLLOS) の構成
アドレス bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8
0000CFH
―
―
―
―
―
―
-
-
-
-
-
-
DIV2 PLL2
W
初期値
------00B
W
PLL出力2倍選択ビット
PLL2
0 CKSCRレジスタのCS1,CS0ビットの設定逓倍を出力
1 CKSCRレジスタのCS1,CS0ビットの設定の2倍を出力
W :ライトオンリ
- :未定義
:初期値
PLL入力分周選択ビット
DIV2
PLLに入力周波数をそのまま入力
0
1 PLLに入力周波数を2分周して入力
表 6.3-2 PLL 出力選択レジスタ (PLLOS) の各ビットの機能
ビット名
bit15 ~ bit10
未定義ビット
機 能
使用しておりません。
・PLL への入力クロックを分周するか , そのまま入力するか選択します。
・すべてのリセット要因で "0" に初期化されます。
・読出し値は不定です。
・このビットは PLL のクロックを使用しているときには変更しないでくだ
さい。
・PLL1, PLL2, PLL3, PLL4 逓倍設定で , 内部クロックを 20MHz < fCP ≦
bit9
DIV2:
PLL 入力分周
選択ビット
25MHz で使用する場合 , PLLOS レジスタを DIV2 ビット =1, PLL2 ビット
=1 に設定してください ( ただし , 4 逓倍時は入力周波数が 6MHz 以上 )。
例 原発振周波数 24MHz PLL1 逓倍で使用する場合 :
CKSCR レジスタ CS1 ビット= 0, CS0 ビット =0
PLLOS レジスタ DIV2 ビット= 1, PLL2 ビット =1
例 原発振周波数 8MHz PLL3 逓倍で使用する場合 :
CKSCR レジスタ CS1 ビット =1, CS0 ビット =0
PLLOS レジスタ DIV2 ビット =1, PLL2 ビット =1
・PLL2, PLL4 逓倍設定で , 内部クロックを 20MHz < fCP ≦ 25MHz で使用
する場合 , 以下の設定でも対応可能です。
PLL2 逓倍 : CKSCR レジスタ CS1 ビット =0, CS0 ビット =0
PLLOS レジスタ DIV2 ビット =0, PLL2 ビット =1
PLL4 逓倍 : CKSCR レジスタ CS1 ビット =0, CS0 ビット =1
PLLOS レジスタ DIV2 ビット =0, PLL2 ビット =1
・PLL6 逓倍 , PLL8 逓倍設定で使用する場合 , PLLOS レジスタを DIV2
ビット =0, PLL2 ビット =1 に設定してください。
例 原発振周波数 4MHz PLL6 逓倍で使用する場合 :
CKSCR レジスタ CS1 ビット =1, CS0 ビット =0
PLLOS レジスタ DIV2 ビット =0, PLL2 ビット =1
例 原発振周波数 3MHz PLL8 逓倍で使用する場合 :
CKSCR レジスタ CS1 ビット =1, CS0 ビット =1
PLLOS レジスタ DIV2 ビット =0, PLL2 ビット =1
107
第 6 章 クロック
表 6.3-2 PLL 出力選択レジスタ (PLLOS) の各ビットの機能
ビット名
bit8
108
PLL2:
PLL 出力 2 倍
選択ビット
機 能
PLL 使用時にマシンクロックを 20MHz ~ 25MHz で使用するときに PLL
の逓倍を 2 倍にするビットです。
・すべてのリセット要因で "0" に初期化されます。
・読出し値は不定です。
・このビットは PLL のクロックを使用しているときには変更しないでくだ
さい。
第 6 章 クロック
6.4
クロックモード
クロックモードには , メインクロックモード , PLL クロックモード , サブクロック
モードがあります。
■ メインクロックモード , PLL クロックモード , サブクロックモード
● メインクロックモード
メインクロックモードは , CPU および周辺リソースの動作クロックとして発振クロッ
クを 2 分周したクロックを使用します。
● PLL クロックモード
PLL クロックモードは , CPU および周辺機能の動作クロックとして PLL クロックを使
用します。PLL クロックの逓倍率は , クロック選択レジスタ (CKSCR) によって選択し
ます。
● サブクロックモード
サブクロックモードは , CPU および周辺リソースの動作クロックとしてサブクロック
を使用します。
■ クロックモードの移行
クロックモードは , CKSCR レジスタの PLL クロック選択ビット (MCS) とサブクロッ
ク選択ビット (SCS) への書込み動作によって , メインクロックモード , PLL クロック
モード , サブクロックモードに移行します。
● メインクロックモードから PLL クロックモードへの移行
メインクロックモードの状態で , CKSCR レジスタの MCS ビットを "1" から "0" に書き
換えた場合には , PLL クロックの発振安定待ち時間 (214/HCLK) 後に , メインクロック
から PLL クロックに切り換わります。
● PLL クロックモードからメインクロックモードへの移行
PLL クロックモードの状態で , CKSCR レジスタの MCS ビットを "0" から "1" に書き換
えた場合には , PLL クロックとメインクロックのエッジが一致するタイミング (1 ~ 8
PLL クロック後 ) で PLL クロックからメインクロックに切り換わります。
● メインクロックモードからサブクロックモードへの移行
メインクロックモードの状態で , CKSCR レジスタの SCS ビットを "1" から "0" に書き
換えた場合には , サブクロックに同期をとって ( 約 130 μs), メインクロックからサブク
ロックに切り換わります。
● サブクロックモードからメインクロックモードへの移行
サブクロックモードの状態で , CKSCR レジスタの SCS ビットを "0" から "1" に書き換
えた場合には , メインクロックの発振安定待ち時間後に , サブクロックからメインク
ロックに切り換わります。発振安定待ち時間は , CKSCR レジスタの発振安定待ち時間
選択ビット (WS1, WS0) によって選択します。
109
第 6 章 クロック
● PLL クロックモードからサブクロックモードへの移行
PLLクロックモードの状態で,クロック選択レジスタ(CKSCR)のサブクロック選択ビッ
ト (SCS) を "1" から "0" に書き換えた場合には , PLL クロックからサブクロックに切り
換わります。
● サブクロックモードから PLL クロックモードへの移行
サブクロックモードの状態で , CKSCR レジスタの SCS ビットを "0" から "1" に書き換
えた場合には , メインクロックの発振安定待ち時間後に , サブクロックから PLL クロッ
クに切り換わります。発振安定待ち時間は , CKSCR レジスタの発振安定待ち時間選択
ビット (WS1, WS0) によって選択します。
<注意事項>
• マシンクロックは , CKSCR レジスタの PLL クロック選択ビット (MCS), SCS ビットを
書き換えても即座には切り換わりません。マシンクロックに依存するリソースを操作
する場合は , CKSCR レジスタの PLL クロック表示ビット (MCM) およびサブクロック
表示ビット (SCM) を参照してマシンクロックの切換えが行われたことを確認した後に
リソースの操作をしてください。
• SCS ビット , MCS ビットがともに "0" の場合は , SCS が優先され , サブクロックモー
ドになります。
• クロックモードを切り換えた場合 , 切換えが完了するまでは , ほかのクロックモードお
よび低消費電力モードへの切換えを行わないでください。切換えの完了は , クロック選
択レジスタ (CKSCR) の MCM ビットおよび SCM ビットを参照して確認してください。
切換えが完了する前に , ほかのクロックモードおよび低消費電力モードへの切換えを
行った場合 , 切り換わらない場合があります。
■ PLL クロック逓倍率の選択
CKSCR レジスタの CS1, CS0 ビットに "00B" ~ "11B" を書き込むことによって , 1 ~ 4
逓倍の 4 種類の PLL クロック逓倍率を選択できます。
■ マシンクロック
PLL 逓倍回路から出力される PLL クロック , メインクロック , サブクロックがマシン
クロックとなります。このマシンクロックが CPU および周辺機能に供給されます。メ
インクロック , PLL クロック , サブクロックは , CKSCR レジスタの MCS ビット , また
は SCS ビットへの書込みによりいずれかを選択できます。
図 6.4-1 に , マシンクロック選択の状態遷移図を示します。
110
第 6 章 クロック
図 6.4-1 マシンクロック選択の状態遷移図
(8)
メイン
MCS=1
MCM=1
(1)
SCS=1
SCM=1
CS1,CS0=XXB
(10)
メイン→サブ
MCS=1
MCM=1
(9)
SCS=0
SCM=1
CS1,CS0=XXB
(11) サブ→メイン
(6)
メイン→PLLx (2)
MCS=0
(3)
MCM=1
(4)
SCS=1
(5)
SCM=1
CS1,CS0=XXB
MCS=1
MCM=1
SCS=1
SCM=0
CS1,CS0=XXB
PLL1→メイン
(7) MCS=1
MCM=0
SCS=1
SCM=1
CS1,CS0=00B
PLL1逓倍
MCS=0
MCM=0
(6) SCS=1
SCM=1
CS1,CS0=00B
PLL2→メイン
MCS=1
(7) MCM=0
SCS=1
SCM=1
CS1,CS0=01B
PLL2逓倍
MCS=0
MCM=0
(6) SCS=1
SCM=1
CS1,CS0=01B
PLL3→メイン
(7) MCS=1
MCM=0
SCS=1
SCM=1
CS1,CS0=10B
PLL3逓倍
MCS=0
MCM=0
(6) SCS=1
SCM=1
CS1,CS0=10B
PLL4→メイン
PLL4逓倍
MCS=0
MCM=0
(6) SCS=1
SCM=1
CS1,CS0=11B
(7) MCS=1
MCM=0
SCS=1
SCM=1
CS1,CS0=11B
(16)
(10)
(8)
サブ
MCS=1
MCM=1
SCS=0
SCM=0
CS1,CS0=XXB
(8)
(12)
(13)
(14)
(15)
(8)
(8)
(8)
(8)
サブ→PLL
MCS=0
MCM=1
SCS=1
SCM=0
CS1,CS0=XXB
PLL1→サブ
MCS=1
(17)
MCM=0
SCS=0
SCM=1
CS1,CS0=00B
PLL2→サブ
MCS=1
MCM=0
(17)
SCS=0
SCM=1
CS1,CS0=01B
PLL3→サブ
MCS=1
(17)
MCM=0
SCS=0
SCM=1
CS1,CS0=10B
PLL4→サブ
MCS=1
(17)
MCM=0
SCS=0
SCM=1
CS1,CS0=11B
( 続く )
111
第 6 章 クロック
( 続き )
(1)
MCS ビット "0" 書込み
(2)
PLL クロック発振安定待ち終了 &CS1, CS0=00B
(3)
PLL クロック発振安定待ち終了 &CS1, CS0=01B
(4)
PLL クロック発振安定待ち終了 &CS1, CS0=10B
(5)
PLL クロック発振安定待ち終了 &CS1, CS0=11B
(6)
MCS ビット "1" 書込み ( ウォッチドッグリセットを含む )
(7)
PLL クロックとメインクロックの同期タイミング
(8)
SCS ビット "0" 書込み
(9)
サブクロック発振安定待ち時間終了 ( 最大 214/SCLK)
(10)
SCS ビット "1" 書込み
(11)
メインクロック発振安定待ち終了
(12)
メインクロック発振安定待ち終了 &CS1, CS0=00B
(13)
メインクロック発振安定待ち終了 &CS1, CS0=01B
(14)
メインクロック発振安定待ち終了 &CS1, CS0=10B
(15)
メインクロック発振安定待ち終了 &CS1, CS0=11B
(16)
SCS ビット "1" 書込み , MCS ビット "0" 書込み
(17)
PLL クロックとサブクロックの同期タイミング
MCS
: クロック選択レジスタ (CKSCR) の PLL クロック選択ビット B
MCM
: クロック選択レジスタ (CKSCR) の PLL クロック表示ビット B
SCS
: クロック選択レジスタ (CKSCR) のサブクロック選択ビット B
SCM
: クロック選択レジスタ (CKSCR) のサブクロック表示ビット B
CS1, CS0 : クロック選択レジスタ (CKSCR) の逓倍率選択ビット
<注意事項>
マシンクロックの初期値はメインクロック (MCS=1, SCS=1) です。
SCS, MCS ともに "0" のときは SCS が優先され , サブクロックが選択されます。
サブクロックモードから PLL クロックモードに切り換える場合は , CKSCR レジスタの発
振安定待ち時間選択ビット (WS1, WS0) は "10B" または "11B" を設定してください。
112
第 6 章 クロック
発振安定待ち時間
6.5
電源投入時 , ストップモード解除時 , サブクロックからメインクロックへの切換え時 ,
サブクロックから PLL クロックへの切換え時には , 発振クロックの発振が停止して
いるため , 発振開始後 , 発振安定待ち時間を確保する必要があります。また , メイン
クロックから PLL クロック , メインクロックからサブクロックへの切換え時も , 発
振安定待ち時間が必要となります。
■ 発振安定待ち時間
セラミックや水晶などの振動子は , 発振を開始してから固有の振動数 ( 発振周波数 ) で
安定して発振するまでに , 一般的に数 ms から数十 ms の時間が必要です。このため , 発
振開始直後は CPU の動作を禁止し , 発振安定待ち時間が経過して十分発振が安定した
時点で CPU にクロックを供給するようにしてください。振動子の種類 ( 水晶 , セラミッ
クなど ) によって発振が安定するまでの時間が異なるため , 使用する振動子に合わせて
適切な発振安定待ち時間を選択する必要があります。発振安定待ち時間は , クロック選
択レジスタ (CKSCR) の設定で選択できます。
メインクロックから PLL クロック , メインクロックからサブクロック , サブクロック
からメインクロック , サブクロックから PLL クロックに切り換えた場合 , CPU は切換
え前のクロックで動作しています。発振安定待ち時間が経過すると , 各クロックモード
に切り換わります。
図 6.5-1 に , 発振開始直後の動作を示します。
図 6.5-1 発振開始直後の動作
振動子の発振時間 発振安定待ち時間
通常動作開始またはPLLクロック/
サブクロックへの切換え
X1
発振開始
発振安定
113
第 6 章 クロック
6.6
振動子と外部クロックの接続
MB90980 シリーズは , システムクロック発生回路を内蔵しており , 外部に振動子を
接続してクロックを発生させます。また , 外部で生成したクロックを入力することも
できます。
■ 振動子と外部クロックの接続
● 水晶振動子またはセラミック振動子の接続例
水晶振動子またはセラミック振動子は , 図 6.6-1 の例で示すように接続してください。
図 6.6-1 水晶振動子またはセラミック振動子の接続例
MB90980シリーズ
X0(X0A)
X1(X1A)
● 外部クロックの接続例
図 6.6-2 の例で示すように , 外部クロックは X0 端子に接続し , X1 端子は開放にしてく
ださい。
図 6.6-2 外部クロックの接続例
MB90980シリーズ
X0(X0A)
X1(X1A)
開放
114
第7章
低消費電力モード
MB90980 シリーズの低消費電力モードについて説
明します。
7.1 低消費電力モードの概要
7.2 低消費電力制御回路のブロックダイヤグラム
7.3 低消費電力モード制御レジスタ (LPMCR)
7.4 CPU 間欠動作モード
7.5 スタンバイモード
7.6 スタンバイモードの状態遷移図
7.7 スタンバイモード , ホールド , リセット時の端子状態
7.8 低消費電力モード使用上の注意
115
第 7 章 低消費電力モード
7.1
低消費電力モードの概要
低消費電力モードは , 動作クロックの選択とクロックの発振制御によって , 消費電力
を低減させます。MB90980 シリーズでは , 以下の低消費電力モードがあります。
• クロックモード ( メインクロックモード , サブクロックモード )
• CPU 間欠動作モード (PLL クロック間欠動作モード , メインクロック間欠動作
モード , サブクロック間欠動作モード )
• スタンバイモード ( スリープモード , タイムベースタイマモード , 時計モード , ス
トップモード )
■ CPU 動作モードと消費電流
CPU 動作モードと消費電流の関係を図 7.1-1 に示します。
図 7.1-1 CPU 動作モードと消費電流
消費電流
数十mA
CPU
動作モード
4逓倍クロック
PLLクロックモード
3逓倍クロック
2逓倍クロック
1逓倍クロック
PLLクロック間欠動作モード
4逓倍クロック
3逓倍クロック
2逓倍クロック
1逓倍クロック
メインクロックモード (1/2クロックモード)
メインクロック間欠動作モード
数mA
サブクロックモード
サブクロック間欠動作モード
スタンバイモード
スリープモード
タイムベースタイマモード
時計モード
ストップモード
低消費電力モード
(注意事項) この図は,各種モードのイメージを示したもので,実際の消費電流とは異なる部分があります。
116
第 7 章 低消費電力モード
■ クロックモード
● メインクロックモード
メインクロックモードは , 発振クロック (HCLK) の 2 分周クロックで , CPU および周辺
機能を動作させます。メインクロックモード時には , PLL 逓倍回路が停止します。
● サブクロックモード
サブクロックモードは , サブクロック (SCLK) で , CPU および周辺機能を動作させます。
サブクロックモード時には , メインクロックおよび PLL 逓倍回路が停止します。
クロックモードには , 低消費電力モード以外のクロックモードで PLL クロックモード
もあります。クロックモードの詳細については ,「6.4 クロックモード」を参照してく
ださい。
■ CPU 間欠動作モード
CPU 間欠動作モード (PLL クロック間欠動作モード , メインクロック間欠動作モード ,
サブクロック間欠動作モード ) は , 周辺機能に高速クロックを供給した状態で CPU を
間欠動作させ , 消費電力を低減させます。
■ スタンバイモード
スタンバイモードは , 低消費電力制御回路による CPU へのクロックの供給停止 ( スリー
プモード ) や , CPU と周辺機能へのクロックの供給停止 ( タイムベースタイマモード ),
または発振クロックの停止 ( ストップモード ) によって消費電力を低減させます。
● スリープモード
スリープモードは , 各クロックモード動作中に CPU への動作クロックを停止させます。
CPU は停止し , 周辺機能はスリープモード移行前のクロックで動作します。
スリープモードに移行する際のクロックモードによって , メインスリープモード , PLL
スリープモード , サブスリープモードに分かれます。
● タイムベースタイマモード
タイムベースタイマモードは , 発振クロックとタイムベースタイマと時計タイマ以外
の動作を停止させます。タイムベースタイマと時計タイマ以外の機能が停止します。
● 時計モード
時計モードは , 時計タイマのみを動作させます。サブクロックのみ動作し , メインク
ロックおよび PLL 逓倍回路が停止します。
● ストップモード
ストップモードは , 原発振を停止させます。すべての機能が停止するため , 最も低い消
費電力でデータを保持します。
117
第 7 章 低消費電力モード
< 注意事項 >
ストップモードでは , 発振クロックは停止し , 最小の消費電力でデータが保持されます。
クロックモードの変更時において , ストップモードへの変更が完了する前に低消費電力
モ ー ド や ほ か の ク ロ ッ ク モ ー ド に 変 更 し な い で く だ さ い。 ク ロ ッ ク 選 択 レ ジ ス タ
(CKSCR) の MCM, SCM ビットを参照することで , クロックモードの変更が完了したこと
を確認してください。変更が完了する前にモードを別のクロックモードや低消費電力モー
ドに変更しようとすると , モードが変更されない場合があります。
118
第 7 章 低消費電力モード
7.2
低消費電力制御回路のブロックダイヤグラム
低消費電力制御回路は , 以下のブロックで構成されています。
• CPU 間欠動作セレクタ
• スタンバイ制御回路
• CPU クロック制御回路
• 周辺クロック制御回路
• 端子ハイインピーダンス制御回路
• 内部リセット発生回路
• 低消費電力モード制御レジスタ (LPMCR)
■ 低消費電力制御回路のブロックダイヤグラム
図 7.2-1 に , 低消費電力制御回路のブロックダイヤグラムを示します。
図 7.2-1 低消費電力制御回路のブロックダイヤグラム
低消費電力モード制御レジスタ(LPMCR)
STP
SLP
SPL
RST
TMD
CG1
CG0 予約
端子ハイインピー
ダンス制御回路
RST
内部リセット
発生回路
端子
CPU間欠動作
セレクタ
CPUクロック
ストップ,スリープ信号
スタンバイ
制御回路
割込み解除
内部リセット
間欠サイクル選択
CPUクロック
制御回路
2
端子ハイインピー
ダンス制御
ストップ信号
マシンクロック
周辺クロック
制御回路
周辺クロック
発振安定待ち解除
クロック発生部
クロックセレクタ
4分周
-
-
-
-
-
-
PLL2
PLL出力選択レジスタ(PLLOS)
SCLK
発振安定
待ち時間
セレクタ
2
2
サブクロック
発生回路
PLL逓倍回路
XOA 端子
X1A 端子
X0 端子
SCM
MCM
WS1
WS0
SCS
MCS
CS1
CS0
クロック選択レジスタ(CKSCR)
システム
クロック
発生回路
HCLK
2分周
MCLK
1024分周
2分周
4分周
4分周
4分周
2分周
タイムベースタイマ
X1 端子
ウォッチドッグタイマへ
HCLK:発振クロック
MCLK:メインクロック
SCLK:サブクロック
119
第 7 章 低消費電力モード
● CPU 間欠動作セレクタ
CPU 間欠動作セレクタは , CPU 間欠動作モード時の一時停止のサイクル数を選択しま
す。
● スタンバイ制御回路
スタンバイ制御回路は , CPU クロック制御回路および周辺クロック制御回路を制御し ,
低消費電力モードへの移行と解除を行います。
● CPU クロック制御回路
CPU クロック制御回路は , CPU に供給するクロックを制御する回路です。
● 周辺クロック制御回路
周辺クロック制御回路は , 周辺機能に供給するクロックを制御する回路です。
● 端子ハイインピーダンス制御回路
端子ハイインピーダンス制御回路は,タイムベースタイマモードおよびストップモード
時に , 外部端子をハイインピーダンスにする回路です。プルアップオプションが選択さ
れた端子に対しては , ストップモード時にプルアップ抵抗を無効とします。
● 内部リセット発生回路
内部リセット発生回路は , 内部リセット信号を発生させる回路です。
● 低消費電力モード制御レジスタ (LPMCR)
低消費電力モード制御レジスタ (LPMCR) は , スタンバイモードへの移行 / 解除および
CPU 間欠動作機能の設定などを行うレジスタです。
120
第 7 章 低消費電力モード
7.3
低消費電力モード制御レジスタ (LPMCR)
低消費電力モードの設定に使用するレジスタを説明します。
■ 低消費電力モード制御レジスタ (LPMCR)
図 7.3-1 に , 低消費電力モード制御レジスタ (LPMCR) の構成を示します。
図 7.3-1 低消費電力モード制御レジスタ (LPMCR) の構成
アドレス
0000A0 H
bit15
bit8bit7 bit6
(CKSCR)
STP
W
bit5
bit4
bit3
bit2
bit1
SLP
SPL
RST TMD
CG1
CG0 予約
W
R/W
W
R/W
R/W
初期値
bit0
R/W
00011000B
R/W
予約ビット
予約
書込み/読出しは動作に影響しません。
CG1 CG0
CPU クロック一時停止サイクル数ビット
0
0
0
1
8サイクル(CPUクロック : リソースクロック=1 : 約3~4)
1
0
16サイクル(CPUクロック : リソースクロック=1 : 約5~6)
1
1
32サイクル(CPUクロック : リソースクロック=1 : 約9~10)
0サイクル(CPUクロック=リソースクロック)
TMD 時計モード,またはタイムベースタイマモードビット
0
タイムベースタイマモードに移行
1
変化なし,ほかへの影響なし
RST
内部リセット信号発生ビット
0
3マシンサイクルの内部リセット信号を発生
変化なし,ほかへの影響なし
1
SPL
0
1
SLP
R/W
W
: リード/ライト可能
: ライトオンリ
: 初期値
端子状態指定ビット (時計・
タイムべースタイマ・ストップモード時)
保持
ハイインピーダンス
スリープモードビット
0
変化なし,ほかへの影響なし
1
スリープモードに移行
STP
ストップモードビット
0
変化なし,ほかへの影響なし
1
ストップモードに移行
121
第 7 章 低消費電力モード
表 7.3-1 低消費電力モード制御レジスタ (LPMCR) の各ビットの機能
ビット名
bit7
bit6
bit5
bit4
bit3
bit2,
bit1
bit0
122
機 能
ストップモードへの移行を指示するビットです。
・このビットに "1" を書き込むと , ストップモードへ移行します。
STP:
・このビットに "0" を書き込んでも動作に影響を与えません。
ストップモードビット
・リセット , または割込み要求発生で "0" に初期化されます。
・このビットを読み出した場合は , 常に "0" が読み出されます。
スリープモードへの移行を指示するビットです。
・このビットに "1" を書き込むと , スリープモードに移行します。
SLP:
・このビットに "0" を書き込んでも動作に影響を与えません。
スリープモードビット
・リセット , または割込み要求発生で "0" に初期化されます。
・このビットを読み出した場合は , 常に "0" が読み出されます。
時計モード , タイムベースタイマモード , ストップモードに移行した場
SPL:
合の外部端子の状態を設定します。
端子状態指定ビット
・このビットが "0" の場合 , 外部端子のレベルを保持します。
( 時計 , タイムベースタイマ ,
・このビットが "1" の場合 , 外部端子をハイインピーダンスにします。
ストップモード時 )
・リセットで "0" に初期化されます。
ソフトウェアリセットを発生させるビットです。
・このビットに "0" を書き込むと , 3 マシンサイクルの内部リセット信
RST:
号を発生します。
内部リセット
・このビットに "1" を書き込んでも動作に影響を与えません。
信号発生ビット
・このビットを読み出した場合は , 常に "1" が読み出されます。
時計モード , タイムベースタイマモードへの移行を指示するビットで
す。
・メインクロックモード , または PLL クロックモード時に , このビット
TMD:
に "0" を書き込むと , タイムベースタイマモードに移行します。
時計モード , タイムベースタ
・サブクロックモード時に , このビットに "0" を書き込むと , 時計モー
イマモードビット
ドに移行します。
・リセット , または割込み要求発生で "1" に初期化されます。
・このビットを読み出した場合は , 常に "1" が読み出されます。
CPU 間欠動作機能の CPU クロックの一時停止サイクル数を設定する
ビットです。
CG1, CG0:
・1 命令ごとに , 指定サイクル数 CPU クロック供給を停止します。
CPU クロック一時停止
・4 種類のクロック数から選択できます。
サイクル数ビット
・リセットで "00B" に初期化されます。
予約 :
予約ビット
書込み / 読出しは動作に影響しません。
第 7 章 低消費電力モード
■ 低消費電力モード制御レジスタへのアクセス
低消費電力モード制御レジスタへの書込みで , スタンバイモード ( ストップモード , ス
リープモード , タイムベースタイマモード , 時計モード ) への遷移が行われます。この場
合に使用する命令は , 表 7.3-2 の命令を使用するようにしてください。
表 7.3-2 の命令による低消費電力モード遷移命令の直後には必ず下記
内の命令
列を配置してください。
; 表 7.3-2 の低消費電力モード遷移命令
MOV LPMCR,#H’xx
NOP
NOP
JMP $+3
MOV A,#H’10
; 次の命令へのジャンプ
; 任意の命令
内の命令列以外が配置されるとスタンバイモード解除後の動作は保証されませ
ん。
C 言語を使用して低消費電力モード制御レジスタをアクセスする場合は , 「7.8 低消費
電力モード使用上の注意」の「■ スタンバイモード遷移のための低消費電力モード制
御レジスタ (LPMCR) へアクセスする際の注意事項」を参照してください。
低消費電力モード制御レジスタ (LPMCR) にワード単位で書き込む場合は , 偶数アドレ
スで書き込んでください。奇数アドレスで書き込むと , 誤動作の原因となることがあり
ます。
表 7.3-1 に示す以外の機能を制御する場合には , どの命令を使用してもかまいません。
表 7.3-2 低消費電力モードへ遷移する場合に使用する命令一覧
MOV io,#imm8
MOV io,A
MOV @RLi+disp8,A
MOVW io,#imm16
MOVW io,A
MOVW @RLi+disp8,A
SETB io:bp
CLRB io:bp
MOV dir,#imm8
MOV dir,A
MOV eam,#imm8
MOV addr16,A
MOV eam,Ri
MOV eam,A
MOVW dir,#imm16
MOVW dir,A
MOVW eam,#imm16
MOVW addr16,A
MOVW eam,RWi
MOVW eam,A
SETB dir:bp
CLRB dir:bp
SETB addr16:bp
CLRB addr16:bp
■ STP, SLP, TMD ビットの優先順位
ストップモード要求,スリープモード要求およびタイムベースタイマモード要求を同時
に行った場合は , 以下の優先順位で要求を処理します。
ストップモード要求>タイムベースタイマモード要求>スリープモード要求
123
第 7 章 低消費電力モード
7.4
CPU 間欠動作モード
CPU 間欠動作モードは , 外部バスや周辺機能を高速動作させたまま CPU を間欠動作
させることで , 消費電力を低減させます。
■ CPU 間欠動作モード
CPU 間欠動作モード (PLL クロック間欠動作モード , メインクロック間欠動作モード ,
サブクロック間欠動作モード ) は , レジスタ , 内蔵メモリ (ROM, RAM), I/O, 周辺機能お
よび外部バスにアクセスを行う場合に , CPU に供給するクロックを 1 命令実行ごとに
一定期間停止させて内部バスサイクルの起動を遅らせます。周辺機能に高速の周辺ク
ロックを供給した状態で CPU の実行速度を下げることによって低消費電力で処理を行
えます。
• 低消費電力モード制御レジスタ (LPMCR) の CPU クロック一時停止サイクル数選択
ビット (CG1, CG0) で CPU に供給するクロックの一時停止サイクル数を選択します。
• 外部バス動作は , 周辺機能と同じクロックを使用します。
• CPU 間欠動作モードを使用した場合の命令実行時間の算出は , レジスタ , 内蔵メモ
リ , 内蔵周辺機能および外部バスにアクセスを行う場合の命令実行回数に一時停止
サイクル数をかけた補正値を通常の実行時間に加えることで求められます。
図 7.4-1 に CPU 間欠動作モード時の動作クロックを示します。
図 7.4-1 CPU 間欠動作時のクロック
周辺クロック
CPUクロック
一時停止サイクル
1 命令実行
サイクル
内部バス起動
124
第 7 章 低消費電力モード
スタンバイモード
7.5
スタンバイモードは , CPU または周辺機能への動作クロックの供給の停止や , 発振
クロックの停止によって消費電力を低減させます。スタンバイモードには , スリープ
(PLL スリープ , メインスリープ , サブスリープ ), タイムベースタイマ , 時計 , ストッ
プの各モードがあります。
■ スタンバイモード時の動作状態
表 7.5-1 に , スタンバイモード時の動作状態を示します。
表 7.5-1 スタンバイモード時の動作状態
スタンバイモード
PLL スリープ
モード
スリープ
モード
メインスリープ
モード
サブスリープ
モード
タイムベース
タイマモード
(SPL=0)
タイムベース
タイマモード タイムベース
タイマモード
(SPL=1)
時計モード
(SPL=0)
時計
モード
時計モード
(SPL=1)
ストップモード
(SPL=0)
ストップ
モード
ストップモード
(SPL=1)
*
1
*2:
SPL
SLP
STP
TMD
MCS
SCS
Hi-Z
RST
移行
条件
SCS=1
MCS=0
SLP=1
SCS=1
MCS=1
SLP=1
SCS=0
SLP=1
メイン
クロック
サブ
クロック
マシン
クロック
CPU
周辺
端子
動作
動作
動作
動作
停止
動作
SCS=1
TMD=0
保持
動作
停止
停止 *1
SCS=1
TMD=0
SCS=0
TMD=0
SCS=0
TMD=0
解除
方法
Hi-Z
リセット
または
割込み
保持
停止
停止 *2
Hi-Z
停止
保持
STP=1
停止
停止
STP=1
Hi-Z
: タイムベースタイマ , 時計タイマは動作します。
: 時計タイマは動作します。
: 低消費電力モード制御レジスタ (LPMCR) の端子状態指定ビット
: 低消費電力モード制御レジスタ (LPMCR) のスリープモードビット
: 低消費電力モード制御レジスタ (LPMCR) のストップモードビット
: 低消費電力モード制御レジスタ (LPMCR) の時計 , タイムベースタイマモードビット
: クロック選択レジスタ (CKSCR) のマシンクロック選択ビット
: クロック選択レジスタ (CKSCR) のマシンクロック選択ビット ( サブ )
: ハイインピーダンス
: 外部リセット端子
125
第 7 章 低消費電力モード
スリープモード
7.5.1
スリープモードは , CPU の動作クロックを停止させます。CPU は停止し , 周辺機能
はスリープモード移行前のクロックで動作を続行します。
■ スリープモードへの遷移
低消費電力モード制御レジスタ (LPMCR) のスリープモードビット (SLP) に "1", 時計
モードビット / タイムベースタイマモードビット (TMD) に "1", ストップモードビット
(STP) に "0" を書き込むとスリープモードに移行します。
<注意事項>
LPMCR レジスタの SLP ビットと STP ビットに同時に "1" を書き込むと , STP ビットを
優先し , ストップモードへ移行します。
低消費電力モード制御レジスタの SLP ビットに "1", TMD ビットに "0" を同時に書き込む
と , TMD ビットを優先し , タイムベースタイマモード , または時計モードに移行します。
● データ保持機能
スリープモード中は , アキュムレータなどの専用レジスタと内部 RAM の内容を保持し
ます。
● ホールド機能
スリープモード中は , 外部バスホールド機能は動作し , ホールド要求があるとホールド
状態になります。
● 割込み要求発生中の動作
LPMCR レジスタの SLP ビットに "1" を書き込んだ場合に , 割込み要求が発生している
と , スリープモードには移行しません。そのため , CPU は割込みを受け付けない状態で
あれば次の命令を実行し,受け付ける状態であれば即座に割込み処理ルーチンへ分岐し
ます。
● 端子状態
スリープモード中は , バス入出力またはバス制御として使用されている端子以外は , 直
前の状態を保持します。
126
第 7 章 低消費電力モード
■ スリープモードの解除
低消費電力制御回路は,リセット入力または割込みの発生によってスリープモードを解
除します。
● リセットによる復帰
リセットによってメインクロックモードに初期化されます。
● 割込みによる復帰
スリープモード中に , 周辺回路などから割込みレベルが "7" より高い割込み要求が発生
した場合は , スリープモードが解除されます。スリープモードの解除後は , 通常の割込
み処理と同様にコンディションコードレジスタ (CCR) の I フラグ , インタラプトレベル
マスクレジスタ (ILM) および割込み制御レジスタ (ICR) の設定によって , 割込み要求の
判定が行われます。割込みが受け付けられる場合は , CPU は割込み処理を実行します。
割込みが受け付けられない場合は,スリープモードを指定した命令の次の命令から処理
を続行します。
図 7.5-1 に , 割込み発生によるスリープモードの解除を示します。
図 7.5-1 割込み発生によるスリープモードの解除
周辺機能の割込み
イネーブルフラグ設定
INT発生 (IL<7)
NO
スリープ解除しない
スリープ解除しない
YES
I=0
YES
次の命令実行
スリープ解除する
NO
ILM<IL
YES
次の命令実行
NO
割込み実行
<注意事項>
割込み処理を実行する場合 , 通常はスリープモードを指定した命令の次の命令を実行した
後に割込み処理に移行します。ただし , スリープモードへの移行と外部バスホールド要求
の受付けが同時であった場合 , 次の命令を実行する前に割込み処理に移行することがあり
ます。
127
第 7 章 低消費電力モード
7.5.2
タイムベースタイマモード
タイムベースタイマモードは , 発振クロック , タイムベースタイマおよび時計タイマ
だけを動作させるモードです。タイムベースタイマと時計タイマ以外の周辺機能は
停止します。
■ タイムベースタイマモードへの遷移
PLL クロックモードまたはメインクロックモード時 ( クロック選択レジスタ (CKSCR)
のサブクロック表示ビット (SCM)=1) に , 低消費電力モード制御レジスタ (LPMCR) の
時計モード , タイムベースタイマモードビット (TMD) に "0" を書き込むと , タイムベー
スタイマモードに移行します。
● データ保持機能
タイムベースタイマモードでは , アキュムレータなどの専用レジスタと内部 RAM の内
容を保持します。
● ホールド機能
タイムベースタイマモード中は , 外部バスホールド機能は停止し , ホールド要求が入力
されてもその要求を受け付けません。タイムベースタイマモードへの移行中にホール
ド要求が入力された場合 , バスをハイインピーダンスにした状態で , HAK 信号が "L" に
ならないことがあります。
● 割込み要求発生中の動作
LPMCR レジスタの TMD ビットに "0" を書き込んだ場合 , 割込み要求が発生していて
も , タイムベースタイマモードに移行しません。
● 端子状態
タイムベースタイマモード中の外部端子を直前の状態に保持するか,ハイインピーダン
ス状態にするかは , LPMCR レジスタの端子状態指定ビット (SPL) で制御できます。
128
第 7 章 低消費電力モード
■ タイムベースタイマモードの解除
低消費電力制御回路は,リセット入力または割込み要求の発生によりタイムベースタイ
マモードを解除します。
● 外部リセットによる復帰
外部リセットによってタイムベースタイマモードが解除された場合は,メインクロック
モードに初期化されます。
● 割込みによる復帰
タイムベースタイマモード中に周辺回路などから割込みレベルが "7" より高い割込み
要求が発生した場合は ( 割込み制御レジスタ (ICR) の IL2, IL1, IL0=111B 以外の場合 ),
低消費電力制御回路はタイムベースタイマモードを解除します。タイムベースタイマ
モードの解除後は , 通常の割込み処理と同様にコンディションコードレジスタ (CCR)
の I フラグ , インタラプトレベルマスクレジスタ (ILM) および割込み制御レジスタ (ICR)
の設定により割込み要求の判定が行われます。割込みが受け付けられる場合は , 割込み
処理を実行します。割込みが受け付けられない場合は , タイムベースタイマモードに入
る前の次の命令から処理を続行します。
<注意事項>
割込み処理を実行する場合 , 通常はタイムベースタイマモードを指定した命令の次の命令
を実行した後に割込み処理に移行します。ただし , タイムベースタイマモードへの移行と
外部バスホールド要求の受付けが同時であった場合 , 次の命令を実行する前に割込み処理
に移行することがあります。
129
第 7 章 低消費電力モード
時計モード
7.5.3
時計モードは , サブクロックと時計タイマ以外の動作を止めます。
■ 時計モードへの遷移
サブクロックモード時 ( クロック選択レジスタ (CKSCR) のサブクロック表示ビット
(SCS)=0), 低消費電力モード制御レジスタ (LPMCR) の時計モード . タイムベースタイマ
モードビット (TMD) に "0" を書き込むと時計モードに移行します。
● データ保持機能
時計モードでは,アキュムレータなどの専用レジスタと内部RAMの内容を保持します。
● ホールド機能
時計モード中は , 外部バスホールド機能は停止し , ホールド要求が入力されても , その
要求は受け付けません。
<注意事項>
時計モードへの遷移中にホールド要求が入力された場合 , バスをハイインピーダンスにし
た状態で HAK 信号が "L" にならないことがあります。
● 割込み要求発生中の動作
LPMCR レジスタの TMD ビットに "0" を書き込んだ場合 , 割込み要求が発生していて
も時計モードに移行しません。
● 端子状態の設定
時計モード中の外部端子を直前の状態に保持するか,ハイインピーダンス状態にするか
は LPMCR レジスタの端子状態指定ビット (SPL) で制御できます。
130
第 7 章 低消費電力モード
■ 時計モードの解除
低消費電力制御回路は,リセット入力または割込み要求の発生により時計モードを解除
します。
● リセットによる復帰
リセット要因による時計モードの解除の場合は,時計モードを解除した上で発振安定待
ちリセット状態になります。発振安定待ち時間経過後 , リセットシーケンスは実行され
ます。
● 割込みによる復帰
時計モード中に周辺回路などから割込みレベルが "7" より高い割込み要求が発生した
場合は , ( 割込み制御レジスタ (ICR) の IL2, IL1, IL0 が "111B" 以外 ), 低消費電力制御回
路は時計モードを解除し , 即座にサブクロックモードに移行します。サブクロックモー
ドに移行後は , 通常の割込み処理と同様にコンディションコードレジスタ (CCR) の I フ
ラグ , インタラプトレベルマスクレジスタ (ILM), および割込み制御レジスタ (ICR) の
設定により割込み要求の判定が行われます。割込みが受け付けられる場合は , 割込み処
理を実行します。割込みが受け付けられない場合は , 時計モードに入る前の次の命令か
ら処理を続行します。
<注意事項>
割込み処理を実行する場合 , 通常は時計モードを指定した命令の次の命令を実行した後に
割込み処理に移行します。ただし , 時計モードへの移行と外部バスホールド要求の受付け
が同時であった場合 , 次の命令を実行する前に割込み処理に移行することがあります。
図 7.5-2 に , 時計モードの解除動作を示します。
図 7.5-2 時計モードの解除 ( 外部リセット )
RST端子
時計モード
メインクロック
PLLクロック
発振安定待ち
停止中
発
振
発振中
停止中
サブクロック
発振中
CPUクロック
停止中
CPU動作
停止中
メインクロック
処理
リセットシーケンス
リセット解除
時計モード解除
131
第 7 章 低消費電力モード
7.5.4
ストップモード
ストップモードは , 原発振を停止させることにより , すべての機能が停止します。最
も低消費電力でデータを保持します。
■ ストップモードへの遷移
低消費電力モード制御レジスタ (LPMCR) のストップモードビット (STP) に "1" を書き
込むとストップモードに移行します。
● データ保持機能
ストップモード中は , アキュムレータなどの専用レジスタと内部 RAM の内容を保持し
ます。
● ホールド機能
ストップモード中は外部バスホールド機能は停止し , ホールド要求が入力されても , そ
の要求を受け付けません。
ストップモードへの遷移中にホールド要求が入力された場合,バスをハイインピーダン
スにした状態で HAK 信号が "L" にならないことがあります。
● 割込み要求発生中の動作
LPMCR レジスタの STP ビットに "1" を書き込んだ場合に , 割込み要求が発生していて
もストップモードに移行しません。
● 端子状態の設定
ストップモード中の外部端子を直前の状態に保持するか,ハイインピーダンス状態にす
るかは LPMCR レジスタの端子状態指定ビット (SPL) で指定できます。
132
第 7 章 低消費電力モード
■ ストップモードの解除
低消費電力制御回路は,リセット入力または割込みの発生によりストップモードを解除
します。ストップモードからの復帰の場合 , 発振クロック (HCLK) およびサブクロック
(SCLK) が停止しているため , メインクロック発振安定待ち時間またはサブクロック発
振安定待ち時間を経て , ストップモードが解除されます。
● リセットによる復帰
リセット要因によるストップモード解除の場合は,ストップモードを解除した上で発振
安定待ちリセット状態になります。発振安定待ち時間経過後 , リセットシーケンスは実
行されます。
● 割込みによる復帰
ストップモード中に周辺回路などから割込みレベルが "7" より高い割込み要求が発生
した場合 ( 割込み制御レジスタ (ICR) の IL2, IL1, IL0=111B 以外の場合 ), 低消費電力制
御回路はストップモードを解除します。ストップモードの解除後は , クロック選択レジ
スタ (CKSCR) の発振安定待ち時間選択ビット (WS1, WS0) で指定されたメインクロッ
クの発振安定待ち時間が経過した後で,通常の割込み処理と同様にコンディションコー
ドレジスタ (CCR) の I フラグ , インタラプトレベルマスクレジスタ (ILM) および割込み
制御レジスタ (ICR) の設定により割込み要求の判定が行われます。割込みが受け付け
られる場合は , 割込み処理を実行します。割込みが受け付けられない場合は , ストップ
モードに入る前の次の命令から処理を続行します。
<注意事項>
• 割込み処理を実行する場合,通常はストップモードを指定した命令の次の命令を実行し
た後に割込み処理に移行します。ただし , ストップモードへの移行と外部バスホールド
要求の受付けが同時であった場合,次の命令を実行する前に割込み処理に移行すること
があります。
• PLL ストップモード中は , メインクロックおよび PLL 逓倍回路が停止しているため ,
PLL ストップモードから復帰する場合は , メインクロック発振安定待ち時間および PLL
クロック発振安定待ち時間を確保する必要があります。この場合の発振安定待ち時間
は , クロック選択レジスタの発振安定待ち時間選択ビット (CKSCR:WS1, WS0) に設定
された値に従い , メインクロック発振安定待ち時間および PLL クロック発振安定待ち
時間を同時にカウントしますので , CKSCR:WS1, WS0 ビットには , 発振安定待ち時間
の長いほうに合わせて値を設定してください。ただし , PLL クロック発振安定待ち時間
は 214/HCLK 以上必要ですので , CKSCR:WS1, WS0 ビットには "10B" または "11B" を
設定してください。
図 7.5-3 に , ストップモードの解除動作を示します。
図 7.5-3 ストップモードの解除 ( 外部リセット )
RST端子
ストップモード
メインクロック
発振安定待ち
発振中
PLLクロック
サブクロック
発
振
停止中
メインクロック
CPUクロック
CPU動作
停止中
処理
リセットシーケンス
リセット解除
ストップモード解除
133
第 7 章 低消費電力モード
スタンバイモードの状態遷移図
7.6
MB90980 シリーズの動作状態の遷移と遷移条件を示します。
■ 状態遷移図
図 7.6-1 に , MB90980 シリーズの動作状態の遷移と遷移条件を示します。
図 7.6-1 状態遷移と遷移条件
外部リセット,ウォッチドッグタイマリセット,ソフトウェアリセット
電源投入
リセット
パワーオンリセット
SCS=0
SCS=1
発振安定待ち終了
メインクロックモード
SLP=1
MCS=0
MCS=1
割込み
PLLクロックモード
SLP=1
メインスリープモード
TMD=0
割込み
TMD=0
発振安定待ち終了
メインクロック発振安定待ち
134
割込み
SLP=1
割込み
サブスリープモード
TMD=0
PLLタイムベース
タイマモード
STP=1
メインストップモード
割込み
SCS=1
割込み
サブクロックモード
PLLスリープモード
メインタイムベース
タイマモード
STP=1
SCS=0
割込み
時計モード
STP=1
PLLストップモード
割込み
発振安定待ち終了
PLLクロック発振安定待ち
サブストップモード
割込み
発振安定待ち終了
サブクロック発振安定待ち
第 7 章 低消費電力モード
■ 低消費電力モードの動作状態
表 7.6-1 に , 低消費電力モードの動作状態を示します。
表 7.6-1 低消費電力モードの動作状態
動作状態
PLL クロックモード
PLL スリープモード
PLL タイムベースタイマモード
PLL ストップモード
PLL クロック発振安定待ち
メインクロックモード
メインスリープモード
メインタイムベースタイマモード
メインストップモード
メインクロック発振安定待ち
サブクロックモード
サブスリープモード
時計モード
サブストップモード
サブクロック発振安定待ち
パワーオンリセット
リセット
PLL
メイン
サブ
クロック クロック クロック
CPU
動作
動作
動作
動作
停止
動作
停止
動作
停止
動作
動作
動作
停止
動作
停止
停止
動作
停止
動作
停止
動作
動作
停止
停止
停止
動作
動作
動作
停止
動作
停止
停止
周辺
動作
停止
動作
停止
動作
時計
タイム
ベース
タイマ
動作
動作
停止
動作
停止
動作
動作
動作
停止
動作
停止
動作
動作
停止
停止
動作
停止
動作
クロック
ソース
PLL
クロック
メイン
クロック
停止
サブ
クロック
動作
メイン
クロック
135
第 7 章 低消費電力モード
7.7
スタンバイモード , ホールド , リセット時の端子状態
スタンバイモード , ホールド , リセット時の端子の状態をメモリアクセスモードごと
に示します。
■ シングルチップモード時の端子状態
表 7.7-1 に , シングルチップモード時の端子状態を示します。
表 7.7-1 シングルチップモード時の端子状態
端子名
スリープ時
ストップ時
SPL=0
SPL=1
ホールド時
リセット時
P27 ~ P24
P37 ~ P30
P42 ~ P40
P67 ~ P60
入力遮断 / 直前の
入力遮断 /
入力不可 /
直前の状態を
P77, P76
出力 Hi-Z
保持 *2
状態を保持 *2, *3
出力 Hi-Z*3
本状態はない
P74 ~ P70
P97, P96
P93 ~ P90
PA3 ~ PA0
P87 ~ P80
入力不可
入力可能 *1
入力可能 *1
*1: 出力状態として使用している場合には , ほかのポートと同じです。入力可能とは , 入力機能が使用可能な状
態であることを意味するので , プルアップ / プルダウン , または外部からの入力が必要です。
*2: 本モードになる直前に出力していた状態をそのまま出力します。または入力であれば入力不可を意味しま
す。
入力不可とは , 端子の入力ゲートの動作は許可状態ですが , 内部回路が動作していないので , 端子の内容が
内部で受け付けられない状態を意味します。
*3: 入力遮断状態では , 入力はマスクされ "L" レベルが内部に伝わります。出力 Hi-Z は端子駆動用トランジス
タを駆動禁止状態にし , 端子をハイインピーダンスにすることを意味します。
136
第 7 章 低消費電力モード
7.8
低消費電力モード使用上の注意
低消費電力モードを使用する際には , 以下の点にご注意ください。
• スタンバイモードへの移行と割込み
• スタンバイモードの割込みによる解除
• ストップモード解除時
• 発振安定待ち時間
• スタンバイモード遷移のための低消費電力モード制御レジスタ (LPMCR) へアクセ
スする際の注意事項
■ スタンバイモードへの移行と割込み
周辺機能から CPU に対して割込み要求が発生している場合は , 低消費電力モード制御
レジスタ (LPMCR) のストップモードビット (STP) とスリープモードビット (SLP) に "1",
または時計モード . タイムベースタイマモードビット (TMD) に "0" を設定しても無視
されるため , 各スタンバイモードへは移行しません ( 割込み処理後にも , スタンバイ
モードへの移行はしません )。
CPU が割込み処理中の場合は , その割込み要求フラグビットがクリアされています。ほ
かに割込み要求がなければ , スタンバイモードへ移行できます。
■ スタンバイモードの割込みによる解除
スリープモード , タイムベースタイマモードおよびストップモード中に , 周辺機能など
から割込みレベルが "7" より高い割込み要求が発生した場合 , スタンバイモードは解除
されます (CPU が割込みを受け付けなくてもモードは解除されます )。
割込みによるスタンバイモードの解除後は , 通常の割込み動作として , 割込み要求に対
応する割込みレベル設定ビット (ICR レジスタの IL2, IL1, IL0 ビット ) の優先度がイン
タラプトレベルマスクレジスタ (ILM) より高く , コンディションコードレジスタ (CCR)
の I フラグによって割込みが許可 (I=1) されている場合は , 割込み処理ルーチンへ分岐
します。割込みが受け付けられない場合は , スタンバイモードを指定した命令の次の命
令から動作を再開します。
割込み処理を実行する場合,通常はスタンバイモードを指定した命令の次の命令を実行
した後に割込み処理に移行します。ただし , スタンバイモードに移行した場合の条件に
よっては , 次の命令を実行する前に割込み処理に移行することがあります。
スタンバイモード復帰直後に割込み処理ルーチンへ分岐させたくない場合は,スタンバ
イモード設定の前に割込み禁止をするなどの対策が必要です。
137
第 7 章 低消費電力モード
■ 発振安定待ち時間
● 発振クロック発振安定待ち時間
ストップモード中は , 原発振用の発振器が停止しているため , 発振安定待ち時間を確保
する必要があります。発振安定待ち時間をクロック選択レジスタ (CKSCR) の発振安定
待ち時間選択ビット (WS1, WS0) で設定します。
CKSCRレジスタの発振安定待ち時間選択ビット(WS1, WS0)に"00B"を設定する場合は,
メインクロック時のみにしてください。
● PLL クロック発振安定待ち時間
メインクロックモード中は , PLL 逓倍回路が停止しているため , PLL クロックモードに
移行する場合は , PLL クロック発振安定待ち時間を確保する必要があります。PLL ク
ロック発振安定待ち時間中はメインクロックで動作します。
メインクロックモードから PLL クロックモードに切り換えた場合の PLL クロック発振
安定待ち時間は , 214/HCLK(HCLK: 発振クロック ) に固定されています。
サブクロックモード中は , メインクロックおよび PLL 逓倍回路が停止しているため ,
PLL クロックモードに移行する場合は , メインクロック発振安定待ち時間および PLL
クロック発振安定待ち時間を確保する必要があります。この場合の発振安定待ち時間
は , クロック選択レジスタの発振安定待ち時間選択ビット (CKSCR:WS1, WS0) に設定
された値に従います。メインクロック発振安定待ち時間および PLL クロック発振安定
待ち時間を同時にカウントしますので , CKSCR:WS1, WS0 ビットには , 発振安定待ち
時間の長いほうに合わせて値を設定してください。ただし , PLL クロック発振安定待
ち時間は 214/HCLK 以上必要ですので , CKSCR: WS1, WS0 ビットには "10B" または
"11B" を設定してください。
PLL ストップモード中は , メインクロックおよび PLL 逓倍回路が停止しているため ,
PLL ストップモードから復帰する場合は , メインクロック発振安定待ち時間および PLL
クロック発振安定待ち時間を確保する必要があります。この場合の発振安定待ち時間
は , クロック選択レジスタの発振安定待ち時間選択ビット (CKSCR:WS1, WS0) に設定
された値に従います。メインクロック発振安定待ち時間および PLL クロック発振安定
待ち時間を同時にカウントしますので , CKSCR:WS1, WS0 ビットには , 発振安定待ち
時間の長いほうに合わせて値を設定してください。ただし , PLL クロック発振安定待
ち時間は 214/HCLK 以上必要ですので , CKSCR: WS1, WS0 ビットには "10B" または
"11B" を設定してください。
■ クロックモードの切換え
クロックモードを切り換えた場合 , 切換えが完了するまでは , ほかのクロックモードお
よび低消費電力モードへ切り換えないでください。切換えの完了はクロック選択レジ
スタ (CKSCR) の MCM ビットおよび SCM ビットを確認してください。切換えが完了
する前に , ほかのクロックモードおよび低消費電力モードへ切り換えた場合 , 切り換わ
らない場合があります。
138
第 7 章 低消費電力モード
■ スタンバイモード遷移のための低消費電力モード制御レジスタ (LPMCR) へアクセ
スする際の注意事項
● アセンブラ言語を使用して低消費電力モード制御レジスタ (LPMCR) にアクセスする場合
低消費電力モード制御レジスタ (LPMCR) においてスタンバイモードに移行する設定を
行う場合は , 表 7.3-2 の命令を使用してください。
表 7.3-2 の命令による低消費電力モード遷移命令の直後には必ず下記
内の命令列
を配置してください。
MOV LPMCR,#H’xx
NOP
NOP
JMP $+3
MOV A,#H’10
; 表 7.3-2 の低消費電力モード遷移命令
; 次の命令へのジャンプ
; 任意の命令
内の命令列以外が配置されるとスタンバイモード解除後の動作は保証されま
せん。
● C 言語を使用して低消費電力モード制御レジスタ (LPMCR) にアクセスする場合
低消費電力モード制御レジスタ (LPMCR) においてスタンバイモードに移行する設定を
行う場合は , 以下の (1) から (3) のいずれかの方法でアクセスしてください。
(1) スタンバイモードに遷移させる命令を関数化し , スタンバイモード遷移命令の後
に __wait_nop() のビルトイン関数を 2 個挿入してください。関数内で , スタンバイ
復帰の割込み以外の割込みが発生する可能性がある場合は , コンパイル時に最適
化を実施し , LINK/UNLINK 命令の発生を抑止してください。
例 ( 時計モードまたはタイムベースタイマモード遷移関数の場合 )
void enter_watch(){
IO_LPMCR.byte = 0x10; /* LPMCR の TMD ビットに "0" をセット */
__wait_nop();
__wait_nop();
}
(2) スタンバイモードに遷移させる命令を __asm 文で記述し , スタンバイモード遷移
命令の後に 2 個の NOP と JMP 命令を挿入してください。
例 ( スリープモード遷移の場合 )
__asm(" MOV I:_IO_LPMCR, #H’58); /* LPMCR の SLP ビットに "1" をセット
*/
__asm(" NOP");
__asm(" NOP");
(3) スタンバイモードに遷移させる命令を #pragma asm ~ #pragma endasm 間に記述し ,
スタンバイモード遷移命令の後に 2 個の NOP と JMP 命令を挿入してください。
例 ( ストップモード遷移の場合 )
#pragma asm
MOV I:_IO_LPMCR, #H’98 /* LPMCR の STP ビットに "1" をセット */
NOP
NOP
JMP $+3
/* 次の命令へのジャンプ
*/
#pragma endasm
139
第 7 章 低消費電力モード
140
第8章
メモリアクセスモード
動作モードとメモリアクセスモードについて説明
します。
8.1 メモリアクセスモードの概要
8.2 モード端子 (MD2 ~ MD0)
8.3 モードデータ
141
第 8 章 メモリアクセスモード
8.1
メモリアクセスモードの概要
MB90980 シリーズでは , 各種のモードがあります。リセット時のモード端子の設定
と , モードフェッチされたモードデータによって各モードが設定されます。
■ メモリアクセスモードの概要
表 8.1-1 モード端子とモード
動作モード
バスモード
RUN モード
シングルチップモード
フラッシュプログラミング
-
■ 動作モード
動作モードとは , デバイスの動作状態を制御するモードを示すもので , MDx モード設
定用端子とモードデータ内の Mx ビットで指定します。動作モードを選択することで ,
通常動作の起動や , フラッシュメモリの書込みを行うことができます。
■ バスモード
MB909980 シリーズについては , 外部バス機能はサポートされていません。このため ,
シングルチップモードで使用してください。
142
第 8 章 メモリアクセスモード
8.2
モード端子 (MD2 ~ MD0)
モード端子は MD2 ~ MD0 の 3 本の外部端子で , リセットベクタとモードデータの
取込み方法を指定します。
■ モード端子 (MD2 ~ MD0) の設定
表 8.2-1 モード端子の設定内容
MD2
MD1
MD0
0
0
0
0
0
1
0
1
0
0
1
1
1
1
1
0
0
1
0
1
0
1
1
1
モード名
リセットベクタ
アクセス領域
備考
設定禁止
内部ベクタ
モード
内部
リセットシーケンス以降は
モードデータで制御
設定禁止
フラッシュ
メモリモード
フラッシュシリアル書込み
パラレルライタ使用時の
モード
( 注意事項 ) MD2 ~ MD0:0=VSS, または 1=VCC としてください。
フラッシュシリアル書込みモードはモード端子を設定するだけでは実
行できません。ほかの端子の設定も必要です。詳細は,「第 24 章
MB90F983 シリアル書込み接続例」を参照してください。
143
第 8 章 メモリアクセスモード
8.3
モードデータ
モードデータは "FFFFDFH" 番地のメモリ上にあり , リセットシーケンス後の動作を
指定します。モードデータは , モードフェッチで CPU に自動的に取り込まれます。
■ モードデータ
モードデータは "FFFFDFH" 番地に存在し , リセットシーケンス実行中に CPU コア内の
モードレジスタに取り込まれます。CPU は , このモードデータを基にしてメモリアク
セスモードを設定します。モードレジスタの内容を変更できるのは , リセットシーケン
スだけです。また , モードデータの設定は , リセットシーケンス以降に有効となります。
モードデータの構成を , 下図に示します。
図 8.3-1 モードデータの構成
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
モードデータ
M1
M0
0
バス設定ビット
0
0
0
0
0
機能拡張ビット(予約領域)
■ バスモード設定ビット (M1, M0)
M1, M0 ビットは , リセットシーケンス終了後の動作モードを指定するビットです。
表 8.3-1 に , M1, M0 ビットの設定内容を示します。
表 8.3-1 M1, M0 ビットの設定内容
144
M1
M0
機 能
0
0
1
1
0
1
0
1
シングルチップモード
( 設定禁止 )
第 8 章 メモリアクセスモード
■ アクセス領域と物理アドレスの対応
アクセス領域と物理アドレスの対応を , 図 8.3-2 に示します。
図 8.3-2 アクセス領域と物理アドレスの関係
シングルチップ
FFFFFFH
ROM領域
アドレス#1
FC0000H
010000H
ROM領域
FFバンクのイメージ
アドレス#2
アドレス#3
レジスタ
RAM
000100H
0000D0H
周 辺
000000H
内部アクセス
アクセスなし
<注意事項>
「アドレス #1」,「アドレス #2」,「アドレス #3」は , 各品種に依存して決まるアドレスと
なります。詳細は ,「付録 A メモリマップ」を参照してください。
■ モード端子とモードデータの関係 ( 推奨例 )
表 8.3-2 に , モード端子とモードデータの関係を示します。
表 8.3-2 モード端子とモードデータの関係
モード
MD2
MD1
MD0
M1
M0
シングルチップ
0
1
1
0
0
<注意事項>
MB90980 シリーズでは , シングルチップモードのみでの使用となります。
145
第 8 章 メモリアクセスモード
146
第9章
I/O ポート
I/O ポートの機能およびレジスタについて説明しま
す。
9.1 I/O ポートの概要
9.2 I/O ポートのレジスタ
147
第 9 章 I/O ポート
9.1
I/O ポートの概要
I/O ポートの機能概要を示します。
■ I/O ポートの概要
I/O ポートは , ポートデータレジスタ (PDR) によって , CPU からデータを I/O 端子に出
力したり , I/O 端子に入力された信号を CPU に取り込んだりする機能をもっています。
また , I/O ポートはポート方向レジスタ (DDR) によって , I/O 端子の入出力の方向をビッ
ト単位で任意に設定することができます。
MB90980 シリーズには , 48 本の入出力端子があります。
148
第 9 章 I/O ポート
9.2
I/O ポートのレジスタ
I/O ポートで使用するレジスタの構成および機能について説明します。
■ I/O ポートのレジスタ
I/O ポートには以下のレジスタがあります。
• ポートレジスタ (PDR2 ~ PDR4,PDR6 ~ PDRA)
• ポート方向レジスタ (DDR2 ~ DDR4,DDR6 ~ DDRA)
• 出力端子レジスタ (ODR7, ODR4)
• アナログ入力許可レジスタ (ADER)
• アップダウンタイマ入力許可レジスタ (UDER)
149
第 9 章 I/O ポート
9.2.1
ポートレジスタ (PDR2 ~ PDR4,PDR6 ~ PDRA)
ポートレジスタ (PDR2 ~ PDR4,PDR6 ~ PDRA) の構成および機能について説明
します。
■ ポートレジスタ (PDR2 ~ PDR4,PDR6 ~ PDRA)
図 9.2-1 に , ポートデータレジスタ (PDR2 ~ PDR4,PDR6 ~ PDRA) の一覧を示します。
図 9.2-1 ポートデータレジスタ (PDR2 ~ PDR4,PDR6 ~ PDRA) の一覧
PDR2
アドレス:000002 H
PDR3
アドレス:000003 H
PDR4
アドレス:000004 H
PDR6
アドレス:000006 H
PDR7
アドレス:000007 H
PDR8
アドレス:000008 H
PDR9
アドレス:000009 H
PDRA
アドレス:00000A H
初期値
アクセス
bit7
P27
bit6
P26
bit5
P25
bit4
P24
bit3
-
bit2
-
bit1
-
bit0
-
XXXXXXXXB R/W *
bit7
P37
bit6
P36
bit5
P35
bit4
P34
bit3
P33
bit2
P32
bit1
P31
bit0
P30
XXXXXXXXB R/W *
bit7
-
bit6
-
bit5
-
bit4
-
bit3
-
bit2
P42
bit1
P41
bit0
P40
XXXXXXXXB R/W *
bit7
P67
bit6
P66
bit5
P65
bit4
P64
bit3
P63
bit2
P62
bit1
P61
bit0
P60
XXXXXXXXB R/W *
bit7 bit6
P77 P76
bit5
-
bit4
P74
bit3 bit2 bit1
P73 P72 P71
bit6
P86
bit5
P85
bit4
P84
bit3
P83
bit7 bit6
P97 P96
bit5
-
bit4
-
bit3 bit2 bit1
P93 P92 P91
bit0
P90 ----XXXXB
R/W *
bit5
-
bit4 bit3 bit2 bit1
PA3 PA2 PA1
bit0
PA0 ----XXXXB
R/W *
bit7
P87
bit7
-
bit6
-
bit2
P82
bit1
P81
bit0
P70 11XXXXXXB R/W *
bit0
P80 ----XXXXB
R/W *
*: 入出力ポートへのリード / ライトアクセスは , メモリへのリード / ライトアクセスとは多少動
作が異なります。
以下のような動作をしますので , 注意してください。
・ 0: 入力モード
- 読出し時 : 対応する端子のレベルが読み出されます。
- 書込み時 : 出力用のラッチに書き込まれます。
・ 1: 出力モード
- 読出し時 : データレジスタラッチの値が読み出されます。
150
第 9 章 I/O ポート
ポート方向レジスタ
(DDR2 ~ DDR4, DDR6 ~ DDRA)
9.2.2
ポート方向レジスタの構成および機能について説明します。
■ ポート方向レジスタ (DDR2 ~ DDR4, DDR6 ~ DDRA)
図 9.2-2 に , ポート方向レジスタ (DDR2 ~ DDR4,DDR6 ~ DDRA) の一覧を示します。
図 9.2-2 ポート方向レジスタ (DDR2 ~ DDR4,DDR6 ~ DDRA) の一覧
DDR2
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
初期値
アクセス
アドレス:000012H
D27
D26
D25
D24
-
-
-
-
0000XXXXB
R/W
00000000B
R/W
DDR3
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
アドレス:000013H
D37
D36
D35
D34
D33
D32
D31
D30
DDR4
bit7
bit6
bit5
bit4
bit3
bit2
bit1
-
-
-
-
-
D42
D41
アドレス:000014H
DDR6
アドレス:000016H
DDR7
アドレス:000017H
DDR8
アドレス:000018H
DDR9
bit0
D40 XXXXX000B
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
D67
D66
D65
D64
D63
D62
D61
D60
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
-
-
-
D74
D73
D72
D71
D70
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
D87
D86
D85
D84
D83
D82
D81
D80
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
アドレス:000019H
D97
D96
-
-
D93
D92
D91
D90
DDRA
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
-
-
-
-
DA3 DA2 DA1
DA0
アドレス:00001AH
R/W
00000000B
R/W
XXX00000B
R/W
00000000B
R/W
00XX0000B
R/W
----0000B
R/W
● 各端子がポートとして機能している場合
各端子がポートとして機能している場合 , 対応する各端子を以下のように制御します。
• 0: 入力モード
• 1: 出力モード ( リセットで "0" になります。)
<注意事項>
• リードモディファイライト (RMW) 系命令 ( ビットセットなどの命令 ) を使用してこの
レジスタをアクセスすると , 命令で注目しているビットは所定の値になります。それ以
外のビットで入力設定してあるものに対応する出力レジスタの内容は,そのときの端子
の入力値に書き換わります。このため , 入力として使用していた端子を出力に切り換え
るときには , はじめに希望値を PDR に書き込んでから DDR をセットし , その後で出力
に切り換えるようにしてください。
• MB90980 シリーズの P77, P76 には , DDR がありません。常にポートとしてデータを
有効としますので , P77, P76 を I2C 端子として使用する場合には , PDR の値を "1" に
してください ( なお , P77, P76 として使用する場合は , I2C を停止してください )。ま
た , このポートはオープンドレイン出力形式 (P-ch なし ) ですので , 入力ポートとして
使用する場合には出力トランジスタを OFF するために , PDR の値を "1" にし , かつ外
部出力にはプルアップ抵抗を付加する必要があります。
151
第 9 章 I/O ポート
その他のレジスタ
9.2.3
ポートレジスタ (PDR2 ~ PDR4, PDR6 ~ PDRA), ポート方向レジスタ (DDR2 ~
DDR4, DDR6 ~ DDRA) 以外のレジスタの構成および機能について説明します。
■ ポート出力端子レジスタ (ODR7, ODR4)
ポート出力端子レジスタ (ODR7, ODR4) のビット構成を下図に示します。
図 9.2-3 ポート出力端子レジスタ (ODR7, ODR4) のビット構成
ODR7
アドレス:00001E H
ODR4
アドレス:00001B H
bit7
bit7
-
bit6
bit6
-
bit5 bit4 bit3 bit2
OD74 OD73 OD72
bit5 bit4 bit3 bit2
- OD42
初期値
bit1 bit0
OD71 OD70 XXX00000B
bit1 bit0
OD41 OD40 XXXXX000B
アクセス
R/W
R/W
ポート出力端子レジスタ (ODR7, ODR4) は , 出力モード時のオープンドレイン制御を行
います。
• 0: 出力モード時に標準出力ポートになります。
• 1: 出力モード時にオープンドレイン出力ポートになります。
<注意事項>
P77, P76 は N-ch オープンドレイン端子です (P-ch を除く )。
ポート出力端子レジスタ (ODR7, ODR4) は , 入力モード時は機能をもちません
( 出力 Hi-Z)。
入出力モードは , ポート方向レジスタ (DDR) の設定で決まります。
外部バスで使用する場合は , この機能は使用禁止です。本レジスタへは書き込まないよ
うにしてください。
152
第 9 章 I/O ポート
■ アナログ入力許可レジスタ (ADER)
アナログ入力許可レジスタ (ADER) のビット構成を下図に示します。
図 9.2-4 アナログ入力許可レジスタ (ADER) のビット構成
ADER
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
アドレス:00001F H ADE7 ADE6 ADE5 ADE4 ADE3 ADE2 ADE1 ADE0
初期値
アクセス
11111111B R/W
アナログ入力許可レジスタ (ADER) は , ポート 6 の各端子を以下のように制御します。
• 0: ポート入出力モードになります。
• 1: アナログ入力モードになります。リセットで "1" になります。
MB90980 シリーズでは , 各ビットは以下のようになります。
• ADE0:P60/AN0
• ADE1:P61/AN1
• ADE2:P62/AN2
• ADE3:P63/AN3
• ADE4:P64/AN4
• ADE5:P65/AN5
• ADE6:P66/AN6
• ADE7:P67/AN7
■ アップダウンタイマ入力許可レジスタ (UDER)
アップダウンタイマ入力許可レジスタ (UDER) のビット構成を下図に示します。
図 9.2-5 アップダウンタイマ入力許可レジスタ (UDER) のビット構成
UDER
アドレス:00000B H
bit7
-
bit6 bit5 bit4 bit3 bit2 bit1 bit0
- UDE5 UDE4 UDE3 UDE2 UDE1 UDE0
初期値
アクセス
XX000000B R/W
アップダウンタイマ入力許可レジスタ (UDER) は , ポート 3 の各端子を以下のように制
御します。
• 0: ポート入力モードになります。
• 1: アップダウンタイマ入力モードになります。リセットで "0" になります。
MB90980 シリーズでは , 各ビットは以下のようになります。
• UDE0:P30/AIN0
• UDE1:P31/BIN0
• UDE2:P32/ZIN0
• UDE3:P33/AIN1
• UDE4:P34/BIN1
• UDE5:P35/ZIN1
153
第 9 章 I/O ポート
154
第 10 章
タイムベースタイマ
タイムベースタイマの概要 , 構成 , 制御レジスタ ,
割込み , 動作 , 使用上の注意およびプログラム例に
ついて説明します。
10.1 タイムベースタイマの概要
10.2 タイムベースタイマの構成
10.3 タイムベースタイマ制御レジスタ (TBTC)
10.4 タイムベースタイマの割込み
10.5 タイムベースタイマの動作
10.6 タイムベースタイマ使用上の注意
10.7 タイムベースタイマのプログラム例
155
第 10 章 タイムベースタイマ
10.1
タイムベースタイマの概要
タイムベースタイマは , 内部カウントクロック ( 原発振の 2 分周 ) に同期してカウン
トアップする 18 ビットのフリーランカウンタ ( タイムベースタイマカウンタ ) です。
4 種類のインターバル時間を選択できるインターバルタイマ機能があります。また ,
発振安定待ち時間のタイマ出力やウォッチドッグタイマなどの動作クロックを供給
する機能もあります。
■ インターバルタイマ機能
インターバルタイマ機能は , 一定時間間隔で繰り返し割込み要求を発生する機能です。
• タイムベースカウンタのインターバルタイマ用ビットがオーバフローすると割込
み要求を発生します。
• インターバルタイマ用のビット ( インターバル時間 ) は , 次の 4 種類の中から選択で
きます。
表 10.1-1 に , タイムベースタイマのインターバル時間を示します。
表 10.1-1 タイムベースタイマのインターバル時間
内部カウントクロック周期
インターバル周期
212/HCLK(
約 1.0ms)
214/HCLK( 約 4.1ms)
2/HCLK(0.5μs)
216/HCLK( 約 16.4ms)
219/HCLK( 約 131.1ms)
HCLK: 発振クロック
() 内は発振クロック 4MHz 動作時の値です。
■ クロック供給機能
クロック供給機能は , 発振安定待ち時間用のタイマや一部の周辺機能に対する動作ク
ロックを供給する機能です。表 10.1-2 に , タイムベースタイマから各周辺に供給され
るクロックの周期を示します。
表 10.1-2 タイムベースタイマから供給されるクロック周期
クロック供給先
クロック周期
13/HCLK(
2
発振安定待ち時間
約 2.0ms)
215
/HCLK( 約 8.2ms)
217/HCLK( 約 32.8ms)
備 考
セラミック振動子用発振安定待ち時間
水晶振動子用発振安定待ち時間
212/HCLK( 約 1.0ms)
ウォッチドッグタイマ
214/HCLK( 約 4.1ms)
216/HCLK( 約 16.4ms)
ウォッチドッグタイマのカウントアップ
クロック
219/HCLK( 約 131.1ms)
HCLK: 発振クロック
() 内は発振クロック 4MHz 動作時の値です。
発振開始直後は発振周期が不安定なため , 発振安定待ち時間は目安の値です。
156
第 10 章 タイムベースタイマ
10.2
タイムベースタイマの構成
タイムベースタイマは , 以下のブロックで構成されています。
• タイムベースタイマカウンタ
• カウンタクリア回路
• インターバルタイマセレクタ
• タイムベースタイマ制御レジスタ (TBTC)
■ タイムベースタイマのブロックダイヤグラム
図 10.2-1 に , タイムベースタイマのブロックダイヤグラムを示します。
図 10.2-1 タイムベースタイマのブロックダイヤグラム
ウォッチドッグ
タイマへ
PPGタイマへ
タイムベースタイマカウンタ
HCLKの
2分周
× 21 × 22 × 23
× 28 × 29 × 210 × 211 × 212 × 213 × 214 × 215 × 216 × 217 × 218
OF
OF
パワーオンリセット
ストップモード開始
CKSCR : MCS=1→0*1
CKSCR : SCS=0→1*2
OF
OF
クロック制御部
発振安定待ち
時間セレクタへ
カウンタ
クリア回路
インターバル
タイマセレクタ
TBOF
セット
TBOFクリア
タイムベースタイマ制御レジスタ (TBTC)
RESV
⎯
⎯
TBIE TBOF
TBR
TBC1 TBC0
タイムベースタイマ割込み信号
⎯
OF
HCLK
*1
*2
: 未使用
: オーバフロー
: 発振クロック
: マシンクロックをメインクロック,またはサブクロックからPLLクロックへ切換え
: マシンクロックをサブクロックからメインクロックへ切換え
157
第 10 章 タイムベースタイマ
● タイムベースタイマカウンタ
発振クロック (HCLK) の 2 分周クロックをカウントクロックとする 18 ビットのアップ
カウンタです。
● カウンタクリア回路
タイムベースタイマのカウンタ値は , 次の要因によってクリアされます。
• タイムベースタイマ制御レジスタ(TBTC)のタイムベースタイマ初期化ビット(TBR)
への "0" の書込み
• パワーオンリセット
• メインストップモード , PLL ストップモードへの移行
• クロックモードの切換え ( メインクロックモードから PLL クロックモード , サブク
ロックから PLL クロックモード , サブクロックモードからメインクロックモード )
● インターバルタイマセレクタ
タイムベースタイマカウンタの 4 種類の出力から 1 つを選択します。選択したビット
のオーバフローが割込み要因となります。
● タイムベースタイマ制御レジスタ (TBTC)
インターバル時間の選択 , カウンタのクリア , 割込み要求の制御および状態の確認をし
ます。
158
第 10 章 タイムベースタイマ
10.3
タイムベースタイマ制御レジスタ (TBTC)
タイムベースタイマ制御レジスタ (TBTC) は , インターバル時間の選択 , カウンタの
クリア , 割込み制御および状態の確認をするレジスタです。
■ タイムベースタイマ制御レジスタ (TBTC)
図 10.3-1 タイムベースタイマ制御レジスタ (TBTC)
アドレス bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8 bit7
0000A9H
RESV
R/W
bit0
(TBTC)
TBIE TBOF TBR TBC1 TBC0
R/W
R/W
W
R/W
初期値
1XX00100B
R/W
TBC1 TBC0
インターバル時間選択ビット
0
0
212/HCLK (約1.0ms)
0
1
214/HCLK (約4.1ms)
1
0
216/HCLK (約16.4ms)
1
1
219/HCLK (約131ms)
( ) 内は発振クロック4MHZ時の値です。
TBR
タイムベースタイマ初期化ビット
リード時
ライト時
タイムベースタイマカウンタ,
TBOFビットをクリア
0
常に"1"が読み出され
ます
1
TBOF
割込み要求フラグビット
リード時
ライト時
0
指定ビットの
オーバフローなし
このビットのクリア
1
指定ビットの
オーバフローあり
変化なし,
ほかへの影響なし
TBIE
割込み要求許可ビット
0
割込み要求出力の禁止
1
割込み要求出力の許可
RESV
R/W : リード/ライト可能
W : ライトオンリ
: 未定義
: 不定
X
HCLK : 発振クロック
: 初期値
変化なし,
ほかへの影響なし
予約ビット
このビットへは必ず"1"を書き込んでください
159
第 10 章 タイムベースタイマ
表 10.3-1 タイムベースタイマ制御レジスタ (TBTC) の各ビットの機能
bit15
bit14,
bit13
bit12
bit11
bit10
bit9,
bit8
160
ビット名
RESV:
予約ビット
機 能
このビットには必ず "1" を書き込んでください。
・読出し時の値は不定です。
・書込みは動作に影響を与えません。
TBIE:
CPU への割込み要求出力の許可 / 禁止をするビットです。
割込み要求
このビットと割込み要求フラグビット (TBOF) が "1" の場合 ,
許可ビット
割込み要求を出力します。
タイムベースタイマカウンタ指定ビットがオーバフローする
と , "1" にセットされるフラグです。
・このビットと割込み要求許可ビット (TBIE) が "1" の場合 ,
割込み要求を出力します。
・書込み時は "0" でクリアされ , "1" では変化せずほかへの影
響はありません。
( 注意事項 )
・TBOF ビットをクリアする場合には , 割込み要求許可ビット
TBOF:
(TBIE), またはプロセッサステータス (PS) のインタラプト
割込み要求
レベルマスクレジスタ (ILM) の指定で , タイムベースタイ
フラグビット
マ割込みが禁止されている状態にしてください。
・"0" の書込み , メインストップモードへの遷移 , PLL ストッ
プモードへの遷移 , サブクロックモードからメインクロッ
クモードへの遷移 , サブクロックモードから PLL クロック
モードへの遷移 , メインクロックモードから PLL クロック
モードへの遷移およびタイムベースタイマ初期化ビット
(TBR) への "0" の書込みおよびリセットにより "0" にクリア
されます。
タイムベースタイマカウンタをクリアするビットです。
・このビットに "0" を書き込むとカウンタがクリアされ , さら
TBR:
に TBOF ビットをクリアします。"1" では変化せずほかへ
タイムベースタイマ
初期化ビット
の影響はありません。
・読出し値は , 常に "1" です
インターバルタイマの周期を選択するビットです。
TBC1, TBC0:
・タイムベースタイマカウンタのインターバルタイマ用の
インターバル時間選
ビットが指定されます。
択ビット
・4 種類のインターバル時間が選択できます。
未定義ビット
第 10 章 タイムベースタイマ
10.4
タイムベースタイマの割込み
タイムベースタイマは , タイムベースタイマカウンタの指定ビットのオーバフローで
割込み要求を発生させることができます ( インターバルタイマ機能 )。
■ タイムベースタイマの割込み
タイムベースタイマカウンタが内部カウントクロックでカウントアップし,選択された
インターバルタイマ用のビットがオーバフローすると,タイムベースタイマ制御レジス
タ (TBTC) の割込み要求フラグビット (TBOF) が "1" にセットされます。その場合 , 割
込み要求許可ビット (TBIE) を "1" にして割込み要求を許可していると , CPU に割込み
要求が発生します。割込み処理ルーチンでは , TBOF ビットに "0" を書き込んで割込み
要求をクリアしてください。
なお , TBOF ビットは , 割込み要求許可ビット (TBIE) の値に関係なく , 指定したビット
がオーバフローするとセットされます。
<注意事項>
• タイムベースタイマ制御レジスタ (TBTC) の割込み要求フラグビット (TBOF) をクリア
する場合には , 割込み要求許可ビット (TBIE), またはプロセッサステータス (PS) のイ
ンタラプトレベルマスクレジスタ(ILM)の設定でタイムベースタイマ割込みが禁止され
ている状態で行ってください。
• TBOF ビットが "1" の場合に , TBIE ビットを禁止から許可 (0 → 1) にすると直ちに割込
み要求が発生します。
• タイムベースタイマでは , μDMAC は使用できません。
■ タイムベースタイマの割込みと μDMAC
表 10.4-1 に , タイムベースタイマの割込みと μDMAC を示します。
表 10.4-1 タイムベースタイマの割込みと μDMAC
割込み番号
#41
割込みレベル設定レジスタ
レジスタ名
ICR15
アドレス
0000BFH
ベクタテーブルのアドレス
下位
FFFF58H
上位
FFFF59H
バンク
FFFF5AH
μDMAC
×
× : 使用不可
<注意事項>
ICR15 は , タイムベースタイマ割込みと時計タイマ割込みとフラッシュ書込みで共用して
います。割込みは 3 つの用途に使用できますが , 割込みレベルは同一になります。
161
第 10 章 タイムベースタイマ
10.5
タイムベースタイマの動作
タイムベースタイマには , インターバルタイマ機能 , 発振安定待ち時間用タイマ機能
および一部の周辺機能へのクロック供給機能があります。
■ インターバルタイマ機能 ( タイムベースタイマ ) の動作
インターバルタイマ機能は , 任意のインターバル時間ごとに割込み要求を発生します。
インターバルタイマとして動作させるには , 図 10.5-1 の設定が必要です。
図 10.5-1 タイムベースタイマの設定
bit15 bit14 bit13 bit12 bit11 bit10 bit9
アドレス
0000A9H
TBTC
RESV
1
0
1
:
:
:
:
bit8
TBIE TBOF TBR TBC1 TBC0
0
bit0
bit7
(WDTC)
0
使用ビット
未使用ビット
"0"を設定
"1"を設定
• タイムベースタイマカウンタは , クロックが発振している限り , 内部カウントクロッ
ク ( 発振クロックの 2 分周 ) に同期してカウントアップを続けます。
• カウンタがクリアされると "0" からカウントアップを行い , インターバルタイマ用
のビットがオーバフローすると , 割込み要求フラグビット (TBOF) を "1" にセットし
ます。この場合 , 割込み要求出力を許可 (TBIE=1) しているとクリアされた時間を基
準にして , 選択されたインターバル時間ごとに割込みを発生します。
• インターバル時間は , タイムベースタイマのクリア動作で , 設定時間よりも長くな
ることがあります。
■ 発振安定待ち時間用タイマ機能
タイムベースタイマは , 発振クロックおよび PLL クロックの発振安定待ち時間用のタ
イマとしても使用されます。発振安定待ち時間は , カウンタが "0" ( カウントクリア )
からカウントアップし,発振安定待ち時間用のビットがオーバフローするまでの時間で
す。ただし , タイムベースタイマモードから PLL クロックモードまたはメインクロッ
クモード復帰時には , タイムベースタイマカウンタがクリアされないため , カウント途
中からの時間になります。表 10.5-1 に , タイムベースカウンタのクリアと発振安定待
ち時間について示します。
162
第 10 章 タイムベースタイマ
表 10.5-1 タイムベースタイマカウンタのクリア動作と発振安定待ち時間
動 作
TBOF
タイムベース
タイマカウンタ ビット
タイムベースタイマ制御レジスタ
(TBTC) のタイムベースタイマ初期化
ビット (TBR) へ "0" 書込み
パワーオンリセット
ウォッチドッグリセット
メインストップモードの解除
PLL ストップモードの解除
サブストップモードの解除
メインクロックモードから PLL クロック
モードへの移行 (MCS=1 → 0)
サブクロックモードからメインクロック
モードへの移行 (SCM=0 → 1)
タイムベースタイマモードの解除
スリープモードの解除
○ : クリアされる
× : クリアされない
発振安定待ち時間
⎯
○
○
○
×
○
○
×
○
○
○
○
×
○
○
PLL クロック発振安定待ち時間
○
○
メインクロック発振安定待ち時間
×
×
×
×
⎯
⎯
メインクロック発振安定待ち時間
サブクロック発振安定待ち時間
■ クロック供給機能
タイムベースタイマは , ウォッチドッグタイマにクロックを供給しています。
タイムベースカウンタのクリアによって,ウォッチドッグタイマのインターバル時間が
設定より長くなることがあります。
163
第 10 章 タイムベースタイマ
■ タイムベースタイマの動作例
次の状態の動作を図 10.5-2 に示します。
• パワーオンリセットが発生した場合
• インターバルタイマ機能の動作中にスリープモードへ移行した場合
• ストップモードへ移行した場合
• カウンタクリアの要求があった場合
ストップモードへの移行でタイムベースタイマはクリアされ , 動作を停止します。ス
トップモードからの復帰時にタイムベースタイマで発振安定待ち時間をカウントしま
す。
図 10.5-2 タイムベースタイマの動作例
カウンタ値
3FFFFH
ストップモードへの
移行によるクリア
発振安定待ち
オーバフロー
00000H
CPU動作開始
パワーオンリセット
(オプション)
インターバル周期
カウンタクリア
(TBTC : TBC1,TBC0=11B)
(TBTC : TBR=0)
割込み処理ルーチンでクリア
TBOFビット
TBIEビット
SLPビット
(LPMCRレジスタ)
スリープ
インターバル割込みスリープ解除
ストップ
STPビット
(LPMCRレジスタ)
外部割込みによるストップ解除
タイムベースタイマ制御レジスタのインターバル時間選択ビット (TBTC : TBC1, TBC0) に
"11B"を設定した場合 (219/HCLK)。
: 発振安定待ち時間
HCLK : 発振クロック
164
第 10 章 タイムベースタイマ
10.6
タイムベースタイマ使用上の注意
割込み要求のクリアおよびタイムベースタイマのクリアによる周辺機能への影響の
注意点を示します。
■ タイムベースタイマ使用上の注意
● 割込み要求のクリア
タイムベースタイマ制御レジスタ (TBTC) の割込み要求フラグビット (TBOF) をクリア
する場合には , 割込み要求許可ビット (TBIE), またはプロセッサステータス (PS) のイン
タラプトレベルマスクレジスタ (ILM) でタイムベースタイマ割込みが禁止されている
状態で行うようにしてください。
● タイムベースタイマのクリアによる影響
タイムベースタイマのカウンタのクリアで , 次の動作は影響を受けます。
• タイムベースタイマでインターバルタイマ機能 ( インターバル割込み ) を使用して
いる場合 , タイムベースタイマのクリアによって , インターバル周期が長くなるこ
とがあります。
• ウォッチドッグタイマを使用している場合 , タイムベースタイマのクリアによって ,
ウォッチドッグタイマのインターバル時間が設定より長くなることがあります。
● 発振安定待ち時間用タイマとしての使用
電源投入時 , メインストップモード中などでは , 発振クロックが停止しているため , 発
振器が動作を開始した後 , タイムベースタイマが供給する動作クロックを使用して発
振クロックの発振安定待ち時間を確保します。高速発振端子に接続する振動子の種類
によって , 適切な発振安定待ち時間を選択する必要があります。詳細については ,「6.5
発振安定待ち時間」を参照してください。
● タイムベースタイマからクロックを供給される周辺機能に対する注意
• メインクロックが停止するモードではカウンタはクリアされ , タイムベースタイマ
は動作を停止します。
• タイムベースタイマから供給されるクロックは , タイムベースタイマのカウンタが
クリアされると , 初期状態からの供給となるため , "H" レベルが短く , または "L" レ
ベルが最大で 1/2 周期長くなることがあります。
• ウォッチドッグタイマ用のクロックも初期状態からの供給となりますが , ウォッチ
ドッグタイマのカウンタが同時にクリアされるためウォッチドッグタイマは正常
な周期で動作します。
165
第 10 章 タイムベースタイマ
10.7
タイムベースタイマのプログラム例
タイムベースタイマのプログラム例を示します。
■ タイムベースタイマのプログラム例
● 処理仕様
212/HCLK( 発振クロック ) のインターバル割込みを繰り返し発生します。この場合のイ
ンターバル時間は , 約 1.0ms(4MHz 動作時 ) となります。
● コーディング例
ICR12
EQU
0000BCH
; タイムベースタイマ用割込み制御レジスタ
TBTC
EQU
0000A9H
; タイマベースタイマ制御レジスタ
TBOF
EQU
TBTC:3
; 割込み要求フラグビット
;---------- メインプログラム ---------------------------------------------------CODE
CSEG
START:
;
:
; スタックポインタ (SP) などは初期化済み
; とする
AND
CCR, #0BFH
; 割込みディセーブル
MOV
I:ICR12, #00H
; 割込みレベル 0( 最も高い )
MOV
I:TBTC, #10010000B
; 上位 3 ビットは固定
; 割込み許可 , TBOF クリア
; カウンタクリア
; インターバル時間 212/HCLK 選択
MOV
ILM, #07H
; PS 内 ILM をレベル 7 に設定
OR
CCR, #40H
; 割込みイネーブル
LOOP:
MOV
A,#00H
; 無限ループ
MOV
A,#01H
BRA
LOOP
;---------- 割込みプログラム ---------------------------------------------------WARI:
CLR ビット BOF
; 割込み要求フラグをクリア
;
:
;
ユーザ処理
;
:
RETI
; 割込みから復帰
CODE
ENDS
;---------- ベクタ設定 ---------------------------------------------------------VECT
CSEG
ABS=0FFH
ORG
0FF6CH
; 割込みベクタを設定
DSL
WARI
ORG
0FFDCH
; リセットベクタ設定
DSL
START
DB
00H
; シングルチップモードに設定
VECT
ENDS
END
START
166
第 11 章
ウォッチドッグタイマ
ウォッチドッグタイマの概要 , 制御レジスタ , 構成 ,
動作 , 使用上の注意およびプログラム例について説
明します。
11.1 ウォッチドッグタイマの概要
11.2 ウォッチドッグタイマ制御レジスタ (WDTC)
11.3 ウォッチドッグタイマの構成
11.4 ウォッチドッグタイマの動作
11.5 ウォッチドッグタイマ使用上の注意
11.6 ウォッチドッグタイマのプログラム例
167
第 11 章 ウォッチドッグタイマ
11.1
ウォッチドッグタイマの概要
ウォッチドッグタイマは , タイムベースタイマ , または時計タイマの出力をカウント
クロックとする 2 ビットのカウンタです。起動後 , 一定時間内にクリアされない場
合 , CPU をリセットします。
■ ウォッチドッグタイマ機能
ウォッチドッグタイマは , プログラム暴走対策用のカウンタです。一度起動すると一定
時間内で定期的にクリアし続ける必要があります。プログラムが無限ループに陥るな
どして , 一定時間以上クリアされない場合 , CPU に対してウォッチドッグリセットを発
生します。表 11.1-1 に示すように , ウォッチドッグタイマのインターバル時間は ,
ウォッチドッグタイマ制御レジスタ (WDTC) の WT1, WT0 ビットで設定できます。
ウォッチドッグタイマがクリアされない場合 , 最小時間から最大時間の間にウォッチ
ドッグリセットが発生します。この表の最小時間内にカウンタをクリアしてください。
クロックソースの出力先は時計タイマ制御レジスタのウォッチドッグクロック選択
ビット (WTC:WDCS) で設定します。
表 11.1-1 ウォッチドッグタイマのインターバル時間
*
WT1
WT0
WDCS
SCM
0
0
1
0
1
1
インターバル時間
クロックサイクル数
1
最小 *
約 3.58ms
最大 *
約 4.61ms
(214 ± 211)HCLK サイクル
1
1
約 14.33ms
約 18.43ms
(216 ± 213)HCLK サイクル
0
1
1
約 57.23ms
約 73.73ms
(218 ± 215)HCLK サイクル
1
1
1
1
約 458.75ms
約 589.82ms
(221 ± 218)HCLK サイクル
0
0
約 0.457s
約 0.576s
(212 ± 29)SCLK サイクル
0
1
約 3.584s
約 4.608s
(215 ± 212)SCLK サイクル
1
0
約 7.168s
約 9.216s
(216 ± 213)SCLK サイクル
1
1
約 14.336s
約 18.432s
(217 ± 214)SCLK サイクル
上記以外の
組合せ
: 発振クロック (HCLK) が 4MHz 動作時で , サブクロック (SCLK) 32kHz の 4 分周 (=8kHz) 動作
時の値です。
ウォッチドッグタイマインターバル時間の最大 , 最小および発振クロックサイクル数は , ク
リアのタイミングで決まります。インターバル時間は , カウントクロック ( タイムベースタ
イマの供給クロック ) 周期の 3.5 倍~ 4.5 倍になります。
ウォッチドッグタイマインターバル時間については ,「11.4 ウォッチドッグタイマの動作」
を参照してください。
<注意事項>
ウォッチドッグタイマは , タイムベースタイマの桁上り信号をカウントする 2 ビットカウ
ンタによって構成されています。したがって , タイムベースタイマがクリアされると ,
ウォッチドッグリセットの発生時間が設定した時間より長くなることがあります。
マシンクロックとしてサブクロックを使用する場合は , 必ず時計タイマ制御レジスタ
(WTC) のウォッチドッグタイマクロックソース選択ビット (WDCS) を "0" に設定して , 時
計タイマの出力を選択するようにしてください。
168
第 11 章 ウォッチドッグタイマ
11.2
ウォッチドッグタイマ制御レジスタ (WDTC)
ウォッチドッグタイマ制御レジスタ (WDTC) は , ウォッチドッグタイマの起動 , クリ
アおよびリセット要因の表示を行うレジスタです。
■ ウォッチドッグタイマ制御レジスタ (WDTC)
図 11.2-1 にウォッチドッグタイマ制御レジスタ (WDTC) を , 表 11.2-1 に WDTC レジス
タの各ビットの機能について説明します。
図 11.2-1 ウォッチドッグタイマ制御レジスタ (WDTC)
bit8 bit7
アドレス bit15
0000A8H
(TBTC)
bit6
-
PONR
bit5 bit4
bit3
bit2
WRST ERST SRST WTE
R
R
R
R
bit1
bit0
WT1
WT0
W
W
W
初期値
XXXXX111B
インターバル時間選択ビット (HCLK : 4MHZ, SCLK : 32kHZのとき)
WT1 WT0
インターバル時間
最小
最大
WDCS&SCM
発振クロックサイクル数
1
約3.58ms
約14.33ms
約4.61ms
約18.3ms
(214± 211)HCLK サイクル
(216± 213)HCLK サイクル
1
約57.23ms
約73.73ms
(218± 215)HCLK サイクル
1
1
約458.75ms
約589.82ms
(221± 218)HCLK サイクル
0
0
0
1
0
0
約0.457s
約3.584s
約0.576s
約4.608s
(212± 29)SCLK サイクル
(215± 212)SCLK サイクル
1
0
0
約7.168s
約9.216s
(216± 213)SCLK サイクル
1
1
0
約14.336s
約18.432s
(217± 214)SCLK サイクル
0
0
1
0
1
1
0
0
HCLK : 発振クロック
SCLK : サブクロック
ウォッチドッグ制御ビット
WTE
0
1
• ウォッチドッグタイマを起動
(リセット後1回目の書込みのとき)
• ウォッチドッグタイマをクリア
(リセット後2回目以降の書込みのとき)
動作なし
未定義ビット このビットに書き込んでも動作には影響ありません。
リセット要因ビット
リセット要因
PONR WRST ERST SRST
1
R
W
X
:
:
:
:
:
:
リードオンリ
ライトオンリ
不定
未定義
前の状態を保持
初期値
X
X
X
パワーオン
ウォッチドッグタイマ
1
外部端子 (RST=″L″入力)
1
1
RSTビット (ソフトウェアリセット)
インターバル時間はカウントクロック ( タイムベースタイマの出力値 ) 周期の 3.5 倍~
4.5 倍となります。詳細は「11.4 ウォッチドッグタイマの動作」を参照してください。
169
第 11 章 ウォッチドッグタイマ
表 11.2-1 ウォッチドッグタイマ制御レジスタ (WDTC) の各ビットの機能
ビット名
bit7
~
bit3
170
リセット要因を示す読出し専用ビットです。各リセット要因が発生す
ると , これらのビットが "1" にセットされます。
・これらのビットは , WDTC レジスタの読出し動作後に , すべて "0" に
クリアされます。
・パワーオン時は , PONR ビット以外のビットの内容は保証されません。
したがって , PONR ビットが "1" の場合は , これ以外のビットの内容
を無視するようにしてください。
ウォッチドッグタイマを起動またはクリアします。
・このビットに "0" を書き込むと , ウォッチドッグタイマを起動 ( リ
ウォッチドッグ
セット後 1 回目の書込み ), または 2 ビットカウンタをクリア ( リセッ
制御ビット
ト後 2 回目以降の書込み ) します。
・"1" の書込みでは , 動作に影響はありません。
ウォッチドッグタイマのインターバル時間を選択するビットです。
クロックモードとしてサブクロックモードが選択されているか ( クロッ
ク選択レジスタ (CKSCR) のサブクロック表示ビット (SCM) が "0"), ま
たは時計タイマ制御レジスタ (WTC) により , ウォッチドッグタイマの
クロックソースが時計タイマになっている場合 ( ウォッチドッグタイマ
クロックソース選択ビット (WDCS) が "0") と , クロックモードとして
インターバル
時間選択ビット メインクロックモード , または PLL クロックモードが選択されていて ,
かつ WTC の WDCS ビットが "1" の場合 , インターバル時間は図 11.2-1
のように異なります。
・ウォッチドッグタイマの起動時のデータのみが有効です。
・ウォッチドッグタイマ起動後の書込みデータは , 無視されます。
・これらのビットは , 書込み専用です。
PONR
予約
WRST リセット要因
ERST ビット
SRST
bit2
WTE
bit1,
bit0
WT1
WT0
機 能
第 11 章 ウォッチドッグタイマ
11.3
ウォッチドッグタイマの構成
ウォッチドッグタイマは , 以下のブロックで構成されています。
• カウントクロックセレクタ
• ウォッチドッグカウンタ (2 ビットカウンタ )
• ウォッチドッグリセット発生回路
• カウンタクリア制御回路
• ウォッチドッグタイマ制御レジスタ (WDTC)
■ ウォッチドッグタイマのブロックダイヤグラム
図 11.3-1 に , ウォッチドッグタイマのブロックダイヤグラムを示します。
図 11.3-1 ウォッチドッグタイマのブロックダイヤグラム
ウォッチドッグタイマ制御レジスタ (WDTC)
PONR 予約 WRST ERST SRST WTE WT1 WT0
時計モード開始
タイムベースタイマモード開始
スリープモード開始
ホールド状態開始
ウォッチドッグタイマ
ストップモード開始
時計タイマ制御レジスタ (WTC) のWDCSビット
クロック選択レジスタ (CKSCR) のSCMビット
2
CLR
と起動
カウンタ
クリア
制御回路
カウント
クロック
セレクタ
CLR
2ビット
カウンタ
オーバ ウォッチドッグ
フロー
リセット
発生回路
内部リセット
発生回路へ
CLR
4
クリア
4
(タイムベースタイマカウンタ)
HCLKの2分周
SCLK
×21 ×22
×28 ×29 ×210 ×211 ×212 ×213 ×214 ×215 ×216 ×217 ×218
×21 ×22
×28 ×29 ×210 ×211 ×212 ×213 ×214 ×215 ×216 ×217 ×218
HCLK : 発振クロック
SCLK : サブクロック
● カウントクロックセレクタ
ウォッチドッグタイマのカウントクロックを 4 種類のタイムベースタイマ出力と 4 種
類の時計タイマ出力から選択する回路です。これにより , ウォッチドッグリセットの発
生時間が決まります。
● ウォッチドッグカウンタ (2 ビットカウンタ )
タイムベースタイマ出力をカウントクロックとする 2 ビットのアップカウンタです。
171
第 11 章 ウォッチドッグタイマ
● ウォッチドッグリセット発生回路
ウォッチドッグカウンタのオーバフローによってリセット信号を発生します。
● カウンタクリア制御回路
ウォッチドッグカウンタのクリアとカウンタの動作 / 停止を制御します。
● ウォッチドッグタイマ制御レジスタ (WDTC)
ウォッチドッグタイマの起動およびクリアと , リセット発生要因の保持を行います。
172
第 11 章 ウォッチドッグタイマ
11.4
ウォッチドッグタイマの動作
ウォッチドッグタイマは , ウォッチドッグカウンタのオーバフローでウォッチドッグ
リセットを発生します。
■ ウォッチドッグタイマの動作
ウォッチドッグタイマの動作には , 図 11.4-1 に示すような設定が必要です。
図 11.4-1 ウォッチドッグタイマの設定
アドレス
0000A8H
bit15
WDTC
bit8
(TBTC)
bit7
bit6
bit5 bit4 bit3 bit2
bit1 bit0
PONR 予約 WRST ERST SRST WTE WT1 WT0
0
: 使用ビット
0 : "0"を設定
● ウォッチドッグタイマの起動
ウォッチドッグタイマ制御レジスタ (WDTC) のウォッチドッグ制御ビット (WTE) に ,
リセット後 1 回目の "0" を書き込むと , ウォッチドッグタイマは起動します。この場合 ,
WDTC レジスタのインターバル時間選択ビット (WT1, WT0) を用いてインターバル時
間を同時に指定します。
● ウォッチドッグタイマのクリア
WTE ビットへの 2 回目以降の "0" の書込みで , ウォッチドッグタイマの 2 ビットカウ
ンタをクリアします。インターバル時間内にカウンタがクリアされない場合 , カウンタ
がオーバフローし , ウォッチドッグリセットが発生します。
リセットの発生とスリープモード , ストップモード , タイムベースタイマモード , 時計
モードへの遷移によって , ウォッチドッグタイマはクリアされます。
<注意事項>
タイムベースタイマモードおよび時計モードへ遷移したときに , 一度 , ウォッチドッグカ
ウンタをクリアしますが , クリア後ウォッチドッグカウンタは停止しませんので注意して
ください。
173
第 11 章 ウォッチドッグタイマ
● ウォッチドッグタイマのインターバル時間
図 11.4-2 に , ウォッチドッグタイマのクリアのタイミングとインターバル時間の関係
を示します。インターバル時間は , ウォッチドッグタイマをクリアするタイミングに
よって変化し , カウントクロック周期の 3.5 倍~ 4.5 倍の時間を要します。
● リセット要因の確認
リセット後 , WDTC レジスタのリセット要因ビット (PONR, WRST, ERST, SRST) を
チェックすることでリセット要因が分かります。
図 11.4-2 ウォッチドッグタイマのクリアタイミングとインターバル時間
[ウォッチドッグタイマブロックダイヤグラム]
2ビットカウンタ
クロック
セレクタ
a
2分周回路
b
2分周回路
c
リセット回路
d
リセット
信号
カウント許可とクリア
WTEビット
カウント許可
出力回路
[最小インターバル時間] カウントクロックの立上り直前にWTEビットをクリアした場合
カウントスタート
カウンタクリア
カウントクロックa
2分周回路b
2分周回路c
カウント許可
リセット信号d
7 × (カウントクロック周期 / 2)
WTEビットクリア
ウォッチドッグリセット発生
[最大インターバル時間] カウントクロックの立上り直前にWTEビットをクリアした場合
カウンタクリア
カウントスタート
カウントクロックa
2分周回路b
2分周回路c
カウント許可
リセット信号
9 × (カウントクロック周期 / 2)
WTEビットクリア
174
ウォッチドッグリセット発生
第 11 章 ウォッチドッグタイマ
11.5
ウォッチドッグタイマ使用上の注意
ウォッチドッグタイマ使用時の注意点を示します。
■ ウォッチドッグタイマ使用上の注意
● ウォッチドッグタイマの停止
ウォッチドッグタイマはすべてのリセット要因で停止します。
● インターバル時間
インターバル時間は,タイムベースタイマの桁上り信号をカウントクロックとしている
ため , タイムベースタイマのクリアによって , ウォッチドッグタイマのインターバル時
間が設定より長くなることがあります。
タイムベースタイマは , タイムベースタイマ制御レジスタ (TBTC) のタイムベースタイ
マ初期化ビット (TBR) への "0" の書込み時以外に , メインクロックモードから PLL ク
ロックモードへの遷移時 , サブクロックモードからメインクロックモードへの遷移時 ,
サブクロックモードから PLL クロックモードへの遷移時にもクリアされますのでご注
意ください。
● インターバル時間の選択
インターバル時間は , ウォッチドッグタイマの起動と同時に設定してください。起動時
以外の書込みデータは無視されます。
● プログラム作成上の注意
メインループの中で,繰り返しウォッチドッグタイマをクリアするようなプログラムを
作成する場合,割込み処理を含めたメインループの処理時間がウォッチドッグタイマの
インターバル時間の最小時間以下となるように設定してください。
● サブクロックモード時の注意
サブクロックモードの場合 , 必ず時計タイマ制御レジスタ (WTC) のウォッチドッグク
ロック選択ビット (WDCS) を "0" に設定して , 時計タイマの出力を選択してください。
175
第 11 章 ウォッチドッグタイマ
11.6
ウォッチドッグタイマのプログラム例
ウォッチドッグタイマのプログラム例を示します。
■ ウォッチドッグタイマのプログラム例
● 処理仕様
• メインプログラムのループの中で毎回ウォッチドッグタイマをクリアします。
• メインループは , ウォッチドッグタイマの最小インターバル時間内に 1 周する必要
があります。
● コーディング例
WDTC
EQU
0000A8H
; ウォッチドッグタイマ制御レジスタ
WTE
EQU
WDTC:2
; ウォッチドッグ制御ビット
;---------- メインプログラム --------------------------------------------------CODE
CSEG
START:
;
:
; スタックポインタ (SP) などは初期化済み
; とする
WDG_START:
MOV
; ウォッチドッグタイマの起動
; インターバル時間 221 ± 218 サイクルを選択
;---------- メインループ ------------------------------------------------------MAIN:
CLRB
I:WTE
; ウォッチドッグタイマのクリア
;
:
定期的に 2 ビットのクリア
;
ユーザ処理
;
:
JMP
MAIN
; ウォッチドッグタイマのインターバル時間
; より短い時間でループする
CODE
ENDS
;---------- ベクタ設定 --------------------------------------------------------VECT
CSEG
ABS=0FFH
ORG
0FFDCH
; リセットベクタ設定
DSL
START
DB
00H
; シングルチップモードに設定
VECT
ENDS
END
START
176
WDTC, #00000011B
第 12 章
時計タイマ
時計タイマの概要 , 構成 , 制御レジスタおよび動作
について説明します。
12.1 時計タイマの概要
12.2 時計タイマの構成
12.3 時計タイマ制御レジスタ (WTC)
12.4 時計タイマの動作
177
第 12 章 時計タイマ
12.1
時計タイマの概要
時計タイマは , サブクロックを使用した 15 ビットのタイマです。インターバル時間
ごとに割込みを発生させます。また , 設定により , ウォッチドッグタイマのクロック
ソースとしても使用できます。
■ 時計タイマの機能
時計タイマは 15 ビットのタイマとインターバル時間ごとの割込みを制御する回路から
構成されています。
時計タイマは , クロック選択レジスタ (CKSCR) の PLL クロック選択ビット (MCS) およ
びサブクロック選択ビット (SCS) とは関係なくサブクロックを使用します。
時計タイマのインターバル時間は表 12.1-1 に示すとおりです。
表 12.1-1 時計タイマのインターバル時間
*:
178
WTC2
WTC1
WTC0
インターバル時間 *
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
31.25ms
62.5ms
125ms
250ms
500ms
1.000s
2.000s
設定禁止
サブクロック 32kHz の 4 分周 (=8kHz)
第 12 章 時計タイマ
12.2
時計タイマの構成
時計タイマは , 以下のブロックから構成されています。
• 時計カウンタ
• インターバルセレクタ
• 時計タイマ割込み発生回路
• 時計タイマ制御レジスタ (WTC)
■ 時計タイマのブロックダイヤグラム
図 12.2-1 に , 時計タイマのブロックダイヤグラムを示します。
図 12.2-1 時計タイマのブロックダイヤグラム
時計タイマ制御レジスタ(WTC)
WDCS
SCE
WTIE
WTOF
WTR
クリア
28
29
210
時計カウンタ
211
212
213
214
212 213 214 215
サブクロック
WTC2
WTC1
WTC0
インターバルセレクタ
割込み発生回路
時計タイマ
割込み
ウォッチドッグ
タイマへ
● 時計カウンタ
サブクロックをクロックソースとする 15 ビットのアップカウンタです。
● インターバルセレクタ
時計タイマ割込みのインターバル時間を選択するセレクタです。
● 割込み発生回路
時計タイマのインターバル割込みを発生させます。
● 時計タイマ制御レジスタ (WTC)
時計タイマの動作 , 時計タイマ割込みの制御およびウォッチドッグタイマのクロック
ソースを指定します。
179
第 12 章 時計タイマ
12.3
時計タイマ制御レジスタ (WTC)
時計タイマ制御レジスタ (WTC) は , 時計タイマの動作を制御します。また , イン
ターバル割込みの時間を制御します。
■ 時計タイマ制御レジスタ (WTC) の構成
図 12.3-1 に時計タイマ制御レジスタ (WTC) の構成を , 表 12.3-1 に時計タイマ制御レジ
スタ (WTC) の各ビットの機能について説明します。
図 12.3-1 時計タイマ制御レジスタ (WTC) の構成
アドレス
bit15
bit8
0000AAH
bit7 bit6
WDCS SCE
R/W
R
bit5
bit4 bit3
bit2
R/W
R/W
R/W
R/W
0
0
0
0
0
1
0
1
0
0
1
1
1
1
1
0
0
1
1
1
0
0
0
1
125ms
250ms
500ms
1.000s
2.000s
設定禁止
時計カウンタクリアビット
0
時計タイマのカウンタを全ビット"0"にクリアします。
1
何もしません。リード時は必ずこのビットが読めます。
時計タイマ割込み要求フラグビット
0
割込み要求は発生していません。
1
割込み要求が発生しています。
WTIE
0
1
SCE
0
1
180
R/W
31.25ms
62.5ms
WTOF
: 初期値
R/W
初期値
10001000B
時計タイマインターバル選択ビット
インターバル時間
(サブクロック32kHZ時)
WTR
R : ライトオンリ
bit0
WTIE WTOF WTR WTC2 WTC1 WTC0
WTC2 WTC1 WTC0
R/W : リード/ライト可能
bit1
WDCS
0
1
時計タイマインターバル割込み許可ビット
割込み禁止
割込み許可
サブクロック発振安定待ち時間終了ビット
発振安定待ち時間です。
発振安定待ち時間が終了しています。
ウォッチドッグタイマクロックソース選択ビット
時計タイマのクロックを選択します。
タイムベースタイマのクロックを選択します。
第 12 章 時計タイマ
表 12.3-1 時計タイマ制御レジスタ (WTC) の各ビットの機能
ビット名
機 能
ウォッチドッグタイマのクロックソースを選択する
ビットです。
・このビットが "0" のとき , 時計タイマのクロックを
WDCS:
選択し , "1" のとき , タイムベースタイマのクロック
ウォッチドッグタイマ
bit7
を選択します。"1"
に設定した状態で , サブクロッ
クロックソース
選択ビット
クモードへ移行した場合は , ウォッチドッグタイマ
は停止します。
・リセットにより "1" に初期化されます。
サブクロックの発振安定待ち時間が終了したことを示
すビットです。
・このビットが "0" のとき , 発振安定待ち時間である
SCE:
ことを示します。
bit6
サブクロック発振安定
・サブクロックの発振安定待ち時間は , 214 サブクロッ
待ち時間終了ビット
クサイクル固定です。
・パワーオンリセットおよびストップ時に "0" に初期
化します。
時計タイマによるインターバル割込みを許可するビッ
WTIE:
トです。
bit5
時計タイマインターバル ・このビットが "1" のとき割込みを許可し , "0" のとき
割込み許可ビット
割込みを禁止します。
・リセットにより "0" に初期化されます。
時計タイマの割込み要求が発生していることを示す
ビットです。
・WTIE ビットが "1" のとき , このビットが "1" になる
と割込み要求を発生します。
WTOF:
・WTC2
~ WTC0 ビットで設定されたインターバルご
bit4
時計タイマ割込み要求
とに "1" にセットされます。
フラグビット
・"0" の書込み , ストップモードへの遷移またはリセッ
トにより "0" にクリアされます。
・このビットへの "1" の書込みは意味をもちません。
時計タイマのカウンタを全ビット "0" にクリアする
ビットです。
WTR:
・このビットに "0" を書き込むと , 時計タイマカウン
bit3
時計カウンタ
タを "0" にクリアします。
クリアビット
・このビットへの "1" 書込みは意味をもちません。
・読出し時は , 常に "1" が読み出されます。
時計タイマのインターバルを設定するビットです。
WTC2 ~ WTC0:
・リセットにより "000B" に初期化されます。
bit2 ~ bit0 時計タイマインターバル
・このビットを変更するときは , WTOF ビットも同時
選択ビット
にクリアしてください。
181
第 12 章 時計タイマ
12.4
時計タイマの動作
時計タイマには , 時計カウンタ , 時計タイマのインターバル割込み機能 , ウォッチ
ドッグタイマのクロックソースの指定機能 , サブクロックの発振安定待ち機能があり
ます。
■ 時計カウンタ
時計カウンタはサブクロックをカウントする 15 ビットのカウンタにより構成され , サ
ブクロックが入力されている間 , 常にカウント動作を続けます。
● 時計カウンタのクリア
時計カウンタのクリアは , パワーオンリセット , ストップモードへの遷移および時計タ
イマ制御レジスタ (WTC) の時計カウンタクリアビット (WTR) への "0" の書込みにより
行われます。
<注意事項>
• 時計タイマの出力を使用しているウォッチドッグタイマとインターバル割込みは,時計
カウンタのクリアにより動作に影響を与えます。
• 時計タイマ制御レジスタ (WTC) の WTR ビットへの "0" の書込みにより時計タイマを
クリアする場合は , WTIE ビットに "0" を設定し , 時計タイマの割込みを禁止した状態
で行ってください。また , 割込みを許可する前に , WTOF フラグへの "0" の書込みによ
る割込み要求のクリアを行ってください。
■ 時計タイマのインターバル割込み機能
時計カウンタの桁上り信号により一定周期で割込みを発生します。
● インターバル時間の指定
WTC レジスタの (WTC2, WTC1, WTC0) ビットにより , インターバル時間を指定できま
す。
● 時計タイマ割込みの発生
WTC2, WTC1, WTC0 ビットで設定されるインターバル時間ごとに時計タイマ割込み要
求フラグビット (WTOF) をセットします。このとき , 時計タイマインターバル割込み許
可ビット (WTIE) が "1" に設定されていて , 割込みが許可されていれば , 時計タイマ割
込みが発生します。
WTOF ビットのセットは , 最後に時計タイマがクリアされた時間を基準にして行われ
ます。
ストップモードに遷移すると,時計タイマはサブクロックの発振安定待ち時間のタイマ
として使用されるため , WTOF ビットはモード遷移と同時にクリアされます。
182
第 12 章 時計タイマ
■ ウォッチドッグタイマのクロックソースの指定機能
WTC レジスタのウォッチドッグタイマクロックソース選択ビット (WDCS) により ,
ウォッチドッグタイマのクロックソースを指定できます。マシンクロックとしてサブ
クロックを使用する場合は , 必ず WDCS ビットを "0" に設定して , 時計タイマの出力を
選択してください。WDCS ビットを "1" に設定した状態で , サブクロックモードへ移行
した場合は , ウォッチドッグタイマは停止します。
■ サブクロックの発振安定待ち時間機能
パワーオンリセット , ストップモードからの復帰時は , 時計タイマはサブクロックの発
振安定待ち時間タイマとして機能します。サブクロックの発振安定待ち時間はサブク
ロックの 214 サイクルに固定されています。
183
第 12 章 時計タイマ
184
第 13 章
16 ビット入出力タイマ
16 ビット入出力タイマの概要 , 構成 , レジスタの
構成と機能 , 割込みおよび動作について説明しま
す。
13.1 16 ビット入出力タイマの概要
13.2 16 ビット入出力タイマの構成
13.3 16 ビット入出力タイマのレジスタの構成と機能
13.4 16 ビット入出力タイマの割込み
13.5 16 ビット入出力タイマの動作
13.6 16 ビット入出力タイマのプログラム例
185
第 13 章 16 ビット入出力タイマ
13.1
16 ビット入出力タイマの概要
16 ビット入出力タイマは , フリーランタイマ 1 本 , アウトプットコンペア 4 本 , イ
ンプットキャプチャ 2 本によって構成されています。フリーランタイマをベースに
6 本の独立した波形出力を得ることができ , 入力パルス幅測定 , 外部クロック周期の
測定が可能です。
■ 16 ビット入出力タイマの機能
16 ビット入出力タイマを構成しているフリーランタイマ , アウトプットコンペアおよ
びインプットキャプチャの機能は , 以下のとおりです。
● フリーランタイマ ( × 1)
フリーランタイマは 16 ビットのアップカウンタ , コントロールレジスタ , プリスケー
ラから構成されています。
フリーランタイマの出力値は , インプットキャプチャ, アウトプットコンペアの基本時
間 ( ベースタイマ ) として使用します。カウント動作のためのクロックは , 8 種類から
選択できます。
• 内部クロック : 8 種類 (φ, φ/2, φ/4, φ/8, φ/16, φ/32, φ/64, φ/128)
• 基本マシンクロックは内部クロックまたは外部クロック (FRCK) から選択できます。
カウンタオーバフローイベント , またはコンペアクリアレジスタ ( コンペアマッチが
モード設定を要求 ) とのコンペアマッチイベントの中で割込みが発生します。
リセットイベント , ソフトウェアによるクリアイベント , またはコンペアクリアレジス
タ 0 とのコンペアマッチイベント時において , カウンタの初期化が可能です。
● アウトプットコンペア ( × 4)
アウトプットコンペアは , 4 本の 16 ビットコンペアレジスタ , コンペア出力用ラッチお
よびコントロールレジスタから構成されています。16 ビットフリーランタイマ値とコ
ンペアレジスタ値が一致したとき出力レベルを反転するとともに割込みを発生できま
す。
• 4 本のコンペアレジスタを独立して動作させることができます。各コンペアレジス
タに対応した出力端子と割込みフラグがあります。
• 2 本のコンペアレジスタをペアにして出力端子を制御できます。
• 出力端子の初期値を設定することができます。
• コンペアマッチにより割込みを発生できます。
186
第 13 章 16 ビット入出力タイマ
● インプットキャプチャ ( × 2)
インプットキャプチャは,独立した2本の外部入力端子と対応したキャプチャレジスタ,
コントロールレジスタ , エッジ検出回路から構成されています。外部入力端子より入力
された信号の任意エッジを検出することにより , フリーランタイマ値をキャプチャレ
ジスタに保持し , 同時に割込みを発生します。
• 外部入力信号のエッジを選択可能です。立上りエッジ , 立下りエッジまたは両エッ
ジから選択できます。
• 2 本のインプットキャプチャは独立して動作可能です。
割込みは , 外部入力信号の有効エッジにより発生可能です。インプットキャプチャは ,
割込みにより DMA を起動できます。
187
第 13 章 16 ビット入出力タイマ
13.2
16 ビット入出力タイマの構成
16 ビット入出力タイマは , フリーランタイマ , アウトプットコンペア , インプット
キャプチャの 3 つのモジュールから構成されています。
■ ブロックダイヤグラム
図 13.2-1 に , 16 ビット入出力タイマのブロックダイヤグラムを示します。
図 13.2-1 16 ビット入出力タイマのブロックダイヤグラム
コントロールロジック
割込み
16 ビットフリーランタイマ
16 ビットタイマ
クリア
各
ブ
ロ
ッ
ク
へ
アウトプットコンペア 0
コンペアレジスタ 0
TQ
OUT0
TQ
OUT1
TQ
OUT2
TQ
OUT3
アウトプットコンペア 1
バ
ス
コンペアレジスタ 1
アウトプットコンペア 2
コンペアレジスタ 2
アウトプットコンペア 3
コンペアレジスタ 3
インプットキャプチャ 0
キャプチャレジスタ 0
エッジ選択
IN0
エッジ選択
IN1
インプットキャプチャ 1
キャプチャレジスタ 1
188
第 13 章 16 ビット入出力タイマ
● フリーランタイマのブロックダイヤグラム
図 13.2-2 に , フリーランタイマのブロックダイヤグラムを示します。
図 13.2-2 フリーランタイマのブロックダイヤグラム
割込み要求
プリス
ケーラ
IVF
IVF
STOP
MODE
SCLR
CLK2
CLK1
CLK0
バ ス
クロック
フリーランタイマ
コンペアクリアレジスタ
コンペア回路
カウント値出力 T15~T00
ICLR
MSI2~MSI0
ICRE
割込み要求
● アウトプットコンペアのブロックダイヤグラム
図 13.2-3 に , アウトプットコンペアのブロックダイヤグラムを示します。
図 13.2-3 アウトプットコンペアのブロックダイヤグラム
16ビットタイマカウンタ値(T15~T00)
T
コンペア制御
Q
OTE0
OUT0(2)
OTE1
OUT1(3)
コンペアレジスタ0 (2)
内
部
デ
|
タ
バ
ス
CMOD
16ビットタイマカウンタ値(T15~T00)
T
コンペア制御
Q
コンペアレジスタ1 (3)
ICP1
コントロール制御部
ICP0
ICE1
ICE0
コンペア1(3)割込み
コンペア0(2)割込み
各制御ブロック
189
第 13 章 16 ビット入出力タイマ
● インプットキャプチャのブロックダイヤグラム
図 13.2-4 に , インプットキャプチャのブロックダイヤグラムを示します。
図 13.2-4 インプットキャプチャのブロックダイヤグラム
エッジ検出
キャプチャデータレジスタ0
16ビットタイマカウンタ値(T15~T00)
EG11
EG10
IN0
EG01
EG00
バ
ス
キャプチャデータレジスタ1
エッジ検出
ICP1
ICP0
ICE1
IN1
ICE0
割込み
割込み
■ 16 ビット入出力タイマに関する端子
16 ビット入出力タイマに関する端子は , IN0/IN1 端子と OUT0/OUT1/OUT2/OUT3 端子
があります。IN0/IN1 端子は汎用入出力ポート (P96/IN0, P97/IN1) とインプットキャプ
チャの入力端子として機能を兼用しており , OUT0/OUT1/OUT2/OUT3 端子は汎用入出
力ポート (PA0/OUT0, PA1/OUT1, PA2/OUT2, PA3/OUT3) とアウトプットコンペア出力
端子を兼用しています。
● IN0/IN1 端子として使用する場合の設定
IN0/IN1 端子として使用する場合は , P96/IN0, P97/IN1 端子はポート方向レジスタを入
力ポート (DDR9 bit7, bit6 → "0") に設定してください。
● OUT0/OUT1/OUT2/OUT3 端子として使用する場合の設定
OUT0/OUT1/OUT2/OUT3 端子を出力として使用する場合は , コントロールレジスタ
(OCS01/OCS23) をアウトプットコンペア端子出力 (OCS01/OCS23 bit10, bit11 → "1") に
設定してください。
● FRCK 端子として使用する場合の設定
FRCK 端子として使用する場合は , P93/FRCK 端子はポート方向レジスタを入力ポート
(DDR9 bit3 → "0") に設定してください。
190
第 13 章 16 ビット入出力タイマ
■ 16 ビット入出力タイマに関する端子のブロックダイヤグラム
図 13.2-5 16 ビット入出力タイマに関する端子のブロックダイヤグラム
周辺機能入力
ポートデータレジスタ (PDR)
(IN0/IN1)
周辺機能出力(OUT0~OUT3)
周辺機能出力許可
オープンドレイン制御信号
(P46/P47のみ)
内部データバス
PDR リード
出力ラッチ
P-ch
PDR ライト
端子
ポート方向レジスタ(DDR)
方向ラッチ
N-ch
DDR ライト
DDR リード
スタンバイ制御(SPL= 1)
スタンバイ制御:ストップモード(SPL=1), タイムベースタイマモード(SPL=1), 時計モード(SPL=1)
191
第 13 章 16 ビット入出力タイマ
13.3
16 ビット入出力タイマのレジスタの構成と機能
16 ビット入出力タイマのレジスタの構成と機能を示します。
● フリーランタイマ
図 13.3-1 フリーランタイマのレジスタ構成
000066H/
000067H
bit15
bit0
CPCLR
コンペアクリアレジスタ
000062H/
000063H
TCDT
タイマカウンタデータレジスタ
000064H/
000065H
TCCS
タイマカウンタコントロール
ステータスレジスタ
● アウトプットコンペア
図 13.3-2 アウトプットコンペアのレジスタ構成
00004AH,00004CH,
00004EH,000050H
00004BH,00004DH,
00004FH,000051H
bit15
000056H,000058H
000057H,000059H
bit0
コンペアレジスタ
OCCP0~OCCP3
OCS1/OCS3
OCS0/OCS2
コントロール
ステータスレジスタ
● インプットキャプチャ
図 13.3-3 インプットキャプチャのレジスタ構成
bit15
00005CH,00005E H
00005DH,00005FH
000060H
192
bit0
IPCP0,IPCP1
ICS01
インプットキャプチャ
データレジスタ
インプットキャプチャ
コントロールステータスレジスタ
第 13 章 16 ビット入出力タイマ
13.3.1
フリーランタイマ
フリーランタイマのレジスタの構成と機能について説明します。
■ フリーランタイマのレジスタ一覧
図 13.3-4 に , フリーランタイマのレジスタ一覧を示します。
図 13.3-4 フリーランタイマのレジスタ一覧
コンペアクリアレジスタ(CPCLR)
アドレス: bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8
000067H
CL15 CL14 CL13 CL12 CL11 CL10 CL09 CL08
R/W
R/W
R/W R/W R/W
R/W
R/W R/W
コンペアクリアレジスタ(CPCLR)
アドレス:
bit7 bit6 bit5
000066H
CL07 CL06 CL05
R/W
R/W
R/W
タイマカウンタ データレジスタ(TCDT)
アドレス: bit15 bit14 bit13
T15
T14
T13
000063H
R/W
R/W
R/W
タイマカウンタ データレジスタ(TCDT)
bit7 bit6 bit5
アドレス:
000062H
T07
T06
T05
R/W
R/W
R/W
タイマカウンタ コントロールステータスレジスタ(TCCS)
bit15 bit14 bit13
アドレス:
000065H
ECKE
-
-
R/W
R/W
R/W
タイマカウンタ コントロールステータスレジスタ(TCCS)
bit7 bit6 bit5
アドレス:
IVF IVFE STOP
000064H
R/W
R/W
R/W
初期値
XXXXXXXXB
bit4 bit3 bit2 bit1 bit0
CL04 CL03 CL02 CL01 CL00 XXXXXXXXB
R/W R/W
R/W
R/W R/W
bit12 bit11 bit10 bit9 bit8
T12 T11
T10
T09 T08 00000000B
R/W R/W
R/W
R/W R/W
bit4 bit3
T04 T03
R/W R/W
bit2
T02
R/W
bit1 bit0
T01 T00
R/W R/W
00000000B
bit12 bit11 bit10 bit9 bit8
MSI2 MSI1 MSI0 ICLR ICRE 0--00000B
R/W R/W
R/W
R/W R/W
bit4 bit3 bit2 bit1 bit0
MODE SCLR CLK2 CLK1 CLK0 00000000B
R/W R/W
R/W
R/W R/W
R/W: リード/ライト可能
193
第 13 章 16 ビット入出力タイマ
■ コンペアクリアレジスタ (CPCLR)
コンペアクリアレジスタ (CPCLR) のビット構成を , 下図に示します。
図 13.3-5 コンペアクリアレジスタ (CPCLR) のビット構成
コンペアクリアレジスタ(CPCLR)
初期値
bit15 bit14 13
bit12 bit11 bit10 bit9 bit8
CL15 CL14 CL13 CL12 CL11 CL10 CL09 CL08 XXXXXXXXB
000067H
R/W
R/W
R/W R/W R/W
R/W
R/W R/W
コンペアクリアレジスタ(CPCLR)
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
000066H
CL07 CL06 CL05 CL04 CL03 CL02 CL01 CL00 XXXXXXXXB
R/W
R/W
R/W R/W R/W
R/W
R/W R/W
R/W: リード/ライト可能
コンペアクリアレジスタ (CPCLR) は , フリーランタイマと比較を行うための 16 ビット
長のコンペアレジスタです。本レジスタは , 初期値不定です。動作を許可する場合は ,
値を設定してから割込み動作を許可してください。また , 本レジスタはワードアクセス
してください。
タイマカウンタコントロールステータスレジスタ (TCCS) の MODE ビットに "1" を設
定している場合は , 本レジスタ値とフリーランタイマ値が一致したとき , フリーランタ
イマ値を "0000H" に初期化します。また , 本レジスタ値とフリーランタイマ値が一致し
たとき , コンペアクリア割込みフラグをセットします。コンペアクリア割込みフラグが
"1" のとき , 割込み動作が許可されている場合は , CPU に対して割込み要求が行われま
す。
■ タイマカウンタデータレジスタ (TCDT)
タイマカウンタデータレジスタ (TCDT) のビット構成を , 下図に示します。
図 13.3-6 タイマカウンタデータレジスタ (TCDT) のビット構成
タイマカウンタ データレジスタ(TCDT)
アドレス: bit15 bit14 bit13
000063H
T15
T14
T13
R/W
R/W
R/W
タイマカウンタ データレジスタ(TCDT)
アドレス: bit7 bit6 bit5
000062H
T07
T06
T05
R/W
R/W
R/W
R/W: リード/ライト可能
初期値
bit12 bit11 bit10 bit9 bit8
T12 T11
T10
T09 T08
R/W R/W
R/W
R/W R/W
00000000B
bit4 bit3
T04 T03
R/W R/W
00000000B
bit2
T02
R/W
bit1 bit0
T01 T00
R/W R/W
タイマカウンタデータレジスタ (TCDT) は 16 ビットのアップカウンタで , フリーラン
タイマのカウンタ値を読み出すことができるレジスタです。カウンタ値はリセット時
に "0000B" にクリアされます。このレジスタに書き込むことによって , タイマ値を設定
できますが , 必ず停止 (STOP=1) 状態で書き込んでください。
このレジスタは , ワードアクセスしてください。フリーランタイマの初期化は , 次の要
因で行われます。
• リセットによる初期化
• タイマカウンタコントロールステータスレジスタ (TCCS) のクリアビット (SCLR) に
よる初期化
• コンペアクリアレジスタ (CPCLR) とタイマカウンタ値の一致による初期化
(TCCS:MODE = 1)
194
第 13 章 16 ビット入出力タイマ
■ タイマカウンタコントロールステータスレジスタ (TCCS)
タイマカウンタコントロールステータスレジスタ (TCCS) のビット構成を , 下図に示し
ます。
図 13.3-7 タイマカウンタコントロールステータスレジスタ (TCCS) のビット構成
タイマカウンタ コントロールステータスレジスタ(TCCS)
初期値
アドレス: bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8
000065H
ECKE
-
- MSI2 MSI1 MSI0 ICLR ICRE 0--00000B
R/W
R/W
R/W R/W R/W
R/W
R/W R/W
タイマカウンタ コントロールステータスレジスタ(TCCS)
アドレス: bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
000064H
IVF IVFE STOP MODE SCLR CLK2 CLK1 CLK0 00000000B
R/W
R/W
R/W R/W R/W
R/W
R/W R/W
R/W: リード/ライト可能
以下に , タイマカウンタコントロールステータスレジスタ (TCCS) の各ビットの機能を
説明します。
[bit15] ECKE:クロック選択ビット
このビットは , フリーランタイマのカウントクロックソースが内部か外部かを選択
します。このビットに書き込んだ後すぐにクロックは変更されますので,アウトプッ
トコンペア , インプットキャプチャが停止状態のときに変更してください。
0
1
内部クロックソースを選択
( 初期値 )
外部端子 (FRCK) より入力されたクロックを選択
[bit14, bit13] 未使用ビット
これらのビットは , 未使用ビットです。
[bit12 ~ bit10] MSI2 ~ MSI0
これらのビットは , コンペアクリア割込みをマスクする回数を設定します。3 ビッ
トのリロードカウンタで構成され , カウンタ値が "000B" になるたびにカウント値を
リロードします。また , 本レジスタへの書込み時にもカウント値をロードします。
マスク回数 = 設定回数となります ( 例 :2 回マスクし 3 回目で割込み処理をする場合 ,
"010B" に設定 )。ただし , "000B" を設定すると割込み要因はマスクされません。
[bit9] ICLR
このビットは , コンペアクリアの割込み要求フラグです。コンペアクリアレジスタ
値とフリーランタイマ値が比較結果一致したときにこのビットが "1" にセットされ
ます。割込み要求許可ビット (bit8 の ICRE ビット ) がセットされていると , 割込み
が発生します。本ビットは , "0" を書き込むことによりクリアされます。"1" の書込
みは意味を持ちません。リードモディファイライト (RMW) 系命令では , 常に "1" が
読み出されます。
0
1
割込み要求なし
割込み要求あり
( 初期値 )
195
第 13 章 16 ビット入出力タイマ
[bit8] ICRE
このビットは , コンペアクリアの割込み許可ビットです。このビットが "1" のとき ,
割込みフラグ (bit9 の ICLR) が "1" にセットされていると割込みが発生します。
0
1
割込み禁止
割込み許可
( 初期値 )
[bit7] IVF:割込み要求フラグ
このビットは , フリーランタイマの割込み要求フラグです。
フリーランタイマがオーバフローを起こしたとき , またはモード設定状態でコンペ
アクリアレジスタとフリーランタイマの比較結果が一致したとき , IVF ビットが "1"
にセットされます。割込み要求許可ビット (bit5 の IVFE) がセットされていると , 割
込みが発生します。本ビットは "0" に設定した場合クリアされます。"1" に設定し
た場合は意味を持ちません。リードモディファイライト (RMW) 系命令では , "1" が
読み出されます。
0
割込み要求なし
1
割込み要求あり
( 初期値 )
[bit6] IVFE:割込み要求許可ビット
このビットは , フリーランタイマの割込み許可ビットです。このビットが "1" のと
き , 書込みフラグ (bit5 の IVF) が "1" にセットされると割込みが発生します。
0
割込み禁止
1
割込み許可
( 初期値 )
[bit5] STOP:カウント動作ビット
このビットは , フリーランタイマのカウントの許可または禁止を設定します。この
ビットは "1" を書き込んだときにタイマのカウントを停止し , "0" を書き込んだとき
にタイマのカウントを開始します。
0
カウント許可 ( 動作 )
1
カウント禁止 ( 停止 )
( 初期値 )
なお , フリーランタイマのカウントが停止すると , アウトプットコンペア動作も停
止します。
[bit4] MODE:タイマ初期化条件ビット
このビットは , フリーランタイマの初期化条件を設定します。
"0" のときは , リセットとクリアビット (bit3 の SCLR) でカウンタ値を初期化します。
"1"のときは,リセットとクリアビット(bit3のSCLR)のほかにフリーランタイマとコ
ンペアクリアレジスタ (CPCLR) の値との一致により , カウンタ値を初期化します。
0
リセット , クリアビットによる初期化
( 初期値 )
1
リセット , クリアビット , コンペアクリアレジスタによる初期化
なお , カウンタ値の初期化はカウント値の変化点で行われます。
196
第 13 章 16 ビット入出力タイマ
[bit3] SCLR:クリアビット
このビットは , 動作中のフリーランタイマ値を "0000H" に初期化します。
"1"を書き込んだときにカウンタ値を"0000H"に初期化します。
"0"を書き込んでも意
味を持ちません。読出し値は常に "0" です。カウンタ値の初期化は , カウンタの変
化点に同期して行われます。
0
意味を持ちません。
( 初期値 )
1
カウンタ値を "0000H" に初期化します。
なお , タイマ停止中に初期化する場合は , データレジスタに "0000H" を書き込んで
ください。
<注意事項>
"1" を書き込んだ後 , 次のカウントクロックまでにこのビットへの "0" 書込みを行うと , カ
ウンタ値の初期化は行いません。
[bit2 ~ bit0] CLK2 ~ CLK0
これらのビットは , フリーランタイマのカウントクロックを選択します。このビッ
トに書込み後すぐにクロックは変更されますので , アウトプットコンペア ,
インプットキャプチャが停止状態のときに変更してください。
CLK2 CLK1 CLK0
カウント
クロック
φ=20MHz
φ=16MHz
φ=8MHz
φ=4MHz
φ=1MHz
0
0
0
φ
50ns
62.5ns
0.125μs
0.25μs
1.0μs
0
0
1
φ/2
100ns
0.125μs
0.25μs
0.5μs
2.0μs
0
1
0
φ/4
0.2μs
0.25μs
0.5μs
1.0μs
4.0μs
0
1
1
φ/8
0.4μs
0.5μs
1.0μs
2.0μs
8.0μs
1
0
0
φ/16
0.8μs
1.0μs
2.0μs
4.0μs
16.0μs
1
0
1
φ/32
1.6μs
2.0μs
4.0μs
8.0μs
32.0μs
1
1
0
φ/64
3.2μs
4.0μs
8.0μs
16.0μs
64.0μs
1
1
1
φ/128
6.4μs
8.0μs
16.0μs
32.0μs
128.0μs
197
第 13 章 16 ビット入出力タイマ
アウトプットコンペア
13.3.2
アウトプットコンペアのレジスタの構成と機能について説明します。
■ アウトプットコンペアのレジスタ一覧
図 13.3-8 に , アウトプットコンペアのレジスタ一覧を示します。
図 13.3-8 アウトプットコンペアのレジスタ一覧
コンペアレジスタ(OCCP0 ~ OCCP3)
アドレス:
00004BH
00004DH
00004FH
000051H
bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8
C15 C14 C13 C12 C11 C10 C09 C08
R/W
R/W
R/W R/W R/W
R/W
R/W R/W
初期値
00000000B
コンペアレジスタ(OCCP0 ~ OCCP3)
アドレス:
00004AH
00004CH
00004EH
000050H
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
C07 C06 C05 C04 C03 C02 C01 C00
R/W
R/W
R/W R/W R/W
R/W
R/W R/W
コントロールレジスタ(OCS01/23)
アドレス: bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8
000057H
- CMOD OTE1 OTE0 OTD1 OTD0
000059H
R/W R/W
R/W
R/W R/W
00000000B
---00000B
コントロールレジスタ(OCS01/23)
アドレス:
bit7 bit6 bit5 bit4 bit3
ICP1 ICP0 ICE1 ICE0
R/W
R/W
R/W R/W
R/W: リード/ライト可能
000056H
000058H
bit2 bit1 bit0
CST1 CST0
R/W R/W
-
0000--00B
<注意事項>
アウトプットコンペアレジスタを書き換える場合は , コンペア割込みのルーチン内で行う
か , コンペア動作禁止の状態で行い , 比較結果一致と書込みが同時に発生しないようにし
てください。
198
第 13 章 16 ビット入出力タイマ
■ アウトプットコンペアのブロックダイヤグラム
図 13.3-9 に,アウトプットコンペアのブロックダイヤグラムを示します。
図 13.3-9 アウトプットコンペアのブロックダイヤグラム
16 ビットタイマカウンタ値 (T15 ~ T00)
コンペアコントロール
TQ
OTE0
OUT0 (2)
OTE1
OUT1 (3)
コンペアレジスタ 0 (2)
バ
ス
16 ビットタイマカウンタ値 (T15 ~ T00)
CMOD
TQ
コンペアコントロール
コンペアレジスタ 1 (3)
ICP1 ICP0 ICE0 ICE0
コントロール部
コンペア 1 (3) 割込み
コントロールブロック
コンペア 0 (2) 割込み
■ コンペアレジスタ (OCCP0 ~ OCCP3)
コンペアレジスタ (OCCP0 ~ OCCP3) のビット構成を , 下図に示します。
図 13.3-10 コンペアレジスタ (OCCP0 ~ OCCP3) のビット構成
コンペアレジスタ(OCCP0 ~ OCCP3)
アドレス:
00004BH
00004DH
00004FH
000051H
bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8
C15 C14 C13 C12 C11 C10 C09 C08
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
初期値
00000000B
コンペアレジスタ(OCCP0 ~ OCCP3)
アドレス:
00004AH
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
00004CH C07 C06 C05 C04 C03 C02 C01 C00
00004EH
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
000050H
R/W: リード/ライト可能
00000000B
アウトプットコンペアレジスタ (OCCP0 ~ OCCP3) は , フリーランタイマと比較を行うた
めの 16 ビット長のコンペアレジスタです。リセットにより初期化されます。本レジスタ
は , ワードアクセスしてください。本レジスタ値とフリーランタイマ値が一致したとき ,
コンペア信号が発生してアウトプットコンペア割込みフラグがセットされます。また , 出
力許可をしている場合は , コンペアレジスタ値に対応した出力レベルが反転出力されま
す。
199
第 13 章 16 ビット入出力タイマ
■ コントロールレジスタ (OCS01/23)
コントロールレジスタ (OCS01/23) のビット構成を , 下図に示します。
図 13.3-11 コントロールレジスタ (OCS01/23) のビット構成
コントロールレジスタ(OCS01/23)
アドレス: bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8
000057H
- CMOD OTE1 OTE0 OTD1 OTD0
000059H
R/W R/W
R/W
R/W R/W
---00000B
コントロールレジスタ(OCS01/23)
アドレス:
bit7 bit6 bit5 bit4 bit3
ICP1 ICP0 ICE1 ICE0
R/W
R/W
R/W R/W
R/W: リード/ライト可能
- : 未使用
000056H
000058H
bit2 bit1 bit0
CST1 CST0
R/W R/W
-
0000--00B
以下に , コントロールレジスタ (OCS01/23) の各ビットの機能を説明します。
[bit15 ~ bit13] 未使用ビット
これらのビットは , 未使用ビットです。これらのビットには , 必ず "0" を書き込んで
ください。
[bit12] CMOD:コンペアモードビット
このビットは , 端子出力を許可した場合 (OTE1=1 または OTE0=1) の比較結果一致
における端子出力レベル反転動作モードを切り換えます。
• CMOD=0 のとき ( 初期値 ) には , コンペアレジスタ値に対応したレベルを反転し
ます。
- OUT0/OUT2: コンペアレジスタ 0/2 の一致によりレベルを反転します。
- OUT1/OUT3: コンペアレジスタ 1/3 の一致によりレベルを反転します。
• CMOD=1 のときには , コンペアレジスタ 0(2) は CMOD=0 時と同じく出力レベル
を反転します。コンペアレジスタ 1(3) に対応した端子 OUT1(OUT3) の出力レベ
ルは , コンペアレジスタ 0(2) の一致とコンペアレジスタ 1(3) の一致の両方で出
力レベルを反転します。
なお , コンペアレジスタ 0(2) と 1(3) が同値のときは , コンペアレジスタ 1 本のと
きと同じ動作をします。
- OUT0/OUT2: コンペアレジスタ 0/2 の一致によりレベルを反転します。
- OUT1/OUT3: コンペアレジスタ 0/2 と 1/3 の一致によりレベルを反転します。
[bit11, bit10] OTE1, OTE0
これらのビットは , アウトプットコンペアの端子出力を許可します。これらのビッ
トの初期値は "0" です。
0
1
汎用ポートとして動作します。
( 初期値 )
アウトプットコンペア端子出力として動作します。
• OTE1: アウトプットコンペア 1/3 に対応
• OTE0: アウトプットコンペア 0/2 に対応
200
第 13 章 16 ビット入出力タイマ
[bit9, bit8] OTD1, OTD0:コンペア端子出力指定ビット
これらのビットは , アウトプットコンペアの端子出力を許可した場合の端子出力レ
ベルを変更するときに使用します。コンペア端子出力の初期値は "0" です。書込み
時は , コンペア動作を停止してから行ってください。読出し時は , アウトプットコ
ンペア端子の出力値が読み出されます。
0
1
コンペア端子出力を "0" にします。
コンペア端子出力を "1" にします。
( 初期値 )
• OTD1: アウトプットコンペア 1/3 に対応
• OTD0: アウトプットコンペア 0/2 に対応
[bit7, bit6] ICP1, ICP0:割込み要求フラグ
これらのビットは , アウトプットコンペアの割込みフラグです。コンペアレジスタ
とフリーランタイマ値が一致した場合に "1" にセットされます。割込み要求ビット
(ICE1, ICE0) が許可されているときにこのビットがセットされると , アウトプット
コンペア割込みが発生します。本ビットは , "0" の書込みによりクリアされ , "1" の
書込みは意味を持ちません。リードモディファイライト (RMW) 系命令では , "1" が
読み出されます。
0
1
比較結果一致なし
比較結果一致あり
( 初期値 )
• ICP1: アウトプットコンペア 1/3 に対応
• ICP0: アウトプットコンペア 0/2 に対応
[bit5, bit4] ICE1, ICE0:割込み要求許可ビット
これらのビットは , アウトプットコンペアの割込み許可ビットです。このビットが
"1"のときに割込みフラグ(ICP1, ICP0)がセットされると,アウトプットコンペア割込
みが発生します。
0
1
アウトプットコンペア割込み禁止
アウトプットコンペア割込み許可
( 初期値 )
• ICE1: アウトプットコンペア 1/3 に対応
• ICE0: アウトプットコンペア 0/2 に対応
[bit3, bit2] 未使用ビット
これらのビットは , 未使用ビットです。
[bit1, bit0] CST1, CST0:コンペア動作許可ビット
これらのビットは , コンペアレジスタとフリーランタイマとの一致動作を許可する
ビットです。
0
1
コンペア動作禁止
コンペア動作許可
( 初期値 )
• CST1: アウトプットコンペア 1/3 に対応
• CST0: アウトプットコンペア 0/2 に対応
コンペア動作を許可する前に , コンペアレジスタ値を設定してください。
<注意事項>
アウトプットコンペアは , フリーランタイマのクロックと同期させているため ,
フリーランタイマを停止させるとコンペア動作も停止します。
201
第 13 章 16 ビット入出力タイマ
13.3.3
インプットキャプチャ
インプットキャプチャのレジスタの構成と機能について説明します。
■ インプットキャプチャのレジスタ一覧
図 13.3-12 に , インプットキャプチャのレジスタ一覧を示します。
図 13.3-12 インプットキャプチャのレジスタ一覧
インプットキャプチャデータレジスタ(IPCP0,IPCP1)
アドレス:
bit15 bit14 bit13 bit12
ch.0 00005DH
ch.1 00005FH CP15 CP14 CP13 CP12
R
R
R
R
インプットキャプチャデータレジスタ(IPCP0,IPCP1)
アドレス:
bit7 bit6 bit5 bit4
ch.0 00005CH
CP07
CP06 CP05 CP04
ch.1 00005EH
R
R
R
R
bit11 bit10 bit9 bit8
CP11 CP10 CP09 CP08
R
R
R
R
初期値
XXXXXXXXB
bit3 bit2 bit1 bit0
CP03 CP02 CP01 CP00 XXXXXXXXB
R
R
R
R
インプットキャプチャ コントロール ステータスレジスタ(ICS01)
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
000060H ICP1 ICP0 ICE1 ICE0 EG11 EG10 EG01 EG00 00000000B
R/W
R/W
R/W R/W R/W
R/W
R/W R/W
R/W: リード/ライト可能
R : リードオンリ
アドレス:
■ インプットキャプチャデータレジスタ (IPCP0, IPCP1)
インプットキャプチャデータレジスタ(IPCP0, IPCP1)のビット構成を,下図に示します。
図 13.3-13 インプットキャプチャデータレジスタ (IPCP0, IPCP1) のビット構成
インプットキャプチャデータレジスタ(IPCP0,IPCP1)
アドレス:
bit15 bit14 bit13 bit12
ch.0 00005DH
ch.1 00005FH CP15 CP14 CP13 CP12
R
R
R
R
インプットキャプチャデータレジスタ(IPCP0,IPCP1)
アドレス:
bit7 bit6 bit5 bit4
ch.0 00005CH
CP07
CP06 CP05 CP04
ch.1 00005EH
R
R
R
R
R : リードオンリ
bit11 bit10 bit9 bit8
CP11 CP10 CP09 CP08
R
R
R
R
初期値
XXXXXXXXB
bit3 bit2 bit1 bit0
CP03 CP02 CP01 CP00 XXXXXXXXB
R
R
R
R
インプットキャプチャデータレジスタ (IPCP0, IPCP1) は , 対応した外部端子入力波形の
有効エッジを検出したときにフリーランタイマ値を保持するレジスタです。
このレジスタは , ワードアクセスをしてください。このレジスタに書き込むことはでき
ません。
202
第 13 章 16 ビット入出力タイマ
■ インプットキャプチャコントロールステータスレジスタ (ICS01)
インプットキャプチャコントロールステータスレジスタ (ICS01) のビット構成を , 下図
に示します。
図 13.3-14 インプットキャプチャコントロールステータスレジスタ (ICS01) のビット構成
インプットキャプチャ コントロール ステータスレジスタ(ICS01)
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 初期値
000060H ICP1 ICP0 ICE1 ICE0 EG11 EG10 EG01 EG00 00000000B
R/W
R/W
R/W R/W R/W
R/W
R/W R/W
R/W: リード/ライト可能
アドレス:
以下に , インプットキャプチャコントロールステータスレジスタ (ICS01) の各ビットの
機能を説明します。
[bit7, bit6] ICP1, ICP0:割込みフラグ
これらのビットは , インプットキャプチャ割込みフラグです。外部入力端子の有効
エッジを検出すると , このビットを "1" にセットします。割込み許可ビット (ICE1,
ICE0) がセットされていると , 有効エッジを検出することにより割込みを発生しま
す。
本ビットは "0" 書込みによりクリアされます。"1" の書込みは意味を持ちません。
リードモディファイライト (RMW) 系命令では , "1" が読み出されます。
有効エッジ検出なし
有効エッジ検出あり
0
1
( 初期値 )
• ICP1: インプットキャプチャ 1 に対応
• ICP0: インプットキャプチャ 0 に対応
[bit5, bit4] ICE1, ICE0:割込み許可ビット
これらのビットは , インプットキャプチャ割込み許可ビットです。このビットが "1"
のときに割込み要求フラグ (ICP1, ICP0) がセットされると , インプットキャプチャ
割込みが発生します。
割込み禁止
割込み許可
0
1
( 初期値 )
• ICE1: インプットキャプチャ 1 に対応
• ICE0: インプットキャプチャ 0 に対応
[bit3 ~ bit0] EG11,EG10,EG01,EG00:外部入力の有効エッジ極性ビット
これらのビットは,外部入力の有効エッジ極性を指定します。インプットキャプチャ
動作許可も兼用しています。
EG11/EG01
EG10/EG00
0
0
1
1
0
1
0
1
エッジ検出極性
エッジ検出なし ( 停止状態 )( 初期値 )
立上りエッジ検出
立下りエッジ検出
両エッジ検出
• EG11/EG10: インプットキャプチャ 1 に対応
• EG01/EG00: インプットキャプチャ 0 に対応
203
第 13 章 16 ビット入出力タイマ
13.4
16 ビット入出力タイマの割込み
16 ビット入出力タイマの割込みは , フリーランタイマのカウンタ値がオーバフロー
した場合 , インプットキャプチャ入力端子へのトリガエッジの入力の場合 , およびア
ウトプットコンペアの一致検出した場合に発生します。
インプットキャプチャとアウトプットコンペアの割込みでは , DMA 転送および拡張
インテリジェント I/O サービス (EI2OS) を起動することができます。
■ 16 ビット入出力タイマの割込み
16 ビット入出力タイマの割込み制御ビットと割込み要因を , 表 13.4-1 に示します。
表 13.4-1 16 ビット入出力タイマの割込み
タイマカウンタ
オーバフロー割込み
インプットキャプチャ
割込み
割込み要求フラグ
TCCS: IVF (bit7)
ICS01: ICP1 (bit7)
ICS01: ICP0 (bit6)
ch.1
ch.0
OCS01/23: ICP1 (bit7) ch.1, ch.3
OCS01/23: ICP0 (bit6) ch.0, ch.2
割込み要求出力許可ビット
TCCS: IVFE (bit6)
ICS01: ICE1 (bit5) ch.1
ICS01: ICE0 (bit4) ch.0
OCS01/23: ICE1 (bit5) ch.1, ch.3
OCS01/23: ICE0 (bit4) ch.0, ch.2
割込み発生要因
16 ビットフリーラン
タイマのカウンタ
オーバフロー
インプットキャプチャ
入力端子への有効エッ
ジの入力
アウトプットコンペア
レジスタ値とカウンタ値の一致
ICS01
ICS01
OCS01/OCS23
OCS01/OCS23
アウトプットコンペア
割込み
: ICP0/ICE0 がインプットキャプチャ端子 (IN0) に対応
: ICP1/ICE1 がインプットキャプチャ端子 (IN1) に対応
: ICP0/ICE0 がアウトプットコンペア端子 (OUT0/OUT2) に対応
: ICP1/ICE1 がアウトプットコンペア端子 (OUT1/OUT3) に対応
● タイマカウンタオーバフロー割込み
タイマカウンタオーバフロー割込み要求フラグがセットされる場合
次の場合に , タイマカウンタコントロールステータスレジスタのタイマカウンタオー
バフロー発生フラグがセットされます (TCCS: IVF=1) 。
• フリーランタイマのカウントアップでオーバフロー ("FFFFH" → "0000H") が発生し
た場合
• コンペアクリアレジスタによる初期化を許可に設定して (TCCS: MODE=1) , フリー
ランタイマの設定値とコンペアクリアレジスタの値が一致した場合
タイマカウンタオーバフロー割込み要求が発生する場合
タイマカウンタオーバフロー割込み要求を許可に設定していた場合は
(TCCS:
IVFE=1), タイマカウンタオーバフロー発生フラグが "1" にセットされると (TCCS:
IVF=1) 割込み要求を発生します。
204
第 13 章 16 ビット入出力タイマ
● インプットキャプチャ割込み
インプットキャプチャ端子で設定した有効エッジ (ICS: EG) が検出された場合の割込
み動作を次に示します。
• 検出された時点のフリーランタイマのカウント値がインプットキャプチャレジス
タに格納されます。
• コントロールステータスレジスタの有効エッジ検出フラグが "1" にセットされます
(ICS: ICP=1) 。
• インプットキャプチャ割込み要求の出力を許可に設定している場合は (ICS: ICE=1)
割込み要求が発生します。
● アウトプットコンペア割込み
フリーランタイマのカウント値とコンペアレジスタ設定値の一致が検出された場合の
割込み発生動作を次に示します。
• コントロールレジスタのアウトプットコンペア一致フラグが "1" にセットされます
(OCS:ICP=1) 。
• アウトプットコンペア割込み要求を許可に設定している場合 (OCS: ICE=1) は , 割込
み要求が発生します。
■ 16 ビット入出力タイマの割込みと DMA 転送および EI2OS
表 13.4-2 に , ソフトウェア割込みを除く割込み要因と割込みベクタおよび割込み制御
レジスタの関係を示します。
表 13.4-2 割込み要因と割込みベクタ / 割込み制御レジスタ
EI2OS
のクリア
μDMAC
チャネル
番号
インプットキャプチャ (ch.0) 取込み *
○
インプットキャプチャ (ch.1) 取込み
割込み要因
割込みベクタ
番号
アドレス
5
#26
FFFF94H
○
6
#27
FFFF90H
アウトプットコンペア (ch.0) 一致
○
8
#28
FFFF8CH
アウトプットコンペア (ch.1) 一致
○
9
#29
FFFF88H
アウトプットコンペア (ch.2) 一致
○
10
#30
FFFF84H
アウトプットコンペア (ch.3) 一致
○
×
#31
FFFF80H
⎯
⎯
×
#32
FFFF7CH
⎯
⎯
×
#33
○
12
#35
16 ビットフリーランタイマオーバフロー ,*
16 ビットリロードタイマアンダフロー
割込み制御レジスタ
番号
アドレス
ICR07
0000B7H
ICR08
0000B8H
ICR09
0000B9H
ICR10
0000BAH
FFFF78H
ICR11
0000BBH
FFFF70H
ICR12
0000BCH
× : 割込み要求フラグはクリアされません。
○ : 割込み要求フラグはクリアされます。
* : この割込み要因は , ほかの周辺機能の割込み要因と割込み番号を共有しています。
詳細につきましては , 表 4.2-2 を参照してください。
( 注意事項 )
同一割込み番号に 2 つの割込み要因があった場合は , リソースは両方の割込み要求フ
ラグがクリアされます。したがって , 2 要因のどちらか 1 つが EI2OS/μDMAC 機能を使
用すると , もう 1 つの割込み機能は使用できません。該当リソースの割込み要求許可
ビットを "0" にして , ソフトウェアポーリング処理で対処してください。
205
第 13 章 16 ビット入出力タイマ
■ DMA 転送 , および EI2OS 機能への対応
インプットキャプチャとフリーランタイマは DMA 転送機能 , および EI2OS 機能に対応
しています。アウトプットコンペアは EI2OS 機能と ch.0 ~ ch.2 のみが DMA 転送機能
に対応しています。DMA または EI2OS 機能を使用する場合には , 割込み制御レジスタ
(ICR) を共有するほかの割込みを禁止に設定する必要があります。
206
第 13 章 16 ビット入出力タイマ
13.5
16 ビット入出力タイマの動作
16 ビット入出力タイマの動作およびタイミングについて説明します。
■ 16 ビット入出力タイマの動作およびタイミング
16 ビット入出力タイマの動作およびタイミングとして以下の項目について説明しま
す。
• フリーランタイマの動作
• アウトプットコンペアの動作
• インプットキャプチャの動作
• フリーランタイマのタイミング
- カウントタイミング
- クリアタイミング
• アウトプットコンペアのタイミング
- 割込みタイミング
- 出力端子の変化タイミング
• インプットキャプチャのタイミング
- 入力信号に対するキャプチャタイミング
207
第 13 章 16 ビット入出力タイマ
13.5.1
フリーランタイマの動作
フリーランタイマの動作およびタイミングについて説明します。
■ フリーランタイマの動作
フリーランタイマは , リセット解除後にカウンタ値 "0000H" よりカウントを開始しま
す。このカウンタ値がアウトプットコンペアとインプットキャプチャの基準時間とな
ります。
カウンタ値は , 次の条件でクリアされます。
• オーバフローが発生したとき
• アウトプットコンペア 0 値とコンペア一致したとき ( モード設定が必要 )
• TCCS レジスタの SCLR ビットに "1" を書き込んだとき
• TCDT レジスタに "0000H" を書き込んだとき
• リセット時
割込みはオーバフローが発生したとき , またはコンペアレジスタ 0 値とフリーランタイ
マのカウンタ値の比較結果が一致したときに発生します。比較結果一致割込みには
モード設定が必要です。
図 13.5-1 にオーバフローによるカウンタクリアのタイミングチャートを , 図 13.5-2 に
比較結果一致によるカウンタクリアのタイミングチャートを示します。
図 13.5-1 オーバフローによるカウンタクリアのタイミングチャート
カウンタ値
FFFFH
BFFFH
7FFFH
3FFFH
0000H
時間
リセット
割込み
図 13.5-2 比較結果一致によるカウンタクリアのタイミングチャート
カウンタ値
FFFFH
BFFFH
7FFFH
3FFFH
0000H
時間
リセット
コンペアレジスタ値
割込み
208
BFFFH
第 13 章 16 ビット入出力タイマ
13.5.2
アウトプットコンペアの動作
アウトプットコンペアは , 設定されたコンペアレジスタ値とフリーランタイマとの値
を比較して , 一致していた場合に割込み要求を発生するとともに出力レベルを反転し
ます。
■ 出力波形例
以下に , 出力波形例を示します。
● コンペアレジスタ 0, 1 を使用した場合の出力波形例
出力の初期値を "0" とした場合の出力波形例を , 図 13.5-3 に示します。
図 13.5-3 コンペアレジスタ 0, 1 を使用した場合の出力波形例 ( 出力の初期値 =0)
カウンタ値
FFFFH
BFFFH
7FFFH
3FFFH
0000H
時間
リセット
コンペアレジスタ0値
BFFFH
コンペアレジスタ1値
7FFFH
OUT0
OUT1
コンペア0割込み
コンペア1割込み
CMOD=1 のとき , 2 組のコンペアレジスタを使って出力レベルを変えることもできま
す。
209
第 13 章 16 ビット入出力タイマ
● 2 組のコンペアレジスタによる出力波形例
出力の初期値を "0" とした場合の出力波形例を , 図 13.5-4 に示します。
図 13.5-4 2 組のコンペアレジスタによる出力波形例 ( 出力の初期値 =0)
カウンタ値
FFFFH
BFFFH
7FFFH
3FFFH
0000H
時間
リセット
コンペアレジスタ0値
BFFFH
コンペアレジスタ1値
7FFFH
OUT0
コンペア0に対応
OUT1
コンペア1に対応
コンペア0割込み
コンペア1割込み
<注意事項>
コンペアレジスタを書き換える場合はコンペア割込みのルーチン内で行うか , コンペア動
作禁止の状態で行い , 比較結果一致と書込みが同時に発生しないようにしてください。
210
第 13 章 16 ビット入出力タイマ
13.5.3
インプットキャプチャの動作
インプットキャプチャは , 設定された有効エッジを検出するとフリーランタイマの値
をキャプチャレジスタに取り込んで割込み要求を発生します。
■ インプットキャプチャの取込みタイミング例
図 13.5-5 に , インプットキャプチャの取込みタイミング例を示します。
図 13.5-5 インプットキャプチャの取込みタイミング例
カウンタ値
FFFFH
BFFFH
7FFFH
3FFFH
0000H
時間
リセット
IN0
IN1
IN例
キャプチャ0
不定
キャプチャ1
不定
キャプチャ例
不定
3FFFH
7FFFH
BFFFH
7FFFH
キャプチャ0割込み
キャプチャ1割込み
キャプチャ例割込み
211
第 13 章 16 ビット入出力タイマ
フリーランタイマのタイミング
13.5.4
フリーランタイマは , 入力されたクロック ( 内部または外部クロック ) によりカウン
トアップされます。外部クロック選択時は , 立上りエッジでカウントされます。
■ フリーランタイマのカウントタイミング
図 13.5-6 に , フリーランタイマのカウントタイミングを示します。
図 13.5-6 フリーランタイマのカウントタイミング
φ
外部クロック入力
カウントクロック
N
カウンタ値
N+1
カウンタのクリアはリセット , ソフトウェアによるクリアおよびコンペアレジスタ 0 と
フリーランタイマとの一致で行うことができます。リセットとソフトウェアでのカウ
ンタクリアは , クリア発生とともに行われます。コンペアレジスタ 0 との一致によるカ
ウンタクリアは , カウントタイミングに同期して行われます。
■ フリーランタイマのクリアタイミング ( コンペアレジスタ 0 との一致 )
図 13.5-7 に , コンペアレジスタ 0 との一致によるフリーランタイマのクリアタイミン
グを示します。
図 13.5-7 フリーランタイマのクリアタイミング ( コンペアレジスタ 0 との一致 )
φ
N
コンペアレジスタ値
コンペア一致
カウンタ値
212
N
0000H
第 13 章 16 ビット入出力タイマ
アウトプットコンペアのタイミング
13.5.5
アウトプットコンペアは , フリーランタイマと設定したコンペアレジスタの値が一致
したときにコンペアマッチ信号が発生して出力値を反転するとともに割込み要求を
発生します。コンペアマッチ時の出力反転タイミングはカウンタタイミングに同期
して行われます。
■ 割込みタイミング
図 13.5-8 に , アウトプットコンペアの割込みタイミングを示します。
図 13.5-8 アウトプットコンペアの割込みタイミング
φ
カウンタ値
N
コンペアレジスタ値
N
N+1
コンペア一致信号
割込み
■ 出力端子の変化タイミング
図 13.5-9 に , アウトプットコンペアの出力端子の変化タイミングを示します。
図 13.5-9 アウトプットコンペアの出力端子の変化タイミング
カウンタ値
コンペアレジスタ値
N
N+1
N
N+1
N
コンペア一致信号
出力端子
<注意事項>
コンペアレジスタを書き換える場合は , コンペア割込みのルーチン内で行うか , コンペア
動作禁止の状態で行い , 比較結果一致と書込みが同時に発生しないようにしてください。
213
第 13 章 16 ビット入出力タイマ
13.5.6
インプットキャプチャのタイミング
インプットキャプチャの入力信号に対するキャプチャタイミングを示します。
■ 入力信号に対するキャプチャタイミング
図 13.5-10 に , インプットキャプチャの入力信号に対するキャプチャタイミングを示し
ます。
図 13.5-10 インプットキャプチャの入力信号に対するキャプチャタイミング
φ
カウンタ値
インプットキャプチャ入力
N
N+1
有効エッジ
キャプチャ信号
キャプチャレジスタ
割込み
214
N+1
第 13 章 16 ビット入出力タイマ
13.6
16 ビット入出力タイマのプログラム例
16 ビット入出力タイマのプログラム例を示します。
■ フリーランタイマのプログラム例
プログラム例
設定手順例
フリーランタイマ , クロック= φ/2 , 割込み処理で
オーバフロー回数をカウント。
4
void FREE_RUN_TIMER_sample(void)
{
FREERUN_initial();
FREERUN_start();
}
<初期設定>
・フリーランタイマの制御
制御レジスタの設定
クロック選択 >>
void FREERUN_initial(void) {
TCCS
.ECKE
割込み要求フラグ >>
.IVF
割込み要求許可 >>
.IVFE
カウント動作 >>
.STOP
タイマの初期化条件 >>
.MODE
.SCLR
TCDT クリア >>
カウントクロック >>
タイマデータ値の設定
.CLK2 ~ CLK0
TCDT
・割込み関連
割込みレベルの設定
I フラグの設定
ICR12
(CCR)
・変数の設定
<起動>
・フリーランタイマ ch.0 起動
レジスタ名 . ビット名
カウント動作起動
TCCS .STOP
<割込み>
・割込み処理
/* bit7 = 0
/* bit6 = 1
IVF 割込み要求フラグ */
IVFE 割込み許可 */
/* bit5 = 1
STOP カウント禁止 */
/* bit4 = 0
MODE リセット , クリアビットによる初期化 */
/* bit3 = 1
SCLR フリーランタイマ値の初期化 */
/* bit2 ~ bit0 = 100B CLK2 ~ CLK0 カウントクロック φ/16 */
IO_TCDT = 0x0000;
/* タイマデータ値の初期化
IO_ICR12.byte = 0x00;
/* フリーランタイマ 割込みレベル設定 ( 値は任意 ) */
__EI();
count = 0;
/* 割込み許可 */ }
void FREERUN_start(void)
{
IO_TCCS.bit.STOP = 0;
}
/* bit5 = 0
*/
STOP カウント許可 */
__interrupt void FREE_RUN_TIMER_int(void) レジスタ名 . ビット名
割込み要求フラグのクリア
IO_TCCS.word = 0x006C; /* 設定値 =0000_0000_0110_1100 */
/* bit15 = 0 ECKE 内部クロックソース */
TCCS .IVF
( 任意の処理 )
変数のカウント
{
IO_TCCS.bit.IVF = 0;
count++;
}
/* bit7 = 0
IVF オーバフローフラグのクリア */
<割込みベクタ>
・ベクタテーブルの設定
#pragma intvect FREE_RUN_TIMER_int 35
( 注意事項 )
事前にクロック関連の設定および __set_il( 数値 ) の
設定が必要です。「第 4 章 割込み」および「第 6 章
クロック」を参照してください。
( 注意事項 )
レジスタの記述形式については , 「F2MC-16LX ファミリ MB90980 シリーズ用サンプ
ル I/O レジスタファイル 使用手引書」を参照してください。 215
第 13 章 16 ビット入出力タイマ
■ プログラム例以外の設定方法
● 内部クロックの種類と選択方法
8 種の内部クロックがありクロック選択ビット (TCCS:ECKE) と , カウントクロック
ビット (TCCS:CLK[2:0]) で設定します。
表 13.6-1 内部クロックの種類と選択方法
設定
内部クロック
カウント周期
クロック選択
ビット (ECKE)
カウントクロック
ビット (CLK[2:0])
φ = 20MHz
φ = 16MHz
φ を選択するには
"0" にする
"000B" にする
50ns
62.5ns
φ/2 を選択するには
"0" にする
"001B" にする
100ns
0.125μs
φ/4 を選択するには
"0" にする
"010B" にする
0.2μs
0.25μs
φ/8 を選択するには
"0" にする
"011B" にする
0.4μs
0.5μs
φ/16 を選択するには
"0" にする
"100B" にする
0.8μs
1.0μs
φ/32 を選択するには
"0" にする
"101B" にする
1.6μs
2.0μs
φ/64 を選択するには
"0" にする
"110B" にする
3.2μs
4.0μs
φ/128 を選択するには
"0" にする
"111B" にする
6.4μs
8.0μs
● 外部クロックの選択方法
クロック選択ビット (TCCS:ECKE) とデータ方向ビット , ポート機能ビットで設定しま
す。
表 13.6-2 外部クロックの選択方法
設定
クロック選択ビット (ECKE) を "1" にする
データ方向ビット (DDR9:P93) を
"0" にする
端子
カウント
周期
FRCK
2/φ 以上
● フリーランタイマのカウント動作を許可 / 禁止する方法
カウント動作ビット (TCCS:STOP) で設定します。
表 13.6-3 フリーランタイマのカウント動作を許可 / 禁止する方法
動作
カウント動作ビット (STOP)
フリーランタイマのカウント動作を許可させるには
"0" にする
フリーランタイマのカウント動作を禁止させるには
"1" にする
● フリーランタイマをクリアする方法
フリーランタイマをクリアするには以下の方法があります。
• クリアビット (TCCS:SCLR) で設定
表 13.6-4 フリーランタイマをクリアする方法
動作
フリーランタイマをクリアするには
216
クリアビット (SCLR)
"1" を書き込む
第 13 章 16 ビット入出力タイマ
• フリーランタイマ値とコンペアクリアレジスタ値との一致
( タイマ初期化条件ビット (TCCS:MODE) で設定 )
表 13.6-5 フリーランタイマをクリアする方法
動作
タイマ初期化条件ビット (MODE)
比較結果一致でフリーランタイマをクリアするには
"1" にする
• リセット
リセット ( 外部リセット , ウォッチドッグリセット , ソフトウェアリセット ) により
フリーランタイマをクリアします。
• タイマカウンタデータレジスタ (TCDT) へ "0000 H" を設定
フリーランタイマの動作停止中にタイマカウンタデータレジスタ(TCDT)へ"0000H"
を書き込むと , カウント値が "0000 H" にクリアされます。
● 割込み関連レジスタ
割込みレベル , ベクタの関係は下表のとおりです。
割込みレベル , 割込みベクタの詳細については「第 4 章 割込み」を参照してください。
表 13.6-6 割込みレベル , ベクタの関係
割込みベクタ
割込みレベル設定レジスタ
#35
アドレス : 0FFFF70H
割込みレベルレジスタ (ICR12)
アドレス : 000BCH
割込み要求フラグ (TCCS:IVF) は自動的にクリアされませんので , 割込み処理から復帰
する前にソフトウェアにてクリアしてください (IVF ビットに "0" を書き込む ) 。
● 割込みの種類
割込みは 1 種類です。フリーランタイマのオーバフローで発生します。
● 割込みを許可する方法
割込みの許可 / 禁止は割込み要求許可ビット (TCCS:IVFE) で設定します。
表 13.6-7 割込みを許可する方法
制御
割込み要求許可ビット (IVFE)
割込み禁止
"0" にする
割込み許可
"1" にする
割込み要求のクリアは割込み要求フラグ (TCCS:IVF) で設定します。
表 13.6-8 割込み要求のクリア
制御
割込み要求フラグ (IVF)
割込み要求クリア
"0" を書き込む
● フリーランタイマ動作を停止する方法
カウント動作ビット (TCCS:STOP) で設定します。
表 13.6-9 フリーランタイマ動作を停止する方法
動作
フリーランタイマのカウント動作を停止させるには
カウント動作ビット (STOP)
"1" にする
217
第 13 章 16 ビット入出力タイマ
■ アウトプットコンペアのプログラム例
プログラム例
void OUTPUT01_sample(void) 設定手順例
2 チャネル独立出力
コンペア動作 (7FFFH,BFFFFH)
割込み発生 コンペアクリアなし
freerun_initial(); OUTPUT01_initial(); OUTPUT01_start(); freerun_start(); {
}
<初期設定>
・フリーランタイマの制御
制御レジスタの設定
クロック選択 >>
TCCS
.ECKE
void freerun_initial(void)
{
IO_TCCS.word = 0x0020; /* 設定値 =0000_0000_0010_0000 */
/* bit15 = 0
ECKE 内部クロックソース */
割込み要求フラグ >>
割込み要求許可 >>
.IVF
.IVFE
/* bit7 = 0
/* bit6 = 0
IVF 割込み要求フラグ */
IVFE 割込み禁止 */
カウント動作 >>
/* bit5 = 1
STOP カウント禁止 */
TCDT クリア >>
.STOP
.MODE
.SCLR
/* bit4 = 0
/* bit3 = 0
MODE リセット , クリアビットによる初期化 */
SCLR フリーランタイマ値の初期化 */
カウントクロック >>
.CLK2 ~ CLK0
/* bit2 ~ bit0 = 000B CLK2 ~ CLK0 カウントクロック
φ/4=32MHz/4 */
IO_TCDT = 0x0000;
}
/* タイマデータ値の初期化 */
タイマの初期化条件 >>
タイマデータ値の設定
TCDT
・アウトプットコンペアの制御
レジスタ名 ビット名
OCS01
制御レジスタの設定
.CMOD
端子出力レベル反転動作≫
.OTE1,OTE0
端子出力許可
.OTD1,OTD0
端子出力レベル指定≫
.ICP1,ICP0
割込み要求フラグ≫
.ICE1,ICE0
割込み要求許可≫
.CST1.CST0
動作許可設定 >>
void OUTPUT01_initial(void) {
IO_OCS01.word = 0x0C00; /* 設定値 =0000_1100_0000_0000 */
/* bit15 ~ bit13 = 000B 未定義ビット */
/* bit12 = 0
CMOD ch.0, ch.1 レベル反転 */
/* bit11, bit10 = 11B OTE1, OTE0 端子出力許可 */
/* bit9, bit8 = 00B
OTD1, OTD0 コンペア端子出力 0 */
/* bit7, bit6 = 00B
ICP1, ICP0 アウトプットコンペアフラグのクリア*/
/* bit5, bit4 = 00B
ICE1, ICE0 アウトプットコンペア割込み禁止 */
/* bit3, bit2 = 00B
未定義ビット */
/* bit1, bit0 = 00B
CST1, CST0 コンペア動作禁止 */
コンペア値 ch.0 の設定
OCCP0
コンペア値 ch.1 の設定
OCCP1
IO_OCCP0 = BFFF;
IO_OCCP1 = 7FFF;
/* コンペアレジスタ ch.0 の設定 */
/* コンペアレジスタ ch.1 の設定 */
IO_ICR08.byte = 0x00;
IO_ICR09.byte = 0x00;
/* アウトプットコンペア ch.0 割込みレベル設定
( 値は任意 ) */
/* アウトプットコンペア ch.1 割込みレベル設定
( 値は任意 ) */
/* 割込み許可 */
・割込み関連
割込みレベルの設定
割込みレベルの設定
I フラグの設定
ICR08
ICR09
(CCR)
__EI();
}
<起動>
・アウトプットコンペア起動
レジスタ名 . ビット名
割込み制御
コンペア動作起動
OCS01 .ICE1.ICE0
OCS01 .CST1.CST0
void OUTPUT01_start(void)
{
IO_OCS01.word = 0x0C30; /* bit5,4 = 11B
IO_OCS01.word = 0x0C33; /* bit1,0 = 11B
・フリーランタイマ起動
レジスタ名 . ビット名
カウント動作起動
TCCS
.STOP
}
void freerun_start(void)
{
IO_TCCS.bit.STOP = 0;
}
/* bit4 = 0
ICE1, ICE0 アウトプットコンペア割込
み許可 */
CST1, CST0 コンペア動作許可 */
STOP カウント許可 */
( 続く )
218
第 13 章 16 ビット入出力タイマ
( 続き )
<割込み>
・割込み処理
レジスタ名 . ビット名
割込み要求フラグのクリア
__interrupt void OUTPUT0_int(void) {
IO_OCS01.bit.ICP0 = 0;
OCS01 .ICP0
/* bit6 = 0
ICP0 割込みフラグのクリア */
・・・・・・
( 任意の処理 )
••••••••••
}
__interrupt void OUTPUT1_int(void) {
割込み要求フラグのクリア
OCS01 .ICP1
IO_OCS01.bit.ICP1 = 0;
・・・・・・
( 任意の処理 )
••••••••••
/* bit7 = 0
ICP1 割込みフラグのクリア */
}
<割込みベクタ>
・ベクタテーブルの設定
#pragma intvect OUTPUT0_int 28
#pragma intvect OUTPUT1_int 29
( 注意事項 )
事前にクロック関連の設定および __set_il( 数値 ) の設
定が必要です。「第 4 章 割込み」および「第 6 章 ク
ロック」を参照してください。
( 注意事項 )
レジスタの記述形式については , 「F2MC-16LX ファミリ MB90980 シリーズ用サンプル
I/O レジスタファイル 使用手引書」を参照してください。
■ プログラム例以外の設定方法
● コンペア値を設定する方法
コンペアレジスタ OCCP0 ~ OCCP3 にコンペア値を書き込みます。
● コンペアモードを設定する方法 (OUT1 ~ OUT3 出力にて有効 )
コンペアモードビット (OCS01:CMOD, OCS23:CMOD) で行います。
表 13.6-10 コンペアモードを設定する方法
動作
コンペアモードビット
フリーランタイマとコンペアレジスタ 1 のみの比較結果
一致により OUT1 出力を反転させるには
(OCS01:CMOD) ビットを "0" にする
フリーランタイマとコンペアレジスタ 3 のみの比較結果
一致により OUT3 出力を反転させるには
(OCS23:CMOD) ビットを "0" にする
フリーランタイマとコンペアレジスタ 0, およびフリーラ
ンタイマとコンペアレジスタ 1, との比較結果一致により
OUT1 出力を反転させるには
(OCS01:CMOD) ビットを "1" にする
フリーランタイマとコンペアレジスタ 2, およびフリーラ
ンタイマとコンペアレジスタ 3, との比較結果一致により
OUT3 出力を反転させるには
(OCS23:CMOD) ビットを "1" にする
CMOD ビットとは関係なく , 以下の出力がされます。
• OUT0 出力 は , フリーランタイマとコンペアレジスタ 0 のみの比較結果一致により
出力を反転します。
• OUT2 出力 は , フリーランタイマとコンペアレジスタ 2 のみの比較結果一致により
出力を反転します。
219
第 13 章 16 ビット入出力タイマ
● コンペア動作を許可 / 禁止する方法
コンペア動作許可ビット (OCS01:CST[1:0], OCS23:CST[1:0]) で行います。
表 13.6-11 コンペア動作を許可 / 禁止する方法
動作
コンペア動作を停止 ( 禁止 ) にするには
コンペア動作を許可するには
コンペア
コンペア動作許可ビット
コンペア 0
(OCS01.CST0) を "0" にする
コンペア 1
(OCS01.CST1) を "0" にする
コンペア 2
(OCS23.CST0) を "0" にする
コンペア 3
(OCS23.CST1) を "0" にする
コンペア 0
(OCS01.CST0) を "1" にする
コンペア 1
(OCS01.CST1) を "1" にする
コンペア 2
(OCS23.CST0) を "1" にする
コンペア 3
(OCS23.CST1) を "1" にする
● コンペア端子出力の初期レベルを設定する方法
コンペア端子出力指定ビット (OCS01:OTD[1:0], OCS23:OTD[1:0]) で設定します。
表 13.6-12 コンペア端子出力の初期レベルを設定する方法
動作
220
コンペア端子出力指定ビット
コンペア 0 端子を "L" にするには
(OCS01:OTD0) を "0" にする
コンペア 0 端子を "H" にするには
(OCS01:OTD0) を "1" にする
コンペア 1 端子を "L" にするには
(OCS01:OTD1) を "0" にする
コンペア 1 端子を "H" にするには
(OCS01:OTD1) を "1" にする
コンペア 2 端子を "L" にするには
(OCS23:OTD0) を "0" にする
コンペア 2 端子を "H" にするには
(OCS23:OTD0) を "1" にする
コンペア 3 端子を "L" にするには
(OCS23:OTD1) を "0" にする
コンペア 3 端子を "H" にするには
(OCS23:OTD1) を "1" にする
第 13 章 16 ビット入出力タイマ
● コンペア端子 OUT0 ~ OUT3 を出力に設定する方法
ポート機能レジスタ (OCS01:OTE[1:0], OCS23:OTE[1:0]) で設定します。
表 13.6-13 コンペア端子を出力に設定する方法
動作
ポート機能ビット
コンペア 0 端子 (OUT0) を出力に設定するには
(OCS01:OTE0) を "1" にする
コンペア 1 端子 (OUT1) を出力に設定するには
(OCS01:OTE1) を "1" にする
コンペア 2 端子 (OUT2) を出力に設定するには
(OCS23:OTE0) を "1" にする
コンペア 3 端子 (OUT3) を出力に設定するには
(OCS23:OTE1) を "1" にする
● フリーランタイマをクリアする方法
クリアビット (TCCS:SCLR) で設定します。
表 13.6-14 フリーランタイマをクリアする方法
動作
クリアビット (SCLR)
フリーランタイマをクリアするには
"1" を書き込む
その他の方法については「13.3.1 フリーランタイマ」を参照してください。
● コンペア動作を許可する方法
コンペア動作許可ビット (OCS01:CST[1:0], OCS23:CST[1:0]) で行います。
● フリーランタイマ値とコンペアレジスタ値を比較して一致したときにフリーランタイマを
クリアさせる方法
タイマ初期化条件ビット (TCCS:MODE) で設定します。
表 13.6-15 フリーランタイマをクリアさせる方法
動作
コンペア 0 一致でフリーランタイマ 0 をクリアするには
タイマ初期化条件ビット (MODE)
(TCCS:MODE) を "1" にする
221
第 13 章 16 ビット入出力タイマ
● 割込み関連レジスタ
チャネル , 割込みレベル , ベクタの関係は下表のとおりです。
割込みレベル , 割込みベクタの詳細については「第 4 章 割込み」を参照してください。
表 13.6-16 チャネル , 割込みレベル , ベクタの関係
チャネル
割込みベクタ
割込みレベル設定レジスタ
アウトプット
コンペア 0
#28
アドレス : 0FFFF8CH
割込みレベルレジスタ (ICR08)
アドレス : 000B8H
アウトプット
コンペア 1
#29
アドレス : 0FFFF88H
割込みレベルレジスタ (ICR09)
アドレス : 000B9H
アウトプット
コンペア 2
#30
アドレス : 0FFFF84H
割込みレベルレジスタ (ICR09)
アドレス : 000B9H
アウトプット
コンペア 3
#31
アドレス : 0FFFF80H
割込みレベルレジスタ (ICR10)
アドレス : 000BAH
割込み要求フラグ (OCS01:ICP[1:0], OCS23:ICP[1:0]) は自動的にクリアされませんので ,
割込み処理から復帰する前にソフトウェアにて ICP[1:0] ビットに "0" を書き込んでク
リアしてください。
● 割込みの種類
割込みは 1 種類のみです。比較結果一致で発生します。
● 割込みを許可する方法
割込み許可の設定は , 割込み要求許可ビット (OCS01:ICE[1:0], OCS23:ICE[1:0]) で行い
ます。
表 13.6-17 割込みを許可する方法
制御
割込み要求許可ビット (ICE0, ICE1)
割込み禁止
"0" にする
割込み許可
"1" にする
割込み要求のクリアは , 割込み要求ビット (OCS01:ICP[1:0], OCS23:ICP[1:0]) で行いま
す。
表 13.6-18 割込み要求のクリア
制御
割込み要求クリア
222
割込み要求ビット (ICP0, ICP1)
"0" を書き込む
第 13 章 16 ビット入出力タイマ
● コンペア値の算出方法
• トグル出力パルス
( 例 ) 周期 :A, 位相差 1/4 の 2 相パルスを出す方法
図 13.6-1 2 相パルスを出す方法
A
OP0
OP1
位相差1/4
式:コンペア 0 の値 = (A/2) / カウントクロック
コンペア 1 の値 = (A/4) / カウントクロック
( カウントクロック : フリーランタイマで設定した時間 )
( 注意事項 ) コンペア 0 の一致でフリーランタイマ 0 をクリアする設定
(TCCS0:MODE=1) と CMOD=0 の設定が必要です。
計算例:A=1024μs, カウントクロック =125ns
コンペア 0 の値 = (1024000 / 2) / 125 - 1 = 4095 = FFFH
コンペア 1 の値 = (1024000 / 4) / 125 - 1 = 1023 = 7FFH
• PWM 出力
( 例 ) 周期:A, デューティ 1/4~3/4 ("L") の PWM を出す方法
図 13.6-2 PWM を出す方法
A
OP1
1/4~3/4
式:コンペア 0 の値 = A / カウントクロック
コンペア 1 の値 = (A/4) / カウントクロック
( デューティ 1/4 のとき )
(A × 3/4) / カウントクロック ( デューティ 3/4 のとき )
( カウントクロック : フリーランタイマで設定した時間 )
( 注意事項 )
コンペア 0 の一致でフリーランタイマ 0 をクリアする設定
(TCCS0:MODE=1) と CMOD=1 の設定が必要です。
計算例:A=1024 μs, カウントクロック =125ns
コンペア 0 の値 = 1024000 / 125 - 1 = 8191 = 1FFFH
コンペア 1 の値 = (1024000 / 4) / 125 - 1 = 1023 = 7FFH
( デューティ 1/4 のとき )
(1024000 × 3 / 4) / 125 - 1 = 1023 = BFFH
( デューティ 3/4 のとき )
223
第 13 章 16 ビット入出力タイマ
■ インプットキャプチャのプログラム例
設定手順例
IN0 に入力するパルスの立上りを検出してフリーラ
ンタイマの値を記録する。これを 2 回繰り返してト
リガからトリガまでの時間を計測する。ただし , キャ
プチャ値の読出しと計算処理は割込み処理とする。
プログラム例
void INPUT0_sample(void) { freerun_initial(); INPUT0_initial(); INPUT0_start(); freerun_start(); }
<初期設定>
・フリーランタイマの制御
制御レジスタの設定
クロック選択 >>
TCCS
.ECKE
.IVF
割込み要求フラグ >>
.IVFE
割込み要求許可 >>
.STOP
カウント動作 >>
.MODE
タイマの初期化条件 >>
.SCLR
TCDT クリア >>
カウントクロック >>
void freerun_initial(void)
{
IO_TCCS.word = 0x20; /* 設定値 =0000_0000_0010_0000 */
/* bit15 = 0 ECKE 内部クロックソース */
/* bit7 = 0 IVF 割込み要求フラグ */
/* bit6 = 0
IVFE 割込み禁止 */
/* bit5 = 1
/* bit4 = 0
STOP カウント禁止 */
MODE リセット , クリアビットによる初期
化 */
SCLR フリーランタイマ値の初期化 */
/* bit3 = 0
.CLK2 ~ CLK0
/* bit2 ~ bit0 = 000B CLK2 ~ CLK0 カウントクロック φ */
タイマデータ値の設定
TCDT
IO_TCDT = 0x0000;
・ポート
レジスタ名 ビット名
ポートの IN0 入力設定
}
void INPUT0_initial(void)
{
/* タイマデータ値の初期化 */
IO_DDR9.byte = 0x00; /* DDR9 IN0(P96) 入力 */
DDR9 .P96
・インプットキャプチャの制御
制御レジスタの設定
ICS01
割込み要求フラグ >>
.ICP1,ICP0
/* 設定値 =0000_0001 */
/* bit7, bit6 = 00B ICP1, ICP0 有効エッジフラグクリア */
割込み要求許可 >>
.ICE1,ICE0
/* bit5, bit4 = 00B ICE1, ICE0 割込み禁止 */
ch.1 有効エッジ極性選択 >>
.EG11,EG10
/* bit3, bit2 = 00B EG11, EG10 ch.1 エッジ検出なし */
ch.0 有効エッジ極性選択 >>
.EG01,EG00
/* bit1, bit0 = 01B EG01, EG00 ch.0 立上りエッジ検出 */
IO_ICS01.byte = 0x01;
・割込み関連
割込みレベルの設定
I フラグの設定
ICR07
(CCR)
IO_ICR07.byte = 0x10; /* インプットキャプチャ ch.0 割込みレベル設定
( 値は任意 ) */
__EI();
/* 割込み許可 */
count = 0;
・変数の設定
}
<起動>
・インプットキャプチャ ch.0 起動
レジスタ名 . ビット名
割込み制御
ICS01 .ICE0
・フリーランタイマ起動
レジスタ名 . ビット名
カウント動作起動
TCCS .STOP
<割込み>
・割込み処理
レジスタ名 . ビット名
割込み要求フラグのクリア
ICS01 .ICP0
( 任意の処理 )
••••••••••
void INPUT0_start(void)
{
IO_ICS01.bit.ICE0 = 1;
}
void freerun_start(void)
{
IO_TCCS.bit.STOP = 0;
}
/* bit4 = 1
ICE0 ch.0 割込み許可 */
/* bit5 = 0
STOP カウント許可 */
__interrupt void INPUT0_int(void) {
IO_ICS01.bit.ICP0 = 0;
/* bit6 = 0
ICP0 有効エッジ検出フラグのクリア */
if(count==0)
Data1 = IO_IPCP0;
/* フリーランタイマ値を記録する。(1 回目 ) */
else if(count==1) {
Data2 = IO_IPCP0;
/* フリーランタイマ値を記録する。(2 回目 ) */
cycle = (data2-data1)*125; /* 時間を計測する。*/
}
count++;
}
<割込みベクタ>
・ベクタテーブルの設定
#pragma intvect INPUT0_int 26
( 注意事項 )
事前にクロック関連の設定および __set_il( 数値 ) の
設定が必要です。
「第 4 章 割込み」および「第 6 章
クロック」を参照してください。
( 注意事項 )
レジスタの記述形式については , 「F2MC-16LX ファミリ MB90980 シリーズ用サンプ
ル I/O レジスタファイル 使用手引書」を参照してください。
224
第 13 章 16 ビット入出力タイマ
■ プログラム例以外の設定方法
● 外部入力の有効エッジ極性の種類と選択方法
有効エッジ極性は , 立上り , 立下り , 両エッジの 3 種類です。
外部入力の有効エッジ極性ビット (ICS01:EG[01:00], ICS01:EG[11:10]) で設定します。
表 13.6-19 外部入力の有効エッジ極性の種類と選択方法
外部入力の有効エッジ極性ビット
(EG[01:00], EG[11:10])
動作
立上りエッジを選択するには
"00B" を選択する
立下りエッジを選択するには
"10B" を選択する
両エッジを選択するには
"11B" を選択する
● 外部入力端子 (IN0, IN1) に設定する方法
データ方向ビット (DDR9:P96, DDR9:P97) で行います。
表 13.6-20 外部入力端子に設定する方法
動作
データ方向ビット (P96, P97)
外部入力端子 (IN0, IN1) に設定するには
"0" にする
● 割込み関連レジスタ
チャネル , 割込みレベル , ベクタの関係は下表のとおりです。
割込みレベル , 割込みベクタの詳細については「第 4 章 割込み」を参照してください。
表 13.6-21 チャネル , 割込みレベル , ベクタの関係
チャネル
割込みベクタ
割込みレベル設定レジスタ
インプット
キャプチャ 0
#26
アドレス : 0FFFF94H
割込みレベルレジスタ (ICR07)
アドレス :000B7H
インプット
キャプチャ 1
#27
アドレス : 0FFFF90H
割込みレベルレジスタ (ICR08)
アドレス : 000B8H
割込み要求フラグ (ICS01:ICP0, ICS01:ICP1) は自動的にクリアされません。割込み処理
から復帰する前にソフトウェアにてインプットキャプチャ割込み要求フラグ (ICP1,
ICP0) に "0" を書き込んでクリアしてください。
● 割込みの種類
割込みは 1 種類のみです。入力信号のエッジ検出で発生します。
225
第 13 章 16 ビット入出力タイマ
● 割込みを許可する方法
割込み許可は , 割込み要求許可ビット (ICS01:ICE0, ICS01:ICE1) で設定します。
表 13.6-22 割込みを許可する方法
割込み要求許可ビット (ICE0, CE1)
割込み禁止
"0" にする
割込み許可
"1" にする
割込み要求のクリアは , 割込み要求ビット ( ICS01:ICP0, ICS01:ICP1) で設定します。
表 13.6-23 割込み要求のクリア
割込み要求ビット (ICP0, ICP1)
割込み要求クリア
"0" を書き込む
● 入力信号のパルス幅を測定する方法
• "H" 幅測定 :
エッジ検出に両エッジを指定します。
最初に立上りエッジを検出し , 次に立下りエッジを検出します。
パルス幅 = { 立下り時に記録した値 ( インプットキャプチャレジスタ値 ) +
"10000H" × オーバフロー回数-
立上り時に記録した値 ( インプットキャプチャレジスタ値 ) } ×
フリーランタイマのカウントクロック幅
例:立下り時に記録した値 = 2320H, 立上り時に記録した値 = A635H,
オーバフロー回数 = 1, カウントクロック = 125ns
==> パルス幅 = (2320H+10000H-A635H) × 125ns = 3997.375μs
• 周期測定:
エッジ検出に立上り ( または立下り ) を指定します。
エッジを 2 回検出
周期= {2 回目に記録した値 ( インプットキャプチャレジスタ値 ) +
"10000H" × オーバフロー回数-
1 回目に記録した値 ( インプットキャプチャレジスタ値 ) } ×
フリーランタイマのカウントクロック幅
226
第 14 章
8/16 ビットアップダウン
カウンタ / タイマ
8/16 ビットアップダウンカウンタ / タイマの概要 ,
構成 , レジスタの構成と機能 , 割込みおよび動作に
ついて説明します。
14.1 8/16 ビットアップダウンカウンタ / タイマの概要
14.2 8/16 ビットアップダウンカウンタ / タイマの構成
14.3 8/16 ビットアップダウンカウンタ / タイマのレジスタの
構成と機能
14.4 8/16 ビットアップダウンカウンタ / タイマの割込み
14.5 8/16 ビットアップダウンカウンタ / タイマの動作
14.6 8/16 ビットアップダウンカウンタ / タイマのプログラム
例
227
第 14 章 8/16 ビットアップダウン カウンタ / タイマ
14.1
8/16 ビットアップダウンカウンタ / タイマの概要
8/16 ビットアップダウンカウンタ / タイマは , イベント入力端子 6 本 , 8 ビットアッ
プ / ダウンカウントレジスタ× 2 本 , 8 ビットリロード / コンペアレジスタ× 2 本
と , それらの制御回路から構成されています。
■ 8/16 ビットアップダウンカウンタ / タイマの主な機能
• 8 ビットカウントレジスタにより , 0 ~ 255 の範囲でカウントできます
(16 ビット× 1 動作モードでは , 0 ~ 65535 の範囲でカウント可能です )。
• カウントクロックの選択による 4 種類のカウントモードがあります。
- タイマモード
- アップ / ダウンカウントモード
- 位相差ダウンカウントモード (2 倍 )
- 位相差ダウンカウントモード (8 倍 )
• タイマモード時には , カウントクロックとして 2 種類の内部クロックから選択して
ください。
- 2 分周 ( 内部マシンサイクル f=25MHz 時 80ns)
- 8 分周 ( 内部マシンサイクル f=25MHz 時 320ns)
• アップ / ダウンカウントモード時には , 外部端子入力信号の検出エッジを選択でき
ます。
- 立下りエッジ検出
- 立上りエッジ検出
- 立下り / 立上りの両エッジ検出
- エッジ検出禁止
• 位相差カウントモードは , モータなどのエンコーダのカウントに適しています。エ
ンコーダの A 相 , B 相 , Z 相出力をそれぞれ入力することによって , 高精度で回転角
度 , 回転数などのカウントを容易に行えます。
• ZIN 端子は , 2 種類の機能を選択できます。
- カウンタクリア機能
- ゲート機能
• コンペア機能およびリロード機能を有し , それぞれの機能のみで , または組み合せ
ても使用可能です。両機能を起動することによって , 任意幅でのアップダウンカウ
ントを行えます。
- コンペア機能 ( コンペア時に割込み出力 )
- コンペア機能 ( コンペア時に割込み出力およびカウンタクリア )
- リロード機能 ( アンダフロー時に割込み出力およびリロード )
- コンペア / リロード機能 ( コンペア時に割込み出力およびカウンタクリア / アン
ダフロー時に割込み出力およびリロード )
- コンペア / リロード禁止
228
第 14 章 8/16 ビットアップダウン カウンタ / タイマ
• コンペア時 , リロード ( アンダフロー) 時およびオーバフロー時の割込み発生をそれ
ぞれ個別に制御できます。
• カウント方向フラグにより , 直前のカウント方向を識別できます。
• カウント方向が変わった場合に割込みを発生します。
229
第 14 章 8/16 ビットアップダウン カウンタ / タイマ
14.2
8/16 ビットアップダウンカウンタ / タイマの構成
8 ビットアップダウンカウンタ / タイマは , 2 チャネルあり 1 チャネルごとに , イベン
ト入力端子 3 本 , 8 ビットアップ / ダウンカウント× 1 本 , 8 ビットリロード /
コンペアレジスタ× 1 本から構成されています。また , 8 ビットアップダウンカウン
タ / タイマ 2 チャネルを 1 チャネルとして 16 ビットアップダウンカウンタ / タイマと
して使用可能です (16 ビットアップダウンカウンタ / タイマとして使用する場合は ,
0 チャネルのレジスタが有効になります )。
■ 8/16 ビットアップダウンカウンタ / タイマのブロックダイヤグラム
図 14.2-1 および図 14.2-2 に , 8/16 ビットアップダウンカウンタ / タイマのブロックダイ
ヤグラムを示します。
図 14.2-1 8/16 ビットアップダウンカウンタ / タイマのブロックダイヤグラム (ch.0)
データバス
8ビット
CGE1
ZIN0
CGE0
RCR0(リロード/コンペアレジスタ0)
CGSC
エッジ/レベル検出
UDCC
CTUT
リロード制御
UCRE
RLDE
カウンタクリア
8ビット
UDCR0(アップダウンカウントレジスタ0)
キャリ
CMPF
CES1 CES0
UDFF OVFF
CMS1 CMS0
カウントクロック
UDMS
AIN0
BIN0
UDF1 UDF0 CDCF CFIE
プリスケーラ
CSTR
CLKS
230
CITE UDIE
アップダウンカウント
クロック選択
割込み
出力
第 14 章 8/16 ビットアップダウン カウンタ / タイマ
図 14.2-2 8/16 ビットアップダウンカウンタ / タイマのブロックダイヤグラム (ch.1)
データバス
8ビット
CGE1
ZIN1
CGE0
CGSC
RCR1(リロード/コンペアレジスタ1 )
エッジ/レベル検出
UDCC
CTUT
リロード制御
UCRE
RLDE
カウンタクリア
8ビット
UDCR1(アップダウンカウントレジスタ1)
CMPF
UDFF OVFF
CMS1 CMS0 CES1 CES0 M16E UDMS
CITE UDIE
キャリ
AIN1
BIN1
カウントクロック
アップダウンカウント
クロック選択
プリスケーラ
UDF1 UDF0 CDCF CFIE
CSTR
割込み
出力
CLKS
■ 8/16 ビットアップダウンカウンタ / タイマに関する端子
8/16 ビットアップダウンカウンタ / タイマに関する端子には , AIN0/BIN0/ZIN0, AIN1/
BIN1/ZIN1 端子があります。AIN0/BIN0/ZIN0 端子は汎用入出力ポート (AIN0/P30, BIN0/
P31, ZIN0/P32)と, AIN1/BIN1/ZIN1端子は汎用入出力ポート(AIN1/P33, BIN1/P34, ZIN1/
P35) と , アップダウンカウンタ / タイマの入力端子として機能を兼用しています。
● AIN0/BIN0/ZIN0, AIN1/BIN1/ZIN1 端子として使用する場合の設定
AIN/BIN/ZIN 入力端子として使用する場合は , AIN0/P30, BIN0/P31, ZIN0/P32 端子と
AIN1/P33, BIN1/P34, ZIN1/P35 端子は , ポート方向レジスタにより入力ポート (DDR3
bit0 ~ bit5 → "0") に設定してください。
231
第 14 章 8/16 ビットアップダウン カウンタ / タイマ
■ 8/16 ビットアップダウンカウンタ / タイマに関する端子のブロックダイヤグラム
図 14.2-3 8/16 ビットアップダウンカウンタ / タイマに関する端子のブロックダイヤグラム
周辺機能入力 (AIN0/BIN0/ZIN0
AIN1/BIN1/ZIN1)
ポートデータレジスタ(PD R)
内部データバス
PDRリード
出力ラッチ
P-ch
PDRライト
端子
ポート方向レジスタ(DDR)
方向ラッチ
N-ch
DDRライト
DDRリード
スタンバイ制御(SPL=1)
スタンバイ制御:ストップモード(SPL=1),タイムベースタイマモード(SPL=1),時計モード(SPL=1)
232
第 14 章 8/16 ビットアップダウン カウンタ / タイマ
14.3
8/16 ビットアップダウンカウンタ / タイマのレジスタ
の構成と機能
8/16 ビットアップダウンカウンタ / タイマのレジスタの構成と機能について説明し
ます。
■ 8/16 ビットアップダウンカウンタ / タイマのレジスタ一覧
図 14.3-1 に , 8/16 ビットアップダウンカウンタ / タイマのレジスタ一覧を示します。
図 14.3-1 8/16 ビットアップダウンカウンタ / タイマのレジスタ一覧
bit15
bit8 bit7
UDCR1
RCR1
予約領域
bit0
UDCR0
RCR0
CCRH0
予約領域
CCRH1
CSR0
CCRL0
CSR1
CCRL1
8ビット
8ビット
ch.0 UDCR0
アドレス:
000068H
ch.1
UDCR1
アドレス:
000069H
ch.0
RCR0
アドレス:
00006AH
ch.1 RCR1
アドレス:
00006BH
ch.0 CSR0
アドレス:
ch.1 CSR1
アドレス:
000072H
ch.0 CCRL0
アドレス:
ch.1 CCRL1
アドレス:
00006CH
000074H
000070H
bit4
D04
R
bit12
D14
R
bit0
D00
R
bit8
D10
R
bit6
D06
R
bit14
D16
R
bit5
D05
R
bit13
D15
R
bit3
D03
R
bit11
D13
R
bit2
D02
R
bit10
D12
R
bit1
D01
R
bit9
D11
R
bit7
D07
W
bit6
D06
W
bit5 bit4 bit3
D05 D04 D03
W
W
W
bit2
D02
W
bit1 bit0
D01 D00
W
W
00000000B
bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8
D17
D16
D15 D14 D13
D12
D11 D10
W
W
W
W
W
W
W
W
00000000B
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
CSTR CITE UDIE CMPF OVFF UDFF UDF1 UDF0
R/W
R/W
R/W
R/W
R/W
R/W
R
R
00000000B
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
UDMS CTUT UCRE RLDE UDCC CGSC CGE1 CGE0
R/W
W
R/W
R/W
W
R/W
R/W
R/W
0X00X000B
00000000B
-0000000B
ch.0 CCRH0
アドレス:
00006DH
bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8
M16E CDCF CFIE CLKS CMS1 CMS0 CES1 CES0
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
ch.1 CCRH1
アドレス:
000071H
bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8
―
CDCF CFIE CLKS CMS1 CMS0 CES1 CES0
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W:
R :
W :
- :
初期値
bit7
D07
R
bit15
D17
R
00000000B
00000000B
リード/ライト可能
リードオンリ
ライトオンリ
未使用
233
第 14 章 8/16 ビットアップダウン カウンタ / タイマ
14.3.1
カウンタコントロールレジスタ (ch.0) 上位 (CCRH0)
カウンタコントロールレジスタ (ch.0) 上位 (CCRH0) の構成および機能について説明
します。
■ カウンタコントロールレジスタ (ch.0) 上位 (CCRH0)
図 14.3-2 に , カウンタコントロールレジスタ (ch.0) 上位 (CCRH0) のビット構成を示し
ます。
図 14.3-2 カウンタコントロールレジスタ (ch.0) 上位 (CCRH0) のビット構成
ch.0 CCRH0
アドレス:
00006DH
bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8
M16E CDCF CFIE CLKS CMS1 CMS0 CES1 CES0
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
初期値
00000000B
R/W: リード/ライト可能
以下に , カウンタコントロールレジスタ (ch.0) 上位 (CCRH0) の各ビットの機能を説明
します。
[bit15] M16E:16 ビットモード許可設定ビット
このビットは , 8 ビット× 2 チャネル /16 ビット× 1 チャネル動作モードを選択 ( 切
換え ) します。
16 ビットモード許可設定
M16E
0
8 ビット× 2 チャネル動作モード
1
16 ビット× 1 チャネル動作モード
( 初期値 )
起動後にこのビットを書き換えた場合は , カウント値の保証ができません。
[bit14] CDCF:カウント方向転換フラグ
このビットは , カウント方向が変わった場合にセットされるフラグです。カウント
起動中にカウント方向がアップ→ダウンまたはダウン→アップに変わった場合に
セットされます。
初期化 ("0" を書き込む ) のみ可能です。
リードモディファイライト (RMW) 系命令の読出し時は常に "1" が読み出されます。
方向転換検出
CDCF
0
1
方向転換は行われていない
方向転換が 1 回以上行われた
( 初期値 )
[bit13] CFIE:カウント方向転換割込み要求許可ビット
このビットは , CDCF がセットされた場合に , CPU に対して割込み出力を制御しま
す。このビットを "1" にセットした場合は , カウント起動中に一度でもカウント方
向が変わった場合に割込みが発生します。
方向転換割込み出力
CFIE
0
1
234
方向転換割込み出力禁止
方向転換割込み出力許可
( 初期値 )
第 14 章 8/16 ビットアップダウン カウンタ / タイマ
[bit12] CLKS:内蔵プリスケーラ選択ビット
このビットは , タイマモード選択時に内蔵プリスケーラの周波数を選択します。
タイマモードでのみ有効であり,タイマモードではダウンカウントのみとなります。
選択内部クロック
CLKS
0
1
2 マシンサイクル
8 マシンサイクル
( 初期値 )
起動後にこのビットを書き換えた場合は , カウント値の保証ができません。
[bit11, bit10] CMS1, CMS0:カウントモード選択ビット
これらのビットは , カウントモードを選択します。
CMS1
CMS0
0
0
1
1
0
1
0
1
カウントモード
タイマモード [ ダウンカウント ] ( 初期値 )
アップ / ダウンカウントモード
位相差カウントモード 2 逓倍
位相差カウントモード 4 逓倍
起動後にこのビットを書き換えた場合は , カウント値の保証ができません。
[bit9, bit8] CES1, CES0:カウントクロックエッジ選択ビット
これらのビットはアップ / ダウンカウントモードにおいて , 外部端子 AIN および BIN
の検出するエッジを選択します。
アップ / ダウンカウントモード以外では , この設定は無効です。
CES1
CES0
0
0
1
1
0
1
0
1
選択エッジ
エッジ検出禁止
( 初期値 )
立下りエッジ検出
立上りエッジ検出
立上り / 立下り両エッジ検出
起動後にこのビットを書き換えた場合は , カウント値の保証ができません。
235
第 14 章 8/16 ビットアップダウン カウンタ / タイマ
14.3.2
カウンタコントロールレジスタ (ch.1) 上位 (CCRH1)
カウンタコントロールレジスタ (ch.1) 上位 (CCRH1) の構成および機能について説明
します。
■ カウンタコントロールレジスタ (ch.1) 上位 (CCRH1)
図 14.3-3 に , カウンタコントロールレジスタ (ch.1) 上位 (CCRH1) のビット構成を示し
ます。
図 14.3-3 カウンタコントロールレジスタ (ch.1) 上位 (CCRH1) のビット構成
ch.1 CCRH1
アドレス:
000071H
bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8
―
CDCF CFIE CLKS CMS1 CMS0 CES1 CES0
R/W
R/W
R/W
R/W
R/W
R/W
R/W
初期値
-0000000B
R/W: リード/ライト可能
- : 未使用
以下に , カウンタコントロールレジスタ (ch.1) 上位 (CCRH1) の各ビットの機能を説明
します。
[bit14] CDCF:カウント方向転換フラグビット
このビットはカウント方向が変わった場合にセットされるフラグです。カウント起
動中にカウント方向がアップ→ダウンまたはダウン→アップに変わった場合に
セットされます。
初期化 ("0" を書き込む ) のみ可能です。
リードモディファイライト (RMW) 系命令の読出し時は常に "1" が読み出されます。
方向転換検出
CDCF
0
1
方向転換は行われていない
( 初期値 )
方向転換が 1 回以上行われた
[bit13] CFIE:カウント方向転換割込み要求許可ビット
このビットはCDCFがセットされた場合に, CPUに対して割込み出力を制御します。
このビットを "1" にセットした場合は , カウント起動中に一度でもカウント方向が
変わった場合に割込みが発生します。
方向転換割込み出力
CFIE
0
1
方向転換割込み出力禁止
方向転換割込み出力許可
( 初期値 )
[bit12] CLKS:内蔵プリスケーラ選択ビット
このビットはタイマモード選択時に , 内蔵プリスケーラの周波数を選択します。
タイマモードでのみ有効であり,タイマモードではダウンカウントのみとなります。
選択内部クロック
CLKS
0
1
2 マシンサイクル
8 マシンサイクル
( 初期値 )
起動後にこのビットを書き換えた場合は , カウント値の保証ができません。
236
第 14 章 8/16 ビットアップダウン カウンタ / タイマ
[bit11, bit10] CMS1, CMS0:カウントモード選択ビット
これらのビットは , カウントモードを選択します。
CMS1
CMS0
0
0
1
1
0
1
0
1
カウントモード
タイマモード [ ダウンカウント ] ( 初期値 )
アップ / ダウンカウントモード
位相差カウントモード 2 逓倍
位相差カウントモード 4 逓倍
起動後にこのビットを書き換えた場合は , カウント値の保証ができません。
[bit9, bit8] CES1, CES0:カウントクロックエッジ選択ビット
これらのビットは , アップ / ダウンカウントモードにおいて , 外部端子 AIN および
BIN の検出するエッジを選択します。
アップ / ダウンカウントモード以外では , この設定は無効です。
CES1
CES0
0
0
1
1
0
1
0
1
選択エッジ
エッジ検出禁止
( 初期値 )
立下りエッジ検出
立上りエッジ検出
立上り / 立下り両エッジ検出
起動後にこのビットを書き換えた場合は , カウント値の保証ができません。
237
第 14 章 8/16 ビットアップダウン カウンタ / タイマ
カウンタコントロールレジスタ (ch.0/ch.1) 下位
(CCRL0/CCRL1)
14.3.3
カウンタコントロールレジスタ (ch.0/ch.1) 下位 (CCRL0/CCRL1) の構成および機能
について説明します。
■ カウンタコントロールレジスタ (ch.0/ch.1) 下位 (CCRL0/CCRL1)
図 14.3-4 に , カウンタコントロールレジスタ (ch.0/ch.1) 下位 (CCRL0/CCRL1) のビット
構成を示します。
図 14.3-4 カウンタコントロールレジスタ (ch.0/ch.1) 下位 (CCRL0/CCRL1) のビット構成
ch.0 CCRL0
アドレス:
ch.1 CCRL1
アドレス:
00006CH
000070H
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
UDMS CTUT UCRE RLDE UDCC CGSC CGE1 CGE0
R/W
W
R/W
R/W
W
R/W
R/W
R/W
初期値
0X00X000B
R/W: リード/ライト可能
W : ライトオンリ
以下に , カウンタコントロールレジスタ (ch.0/ch.1) 下位 (CCRL0/CCRL1) の各ビットの
機能を示します。
[bit7] UDMS:アップダウンモード選択ビット
このビットは位相差カウンタモード 2 逓倍モードにおいて , BIN 端子の立下りエッ
ジで検出する場合のアップダウンを制御します。
リセット時は "0" に初期化されます。読出しおよび書込みが可能です。
動 作
UDMS
0
1
BIN 端子の立下りエッジで検出した AIN 端子の値が "H" のとき , ダウンカウント ( 初期値 )
BIN 端子の立下りエッジで検出した AIN 端子の値が "L" のとき , アップカウント ( 初期値 )
BIN 端子の立下りエッジで検出した AIN 端子の値が "L" のとき , ダウンカウント
BIN 端子の立下りエッジで検出した AIN 端子の値が "H" のとき , アップカウント
起動後にこのビットを書き換えた場合は , カウント値の保証ができません。
[bit6] CTUT:カウンタ書込みビット
このビットは , RCR から UDCR へのデータ転送を制御します。
このビットに "1" を書き込むと , RCR から UDCR にデータが転送されます。
"0" 書込みは無効です。
[bit5] UCRE:アップダウンカウンタクリア許可ビット
このビットは , コンペアによる UDCR のクリアを制御します。
コンペア発生によるクリア以外の UDCR クリア機能 (ZIN 端子によるものなど ) に
は影響しません。
コンペアによるカウンタのクリア
UCRE
0
1
238
カウンタクリア禁止
カウンタクリア許可
( 初期値 )
第 14 章 8/16 ビットアップダウン カウンタ / タイマ
[bit4] RLDE:リロードイネーブルビット
このビットは , リロード機能の起動を制御します。リロード機能起動時に UDCR が
アンダフローを発生した場合に , RCR の値を UDCR に転送します。
リロード機能
RLDE
0
1
リロード機能禁止
リロード機能許可
( 初期値 )
[bit3] UDCC:アップダウンカウンタクリアビット
このビットは , UDCR をクリアします。このビットに "0" を書き込むと , UDCR が
"0000H" にクリアされます。
"1" の書込みは無効です。
[bit2] CGSC:カウンタクリアゲートビット
このビットは , 外部端子 ZIN の機能を選択します。
ZIN の機能
CGSC
0
1
カウンタクリア機能
ゲート機能
( 初期値 )
[bit1, bit0] CGE1, CGE0:カウンタクリアゲートエッジ選択ビット
これらのビットは , 外部端子 ZIN の検出エッジ / レベルを選択します。
CGE1 CGE0
0
0
1
1
0
1
0
1
カウンタクリア機能選択時
エッジ検出禁止 ( 初期値 )
立下りエッジ
立上りエッジ
設定禁止
ゲート機能選択時
レベル検出禁止 ( カウントディセーブル )
"L" レベル
"H" レベル
設定禁止
起動後にこのビットを書き換えた場合は , カウンタ値の保証ができません。
239
第 14 章 8/16 ビットアップダウン カウンタ / タイマ
14.3.4
カウンタステータスレジスタ 0/1(CSR0/CSR1)
カウンタステータスレジスタ 0/1(CSR0/CSR1) の構成および機能について説明しま
す。
■ カウンタステータスレジスタ 0/1(CSR0/CSR1)
図 14.3-5 に , カウンタステータスレジスタ 0/1(CSR0/CSR1) のビット構成を示します。
図 14.3-5 カウンタステータスレジスタ 0/1(CSR0/CSR1) のビット構成
ch.0 CSR0
アドレス:
ch.1 CSR1
アドレス:
000072H
000074H
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
CSTR CITE UDIE CMPF OVFF UDFF UDF1 UDF0
R/W
R/W
R/W
R/W
R/W
R/W
R
R
初期値
00000000B
R/W: リード/ライト可能
R : リードオンリ
以下に , カウンタステータスレジスタ 0/1(CSR0/CSR1) の各ビットの機能を説明します。
[bit7] CSTR:カウント起動ビット
このビットは , UDCR のカウント動作の起動 / 停止を制御します。
カウント動作の起動 / 停止
CSTR
0
1
カウント動作停止
カウント動作起動
( 初期値 )
[bit6] CITE:コンペア割込み要求許可ビット
このビットは CMPF がセットされた ( コンペアが発生した ) 場合に , CPU への割込
み出力の許可 / 禁止を制御します。
コンペア割込み出力の許可 / 禁止
CITE
0
1
コンペア割込み出力の禁止
コンペア割込み出力の許可
( 初期値 )
[bit5] UDIE:オーバフロー / アンダフロー割込み要求許可ビット
このビットは OVFF/UDFF がセットされた ( オーバフロー / アンダフローが発生し
た ) 場合に , CPU への割込み出力の許可 / 禁止を制御します。
UDIE
0
1
オーバフロー / アンダフロー割込み出力の許可 / 禁止
オーバフロー / アンダフロー割込み出力の禁止 ( 初期値 )
オーバフロー / アンダフロー割込み出力の許可
[bit4] CMPF:コンペア検出フラグ
このビットは UDCR の値と RCR の値の比較結果が等しくなったことを示すフラグ
です。
初期化 ("0" を書き込む ) のみ可能です。
リードモディファイライト (RMW) 系命令の読出し時は常に "1" が読み出されます。
CMPF
0
1
240
コンペア検出比較の一致 / 不一致
比較結果が一致していない
比較結果が一致した
( 初期値 )
第 14 章 8/16 ビットアップダウン カウンタ / タイマ
[bit3] OVFF:オーバフロー検出フラグ
このビットは , オーバフローの発生を示すフラグです。
初期化 ("0" を書き込む ) のみ可能です。
リードモディファイライト (RMW) 系命令の読出し時は常に "1" が読み出されます。
オーバフロー発生の有無
OVFF
0
1
オーバフローなし
オーバフローあり
( 初期値 )
[bit2] UDFF:アンダフロー検出フラグ
このビットは , アンダフローの発生を示すフラグです。
初期化 ("0" を書き込む ) のみ可能です。
リードモディファイライト (RMW) 系命令の読出し時は常に "1" が読み出されます。
アンダフロー発生の有無
UDFF
0
1
アンダフローなし
アンダフローあり
( 初期値 )
[bit1, bit0] UDF1, UDF0:アップダウンフラグ
これらのビットは , 直前のカウント動作 ( アップ / ダウン ) を示すビットです。
読出しのみ可能で , 書込みはできません。
UDF1
UDF0
0
0
1
1
0
1
0
1
検出エッジ
入力なし
( 初期値 )
ダウンカウント
アップカウント
アップ / ダウン同時発生
241
第 14 章 8/16 ビットアップダウン カウンタ / タイマ
アップダウンカウントレジスタ (ch.0/ch.1)(UDCR0/
UDCR1)
14.3.5
アップダウンカウントレジスタ (ch.0/ch.1)(UDCR0/UDCR1) の構成および機能につ
いて説明します。
■ アップダウンカウントレジスタ (ch.0/ch.1)(UDCR0/UDCR1)
図 14.3-6 に , アップダウンカウントレジスタ (ch.0/ch.1) (UDCR0/UDCR1) のビット構成
を示します。
図 14.3-6 アップダウンカウントレジスタ (ch.0/ch.1)(UDCR0/UDCR1) のビット構成
UDCR1
アドレス:
000069H
ch.0 UDCR0
アドレス:
000068H
ch.1
R
bit15
D17
R
bit7
D07
R
bit14
D16
R
bit6
D06
R
bit13
D15
R
bit5
D05
R
bit12
D14
R
bit4
D04
R
bit11
D13
R
bit3
D03
R
bit10
D12
R
bit2
D02
R
bit9
D11
R
bit1
D01
R
bit8 初期値
D10
00000000B
R
bit0
D00
00000000B
R
: リードオンリ
このレジスタは , 8 ビットのカウントレジスタです。内部プリスケーラ , または AIN 端
子と BIN 端子の入力によってアップ / ダウンカウント動作を行います。
また , 16 ビットカウントモードでは , 16 ビットのカウントレジスタとして動作します。
この場合 , 上位 8 ビット側の制御レジスタの設定値は , 動作上無効になります。
このレジスタは , 直接は書き込めません。このレジスタに書き込む場合は , RCR を介し
て行う必要があります。このレジスタに書き込みたい値をまず , RCR に書き込み , この
後 CCRL の CTUT ビットに "1" を書き込むことによって , RCR の値が本レジスタに転
送されます ( ソフトウェアによるリロード )。
本レジスタは , ワードアクセスで読み出してください。
242
第 14 章 8/16 ビットアップダウン カウンタ / タイマ
14.3.6
リロード / コンペアレジスタ (ch.0/ch.1)(RCR0/
RCR1)
リロード / コンペアレジスタ (ch.0/ch.1)(RCR0/RCR1) の構成および機能について説
明します。
■ リロード / コンペアレジスタ (ch.0/ch.1)(RCR0/RCR1)
図 14.3-7 に , リロード / コンペアレジスタ (ch.0/ch.1)(RCR0/RCR1) のビット構成を示し
ます。
図 14.3-7 リロード / コンペアレジスタ (ch.0/ch.1)(RCR0/RCR1) のビット構成
ch.1 RCR1
アドレス:
ch.0
W
RCR0
アドレス:
00006BH
00006AH
: ライトオンリ
bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8
D17
D16
D15 D14 D13
D12
D11 D10
W
W
W
W
W
W
W
W
bit7
D07
W
bit6
D06
W
bit5 bit4 bit3
D05 D04 D03
W
W
W
bit2
D02
W
bit1 bit0
D01 D00
W
W
初期値
00000000B
00000000B
リロード / コンペアレジスタ (ch.0/ch.1)(RCR0/RCR1) は , リロード値およびコンペア値
を設定します。リロード値とコンペア値は同一であり , リロード機能およびコンペア機
能を起動することによって "00H" ~ RCR の値 (16 ビット動作モード :0000H ~ RCR 値 )
の間でアップ / ダウンカウントが可能になります。
このレジスタは , 書込みのみ可能で読出しはできません。CCR0/CCR1 の CTUT ビット
に "1" を書き込むことによって , このレジスタの値を UDCR に転送する ( ソフトウェア
によるリロード ) ことができます。
このレジスタには , ワードアクセスで書き込んでください。
243
第 14 章 8/16 ビットアップダウン カウンタ / タイマ
14.4
8/16 ビットアップダウンカウンタ / タイマの割込み
8/16 ビットアップダウンカウンタ / タイマの割込みは , カウント起動中に 1 度でも
カウント方向が変わった場合と , 比較結果一致検出した場合と , オーバフロー / アン
ダフローが発生した場合に発生します。
8/16 ビットアップダウンカウンタ / タイマの割込みでは , DMA 転送および拡張イン
テリジェント I/O サービス (EI2OS) は起動できません。
■ 8/16 ビットアップダウンカウンタ / タイマの割込み
表 14.4-1 に , 8/16 ビットアップダウンカウンタ / タイマの割込み制御ビットと割込み
要因を示します。
表 14.4-1 8/16 ビットアップダウンカウンタ / タイマの割込み
カウント方向検出割込み
オーバフロー /
アンダフロー割込み
割込み要求フラグ
CCRH0: CDCF (bit14) ch.0
CCRH1: CDCF (bit14) ch.1
CSR0: OVFF (bit3) ch.0
UDFF (bit2)
CSR1: OVFF (bit3) ch.1
UDFF (bit2)
CSR0: CMPF (bit4) ch.0
CSR1: CMPF (bit4) ch.1
割込み要求出力許可ビット
CCRH0: CFIE (bit13) ch.0
CCRH1: CFIE (bit13) ch.1
CSR0: UDIE (bit5) ch.0
CSR1: UDIE (bit5) ch.1
CSR0: CITE (bit6) ch.0
CSR1: CITE (bit6) ch.1
割込み発生要因
アップダウンカウンタ
方向検出
オーバフロー / アンダ
フロー検出
アップダウンカウンタ値
とリロード / コンペア
レジスタ値の一致
カウンタコンペア一致
割込み
CCRH0 がアップダウンカウンタ端子 (AIN0/BIN0/ZIN0) に対応
CCRH1 がアップダウンカウンタ端子 (AIN1/BIN1/ZIN1) に対応
● カウント方向転換割込み
カウント方向転換割込みの発生動作を次に示します。
• カウンタコントロールレジスタ (CCRH0/CCRH1) bit14:CDCF フラグが "1" にセット
されます。
• 割込み要求 (CCRH0/CCRH1) bit13:CFIE が許可 ("1") されている場合で , カウント起
動中に一度でもカウント方向が変わったときに割込みが発生します。
● オーバフロー / アンダフロー割込み
オーバフロー / アンダフロー割込みの発生動作を次に示します。
• カウンタステータスレジスタ (CSR0/CSR1) bit5:UDIE フラグを "1" にセットします。
• カウンタステータスレジスタ (CSR0/CSR1) bit3:OVFF または bit2:UDFF の結果が "1"
なら割込み要求が発生します。
244
第 14 章 8/16 ビットアップダウン カウンタ / タイマ
● カウンタコンペア一致割込み
コンペア割込みの発生動作を次に示します。
• カウンタステータスレジスタ (CSR0/CSR1) bit6:CITE フラグを "1" にセットします。
■ 8/16
• カウンタステータスレジスタ (CSR0/CSR1) bit4:CMPF で UDCR 値と RCR 値の比較
結果が一致した場合 , 割込み要求が発生します。
ビットアップダウンカウンタ / タイマの割込みと DMA 転送および EI2OS
表 14.4-2 に , ソフトウェア割込みを除く割込み要因と割込みベクタ / 割込み制御レジス
タの関係を示します。
表 14.4-2 割込み要因と割込みベクタ / 割込み制御レジスタ
割込み要因
8/16 ビットアップダウンカウンタ / タイマ *
(ch.0, ch.1)
コンペア / アンダフロー / オーバフロー /
アップダウン反転
EI2OS
のクリ
ア
μDMAC
チャネル
番号
番号
アドレス
番号
アドレス
○
×
#25
FFFF98H
ICR07
0000B7H
割込みベクタ
割込み制御レジスタ
× : 割込み要求フラグはクリアされません。
○ : 割込み要求フラグはクリアされます。
* : この割込み要因は , ほかの周辺機能の割込み要因と割込み番号を共有しています。
詳細については , 表 4.2-2 を参照してください。
( 注意事項 )
同一割込み番号に 2 つの割込み要因があった場合は , リソースは両方の割込み要求フラ
グをクリアします。したがって , 2 要因のどちらか 1 つが EI2OS/μDMAC 機能を使用す
ると , もう 1 つの割込み機能は使用できません。該当リソースの割込み要求許可ビット
を "0" にして , ソフトウェアポーリング処理で対処してください。
■ DMA 転送 , および EI2OS 機能への対応
8/16 ビットアップダウンカウンタ / タイマは EI2OS 機能のみに対応し , DMA 転送機能
には対応していません。EI2OS 機能を使用する場合には , 割込み制御レジスタ (ICR) を
共有するほかの割込みを禁止に設定する必要があります。
245
第 14 章 8/16 ビットアップダウン カウンタ / タイマ
14.5
8/16 ビットアップダウンカウンタ / タイマの動作
8/16 ビットアップダウンカウンタ / タイマの各種カウントモードおよびリロード / コ
ンペア機能の動作について説明します。
■ カウントモードの選択
8/16 ビットアップダウンカウンタ / タイマには 4 種類のカウントモードがあります。こ
れらのカウントモードは , CCRH の CMS1, CMS0 で選択します。
表 14.5-1 カウントモードの選択
CMS1
CMS0
0
0
1
1
0
1
0
1
カウントモード
タイマモード ( ダウンカウント )
アップ / ダウンカウントモード
位相差カウントモード 2 逓倍
位相差カウントモード 4 逓倍
● タイマモード ( ダウンカウント )
タイマモードでは , 内部プリスケーラの出力をダウンカウントします。内蔵プリスケー
ラについては , CCRH の CLKS によって 2 マシンサイクル /8 マシンサイクルの選択が
可能です。
● アップ / ダウンカウントモード
アップ / ダウンカウントモードでは , 外部端子 AIN および BIN の入力をカウントする
ことでアップ / ダウンカウントを行います。AIN 端子の入力はアップカウントを , BIN
端子の入力はダウンカウントをそれぞれ制御します。
AIN 端子 , BIN 端子の入力はエッジ検出用入力であり , CCRH の CES1, CES0 によって
検出エッジの選択ができます。
表 14.5-2 検出エッジの選択
246
CES1
CES0
0
0
1
1
0
1
0
1
検出エッジ
エッジ検出禁止
立下りエッジ検出
立上りエッジ検出
立下り / 立上り両エッジ検出
第 14 章 8/16 ビットアップダウン カウンタ / タイマ
● 位相差カウントモード (2 逓倍 /4 逓倍 )
位相差カウントモードでは , エンコーダの出力信号 A 相 , B 相の位相差をカウントする
ため , AIN 端子の入力エッジ検出時に BIN 端子の入力レベルを検出し , BIN 端子の入力
エッジ検出時には AIN 端子の入力レベルを検出し , カウントを行います。
2 逓倍 /4 逓倍モードでは , AIN 端子入力と BIN 端子入力の位相差について , AIN 端子
の方が早い場合にはアップカウントを, BIN端子の方が早い場合にはダウンカウントを
行います。
2 逓倍モードでは , BIN 端子の立上り / 立下り両方のエッジのタイミングで AIN 端子の
値を検出することによってカウントを行います。この場合のカウント動作は , 以下のと
おりです。
• BIN 端子の立上りエッジで検出した AIN 端子の値が "H" のとき , アップカウント
• BIN 端子の立上りエッジで検出した AIN 端子の値が "L" のとき , ダウンカウント
BIN 端子の立下りエッジで検出する AIN 端子の値は , 以下に示す 1), 2) の状態の 2 種類
から選択できます。
1) BIN 端子の立下りエッジで検出した AIN 端子の値が "H" の場合 , ダウンカウント
BIN 端子の立下りエッジで検出した AIN 端子の値が "L" の場合 , アップカウント
2) BIN 端子の立下りエッジで検出した AIN 端子の値が "L" の場合 , ダウンカウント
BIN 端子の立下りエッジで検出した AIN 端子の値が "H" の場合 , アップカウント
図 14.5-1 位相差カウントモード (2 逓倍 ) の動作概略
AIN端子
BIN端子
立下りエッジ検出が 1)の場合のカウント
カウント値 0
+1
+1
+1
+1
+1
-1
+1
-1
-1
-1
-1
-1
1
2
3
4
5
4
5
4
3
2
1
0
立下りエッジ検出が 2)の場合のカウント
カウント値 0
+1
-1
+1
-1
+1
+1
+1
+1
-1
+1
-1
+1
1
0
1
0
1
2
3
4
3
4
3
4
247
第 14 章 8/16 ビットアップダウン カウンタ / タイマ
4 逓倍モードでは , BIN 端子の立上り / 立下り両方のエッジのタイミングで AIN 端子の
値を検出し , また , AIN 端子の立上り / 立下り両方のエッジのタイミングで BIN 端子の
値を検出することでカウントを行います。この場合のカウント動作は , 以下のとおりで
す。
• BIN 端子の立上りエッジで検出した AIN 端子の値が "H" の場合 , アップカウント
• BIN 端子の立上りエッジで検出した AIN 端子の値が "L" の場合 , ダウンカウント
• BIN 端子の立下りエッジで検出した AIN 端子の値が "H" の場合 , ダウンカウント
• BIN 端子の立下りエッジで検出した AIN 端子の値が "L" の場合 , アップカウント
• AIN 端子の立上りエッジで検出した BIN 端子の値が "H" の場合 , ダウンカウント
• AIN 端子の立上りエッジで検出した BIN 端子の値が "L" の場合 , アップカウント
• AIN 端子の立下りエッジで検出した BIN 端子の値が "H" の場合 , アップカウント
• AIN 端子の立下りエッジで検出した BIN 端子の値が "L" の場合 , ダウンカウント
図 14.5-2 位相差カウントモード (4 逓倍 ) の動作概略
AIN端子
BIN端子
+1 +1 +1 +1
カウント値 0 1 2 3 4
+1 +1 +1 +1
5 6 7 8
+1 +1
9 10
-1
9
+1
10
-1
9
-1 -1 -1 -1
8 7 6 5
-1 -1 -1 -1
4 3 2 1
エンコーダ出力のカウントの際には,位相と端子の関係を以下のように入力することに
よって , 回転角度 , 回転数のカウントおよび回転方向が高精度で検出可能となります。
• A 相を AIN 端子に入力する
• B 相を BIN 端子に入力する
• Z 相を ZIN 端子に入力する
なお , このカウントモードを選択したときは , CCRH の CES1/CES0, CCRL の CGE1/
CGE0 による検出エッジの選択は無効となります。
248
第 14 章 8/16 ビットアップダウン カウンタ / タイマ
14.5.1
リロード / コンペア機能
8/16 ビットアップダウンカウンタ / タイマには , リロード機能およびコンペア機能が
あります。この 2 つの機能は組み合せて処理することもできます。
■ リロード / コンペア機能の選択
表 14.5-3 に , リロード / コンペア機能の選択例を示します。
表 14.5-3 リロード / コンペア機能の選択例
リロード / コンペア機能
RLDE, UCRE
00B
リロード / コンペア禁止
01B
コンペア許可
10B
リロード許可
リロード / コンペア許可
11B
( 初期値 )
■ リロード機能
リロード機能の起動時は,アンダフローが発生した次のダウンカウントクロックのタイ
ミングで RCR の値を UDCR に転送します。このとき , UDFF がセットされ , 割込み要
求が発生します。
なお , ダウンカウントをしないモードでは , この機能の起動は無効となります。
図 14.5-3 リロード機能の動作概略
(0FFFFH)
0FFH
RCR
00H
リロード,割込み発生
アンダフロー
リロード,割込み発生
アンダフロー
249
第 14 章 8/16 ビットアップダウン カウンタ / タイマ
■ コンペア機能
コンペア機能は , タイマモード以外のすべてのモードで使用できます。コンペア機能の
起動時は RCR と UDCR の値が一致した場合に , CMPF がセットされるとともに割込み
要求が発生します。また , コンペアクリア機能の起動時は , その次のアップカウントク
ロックのタイミングで UDCR をクリアします。
なお , アップカウントを行わないモードでは , この機能の起動は無効となります。
図 14.5-4 コンペア機能動作概略
(0FFFFH)
0FFH
比較結果一致
RCR
00H
カウンタクリア,
割込み発生
比較結果一致
カウンタクリア,
割込み発生
■ リロード / コンペア機能任意幅でのアップ / ダウンカウント
リロード / コンペア機能の起動時は , 任意幅でのアップ / ダウンカウントが可能です。
リロード機能により , アンダフローが発生した場合に RCR の値を UDCR に転送しま
す。また , コンペア機能により , RCR と UDCR の値が一致した場合に UDCR をクリア
します。この両機能を利用して , "00H" ~ RCR の値の間でアップ / ダウンカウントを行
います。
図 14.5-5 リロード / コンペア機能を同時起動した場合の動作概略
(0FFFFH)
0FFH
RCR
00H
比較結果一致
比較結果一致
リロード
リロード
カウンタクリア カウンタクリア アンダフロー
アンダフロー
リロード 比較結果一致
アンダフロー
カウンタクリア
比較結果一致時 , またはリロード ( アンダフロー ) 時に CPU に割込みを発生させるこ
とができます。また , これらの割込み出力のイネーブルは個別に制御できます。
UDCR に対しリロードおよびクリアを行う場合のタイミングは , カウント起動中と停
止中では異なります。
250
第 14 章 8/16 ビットアップダウン カウンタ / タイマ
● カウント動作中にリロード , またはクリアのイベントが発生した場合
UDCR の更新は , すべてカウントクロックに同期して行われます。図 14.5-6 は , "080H"
をリロードした場合を示します。
図 14.5-6 通常の動作カウント
065H
UDCR
066H
080H
081H
↓このクロックに同期する
リロード/クリアイベント
カウントクロック
● カウント動作停止直前にリロード , またはクリアのイベントが発生した場合
カウントクロック同期待ち ( 同期させるためのカウント入力を持っている状態 ) のまま
カウントを停止させた場合は , 停止した時点で UDCR へのリロード , または UDCR の
クリアが行われます。
図 14.5-7 は , "080H" をリロードした場合を示します。
図 14.5-7 カウントクロック同期信号待ち時のカウント停止動作
065H
UDCR
066H
080H
リロード/クリアイベント
カウントクロック
カウントイネーブル
イネーブル(カウント許可)
ディセーブル(カウント禁止)
● カウント停止中にリロードおよびクリアのイベントが発生した場合
UDCR の更新は , イベント発生時点で行われます。
図 14.5-8 は ," 080H" をリロードした場合を示します。
図 14.5-8 カウント停止中のリロード / クリア発生時の動作
065H
UDCR
080H
リロード/クリアイベント
● 比較結果一致によるカウンタクリアの場合
UDCR と RCR の値が一致し , さらにアップカウントが行われたときにカウンタクリア
が行われます。UDCR と RCR の値が一致した場合でも , その後 , ダウンカウントが行
われたり , カウント停止になった場合は , カウンタクリアは行われません。
カウンタクリアについてはリセット入力以外のすべてのイベントで,またリロードもす
べてのイベントで上記タイミングに従います。
クリアイベントとリロードイベントが同時期に発生した場合は,クリアイベントが優先
となります。
251
第 14 章 8/16 ビットアップダウン カウンタ / タイマ
14.5.2
アップダウンカウントレジスタ (UDCR) へのデータ
の書込み
UDCR へデータバスからは直接データを書き込むことはできません。以下に ,
UDCR に任意のデータを書き込む場合の手順について説明します。
■ UDCR へのデータの書込み
UDCR へデータを書き込むには , 以下の手順で書き込みます。
1) UDCR に書き込むデータを , まず RCR に書き込みます。
2) CCRH の CTUT に "1" を書き込むことによって , RCR から UDCR にデータが転送さ
れます。
■ カウンタのクリア
カウンタのクリアは , UDCR への "0000H" 書込み以外に下記の方法があります。
• リセット入力によるクリア ( 初期化 )
• ZIN 端子からのエッジ入力によるクリア
• CCRL の UDCC に "0" を書き込むことによるクリア
• コンペア機能によるクリア
これらのクリアは , カウント起動 / 停止にかかわらず行うことができます。
■ カウントクリア / ゲート機能
ZIN 端子は , CCRH の CGSC によってカウントクリア機能 , またはゲート機能のいずれ
かとして使用することができます。
カウントクリア機能の起動時は, ZIN端子からのエッジ入力によりカウンタをクリアし
ます。ZIN 端子入力信号のどのエッジでカウントをクリアするかを CCRL の CGE1,
CGE0 で選択します。この機能により , エンコーダの Z 相出力を本端子に入力すると ,
エンコーダのカウントの起点で UDCR をクリアすることが可能となります。
ゲート機能の起動時は , ZIN 端子からのレベル入力によりカウントのイネーブル / ディ
セーブルを行います。ZIN 端子入力信号のどのレベルでイネーブルとするかは CCRL
の CGE1, CGE0 で選択します。
この機能は , 全カウントモードで使用できます。
表 14.5-4 ZIN 端子機能の選択
CGSC
252
ZIN 端子の機能
CGE1, CGE0
カウンタクリア機能
ゲート機能
0
カウンタクリア機能
00B
検出禁止
1
ゲート機能
01B
立上りエッジ
検出禁止
"L" レベル
10B
立下りエッジ
"H" レベル
第 14 章 8/16 ビットアップダウン カウンタ / タイマ
■ カウント方向フラグ , カウント方向転換フラグ
カウント方向フラグ (UDF1, UDF0) はアップ / ダウンカウント時に , 直前のカウントが
アップカウントであったか , ダウンカウントであったかを示します。AIN, BIN 両端子
の入力から生成されたカウントクロックから判断して,カウントのたびにフラグを書き
換えます。モータの制御などで , 現在の回転方向を知りたい場合など , このフラグを見
ることによって回転方向を判別できます。
この機能は , 全カウントモードで使用できます。
表 14.5-5 カウント方向フラグ
カウント方向
UDF1, UDF0
01B
ダウンカウント
10B
アップカウント
アップ / ダウン同時発生 ( カウント動作は行われない )
11B
カウント方向転換フラグ (CDCF) は , カウント方向がアップ→ダウンで変わった場合に
セットされます。このフラグがセットされるとともに , CPU に対して割込みが発生し
ます。この割込みとカウント方向フラグ (UDF1, UDF0) を参照することによって , カウ
ント方向がどちらからどちらへ変化したかが分かります。ただし , 方向転換の期間が短
く , 連続して発生した場合などは , 方向転換後のフラグの示す方向が元に戻って同一方
向となり , 正しいカウント方向転換検出ができない場合がありますので注意が必要で
す。
表 14.5-6 カウント方向転換フラグ
カウント方向転換検出
CDCF
0
1
方向転換なし
方向転換あり (1 回以上 )
253
第 14 章 8/16 ビットアップダウン カウンタ / タイマ
14.6
8/16 ビットアップダウンカウンタ / タイマのプログラム例
8/16 ビットアップダウンカウンタ / タイマのプログラム例を示します。
■ 8/16 ビットアップダウンカウンタ / タイマのプログラム例
プログラム例
設定手順例
16 ビットモードタイマモード ( ダウンカウント )
カウントクロック =8 分周
カウント値をリロードさせ , インターバルタイマ割込
みを発生させる。 割込み要因 = アンダフロー
void UD0_sample_1(void) {
}
<初期設定>
・アップダウンカウンタ ch.0 の制御
制御レジスタの設定
16 ビットモード許可設定 >>
UD0_initial(); UD0_start(); void UD0_initial(void)
{
IO_CCR0.word = 0x9018; /* 設定値 =1001_0000_0001_1000 */
/* bit15 = 1
M16E 16bit × 1 チャネル動作モード
CCR0
.M16E
カウント方向転換 >>
.CDCF
カウント方向転換割込み許可 >>
.CFIE
内蔵プリスケーラ選択 >>
.CLKS
カウントモード選択 >>
.CMS1, CMS0
カウントクロックエッジ選択 >>
.CES1, CES0
アップダウンモード選択 >>
.UDMS
カウンタライト >>
.CTUT
UDCR クリア許可 >>
.UCRE
リロード機能許可 >>
.RLDE
UDCR クリア >>
.UDCC
カウンタクリア / ゲート選択 >>
.CGSC
カウンタクリア / ゲートエッジ選択 >>
.CGE1, CGE0
*/
CDCF カウント方向転換フラグクリア */
CFIE 方向転換割込み禁止 */
/* bit14 = 0
/* bit13 = 0
/* bit12 = 1
CLKS 8 マシンサイクル */
/* bit11-10 = 00B CMS1, CMS0 タイマモード */
/* bit9,bit8 = 00B CES1, CES0 エッジ検出禁止 */
/* bit7 = 0
/* bit6 = 0
/* bit5 = 0
/* bit4 = 1
/* bit3 = 1
/* bit2 = 0
/* bit1,bit0 = 00B
UMDS アップダウンモード選択 */
CTUT カウンタライト ( 無効 ) */
UCRE カウンタクリア禁止 */
RLDE リロード機能許可 */
UDCC UDCR クリア ( 無効 ) */
CGSC ZIN カウンタクリア機能 */
CGE1, CGE0 ZIN エッジ検出禁止 */
・リロード値 / コンペア値設定
リロード値設定
RCR0
RCR1
IO_RCR0 = 0xff;
IO_RCR1 = 0xff;
/* 16 ビットモード リロード値設定 ( 値は任意 ) */
IO_ICR07.byte = 0x10;
__EI();
/* 割込みレベル設定 ( 値は任意 ) */
/* 割込み許可 */
・割込み関連
アップダウンカウンタ 0 割込みレベルの設定 ICR07
I フラグの設定
(CCR)
}
<起動>
・アップダウンカウンタ ch.0 起動
void UD0_start(void)
{
レジスタ名 ビット名
アンダフロー割込み制御
RCR から UDCR へデータ転送
カウント動作起動
IO_CSR0.bit.UDIE = 1;
IO_CCR0.bit.CTUT = 1;
IO_CSR0.bit.CSTR = 1;
CSR0: UDIE
CCR0: CTUT
CSR0: CSTR
/* bit5 = 1
/* bit6 = 1
/* bit7 = 1
UDIE アンダフロー割込み許可 */
CTUT カウンタライト */
CSTR カウント動作起動 */
}
<割込み>
・割込み処理
アンダフロー検出フラグのチェック
割込み要求フラグクリア
CSR0: UDFF
( 任意の処理 )
__interrupt void UD0_int(void) {
if(IO_CSR0.bit.UDFF) {
IO_CSR0.bit.UDFF = 0;
/* bit2 = 0
•••••
}
}
UDFF アンダフロー検出フラグクリア */
<割込みベクタ>
・ベクタテーブルの設定
#pragma intvect UD0_int 25
( 注意事項 )
事前にクロック関連の設定および , __set_il( 数値 ) の
設定が必要です。「第 4 章 割込み」および「第 6 章
クロック」を参照してください。
( 注意事項 )
レジスタの記述形式については , 「F2MC-16LX ファミリ MB90980 シリーズ用
サンプル I/O レジスタファイル 使用手引書」を参照してください。
254
第 14 章 8/16 ビットアップダウン カウンタ / タイマ
■ プログラム例以外の設定方法
● 動作を 8 ビットか 16 ビットかを選択する方法
16 ビットモード許可設定ビット (CCR0: M16E) で設定します。
表 14.6-1 動作を 8 ビットか 16 ビットかを選択する方法
アップダウンカウンタのビット長
16 ビットモード許可設定ビット (M16E)
8 ビットに設定するには
"0" にする
16 ビットに設定するには
"1" にする
● カウントモードの種類と設定方法
4 種類のカウントモードがあります。
カウントモードは , カウントモード選択ビット (CCR0: CMS[1:0], CCR1: CMS[1:0]) で設
定します。
表 14.6-2 カウントモードの種類と設定方法
カウントモード
カウントモード選択ビット (CMS[1:0])
タイマモードにするには
"00B" にする
アップダウンカウントモードにするには
"01B" にする
位相差カウントモード (2 逓倍 ) にするには
"10B" にする
位相差カウントモード (4 逓倍 ) にするには
"11B" にする
● タイマモード動作時のカウントソースを選択する方法
内部プリスケーラ選択ビット (CCR0: CLKS, CCR1: CLKS) で設定します。
表 14.6-3 タイマモード動作時のカウントソースを選択する方法
タイマモード動作時のカウントソース
内部プリスケーラ選択ビット (CLKS)
φ を 2 分周したクロックにするには
"0" にする
φ を 8 分周したクロックにするには
"1" にする
255
第 14 章 8/16 ビットアップダウン カウンタ / タイマ
● アップダウンカウンタ動作時に入力する信号 (AIN, BIN) を検出するときのエッジを選択す
る方法
カウントクロックエッジ選択ビット (CCR0: CES[1:0], CCR1: CES[1:0]) で設定します。
表 14.6-4 入力信号 (AIN, BIN) を検出するときのエッジを選択する方法
カウント検出エッジ
カウントクロックエッジ選択ビット (CES[1:0])
検出禁止を設定するには
"00B" にする
立下り検出を設定するには
"01B" にする
立上り検出を設定するには
"10B" にする
両エッジ検出を設定するには
"11B" にする
● アップダウンカウンタに値を設定する方法
リロード / コンペアレジスタ (RCR) に値を書いた後で , カウンタライトビット (CCR0:
CTUT, CCR1: CTUT) に "1" を書き込むことでアップダウンカウンタに値を設定できま
す。
● アップダウンカウンタのアップカウント値とコンペア値(RCR[0:1])が一致し, さらにアップ
カウントしたときにアップダウンカウンタのクリアを許可する方法
アップダウンカウンタクリア許可ビット (CCR0: UCRE, CCR1: UCRE) で設定します。
表 14.6-5 アップダウンカウンタのクリアを許可する方法
動作
アップダウンカウンタクリア許可ビット (UCRE)
アップダウンカウンタのクリアを禁止するには
"0" にする
アップダウンカウンタのクリアを許可するには
"1" にする
● アップダウンカウンタのアンダフロー発生時に, リロード値(RCR[1:0])をアップダウンカウ
ンタにリロードすることを許可する方法
リロードイネーブルビット (CCR0: RLDE, CCR1: RLDE) で設定します。
表 14.6-6 リロード値 (RCR) をアップダウンカウンタにリロードすることを許可する方法
動作
リロードイネーブルビット (RLDE)
アップダウンカウンタにリロード値 (RCR) を
リロードすることを禁止するには
"0" にする
アップダウンカウンタにリロード値 (RCR) を
リロードすることを許可するには
"1" にする
256
第 14 章 8/16 ビットアップダウン カウンタ / タイマ
● アップダウンカウンタをクリアする方法
アップダウンカウンタは以下の 5 つの方法でクリアすることができます。
• アップダウンカウンタクリアビット (CCR0: UDCC, CCR1: UDCC) への "0" 書込み
• ZIN 端子へのエッジ入力
• コンペア値とアップダウンカウンタのアップカウント値が一致したとき
• フルカウントからのカウントアップ動作
• リセット入力 ( 外部リセット , ウォッチドッグリセット , ソフトウェアリセット )
● ZIN 端子でアップダウンカウンタをクリアする方法
カウンタクリアゲートビット (CCR0: CGSC, CCR1: CGSC) とカウンタクリアゲート
エッジ選択ビット (CCR0: CGE[1:0], CCR1: CGE[1:0]) で設定します ( すべてのカウント
モードで有効 )。
表 14.6-7 ZIN 端子でアップダウンカウンタをクリアする方法
カウンタクリア
ゲートビット
(CGSC)
カウンタクリアゲート
エッジ選択ビット
(CGE[1:0])
エッジ検出禁止 ( クリアなし ) にさせるには
"0" にする
"00B" にする
立下りエッジでアップダウンカウンタをクリアするには
"0" にする
"01B" にする
立上りエッジでアップダウンカウンタをクリアするには
"0" にする
"10B" にする
ZIN 端子入力に対して
GCE[1:0]=11B は設定禁止です。
● アップダウンのカウント動作を ZIN 端子で制御する方法
カウンタクリアゲートビット (CCR0: CGSC, CCR1: CGSC) とカウンタクリアゲート
エッジ選択ビット (CCR0: CGE[1:0], CCR1: CGE[1:0]) で設定します ( すべてのカウン
トモードで有効 )。
表 14.6-8 アップダウンのカウント動作を ZIN 端子で制御する方法
カウンタクリア
ゲートビット
(CGSC)
カウンタクリアゲート
エッジ選択ビット
(CGE[1:0])
レベル検出禁止 ( カウント禁止状態 ) にさせるには
"1" にする
"00B" にする
"L" レベルでアップダウンカウント動作
"H" レベルでアップダウンカウント停止させるには
"1" にする
"01B" にする
"L" レベルでアップダウンカウント停止
"H" レベルでアップダウンカウント動作させるには
"1" にする
"10B" にする
ZIN 端子入力に対して
GCE[1:0]=11B は設定禁止です。
257
第 14 章 8/16 ビットアップダウン カウンタ / タイマ
● アップダウンカウンタのカウント動作を許可 / 禁止する方法
カウント起動ビット (CSR0: CSTR, CSR1: CSTR) で設定します。
表 14.6-9 アップダウンカウンタのカウント動作を許可 / 禁止する方法
動作
カウント起動ビット
(CSR0: CSTR, CSR1: CSTR)
アップダウンカウンタのカウント動作を禁止するには
"0" にする
アップダウンカウンタのカウント動作を許可するには
( 起動するには )
"1" にする
カウントの開始は , カウントモードにより異なります。
タイマモード
→ 内部クロックでカウント開始
アップダウンカウントモード
→ AIN 端子 , BIN 端子のエッジを検出してカウン
ト開始
位相差カウントモード
→ AIN 端子 , BIN 端子の位相差を検出してカウン
ト開始
ただし, ZIN端子のゲート機能を選択時はカウント動作許可レベルを検出している必要
があります。
● 直前のカウント方向を知る方法 ( 現在の回転方向を知る方法 )
アップダウンフラグ (CSR0: UDF[1:0], CSR1: UDF[1:0]) で設定します。
表 14.6-10 直前のカウント方向を知る方法
設定
アップダウンフラグ (UDF[1:0])
"00" のとき
リセット後カウントなし
"01" のとき
ダウンカウント
"10" のとき
アップカウント
"11" のとき
アップとダウンが同時発生 ( アップもダウンもカウントしていません )
このフラグは割込みとは関係ありませんので , 割込み処理する場合はカウント方向転
換フラグ (CCR0: CDCF, CCR1: CDCF) を利用してください。
● 方向転換を知る方法
カウント方向転換フラグ (CCR0: CDCF, CCR1: CDCF) で設定します。
表 14.6-11 方向転換を知る方法
設定
258
カウント方向転換フラグ (CDCF)
"0" のとき
フラグクリア後 , 方向転換は行われていない
"1" のとき
フラグクリア後 , 方向転換が行われている (1 回以上 )
第 14 章 8/16 ビットアップダウン カウンタ / タイマ
● 比較結果一致が発生したことを知る方法
コンペア検出フラグ (CSR0: CMPF, CSR1: CMPF) で設定します。
表 14.6-12 比較結果一致が発生したことを知る方法
設定
コンペア検出フラグ (CMPF)
"0" のとき
アップダウンカウンタのカウント値とコンペア値が一致していない
"1" のとき
アップダウンカウンタのカウント値とコンペア値が一致している
動作がアップ / ダウン / 値の設定 / 値のリロードなどに関係なく比較結果一致したらフ
ラグが "1" になります。
● オーバフロー , アンダフローが発生したことを知る方法
オーバフロー検出フラグ (CSR0: OVFF, CSR1: OVFF), アンダフロー検出フラグ
(CSR0: UDFF, CSR1: UDFF) で設定します。
表 14.6-13 オーバフロー , アンダフローが発生したことを知る方法
(OVFF)=1 のとき
アップダウンカウンタがオーバフローを発生した
(UDFF)=1 のとき
アップダウンカウンタがアンダフローを発生した
● リロード値 , コンペア値を設定する方法
リロード / コンペアレジスタ RCR0, RCR1 に値を設定します ( コンペア値とリロード値
は同じ値となります ) 。
● 割込み関連レジスタ
アップダウンカウンタ番号 , 割込みレベル , ベクタの関係を以下に示します。
割込みレベル , 割込みベクタの詳細については「第 4 章 割込み」を参照してください。
表 14.6-14 アップダウンカウンタ番号 , 割込みレベル , ベクタの関係
要因
割込みベクタ
割込みレベル設定レジスタ
アップダウンカウンタ
#25
アドレス : 0FFFF98H
割込みレベルレジスタ (ICR07)
アドレス : 000B7H
割込み要求フラグ
カウント方向転換:(CCR0: CDCF), (CCR1: CDCF)
コンペア検出
:(CSR0: CMPF), (CSR1: CMPF)
オーバフロー
:(CSR0: OVFF), (CSR1: OVFF)
アンダフロー
:(CSR0: UDFF), (CSR1: UDFF)
上記割込み要求フラグは自動的にはクリアされません。割込み処理から復帰する前に
ソフトウェアにて割込み要求フラグに "0" を書き込んでください。
259
第 14 章 8/16 ビットアップダウン カウンタ / タイマ
● 割込みの種類と選択方法
割込み要因には , 以下の 3 つがあります。
• カウント方向転換
• 比較結果一致
• オーバフロー / アンダフロー
割込みは上記 3 つの割込み要因の OR で発生します。割込み要因の選択は割込み要求
許可ビットで設定します。
● 割込みを許可 ( 選択 ) / 禁止 / クリアする方法
割込みの許可 ( 選択 )/ 禁止は , 割込み要求許可ビットの
カウント方向転換割込み要求許可ビット
:(CCR0: CFIE), (CCR1: CFIE)
コンペア割込み要求許可ビット
:(CSR0: CITE), (CSR1: CITE)
オーバフロー / アンダフロー割込み要求許可ビット :(CSR0: UDIE), (CSR1: UDIE)
で設定します。
表 14.6-15 割込みを許可 ( 選択 ) / 禁止する方法
制御
割込み要求許可ビット (CFIE, CITE, UDIE)
割込み要求を禁止するには
"0" にする
割込み要求を許可するには
"1" にする
割込み要求のクリアは , 割込み要求ビットの
カウント方向転換
:(CCR0: CDCF), (CCR1: CDCF)
コンペア検出
:(CSR0: CMPF), (CSR1: CMPF)
オーバフロー
:(CSR0: OVFF), (CSR1: OVFF)
アンダフロー
:(CSR0: UDFF), (CSR1: UDFF)
で設定します。
表 14.6-16 割込み要求をクリアする方法
260
制御
割込み要求ビット (CDCF, CMPF, OVFF, UDFF)
割込み要求をクリアするには
"0" を書き込む
第 15 章
16 ビットリロードタイマ
16 ビットリロードタイマの概要 , レジスタの構成
と機能 , 割込みおよび動作について説明します。
15.1 16 ビットリロードタイマの概要
15.2 16 ビットリロードタイマのレジスタの構成と機能
15.3 16 ビットリロードタイマの割込み
15.4 16 ビットリロードタイマの動作
15.5 16 ビットリロードタイマのプログラム例
261
第 15 章 16 ビットリロードタイマ
15.1
16 ビットリロードタイマの概要
16 ビットリロードタイマには , 以下の機能があります。
• クロックモードは , 内部クロックモードおよびイベントカウントモードから選択
できます。
• カウント動作は , 16 ビットタイマレジスタ (TMR) のアンダフローが発生した場合
は , カウント動作を停止するワンショットモードまたはカウント設定値を再ロー
ドしてカウント動作を継続するリロードモードから選択できます。
• 16 ビットタイマレジスタ (TMR) のアンダフローが発生した場合は , 割込みを発生
させることにより , インターバルタイマとして利用できます。
■ 16 ビットリロードタイマの動作モード
表 15.1-1 に , 16 ビットリロードタイマの動作モードを示します。
表 15.1-1 16 ビットリロードタイマの動作モード
クロックモード
カウント動作
リロードモード
内部クロックモード
イベントカウントモード
( 外部クロックモード )
ワンショットモード
リロードモード
ワンショットモード
16 ビットリロードタイマ動作
ソフトウェアトリガ動作
外部トリガ動作
外部ゲート入力動作
ソフトウェアトリガ動作
■ 内部クロックモード
カウントクロックとして 3 種類の内部クロックから 1 種類を選択できます。
● ソフトウェアトリガ動作
タイマ制御ステータスレジスタ (TMCSR) の TRG ビットに "1" を書き込むと , カウンタ
動作を開始します。TRG ビットによるトリガ入力は , 外部トリガ動作時および外部ゲー
ト入力動作時にも有効です。
● 外部トリガ動作
選択されたエッジ ( 立上り / 立下り / 両エッジ ) が TIN0 端子に入力されたとき , カウン
ト動作を開始します。
● 外部ゲート入力動作
選択された信号 ("L" または "H") が TIN0 に入力されている間 , カウント動作を続行し
ます。
■ イベントカウントモード ( 外部クロックモード )
選択されたエッジ ( 立上り / 立下り / 両エッジ ) が TIN0 端子に入力されると , そのエッ
ジでカウントダウンする機能です。
一定周期の外部クロックを使用した場合は , インターバルタイマとしても使用できま
す。
262
第 15 章 16 ビットリロードタイマ
■ カウンタ動作のモード
● リロードモード
カウントダウンでアンダフロー (0000H → FFFFH) が発生すると , カウント設定値が再
ロードされてカウント動作が継続します。アンダフローで割込み要求が発生するため ,
インターバルタイマとして使用できます。また , アンダフローごとに反転するトグル波
形を TOT0 端子から出力することもできます。
カウントクロック
カウントクロック周期
インターバル時間
φ/2 (80ns)
80ns ~ 5.243ms
1
内部クロック
外部クロック
φ/2 (0.32μs)
0.32μs ~ 20.972ms
φ/25(1.28μs)
1.28μs ~ 83.886ms
φ/2 (0.32μs)
0.32μs 以上
3
3
例 ) 25MHz/21 = 12.5MHz = 80ns
( 注意事項 ) ・マシンサイクル (φ) = 25MHz
・インターバル時間の最大値は 0000H ~ FFFFH
例 ) φ/21(80ns) × 65536 ≒ 5.243ms
● ワンショットモード
カウントダウンでアンダフロー (0000H → FFFFH) が発生すると , カウント動作を停止
します。
アンダフローで割込みを発生します。また , カウントの動作中は , カウント中を示す矩
形波を TOT0 端子から出力できます。
<参考>
16 ビットリロードタイマは , A/D コンバータの起動トリガに使用できます。
263
第 15 章 16 ビットリロードタイマ
■ 16 ビットリロードタイマのブロックダイヤグラム
図 15.1-1 16 ビットリロードタイマのブロックダイヤグラム
内部データバス
TMRLR
16ビットリロードレジスタ
リロード信号
TMR
リロード
制御回路
16ビットタイマレジスタ(ダウンカウンタ)UF
CLK
カウントクロック生成回路
3
ゲート入力
有効クロック判定回路
プリスケーラ
クリア
ウェイト信号
CLK
A/Dコン
バータへ
出力信号生成回路
端子(TIN0)
入力制御回路
クロックセレクタ
反転
出力信号生成回路
EN
外部クロック
機能選択
3
セレクト信号
端子(TOT0)
2
OUTL
RELD 動作制御回路
OUTE
タイマ制御ステータスレジスタ(TMCSR)
■ 16 ビットリロードタイマに関する端子
16 ビットリロードタイマに関する端子には , TIN0 端子と TOT0 端子があります。TIN0
端子は汎用入出力ポート (P73/TIN0) と 16 ビットリロードタイマの入力端子として機能
を兼用しており , TOT0 端子は汎用入出力ポート (P74/TOT0) と 16 ビットリロードタイ
マの出力端子として機能を兼用しています。
● TIN0 端子として使用する場合の設定
TIN0 端子を入力として使用する場合は , P73/TIN0 端子はポート方向レジスタにより入
力ポート (DDR7: bit3 → "0") に設定してください。
● TOT0 端子として使用する場合の設定
TOT0 端子を出力として使用する場合は , タイマ制御ステータスレジスタ (TMCSR) を
出力許可 (OUTE: bit6 → "1") に設定してください。
264
第 15 章 16 ビットリロードタイマ
■ 16 ビットリロードタイマに関する端子のブロックダイヤグラム
図 15.1-2 16 ビットリロードタイマに関する端子のブロックダイヤグラム
周辺機能入力
(TIN0)
ポートデータレジスタ(PDR)
周辺機能出力 (TOT0)
周辺機能出力許可
オープンドレイン
制御信号(P73/P74)
内部データバス
PDRリード
出力ラッチ
P-ch
PDRライト
端子
ポート方向レジスタ(DDR)
方向ラッチ
N-ch
DDRライト
DDRリード
スタンバイ制御(SPL=1)
スタンバイ制御:ストップモード(SPL=1), タイムベースタイマモード(SPL=1), 時計モード(SPL=1)
265
第 15 章 16 ビットリロードタイマ
15.2
16 ビットリロードタイマのレジスタの構成と機能
16 ビットリロードタイマのレジスタの構成と機能について説明します。
■ 16 ビットリロードタイマのレジスタ構成
図 15.2-1 に , 16 ビットリロードタイマのレジスタ一覧を示します。
図 15.2-1 16 ビットリロードタイマのレジスタ一覧
タイマ制御ステータスレジスタ(上位)(TMCSR)
bit15 bit14 bit13 bit12
アドレス:
0000CBH -
-
-
-
-
-
-
-
タイマ制御ステータスレジスタ(下位)(TMCSR)
bit7 bit6 bit5 bit4
アドレス:
0000CAH MOD0 OUTE OUTL RELD
R/W
R/W
R/W
R/W
初期値
bit11 bit10 bit9 bit8
CSL1 CSL0 MOD2 MOD1
R/W
R/W
R/W
R/W
----0000B
bit3
INTE
R/W
00000000B
bit2 bit1 bit0
UF
CNTE TRG
R/W
R/W
R/W
16ビットタイマレジスタ/16ビットリロードレジスタ(上位)(TMR/TMRLR)
bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8
アドレス:
0000CDH D15
D14
D13 D12 D11
D10
D09 D08
XXXXXXXXB
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
16ビットタイマレジスタ/ 16ビットリロードレジスタ(下位)(TMR/TMRLR)
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
アドレス:
XXXXXXXXB
D06
D05 D04 D03
D02
D01 D00
0000CCH D07
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W: リード/ライト可能
- : 未使用
266
第 15 章 16 ビットリロードタイマ
15.2.1
タイマ制御ステータスレジスタ (TMCSR)
タイマ制御ステータスレジスタ (TMCSR) の構成と機能について説明します。
■ タイマ制御ステータスレジスタ (TMCSR)
タイマ制御ステータスレジスタ (TMCSR) は , 16 ビットリロードタイマの動作モードお
よび割込みを制御します。CNTE=0 のとき , UF/CNTE/TRG 以外のビットをモディファ
イします。
図 15.2-2 に , タイマ制御ステータスレジスタ (TMCSR) のビット構成を示します。
図 15.2-2 タイマ制御ステータスレジスタ (TMCSR) のビット構成
タイマ制御ステータスレジスタ(上位)(TMCSR)
bit15 bit14 bit13 bit12
アドレス:
0000CBH -
-
-
-
-
-
-
-
タイマ制御ステータスレジスタ(下位)(TMCSR)
bit7 bit6 bit5 bit4
アドレス:
0000CAH MOD0 OUTE OUTL RELD
R/W
R/W
R/W
R/W
初期値
bit11 bit10 bit9 bit8
CSL1 CSL0 MOD2 MOD1
R/W
R/W
R/W
R/W
----0000B
bit3
INTE
R/W
00000000B
bit2 bit1 bit0
UF
CNTE TRG
R/W
R/W
R/W
R/W: リード/ライト可能
- : 未使用
以下に , タイマ制御ステータスレジスタ (TMCSR) の各ビットの機能を説明します。
[bit11, bit10] CSL1, CSL0:カウントクロック選択ビット
これらのビットは , カウントクロック選択ビットによりクロックソースを選択しま
す。
クロックソース ( マシンクロック φ=25MHz 時 )
CSL1
CSL0
0
0
φ/21
0
1
φ/23(0.32μs)
1
0
1
1
φ/25(1.28μs)
イベントカウントモード
(0.08μs)
( 初期値 )
[bit9 ~ bit7] MOD2 ~ MOD0:トリガ指定ビット
これらのビットは , 動作モードと入出力端子の機能を設定します。MOD2=0 のとき ,
入力端子はトリガとして機能します。アクティブエッジが入力端子に入力されてカ
ウント動作が進行すると , リロードレジスタの内容がカウンタにロードされます。
MOD2=1 のときは , タイマはゲートカウンタモードで動作し , 入力端子はゲート入
力として機能します。このモードでは , カウンタはアクティブレベルが入力端子に
入力されている間だけカウントします。
MOD2 ~ MOD0 ビットの組合せによって , 内部クロックモードおよびイベントカウ
ントモードを表 15.2-1 と表 15.2-2 に示すモードから選択できます。
267
第 15 章 16 ビットリロードタイマ
表 15.2-1 内部クロックモード (CLS1, CLS0=00B, 01B または 10B)
MOD2
MOD1
MOD0
入力端子機能
0
0
0
0
1
1
0
0
1
1
X
X
0
1
0
1
0
1
トリガ無効
アクティブエッジ ,
またはレベル
- ( 初期値 )
立上りエッジ
立下りエッジ
両エッジ
"L" レベル
"H" レベル
トリガ入力
ゲート入力
表 15.2-2 イベントカウントモード (CLS1, CLS0=11B)
MOD2
MOD1
MOD0
入力端子機能
X
X
X
X
0
0
1
1
0
1
0
1
トリガ無効
トリガ入力
アクティブエッジ ,
またはレベル
- ( 初期値 )
立上りエッジ
立下りエッジ
両エッジ
[bit6] OUTE:出力許可ビット
このビットは , 出力許可を制御します。
TOT 端子は , このビットが "0" のとき汎用ポートとして , "1" のときタイマ出力端子
として機能します。リロードモードでは , 出力波形はトグル波形となります。ワン
ショットモードでは , TOT 端子はカウントが進行中であることを示す矩形波を出力
します。
機能
OUTE
0
1
汎用ポート ( 初期値 )
タイマ出力
[bit5] OUTL:タイマ出力レベルビット
このビットは , TOT 端子の出力レベルを設定するビットです。OUTL が "0" のとき
と "1" のときでは出力端子レベルは逆になります。
OUTL
ワンショットモード時 (RELD=0)
0
1
X
X
カウント中 "H" の矩形波
カウント中 "L" の矩形波
1
1
リロードモード時 (RELD=1)
0 1
0
1
( 初期値 )
[bit4] RELD:リロード動作許可ビット
このビットは , リロード動作を許可します。RELD が "1" のときは , タイマはリロー
ドモード動作で動作します。このモードでは , タイマはリロードレジスタの内容を
カウンタにロードし , アンダフローが発生してもカウント動作を継続します。RELD
が "0" のときは , タイマはワンショットモードで動作します。このモードでは , アン
ダフローが発生するとカウンタ動作を停止します。
機能
RELD
0
1
268
ワンショットモード
リロードモード
( 初期値 )
第 15 章 16 ビットリロードタイマ
[bit3] INTE:タイマ割込み要求許可ビット
このビットは , タイマ割込み要求を許可するビットです。INTE=0 のときは , UF が
"1" になっても割込み要求を発生しません。
機能
INTE
0
1
割込み要求出力禁止
割込み要求出力許可
( 初期値 )
<注意事項>
リロードタイマアンダフロー割込みを許可 (TMCSR レジスタの INTE ビット = 1) から禁
止 (TMCSR レジスタの INTE ビット = 0) にする場合は , 割込み制御レジスタ (ICR12) の
IL2 ~ IL0 ビット = 111B として割込みを禁止にしてから INTE ビットに "0" を書き込んで
ください。
[bit2] UF:タイマ割込み要求フラグ
このビットは , タイマ割込み要求フラグです。アンダフローが発生すると UF は "1"
に設定されます。"0" を書き込むか , または μDMAC によってクリアされます。本
ビットに "1" を書き込んでも意味をもちません。リードモディファイライト (RMW)
系命令での読出し値は "1" です。
UF
0
1
読出し時
書込み時
カウンタのアンダフローなし ( 初期値 )
カウンタのアンダフローあり
このビットのクリア
( 初期値 )
変化なし ( ほかへの影響なし )
[bit1] CNTE:タイマカウンタ許可ビット
このビットは , タイマカウンタを許可します。
機能
CNTE
0
1
カウンタ停止
( 初期値 )
カウンタ許可 ( 起動トリガ待ち )
[bit0] TRG:ソフトウェアトリガビット
このビットは , ソフトウェアトリガビットです。TRG=1 の書込みによりソフトウェ
アトリガが適用され , タイマのリロードレジスタの内容をカウンタにロードして ,
カウントを開始します。"0" を書き込んでも何の意味ももちません。読出しは常に
"0" です。CNTE=1 のときのみ , 動作モードにかかわらず常に有効になります。
機能
TRG
0
1
変化なし カウント動作開始
( 初期値 )
269
第 15 章 16 ビットリロードタイマ
16 ビットタイマレジスタ (TMR)/16 ビットリロード
レジスタ (TMRLR)
15.2.2
16 ビットタイマレジスタ (TMR)/16 ビットリロードレジスタ (TMRLR) の構成と機能
について説明します。
■ 16 ビットタイマレジスタ (TMR)/16 ビットリロードレジスタ (TMRLR)
図 15.2-3 に , 16 ビットタイマレジスタ (TMR)/16 ビットリロードレジスタ (TMRLR) の
ビット構成を示します。
図 15.2-3 16 ビットタイマレジスタ (TMR)/16 ビットリロードレジスタ (TMRLR) のビット構成
16ビットタイマレジスタ/16ビットリロードレジスタ(上位)(TMR/TMRLR)
bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8
アドレス:
0000CDH D15
D14
D13 D12 D11
D10
D09 D08
XXXXXXXXB
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
16ビットタイマレジスタ/ 16ビットリロードレジスタ(下位)(TMR/TMRLR)
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
アドレス:
XXXXXXXXB
0000CCH D07
D06
D05 D04 D03
D02
D01 D00
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W: リード/ライト可能
■ 16 ビットタイマレジスタ (TMR)
16 ビットタイマレジスタは , 16 ビットダウンカウンタのカウンタ値を読み出します。
カウンタ動作を許可 (TMCSR: CNTE=1) し , カウントを開始すると , 16 ビットリロード
レジスタに書き込まれた値がこのレジスタにロードされ,カウントダウンが開始されま
す。カウント停止状態 (TMCSR: CNTE=0) では , このレジスタの値が保持されます。
<注意事項>
このレジスタの読出しはカウント動作中でもできますが , 必ずワード転送命令 (MOVW A
003AH など ) を使用してください。
16 ビットタイマレジスタ (TMR) は , 機能的には読出し専用ですが , 書込み専用の 16 ビッ
トリロードレジスタ (TMRLR) と同一アドレスに配置されています。したがって , 書込み
をしても TMR の値は影響を受けませんが , TMRLR に対して書込みが行われます。
270
第 15 章 16 ビットリロードタイマ
■ 16 ビットリロードレジスタ (TMRLR)
16 ビットリロードレジスタは , カウント動作を禁止 (TMCSR: CNTE=0) している状態で
カウンタの初期値を設定します。カウンタ動作を許可 (TMCSR: CNTE=1) し , カウンタ
を起動すると , このレジスタに書き込まれた値からカウントダウンを開始します。この
レジスタに設定した値は , リロードモードのとき , アンダフローの発生でカウンタにリ
ロードされ , カウントダウンを続行します。ワンショットモードのときは , アンダフ
ローの発生後 , カウンタは "FFFFH" で停止します。
<注意事項>
このレジスタへの書込みは , カウンタ停止 (TMCSR: CNTE=0) 状態で行ってください。
また , 必ずワード転送命令 (MOVW A 003AH など ) で書き込んでください。
16 ビットリロードレジスタ (TMRLR) は , 機能的には書込み専用ですが , 読出し専用の 16
ビットタイマレジスタ (TMR) と同一アドレスに配置されています。したがって , 読出し値
は TMR の値となるため , INC/DEC 命令などのリードモディファイライト (RMW) 系命令
を使用できません。
271
第 15 章 16 ビットリロードタイマ
15.3
16 ビットリロードタイマの割込み
16 ビットリロードタイマの割込みは , カウンタのアンダフローを検出した場合に発
生します。
カウンタのアンダフロー割込みでは , DMA 転送および拡張インテリジェント I/O
サービス (EI2OS) を起動することができます。
■ 16 ビットリロードタイマの割込み
表 15.3-1 に , 16 ビットリロードタイマの割込み制御ビットと割込み要因を示します。
表 15.3-1 16 ビットリロードタイマの割込み
リロードタイマ
アンダフロー割込み
割込み要求フラグ
TMCSR: UF (bit2)
割込み要求出力許可ビット
TMCSR: INTE (bit3)
割込み発生要因
16 ビットリロードタイマのアンダフロー
16 ビットタイマレジスタ (TMR) のカウント中に TMR 値が "0000H" から "FFFFH" にカ
ウントダウンされると , アンダフローが発生します。アンダフローが発生すると , タイ
マ制御ステータスレジスタ (TMCSR) のアンダフロー発生フラグ (UF=1) が設定されま
す。アンダフロー割込みが許可されている場合は (INTE=1), 割込み要求が発生します。
■ 16 ビットリロードタイマの割込みと DMA 転送および EI2OS
表 15.3-2 に , ソフトウェア割込みを除く割込み要因と割込みベクタおよび割込み制御
レジスタの関係を示します。
表 15.3-2 割込み要因と割込みベクタ / 割込み制御レジスタ
割込み要因
16 ビットフリーランタイマオーバフロー ,
16 ビットリロードタイマアンダフロー
EI2OS の
クリア
μDMAC
チャネル
番号
○
12
割込みベクタ
番号
*
#35
アドレス
FFFF70H
割込み制御レジスタ
番号
ICR12
アドレス
0000BCH
○ : 割込み要求フラグはクリアされます。
* : この割込み要因は , ほかの周辺機能の割込み要因と割込み番号を共有しています。
詳細については , 表 4.2-2 を参照してください。
( 注意事項 )
同一割込み番号に 2 つの割込み要因があった場合は , リソースは両方の割込み要求フラ
グをクリアします。したがって , 2 要因のどちらか 1 つが EI2OS/μDMAC 機能を使用す
ると , もう 1 つの割込み機能は使用できません。該当リソースの割込み要求許可ビット
を "0" にして , ソフトウェアポーリング処理で対処してください。
■ DMA 転送 , および EI2OS 機能への対応
16 ビットリロードタイマは DMA 転送機能 , および EI2OS 機能に対応しています。
DMA または EI2OS 機能を使用する場合には , 割込み制御レジスタ (ICR) を共有するほ
かの割込みを禁止に設定する必要があります。
272
第 15 章 16 ビットリロードタイマ
16 ビットリロードタイマの動作
15.4
16 ビットリロードタイマの設定について説明します。
■ 16 ビットリロードタイマの設定
● 内部クロックモードの設定
インターバルタイマとして動作させるには , 図 15.4-1 に示す設定が必要です。
図 15.4-1 内部クロックモードの設定
bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8
TMCSR
-
-
-
bit7 bit6 bit5 bit4
bit3
bit2 bit1
- CSL1 CSL0 MOD2 MOD1 MOD0 OUTE OUTL RELD INTE UF
◎ ◎ ◎ ◎ ◎ ◎ ◎ ◎
bit0
CNTE TRG
1 ◎
"11B"以外
カウンタの初期値(リロード値)を設定
TMRLR
◎:使用ビット
1 :"1"を設定
● イベントカウントモードの設定
イベントカウントモードとして動作させるには , 図 15.4-2 に示す設定が必要です。
図 15.4-2 イベントカウントモードの設定
bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8
TMCSR
TMRLR
-
-
-
bit7 bit6 bit5 bit4 bit3
bit2 bit1
- CSL1 CSL0 MOD2 MOD1 MOD0 OUTE OUTL RELD INTE UF
1
1
◎ ◎ ◎ ◎ ◎ ◎ ◎ ◎
bit0
CNTE TRG
1 ◎
カウンタの初期値(リロード値)を設定
DDR9
△
◎:使用ビット
1 :"1"を設定
△:使用する端子に対応するビットに"0"を設定
273
第 15 章 16 ビットリロードタイマ
カウント動作の状態遷移
15.4.1
カウント動作の状態遷移を示します。
■ カウント動作の状態遷移
図 15.4-3 カウンタ動作の状態遷移
リセット
STOP状態
CNTE=1,WAIT=1
TIN端子:入力禁止
TOT端子:汎用ポート
カウンタ:停止時の値を保持
リセット直後は不定
CNTE=0
WAIT状態
CNTE=1/TRG=0
UF=1 &
RELD=0
CNTE=1,WAIT=1
CNTE=0
CNTE=1/TRG=1
RUN状態
TIN端子:トリガ入力のみ有効
CNTE=1,WAIT=0
TIN端子:TIN端子として機能
ワンショットモード
TOT端子:初期値出力
TOT端子:TOT端子として機能
カウンタ:停止時の値を保持
リセット直後ロードするまでは不定
UF=1 &
RELD=1
カウンタ:動作
リロードモード
TRG=1(ソフトトリガ)
TRG=1(ソフトトリガ)
LOAD
TINからの外部トリガ
CNTE=1,WAIT=0
リロードレジスタの内容をカウンタへロード
ロード終了
:ハードウェアによる状態遷移
:レジスタアクセスによる状態遷移
WAIT :WAIT信号(内部信号)
TRG
:タイマ制御ステータスレジスタ(TMCSR)のソフトウェアトリガビット
CNTE :タイマ制御ステータスレジスタ(TMCSR)のカウンタ許可ビット
UF
:タイマ制御ステータスレジスタ(TMCSR)のアンダフロー割込み要求フラグ
RELD :タイマ制御ステータスレジスタ(TMCSR)のリロード選択ビット
274
第 15 章 16 ビットリロードタイマ
15.4.2
内部クロックモード ( リロードモード ) の動作
内部カウントクロックに同期して , 16 ビットカウンタをカウントダウンし , カウン
タのアンダフローで CPU に割込み要求を発生します。また , タイマ出力端子からト
グル波形を出力できます。
■ 内部クロックモード ( リロードモード ) の動作
カウント動作を許可 (TMCSR の CNTE=1) し , ソフトウェアトリガビット (TMCSR の
TRG) または外部トリガでタイマを起動すると , 16 ビットリロードレジスタ (TMRLR)
の値をカウンタにロードしてカウンタ動作を開始します。
カウンタ許可ビットとソフトウェアトリガビットを同時に "1" にセットすると , カウン
タ許可と同時にカウントを開始します。カウンタ値がアンダフロー (0000H → FFFFH)
すると , 16 ビットリロードレジスタ (TMRLR) の値をカウンタにロードしてカウント動
作を継続します。このとき , アンダフロー割込み要求フラグビット (UF) が "1" にセッ
トされ , 割込み要求許可ビット (INTE) が "1" である場合は割込み要求を発生します。ま
た , TOT 端子からは , アンダフローごとに反転するトグル波形を出力します。
● ソフトウェアトリガの動作
タイマ制御ステータスレジスタ (TMCSR) の TRG ビットに "1" を書き込むとカウンタ
が起動されます。
図 15.4-4 に , リロード時のソフトウェアトリガの動作を示します。
図 15.4-4 リロードモード時のカウント動作 ( ソフトウェアトリガの動作 )
カウントクロック
カウンタ
リロードデータ -1
0000H リロードデータ -1
0000H リロードデータ -1
0000H リロードデータ -1
データロード信号
UFビット
CNTEビット
TRGビット
T*
TOT端子
T:マシンサイクル
*:トリガ入力からリロードデータロードまで1Tの時間がかかります。
275
第 15 章 16 ビットリロードタイマ
● 外部トリガの動作
有効エッジ ( 立上り , 立下り , 両エッジ選択可能 ) が TIN 端子に入力されるとカウンタ
が起動します。
図 15.4-5 に , リロードモード時の外部トリガの動作を示します。
図 15.4-5 リロードモード時のカウント動作 ( 外部トリガの動作 )
カウントクロック
カウンタ
リロードデータ -1
0000H リロードデータ -1
0000H リロードデータ -1
0000H リロードデータ -1
データロード信号
UFビット
CNTEビット
TIN端子
2T~2.5T*
TOT端子
T:マシンサイクル
*:トリガ入力からリロードデータロードまで2T~2.5Tの時間がかかります。
<注意事項>
TIN 端子へ入力するトリガパルス幅は , 2T(T: マシンサイクル ) 以上としてください。
● 外部ゲート入力の動作
タイマコントロールステータスレジスタ (TMCSR) のカウント許可ビット (CNTE) に "1"
を設定している場合 , ソフトウェアトリガビット (TRG) に "1" を設定するとカウント動
作を開始します。
動作モード設定ビット(MOD2, MOD1, MOD0)で設定されているゲート入力の有効レベ
ル ("L", "H" から設定可能 ) が TIN 端子に入力されている間にカウント動作を行います。
図 15.4-6 リロードモードのカウント動作 ( 外部ゲート入力動作 )
内部カウントクロック
カウンタ
リロードデータ
-1
-1
-1
0000H
-1
-1
リロードデータ
データロード信号
UFビット
CNTEビット
TRGビット
TIN端子
1マシンサイクル*
TOT端子
*:トリガ入力からリロードデータロードまで,1マシンサイクルの時間がかかります。
<注意事項>
TIN 端子へ入力するトリガパルス幅は , 2T(T: マシンサイクル ) 以上としてください。
276
第 15 章 16 ビットリロードタイマ
内部クロックモード ( ワンショットモード ) の動作
15.4.3
内部カウントクロックに同期して 16 ビットカウンタをカウントダウンし , カウンタ
のアンダフローで CPU に割込み要求を発生します。また , TOT 端子からカウンタ中
を示す矩形波を出力します。
■ 内部クロックモード ( ワンショットモード ) の動作
カウント動作を許可 (TMCSR: CNTE=1) し , ソフトウェアトリガビット (TMCSR: TRG)
または外部トリガでタイマを起動するとカウンタ動作を開始します。
カウンタ許可ビットとソフトウェアトリガビットを同時に "1" にセットすると , カウン
タ許可と同時にカウントを開始します。カウンタ値がアンダフロー("0000H"→"FFFFH")
すると , "FFFFH" の状態でカウンタを停止します。このとき , アンダフロー割込み要求
フラグビット (UF) が "1" にセットされ , 割込み要求許可ビット (INTE) が "1" である場
合は割込み要求が発生します。また , TOT 端子からはカウンタ中を示す矩形波を出力
できます。
● ソフトウェアトリガの動作
タイマ制御ステータスレジスタ (TMCSR) の TRG ビットに "1" を書き込むことでカウ
ンタが起動されます。
図 15.4-7 に , ワンショットモード時のソフトウェアトリガ動作を示します。
図 15.4-7 ワンショットモード時のカウント動作 ( ソフトウェアトリガの動作 )
カウントクロック
リロード
データ
カウンタ
1
0000H
FFFFH
リロード
データ
1
0000H
FFFFH
データロード信号
UFビット
CNTEビット
TRGビット
T*
TOT端子
起動トリガ入力待ち
T :マシンサイクル
* :トリガ入力からリロードデータロードまで1Tの時間がかかります。
277
第 15 章 16 ビットリロードタイマ
● 外部トリガの動作
有効エッジ ( 立上り , 立下り , 両エッジ選択可能 ) が TIN 端子に入力されるとカウンタ
が起動されます。
図 15.4-8 に , ワンショットモード時の外部トリガの動作を示します。
図 15.4-8 ワンショットモード時のカウント動作 ( 外部トリガの動作 )
カウントクロック
カウンタ
リロード
データ
-1
0000 H
FFFF
リロード
データ
H
-1
0000 H
FFFF
H
データロード信号
UF ビット
CNTE ビット
TIN 端子
2T ~ 2.5T*
TO T 端子
起動トリガ入力待ち
T :マシンサイクル
* :外部トリガ入力からリロードデータロードまで, 2T~2.5Tの時間がかかります。
<注意事項>
TIN 端子へ入力するトリガパルス幅は , 2T(T: マシンサイクル ) 以上としてください。
● 外部ゲート入力の動作
有効レベル ("H" レベル , "L" レベル選択可能 ) が TIN 端子に入力されている間にカウ
ント動作を行います。
図 15.4-9 に , ワンショットモード時のゲート入力動作を示します。
図 15.4-9 ワンショットモードのカウント動作 ( 外部ゲート入力動作 )
内部カウントクロック
カウンタ
リロードデータ -1
-1
-1
0000H
-1
-1
リロードデータ
データロード信号
UFビット
CNTEビット
TRGビット
TIN端子
1マシンサイクル*
TOT端子
*: トリガ入力からリロードデータロードまで,1マシンサイクルの時間がかかります。
<注意事項>
TIN端子へ入力するゲート入力のパルス幅は, 2T(T:マシンサイクル)以上としてください。
278
第 15 章 16 ビットリロードタイマ
イベントカウントモード
15.4.4
TIN 端子からの入力エッジをカウントして 16 ビットカウンタをカウントダウンし ,
カウンタのアンダフローで CPU に割込み要求を発生します。また , TOT 端子からト
グル波形または矩形波を出力できます。
■ イベントカウントモードの動作
カウント動作を許可 (TMCSR: CNTE=1) し , カウンタを起動 (TMCSR: TRG=1) すると ,
16 ビットリロードレジスタ (TMRLR) の値がカウンタにロードされ , TIN 端子に入力さ
れたパルス ( 外部カウントクロック ) の有効エッジ ( 立上り , 立下り , 両エッジ選択可
能 ) を検出するたびにカウントダウンします。
カウンタ許可ビットとソフトウェアトリガビットを同時に "1" にセットすると , カウン
タ許可と同時にカウントを開始します。
● リロードモード時の動作
カウンタ値がアンダフロー ("0000H" → "FFFFH") すると , 16 ビットリロードレジスタ
(TMRLR) の値をカウンタにロードしてカウント動作を継続させます。このとき , アン
ダフロー割込み要求フラグビット (UF) を "1" にセットし , 割込み要求許可ビット
(TMCSR: INTE) が "1" である場合は割込み要求を発生します。また , TOT 端子からは
アンダフローごとに反転するトグル波形を出力できます。
図 15.4-10 に , リロードモードのカウント動作を示します。
図 15.4-10 リロードモード時のカウント動作 ( イベントカウントモード )
TIN端子
リロード
データ
カウンタ
-1
0000H
リロード
データ
-1
0000H
リロード
データ
-1
0000H
リロード
データ
-1
データロード信号
UFビット
CNTEビット
TRGビット
T*
TOT端子
T : マシンサイクル
* : トリガ入力からリロードデータロードまで1Tの時間がかかります。
<注意事項>
TIN 端子へ入力されるクロックの "H" 幅および "L" 幅は , 4T(T: マシンサイクル ) 以上とし
てください。
279
第 15 章 16 ビットリロードタイマ
● ワンショットモード時の動作
カウンタ値がアンダフロー ("0000H" → "FFFFH") すると "FFFFH" の状態でカウンタが
停止します。このとき , アンダフロー要求フラグビット (UF) が "1" にセットされ , 割込
み要求許可ビット (INTE) が "1" である場合は割込み要求を発生します。また , TOT 端
子からは , カウント中を示す矩形波を出力できます。
図 15.4-11 に , ワンショットモードのカウント動作を示します。
図 15.4-11 ワンショットモード時のカウント動作 ( イベントカウントモード )
TIN端子
リロード
データ
カウンタ
-1
0000H
FFFFH
リロード
データ
-1
0000 H
FFFFH
データロード信号
UFビット
CNTEビット
TRGビット
T*
TOT端子
起動トリガ入力待ち
T : マシンサイクル
*: トリガ入力からリロードデータロードまで1Tの時間がかかります。
<注意事項>
TIN 端子へ入力されるクロックの "H" 幅および "L" 幅は , 4T(T: マシンサイクル ) 以上とし
てください。
280
第 15 章 16 ビットリロードタイマ
15.5
16 ビットリロードタイマのプログラム例
16 ビットリロードタイマのプログラム例を示します。
■ 16 ビットリロードタイマのプログラム例
設定手順例
プログラム例
TOT0 からのパルス出力させるソフトトリガ , デューティ
1/2, 通常極性
void RT_sample(void) {
}
<初期設定>
・設定
リロード値設定
レジスタ名 ビット名
クロックソース選択 >>
トリガ選択 >>
出力許可 >>
出力レベル選択 >>
動作モード選択 >>
割込み禁止 >>
割込みフラグクリア >>
カウント停止 >>
ソフトトリガ ( 未処理 ) >>
RT_start(); void RT_initial(void)
{
IO_TMRLR = 0xAA ;
TMRLR
・リロードタイマ 0 の制御
制御レジスタの設定
RT_initial(); IO_TMCSR.word = 0x0050; /* 設定値 =0000_0000_0101_0000 */
/* bit15 ~ bit12=0000B 未定義ビット */
TMCSR
.CSL1,CSL0
.MOD
.OUTE
.OUTL
.RELD
.INTE
.UF
.CNTE
.TRG
・割込み関連
リロードタイマ割込みレベル
I フラグの設定
/* リロード値は任意の値を入れてください */
ICR12
(CCR)
IO_ICR12.byte =0x10;
__EI();
/* bit11, bit10=00B
CSL1, CSL0 内部クロック φ/2 */
/* bit9 ~ bit7=000B
MOD ソフトウェアトリガ */
/* bit6=1
/* bit5=0
/* bit4=1
/* bit3=0
/* bit2=0
/* bit1=0
/* bit0=0
OUTE 出力許可 */
OUTL 外部出力レベル "L" */
RELD リロード許可 */
INTE 割込み禁止 */
UF 割込み要求フラグのクリア */
CNTE カウント停止 */
TRG ソフトウェアトリガ */
/* 割込みレベルを設定 */
/* 割込み許可 */ }
<起動>
・リロードタイマ起動
レジスタ名 ビット名
PPG 起動
/* bit3=1
/* bit2=0
/* bit1=1
/* bit0=1
TMCSR
割込みフラグクリア >>
UF
割込み許可 >>
.INTE
カウント許可 >>
.CNTE
ソフトトリガ ( 起動 ) >>
.TRG
<割込み>
・割込み処理
( 任意の処理 )
割込み要求フラグクリア
void RT_start(void)
{
IO_TMCSR.word = 0x005B;
TMCSR: UF
INTE 割込み許可 */
UF 割込み要求フラグのクリア */
CNTE カウント開始 */
TRG ソフトウェアトリガ */
}
__interrupt void RT_int(void)
{
........
IO_TMCSR.bit.UF = 0;
}
/* アンダフロー発生時に割込みがかかる */
/* 任意の処理動作 */
/* bit2=0
UF 割込要求フラグのクリア */
<割込みベクタ>
・ベクタテーブルの設定
#pragma intvect RT_int 35
( 注意事項 )
事前にクロック関連の設定および __set_il( 数値 ) の
設定が必要です。「第 4 章 割込み」および「第 6 章
クロック」を参照してください。
( 注意事項 )
レジスタの記述形式については 「F2MC-16LX ファミリ MB90980 シリーズ用サンプ
ル I/O レジスタファイル 使用手引書」を参照してください。
281
第 15 章 16 ビットリロードタイマ
■ プログラム例以外の設定方法
● リロード値の設定 ( 書換え ) 方法
リロード値は 16 ビットリロードレジスタ TMRLR に設定します。
以下に設定する値の計算式を示します。
<式>
TMRLR レジスタ値 = { リロード間隔 / カウントクロック } - 1
<設定可能な範囲>
TMRLR レジスタ値 = 0 ~ FFFFH (65535)
● カウントクロックの種類と選択方法
カウントクロックは下表の 4 種類からカウントクロック選択ビット (TMCSR: CSL[1:0])
で選択します。
表 15.5-1 カウントクロックの種類と選択方法
カウントクロック
カウントクロック
選択ビット
カウントクロック例
CSL1
CSL0
φ= 32MHz 時
φ= 16MHz 時
φ= 8MHz 時
φ/2
0
0
62.5ns
125ns
250ns
φ/8
0
1
250ns
500ns
1.0μs
φ/32
1
0
1.0μs
2.0μs
4.0μs
外部イベント
1
1
パルス幅:2/φ ( 最小 )
● リロードタイマのカウント動作を許可 / 停止する方法
タイマのカウントイネーブルビット (TMCSR: CNTE) で設定します。
表 15.5-2 リロードタイマのカウント動作を許可 / 停止する方法
制御内容
動作許可ビット (CNTE)
リロードタイマを停止するには
"0" にする
リロードタイマのカウント動作を許可するには
"1" にする
停止した状態からは再開できません。許可は起動前か起動と同時にしてください。
282
第 15 章 16 ビットリロードタイマ
● リロードタイマのモード ( リロード / ワンショット ) を設定する方法
モード選択ビット (TMCSR: RELD) で設定します。
表 15.5-3 リロードタイマのモード ( リロード / ワンショット ) を設定する方法
動作モード
モード選択ビット (RELD)
ワンショットにするには
"0" にする
リロードにするには
"1" にする
● 出力レベルを反転させる方法
タイマ出力レベルビット (TMCSR: OUTL) で設定します。
表 15.5-4 出力レベルを反転させる方法
出力レベル
タイマ出力レベルビット (OUTL)
リロードモード , 初期値 "L" レベル出力
"0" にする
"L"
リロードモード , 初期値 "H" レベル出力 ( 反転 )
"1" にする
"H"
ワンショットモード , カウント中 "H" レベル出力
"0" にする
"H"
ワンショットモード , カウント中 "L" レベル出力 ( 反転 )
"1" にする
"L"
283
第 15 章 16 ビットリロードタイマ
● 起動方法
• 内部クロックモードの起動トリガは 4 種類あります。トリガ選択ビット (TMCSR:
MOD[2:0]) で設定します。
表 15.5-5 内部クロックモードの起動トリガ
トリガ
トリガ指定ビット (MOD[2:0])
ソフトウェアトリガ (TRG ビットのセット )
"000B" にする
TIN0 端子からの外部トリガ ( 立上りエッジ )
"001B" にする
TIN0 端子からの外部トリガ ( 立下りエッジ )
"010B" にする
TIN0 端子からの外部トリガ ( 両エッジ )
"011B" にする
• イベントカウントモードの起動はソフトウェアで行えます。タイマ制御ステータス
レジスタ (TMCSR) のカウンタ許可ビット (CNTE) とソフトウェアトリガビット
(TRG) を同時に "1" に設定します。
● イベントカウントモード時の有効エッジの種類と選択方法
設定は , トリガ選択ビット (TMCSR: MOD[1:0]) で行います。
有効エッジは , 3 種類あります。
表 15.5-6 イベントカウントモード時の有効エッジの種類と選択方法
有効エッジ
トリガ選択ビット (MOD1, MOD0)
立上りエッジ
"01B" にする
立下りエッジ
"10B" にする
両エッジ
"11B" にする
MOD2 の設定は "0", "1" にかかわらず意味を持ちません。
● TIN 端子を外部イベント入力端子 , または外部トリガ入力端子にする方法
データ方向指定ビット (DDR7: P73) に "0" を書き込みます。
表 15.5-7 TIN 端子を外部イベント入力端子 , または外部トリガ入力端子にする方法
端子
TIN0 端子
284
制御ビット
ポート 7 方向レジスタ (DDR7)
データ方向指定ビット (P73)
第 15 章 16 ビットリロードタイマ
● 起動トリガの発生方法
• ソフトトリガの発生方法
設定はソフトウェアトリガビット (TMCSR: TRG) で行います。
ソフトウェアトリガビット (TGR) に "1" を書き込むとトリガが発生します。
動作の許可と起動を同時に行うためには , カウント許可ビット (TMCSR: CNTE) とソ
フトトリガビット (TMCSR: TRG) を同時に設定します。
• 外部トリガの発生方法
各リロードタイマに対応するトリガ端子に , トリガ選択ビットで指定したエッジを
入力するとトリガが発生します。
表 15.5-8 外部トリガの発生方法
タイマ
トリガ端子
リロードタイマ
TIN0
● 割込みに関連するレジスタ
下表に , リロードタイマ番号と割込みレベル , ベクタ , 制御レジスタなどとの関係を示
します。
割込みレベル , 割込みベクタの詳細については「第 4 章 割込み」を参照してください。
表 15.5-9 リロードタイマ番号と割込みレベル , ベクタ , 制御レジスタなどとの関係
リロードタイマ
割込みベクタ
割込みレベル設定ビット
#35
アドレス : 0FFFF70H
割込み制御レジスタ 12 (ICR12)
アドレス : 000BCH
割込み要求フラグ (TMCSR: UF) は自動的にはクリアされませんので , 割込み処理から
復帰する前に UF ビットに "0" を書き込んでクリアしてください。
285
第 15 章 16 ビットリロードタイマ
● 割込みを許可する方法
割込み要求の許可 , 割込み要求フラグ
割込み許可の設定は , 割込み要求許可ビット (TMCSR: INTE) で行います。
表 15.5-10 割込みを許可する方法
割込み要求許可ビット (INTE)
割込み要求禁止にするには
"0" にする
割込み要求許可にするには
"1" にする
割込み要求のクリアは , 割込み要求ビット (TMCSR: UF) で行います。
表 15.5-11 割込み要求をクリアする方法
割込み要求フラグ (UF)
割込み要求をクリアするには
"0" にする
<注意事項>
リロードタイマアンダフロー割込みを許可 (TMCSR レジスタの INTE ビット = 1) から禁
止 (TMCSR レジスタの INTE ビット = 0) にする場合は , 割込み制御レジスタ (ICR12) の
IL2 ~ IL0 ビット = 111B として割込みを禁止にしてから INTE ビットに "0" を書き込んで
ください。
● リロードタイマを停止する方法
リロードタイマ停止ビットの設定で行います。
表 15.5-12 リロードタイマを停止する方法
286
制御内容
動作許可ビット (CNTE)
リロードタイマを停止するには
"0" にする
第 16 章
8/16 ビット PPG タイマ
8/16 ビット PPG タイマの概要 , レジスタの構成と
機能 , 割込みおよび動作について説明します。
16.1 8/16 ビット PPG タイマの概要
16.2 8/16 ビット PPG タイマの構成
16.3 8/16 ビット PPG タイマのレジスタの構成と機能
16.4 8/16 ビット PPG タイマの割込み
16.5 8/16 ビット PPG タイマの動作
16.6 8/16 ビット PPG タイマのプログラム例
287
第 16 章 8/16 ビット PPG タイマ
16.1
8/16 ビット PPG タイマの概要
8/16 ビット PPG タイマは , 任意の周期およびデューティ比のパルス出力が可能な 6
チャネルのリロードタイマモジュールです。
ハードウェアとして , 8 ビットダウンカウンタ 4 個 , 8 ビットリロードタイマ 8 個 ,
16 ビット制御レジスタ 2 個 , 外部パルス出力端子 4 本 , 割込み出力 4 本を有してい
ます。
なお , MB90980 シリーズには , 8 ビット PPG として 4 チャネルあり , このうち
PPG0+PPG1, PPG2+PPG3 の組合せで 16 ビット PPG(2 チャネル ) としても使用で
きます。
■ 8/16 ビット PPG タイマの機能
● 8 ビット PPG 出力 4 チャネル独立動作モード
4 チャネルの独立した PPG 出力動作が可能です。
● 16 ビット PPG 出力動作モード
2 チャネルの 16 ビットの PPG 出力動作が可能です。
PPG0+PPG1, PPG2+PPG3 の組合せで使用します。
● 8+8 ビット PPG 出力動作モード
PPG0(PPG2) の出力を PPG1(PPG3) のクロックに入力することによって , 任意周期の 8
ビット PPG 出力が可能です。
● PPG 出力動作
任意周期およびデューティ比のパルス波を出力します。
外付け回路を使用することにより D/A コンバータとしても使用できます。
288
第 16 章 8/16 ビット PPG タイマ
16.2
8/16 ビット PPG タイマの構成
8/16 ビット PPG タイマの ch.0/ch.2 および ch.1/ch.3 の構成を示します。
■ 8/16 ビット PPG タイマのブロックダイヤグラム
図 16.2-1 に ch.0/ch.2 のブロックダイヤグラムを , 図 16.2-2 に ch.1/ch.3 のブロックダイ
ヤグラムを示します。
図 16.2-1 8/16 ビット PPG タイマのブロックダイヤグラム (ch.0/ch.2)
周辺クロック:16 分周
PPG0/PPG2 出力許可
周辺クロック:8 分周
PPG0/PPG2
周辺クロック:4 分周
周辺クロック:2 分周
A/D コンバータ
周辺クロック
PPG0/PPG2 出力ラッチ
PEN0
S
RQ
IRQ
PCNT
( ダウンカウンタ )
ch.1/ch.3 ボロー
"L"/"H" セレクタ
カウントクロック
選択
PUF0
タイムベースカウンタ出力
PIE0
メインクロック:512 分周
"L"/"H" 選択
PRLL
PRLBH
PPGC0
( 動作モード制御 )
PRLL
"L" データバス
"H" データバス
289
第 16 章 8/16 ビット PPG タイマ
図 16.2-2 8/16 ビット PPG タイマのブロックダイヤグラム (ch.1/ch.3)
周辺クロック:16 分周
PPG1/PPG3 出力許可
周辺クロック:8 分周
PPG1/PPG3
周辺クロック:4 分周
周辺クロック:2 分周
UART0
周辺クロック
PPG1/PPG3 出力ラッチ
PEN1
S
RQ
IRQ
PCNT
( ダウンカウンタ )
"L"/"H" セレクタ
カウントクロック
選択
PUF1
タイムベースカウンタ出力
PIE1
メインクロック:512 分周
"L"/"H" 選択
PRLL
PRLBH
PPGC1
( 動作モード制御 )
PRLL
"L" データバス
"H" データバス
■ 8/16 ビット PPG タイマに関する端子
8/16 ビット PPG タイマに関する端子には , PPG0/PPG1/PPG2/PPG3 端子があります。こ
れらの端子は , 汎用入出力ポート (P24/PPG0, P25/PPG1, P26/PPG2, P27/PPG3) と PPG タ
イマの出力端子として機能を兼用しています。
● PPG0/PPG1/PPG2/PPG3 端子として使用する場合の設定
PPG0/PPG1/PPG2/PPG3 端子を出力として使用する場合は , ポート方向レジスタ (DDR)
の値に関係なく自動的に出力端子となります。
290
第 16 章 8/16 ビット PPG タイマ
■ 8/16 ビット PPG タイマに関する端子のブロックダイヤグラム
図 16.2-3 8/16 ビット PPG タイマに関する端子のブロックダイヤグラム
周辺機能出力(PPG0~PPG3)
ポートデータレジスタ(PDR)
周辺機能出力許可
内部データバス
PDRリード
出力ラッチ
P-ch
PDRライト
端子
ポート方向レジスタ(DDR)
方向ラッチ
N-ch
DDRライト
DDRリード
スタンバイ制御(SPL=1)
スタンバイ制御:ストップモード(SPL=1), タイムベースタイマモード(SPL=1), 時計モード(SPL=1)
291
第 16 章 8/16 ビット PPG タイマ
16.3
8/16 ビット PPG タイマのレジスタの構成と機能
8/16 ビット PPG タイマで使用するレジスタの構成と機能について説明します。
■ 8/16 ビット PPG タイマのレジスタ一覧
図 16.3-1 に , 8/16 ビット PPG タイマのレジスタ一覧を示します。
図 16.3-1 8/16 ビット PPG タイマのレジスタ一覧
動作モード制御レジスタ(PPGC0/PPGC2)
アドレス:
bit7 bit6 bit5 bit4 bit3 bit2
00003AH
PEN0
PE00 PIE0 PUF0
00003CH
R/W
R/W
R/W
R/W
-
bit1 bit0
- Reserved
-
動作モード制御レジスタ(PPGC1/PPGC3)
アドレス:
bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8
00003BH
PEN1
PE10 PIE1 PUF1 MD1 MD0 Reserved
00003DH
R/W
R/W
R/W
R/W
R/W
R/W
出力制御レジスタ(PPG01/PPG23)
アドレス:
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
000040H
PCS2
PCS1 PCS0 PCM2 PCM1 PCM0 Reserved Reserved
000042H
R/W
R/W
R/W
R/W
R/W
R/W
リロードレジスタ"L"(PRLL0 ~ PRLL3)
アドレス:
00002EH bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
000030H D07 D06 D05 D04 D03 D02 D01 D00
000032H
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
000034H
リロードレジスタ "H"(PRLH0 ~ PRLH3)
アドレス:
00002FH bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8
000031H
000033H D15 D14 D13 D12 D11 D10 D09 D08
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
000035H
R/W: リード/ライト可能
- : 未使用
292
初期値
0X000XX1B
0X000001B
00000000B
XXXXXXXXB
XXXXXXXXB
第 16 章 8/16 ビット PPG タイマ
16.3.1
PPG0/PPG2 動作モード制御レジスタ (PPGC0/
PPGC2)
PPG0/PPG2 動作モード制御レジスタ (PPGC0/PPGC2) の構成と機能について説明
します。
■ PPG0/PPG2 動作モード制御レジスタ (PPGC0/PPGC2)
PPG0/PPG2 動作モード制御レジスタ PPGC0/PPGC2 は , ch.0/ch.2 の動作モード選択 , 端
子出力制御 , カウントクロック選択およびトリガ制御を行います。
図 16.3-2 に , PPG0/PPG2 動作モード制御レジスタ (PPGC0/PPGC2) のビット構成を示し
ます。
図 16.3-2 PPG0/PPG2 動作モード制御レジスタ (PPGC0/PPGC2) のビット構成
動作モード制御レジスタ(PPGC0/PPGC2)
初期値
アドレス:
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
ch.0 00003A H
PE00 PIE0 PUF0 - Reserved 0X000XX1B
ch.2 00003C H PEN0
R/W
R/W R/W R/W
R/W: リード/ライト可能
- : 未使用
以下に , PPG0/PPG2 動作モード制御レジスタ PPGC0/PPGC2 の各ビットの機能を説明し
ます。
[bit7] PEN0:PPG 動作許可ビット
このビットは , PPG の動作モードを選択します。
動作状態
PEN0
0
1
動作停止 ("L" レベル出力保持 )
PPG 動作イネーブル
• このビットに "1" を書き込むことによって , PPG はカウントを開始します。
• このビットは , リセットによって "0" に初期化されます。
• 読出し / 書込みが可能です。
[bit5] PE00:PPG0/PPG2 出力端子許可ビット
このビットは , パルス出力外部端子 PPG0/PPG2 へのパルス出力の禁止 / 許可を制御
します。
動作状態
PE00
0
1
汎用ポート端子 ( パルス出力禁止 )
PPG0/PPG2 パルス出力 ( パルス出力許可 )
• このビットは , リセットによって "0" に初期化されます。
• 読出し / 書込みが可能です。
293
第 16 章 8/16 ビット PPG タイマ
[bit4] PIE0:割込み要求許可ビット
このビットは , PPG の割込みの禁止 / 許可を制御します。
動作状態
PIE0
0
1
割込み禁止
割込み許可
• このビットが "1" のとき , PUF0 が "1" になると割込み要求が発生します。
このビットが "0" のときは , 割込みは発生しません。
• このビットは , リセットによって "0" に初期化されます。
• 読出し / 書込みが可能です。
[bit3] PUF0:PPG カウンタアンダフローフラグ
このビットは , PPG のカウンタアンダフローの検出結果を表示します。
動作状態
PUF0
0
1
PPG カウンタアンダフローを検出していません。
PPG カウンタアンダフローを検出しました。
8 ビットチャネルモード (PPG0/PPG1, PPG2/PPG3) および 8 ビットプリスケーラ +8
ビット PPG モード時には , ch.0, ch.2 のカウンタの値が "00H" → "FFH" になったとき
のアンダフローにより "1" にセットされます。
16 ビット PPG2 チャネルモード (PPG0/
PPG1, PPG2/PPG3) 時には , ch.1, ch.3/ch.0, ch.2 のカウンタの値が "0000H" → "FFFFH"
になったときのアンダフローにより "1" にセットされます。"0" の書込みにより "0"
になります。このビットへの "1" の書込みは意味がありません。リードモディファ
イライト (RMW) 系命令の読出しに対しては , "1" が読み出されます。
• このビットは , リセットによって "0" に初期化されます。
• 読出し / 書込みが可能です。
[bit0] 予約ビット
このビットは , 予約ビットです。PPGC0/PPGC2 を設定するときは , 必ず "1" に設定
してください。
294
第 16 章 8/16 ビット PPG タイマ
16.3.2
PPG1/PPG3 動作モード制御レジスタ (PPGC1)
PPG1/PPG3 動作モード制御レジスタ (PPGC1) の構成および機能について説明しま
す。
■ PPG1/PPG3 動作モード制御レジスタ (PPGC1)
PPG1/PPG3 動作モード制御レジスタ (PPGC1) は , ch.1/ch.3 の動作モード選択 , 端子出
力制御 , カウントクロック選択およびトリガの制御を行います。
下図に , PPG1/PPG3 動作モード制御レジスタ (PPGC1) のビット構成を示します。
図 16.3-3 PPG1/PPG3 動作モード制御レジスタ (PPGC1) のビット構成
動作モード制御レジスタ(PPGC1/PPGC3)
アドレス:
bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8
ch.1 00003BH
PEN1
PE10 PIE1 PUF1 MD1 MD0 Reserved
ch.3 00003DH
R/W
R/W
R/W
R/W
R/W
R/W
初期値
0X000001B
R/W: リード/ライト可能
- : 未使用
以下に , PPG1/PPG3 動作モード制御レジスタ (PPGC1) の各ビットの機能を説明します。
[bit15] PEN1:PPG 動作許可ビット
このビットは , PPG の動作モードを選択します。
動作状態
PEN1
0
1
動作停止 ("L" レベル出力保持 )
PPG 動作イネーブル
• このビットに "1" を書き込むことによって , PPG はカウントを開始します。
• このビットは , リセットによって "0" に初期化されます。
• 読出し / 書込みが可能です。
[bit13] PE10:PPG1/PPG3 出力端子許可ビット
このビットは , パルス出力外部端子 PPG1/PPG3 へのパルス出力の禁止 / 許可を制御
します。
動作状態
PE10
0
1
汎用ポート端子 ( パルス出力禁止 )
PPG1/PPG3 パルス出力 ( パルス出力許可 )
• このビットは , リセットによって "0" に初期化されます。
• 読出し / 書込みが可能です。
295
第 16 章 8/16 ビット PPG タイマ
[bit12] PIE1:割込み要求許可ビット
このビットは , PPG の割込みの禁止 / 許可を制御します。
動作状態
PIE1
0
1
割込み禁止
割込み許可
このビットが "1" のとき PUF0 が "1" になると , 割込み要求が発生します。このビッ
トが "0" のときは割込みは発生しません。
• このビットは , リセットによって "0" に初期化されます。
• 読出し / 書込みが可能です。
[bit11] PUF1:PPG カウンタアンダフローフラグ
このビットは , PPG のカウンタアンダフローの検出結果を表示します。
動作状態
PUF1
0
1
PPG カウンタアンダフローを検出していません。
PPG カウンタアンダフローを検出しました。
8 ビットチャネルモード (PPG0/PPG1, PPG2/PPG3) および 8 ビットプリスケーラ +8
ビット PPG モード時には , ch.1, ch.3 のカウンタの値が "00H" → "FFH" になったとき
のアンダフローにより "1" にセットされます。
16 ビット PPG2 チャネルモード (PPG0/
PPG1, PPG2/PPG3) 時には , ch.1, ch.3/ch.0, ch.2 のカウンタの値が "0000H" → "FFFFH"
になったときのアンダフローにより "1" にセットされます。"0" の書込みにより "0"
になります。このビットへの "1" の書込みは意味がありません。リードモディファ
イライト (RMW) 系命令の読出しに対しては , "1" が読み出されます。
• このビットは , リセットによって "0" に初期化されます。
• 読出し / 書込みが可能です。
[bit10, bit9] MD1, MD0:動作モード選択ビット
これらのビットは , PPG タイマの動作モードを選択します。
MD1
MD0
0
0
0
1
1
1
0
1
動作モード
8 ビット PPG2 チャネル独立モード ( × 2 あり )
8 ビットプリスケーラ +8 ビット PPG1 チャネル
予約 ( 設定禁止 )
16 ビット PPG1 チャネルモード ( × 2 あり )
• このビットは , リセットによって "0" に初期化されます。
• 読出し / 書込みが可能です。
296
第 16 章 8/16 ビット PPG タイマ
( 注意事項 )
• これらのビットを "10B" に設定しないでください。
• これらのビットを "01B" に設定する場合は , PPGC0 の PEN0 ビット /PPGC1 の PEN1
ビットを "01B" に設定しないでください。また , PEN0 ビットおよび PEN1 ビットを同
時に "11B" または "00B" にセットすることを推奨します。
• これらのビットを "11B" に設定する場合は , PPGC0/PPGC1 をワード転送で書き換え ,
PEN0/PEN1 を同時に "11B", または "00B" にセットしてください。
[bit8] 予約ビット
このビットは , 予約ビットです。PPGC1 を設定するときは , 必ず "1" に設定してく
ださい。
297
第 16 章 8/16 ビット PPG タイマ
PPG0 ~ PPG3 出力制御レジスタ (PPG01/PPG23)
16.3.3
PPG0 ~ PPG3 出力制御レジスタ (PPG01/PPG23) の構成および機能について説明
します。
■ PPG0 ~ PPG3 出力制御レジスタ (PPG01/PPG23)
図 16.3-4 に , PPG0 ~ PPG3 出力制御レジスタ (PPG01, PPG23) のビット構成を示します。
図 16.3-4 PPG0 ~ PPG3 出力制御レジスタ (PPG01, PPG23) のビット構成
出力制御レジスタ(PPG01/PPG23)
アドレス:
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
ch.0,ch.1 000040H
PCS2
PCS1 PCS0 PCM2 PCM1 PCM0 予約 予約
ch.2,ch.3 000042H
R/W
R/W
R/W
R/W
R/W
R/W
R/W R/W
初期値
00000000B
R/W: リード/ライト可能
以下に , PPG0 ~ PPG3 出力制御レジスタ (PPG01, PPG23) の各ビットの機能を説明しま
す。
[bit7 ~ bit5] PCS2 ~ PCS0:カウントクロック選択ビット
これらのビットは , ch.1, ch.3 のダウンカウンタの動作クロックを選択します。
PCS2
PCS1
PCS0
0
0
0
0
1
0
0
1
1
0
0
1
0
1
0
1
1
1
動作モード
周辺クロック (40ns マシンクロック 25MHz 時 )
周辺クロック /2(80ns マシンクロック 25MHz 時 )
周辺クロック /4(160ns マシンクロック 25MHz 時 )
周辺クロック /8(320ns マシンクロック 25MHz 時 )
周辺クロック /16(640ns マシンクロック 25MHz 時 )
タイムベースカウンタからの入力クロック
(29 × 250ns = 128μs 原発振 4MHz 時 )
• このビットは , リセットによって "000B" に初期化されます。
• 読出し / 書込みが可能です。
<注意事項>
8 ビットプリスケーラ +8 ビット PPG モードおよび 16 ビット PPG モード時には , ch.1, ch.3
の PPG は ch.0, ch.2 からカウントクロックを受けて動作するため , PCS2 ~ PCS0 ビット
の指定は無効になります。
298
第 16 章 8/16 ビット PPG タイマ
[bit4 ~ bit2] PCM2 ~ PCM0:カウントクロック選択ビット
これらのビットは , ch.0, ch.2 のダウンカウンタの動作クロックを選択します。
PCM2
PCM1
PCM0
0
0
0
0
1
0
0
1
1
0
0
1
0
1
0
1
1
1
動作モード
周辺クロック (40ns マシンクロック 25MHz 時 )
周辺クロック /2(80ns マシンクロック 25MHz 時 )
周辺クロック /4(160ns マシンクロック 25MHz 時 )
周辺クロック /8(320ns マシンクロック 25MHz 時 )
周辺クロック /16(640ns マシンクロック 25MHz 時 )
タイムベースカウンタからの入力クロック
(29 × 250ns = 128μs 原発振 4MHz 時 )
• このビットは , リセットによって "000B" に初期化されます。
• 読出し / 書込みが可能です。
[bit1, bit0] 予約ビット
これらのビットは , 予約ビットです。PPG01, PPG23 を設定するときは , 必ず "00B"
に設定してください。
299
第 16 章 8/16 ビット PPG タイマ
リロードレジスタ (PRLL0 ~ PRLL3, PRLH0 ~
PRLH3)
16.3.4
リロードレジスタ (PRLL0 ~ PRLL3, PRLH0 ~ PRLH3) の構成および機能について
説明します。
■ リロードレジスタ (PRLL0 ~ PRLL3, PRLH0 ~ PRLH3)
図 16.3-5 に , リロードレジスタ (PRLL0 ~ PRLL3, PRLH0 ~ PRLH3) のビット構成を示
します。
図 16.3-5 リロードレジスタ (PRLL0 ~ PRLL3, PRLH0 ~ PRLH3) のビット構成
リロードレジスタL(PRLL0 ~ PRLL3)
アドレス:
ch.0 00002EH bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
ch.1 000030H D07 D06 D05 D04 D03 D02 D01 D00
ch.2 000032H
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
ch.3 000034H
リロードレジスタ H(PRLH0 ~ PRLH3)
アドレス:
ch.0 00002FH bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8
ch.1 000031H D15 D14 D13 D12 D11 D10 D09 D08
ch.2 000033H
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
ch.3 000035H
初期値
XXXXXXXXB
XXXXXXXXB
R/W: リード/ライト可能
リロードレジスタ (PRLL0 ~ PRLL3, PRLH0 ~ PRLH3) は , ダウンカウンタ (PCNT) へ
のリロード値を保持する各 8 ビットのレジスタです。それぞれ下表に示す役割を持っ
ています。
レジスタ名
PRLL
PRLH
機能
"L" 側リロード値保持
"H" 側リロード値保持
どちらのレジスタも , 読出し / 書込みが可能です。
<注意事項>
8 ビットプリスケーラ +8 ビット PPG モードで使用する場合には , ch.0, ch.2 の PRLL と
PRLH に同じ値を設定することを推奨します。
300
第 16 章 8/16 ビット PPG タイマ
16.4
8/16 ビット PPG タイマの割込み
8/16 ビット PPG タイマの割込みは , PPG カウンタアンダフローを検出した場合に
発生します。
PPG カウンタアンダフローの割込みでは , DMA 転送および拡張インテリジェント
I/O サービス (EI2OS) は起動できません。
■ 8/16 ビット PPG タイマの割込み
表 16.4-1 に , 8/16 ビット PPG タイマの割込み制御ビットと割込み要因を示します。
表 16.4-1 8/16 ビット入出力タイマの割込み
PPG0/PPG2 オーバフロー割込み
PPG1/PPG3 オーバフロー割込み
割込み要求フラグ
PPG0:PUF0 (bit3)
PPG2:PUF0 (bit3)
ch.0
ch.2
PPG1:PUF1 (bit11)
PPG3:PUF1 (bit11)
ch.1
ch.3
割込み要求出力
許可ビット
PPG0:PIE0 (bit4)
PPG2:PIE0 (bit4)
ch.0
ch.2
PPG1:PIE1 (bit12)
PPG3:PIE1 (bit12)
ch.1
ch.3
割込み発生要因
PPG0/PPG2 ダウンカウンタのオーバフロー
PPG1/PPG3 ダウンカウンタのオーバフロー
■ PPG カウンタアンダフロー割込み
● 8 ビット PPG と 8+8 ビット出力動作モードの場合
• 8 ビット PPG4 チャネル独立動作モードまたは 8+8 ビット PPG 出力動作モードでは ,
それぞれ独立して割込みを発生できます。
• PPG のダウンカウンタが "00H" から "FFH" にカウントダウンすると , アンダフロー
が発生します。アンダフローが発生すると , アンダフローしたチャネル側のアンダ
フロービットが設定されます (PUF0=1, PUF1=1)。
● 16 ビット PPG 出力動作モードの場合
• 16ビットPPG出力動作モードでは, PPG0+PPG1/PPG2+PPG3ダウンカウンタが"0000H"
から "FFFFH" にダウンカウントすると , アンダフローが発生します。アンダフローが
発生すると , 2 チャネルのアンダフロー発生ビットが同時に設定されます (PIF0=1,
PIF1=1)。
• 2 チャネルの割込み要求のうち , どちらかが許可されている場合は (PIE0=0+PIE1 =1,
PIE0=1+PIE1=0), アンダフローが発生すると割込みが発生します。
• 割込み要求が重複して発生しないように , 事前に 2 チャネルのアンダフロー割込み
許 可 ビ ッ ト の う ち , ど ち ら か を 禁 止 に し て お い て く だ さ い (PIE0=0+PIE1 =1,
PIE0=1+PIE1=0)。
• 2 チャネルのアンダフロー発生フラグが設定された場合は (PUF0=1 かつ PUF1 =1), 2
チャネル同時にクリアしてください。
301
第 16 章 8/16 ビット PPG タイマ
■ 8/16 ビット PPG タイマの割込みと DMA 転送および EI2OS
表 16.4-2 に , ソフトウェア割込みを除く割込み要因と割込みベクタ割込み制御レジス
タの関係を示します。
表 16.4-2 割込み要因と割込みベクタ / 割込み制御レジスタ
EI2OS
のクリア
μDMAC
チャネル
番号
番号
アドレス
番号
アドレス
PPG0/PPG1 カウンタボロー *
×
×
#22
FFFFA4H
ICR05
0000B5H
PPG2/PPG3 カウンタボロー
×
×
#23
FFFFA0H
ICR06
0000B6H
-
-
#24
FFFF9CH
割込み要因
-
割込みベクタ
割込み制御レジスタ
× : 割込み要求フラグはクリアされません。
* : この割込み要因は , ほかの周辺機能の割込み要因と割込み番号を共有しています。
詳細については , 表 4.2-2 を参照してください。
( 注意事項 )
同一割込み番号に 2 つの割込み要因があった場合は , リソースは両方の割込み要求フ
ラグをクリアします。したがって , 2 要因のどちらか 1 つが EI2OS/μDMAC 機能を使用
すると , もう 1 つの割込み機能は使用できません。該当リソースの割込み要求許可ビッ
トを "0" にして , ソフトウェアポーリング処理で対処してください。
■ DMA 転送 , および EI2OS 機能への対応
8/16 ビット PPG タイマは , DMA 転送機能 , および EI2OS 機能には対応していません。
302
第 16 章 8/16 ビット PPG タイマ
16.5
8/16 ビット PPG タイマの動作
8/16 ビット PPG タイマには , 8 ビット長の PPG ユニットが 4 チャネル (PPG0,
PPG1/PPG2, PPG3) あります。それぞれを独立モードで動作させる以外にも , 直結
(PPG0+PPG1/PPG2+PPG3) 動作をさせることによって , 8 ビットプリスケーラ +8
ビット PPG モード , または 16 ビット PPG モードで動作させることもできます。計
3 種類のモードで動作を行えます。
■ 8/16 ビット PPG タイマの動作概略
8 ビット長の各 PPG ユニットには , それぞれ 8 ビット長のリロードレジスタ "L" 側と
"H" 側の 2 本があります (PRLL, PRLH)。
このレジスタに書き込まれた値が , 8 ビットダウンカウンタ (PCNT) の "L" 側 /"H" 側交
互にリロードされてカウントクロックごとにダウンカウントされます。カウントのボ
ロー発生によるリロード時に出力端子の値を反転させます。この動作によって , 端子出
力はリロードレジスタ値に対応した "L" 幅 / "H" 幅をもつパルス出力となります。
動作開始 / 再スタートは , レジスタのビット書込みによります。
表 16.5-1 にリロード動作とパルス出力の関係を示します。
表 16.5-1 リロード動作とパルス出力の関係
リロード動作
PRLH → PCNT
端子出力変化
PPG0/PPG1[0 → 1] 立上り
また , PPGC0 レジスタの bit4(PIE0) が "1" のとき , および PPGC1 レジスタの bit12(PIE1)
が "1" のときは , それぞれのカウンタの "00H" → "FFH" 変化時のボロー (16 ビット PPG
モードの場合は , "0000H" → "FFFFH" 変化時のボロー ) によって割込み要求が出力され
ます。
■ 動作モード
8/16 ビット PPG タイマには , 2 チャネル独立モード , 8 ビットプリスケーラ +8 ビット
PPG モードまたは 16 ビット PPG モードの計 3 種類の動作モードがあります (MB90980
シリーズはモードごとに× 2 チャネルあります )。
2 チャネル独立モードは , 8 ビット PPG として 2 チャネル独立に動作させるモードで
す。PPG0 端子には ch.0 の PPG 出力が接続され , PPG1 端子には ch.1 の PPG 出力が接
続されます (PPG2, PPG3 はそれぞれ ch.2, ch.3 に対応 )。
8 ビットプリスケーラ +8 ビット PPG モードは , ch.0(ch.2) を 8 ビットプリスケーラとし
て動作させ , ch.1(ch.3) を ch.0(ch.2) のボロー出力でカウントすることによって , 任意周
期の 8 ビット PPG 波形を出力できるようにする動作モードです。PPG0(PPG2) 端子に
は ch.0(ch.2) のプリスケーラ出力が接続され , PPG1 端子には ch.1(ch.3) の PPG の出力
が接続されます。
16 ビット PPG1 チャネルモード (MB90980 シリーズは× 2 チャネルあります ) は , ch.0
と ch.1 を直結させて (ch.2, ch.3 直結 ) 16 ビットの PPG として動作させる動作モードで
す。PPG0, PPG1 には , 両方ともに 16 ビット PPG 出力が接続されます。
303
第 16 章 8/16 ビット PPG タイマ
■ PPG 出力動作
8/16 ビット PPG タイマは , ch.0(ch.2) の PPG については PPGC0 レジスタの bit7(PEN0)
を , ch.1(ch.3) の PPG については PPGC1 レジスタの bit15(PEN1) を "1" にセットするこ
とによって起動され,カウント動作を開始します。カウント動作を開始した後は, PPGC0
レジスタの bit7(PEN0), または PPGC1 レジスタの bit15(PEN1) に "0" を書き込むことに
よってカウント動作が停止します。停止した後 , パルス出力は "L" レベルを保持します。
8 ビットプリスケーラ +8 ビット PPG モードのときで , かつ ch.0(ch.2) の停止状態では ,
ch.1(ch.3) を動作状態に設定しないでください。
16 ビット PPG モードのときには , PPGC0 レジスタの bit7(PEN0) と PPGC1 レジスタの
bit15(PEN1) は , 同時に開始 / 停止を制御してください。
以下に , PPG 出力動作について説明します。
PPG 動作時は , 任意周期任意デューティ比 ( パルス波の "H" レベル期間と "L" レベル期
間の比 ) のパルス波出力を連続して出力します。PPG は , パルス波出力を開始し , 動作
停止が設定されるまで停止しません。
図 16.5-1 に , PPG 出力動作の出力波形を示します。
図 16.5-1 PPG 出力動作の出力波形
PEN
PENにより動作開始("L"側から)
出力端子PPG
T×(L+1)
(スタート)
T×(H+1)
L:PRLLの値
H:PRLHの値
T:入力クロック
(PPGCのクロックセレクトによる)
■ リロード値とパルス幅の関係
リロードレジスタに書かれた値に +1 した値に , カウントクロックの周期を掛けた値が
出力されるパルスの幅となります。
8 ビット PPG 動作時のリロードレジスタ値は "00H" のとき , また , 16 ビット PPG 動作
時のリロードレジスタ値は "0000H" のときには , カウントクロック 1 周期分のパルス幅
を持つことになりますので注意してください。また , 8 ビット PPG 動作時のリロード
レジスタ値が "FFH" のときは , カウントクロック 256 周期分のパルス幅を持つことにな
り , 16 ビット PPG 動作時のリロードレジスタ値が "FFFFH" のときは , カウントクロッ
ク 65536 周期分のパルス幅を持つことになりますので注意してください。パルス幅の
計算式を以下に示します。
PL=T × (L+1)
PH=T × (H+1)
PL: "L" パルスの幅
PH: "H" パルスの幅
T: 入力クロック周期
L: PRLL 値
H: PRLH 値
304
第 16 章 8/16 ビット PPG タイマ
■ カウントクロックの選択
8/16 ビット PPG タイマの動作に使用するカウントクロックは , 周辺クロックおよびタ
イムベースカウンタの入力を使用しています。6 種類のカウントクロック入力から選択
できます。
PPG01/PPG23 レジスタの bit4 ~ bit2(PCM2 ~ PCM0) で ch.0(ch.2) のクロックを , PPG01/
PPG23 レジスタの bit7 ~ bit5(PCS2 ~ PCS0) で ch.1(ch.3) のクロックを選択します。
クロックの選択は , マシンクロックから ( マシンクロック 1/16 倍~ 1 倍 ) またはタイム
ベースカウンタから選択できます。
<注意事項>
• 8 ビットプリスケーラ +8 ビット PPG モードおよび 16 ビット PPG モードのときは ,
PPGC1 レジスタの bit14(PCS1) の値は無効となります。
• タイムベースタイマの入力を使用した場合,トリガまたは停止後の最初のカウントサイ
クルがずれる可能性があります。また , 8/16 ビット PPG タイマが動作中にタイムベー
スカウンタの初期化を行うとサイクルがずれることがあります。
• 8 ビットプリスケーラ +8 ビット PPG モードにおいて , ch.0/ch.2 が動作状態で ch.1/
ch.3 が停止状態のときに ch.1(ch.3) を起動すると , 最初のカウントサイクルがずれる可
能性があります。
305
第 16 章 8/16 ビット PPG タイマ
■ パルスの端子出力制御
8/16 ビット PPG タイマによって生成されたパルスは , 外部端子 (PPG0 ~ PPG3) から出
力します。外部端子からパルスを出力するには , 各端子に対応するビットに "1" を書き
込みます。PPG0/PPG2 端子に対しては PPGC0 の bit5(PE00) を , PPG1/PPG3 に対しては
PPGC1 の bit13(PE10) を使用します。このビットに "0" が書き込まれているとき ( 初期
値 ) は , パルスは外部端子から出力されずに汎用ポートとして機能します。
16 ビット PPG モードでは , PPG0 ~ PPG3 からは同じ波形が出力されるため , どちらの
外部端子を有効にしても同じ出力を得られます。
8 ビットプリスケーラ +8 ビット PPG モードでは , PPG0/PPG2 からは 8 ビットプリス
ケーラのトグル波形が出力され , PPG1/PPG3 からは 8 ビット PPG の波形が出力されま
す。
図 16.5-2 に , このモードにおける出力波形を示します。
図 16.5-2 8 ビットプリスケーラ +8 ビット PPG モード出力動作の波形
PL0
PH0
PPG0
PPG1
PH1
PL1
図 16.5-2 におけるパルス幅は , 以下の式によって計算することができます。
PL0 = T × (L0+1)
PH0 = T × (L0+1)
PL1 = T × (L0+1) × (L1+1)
PH1 = T × (L0+1) × (H1+1)
L0: ch.0 の PRLL の値および ch.1 の PRLH の値
L1: ch.1 の PRLL の値
H1: ch.1 の PRLH の値
T: 入力クロックサイクル
PH0:PPG0 の "H" パルスの幅
PL0:PPG0 の "L" パルスの幅
PH1:PPG1 の "H" パルスの幅
PL1:PPG1 の "L" パルスの幅
<注意事項>
ch.0 の PRLL と ch.1 の PRLH には同じ値を設定してください。
306
第 16 章 8/16 ビット PPG タイマ
■ 8/16 ビット PPG タイマの割込み
8/16 ビット PPG タイマの割込みは , リロード値がカウントアウトしてボローが発生し
たときにアクティブになります。8 ビット PPG2 チャネルモード , または 8 ビットプリ
スケーラ +9 ビット PPG モード (MB90980 シリーズにはそれぞれ× 2 チャネル分あり
ます ) のときは , それぞれのボローによってそれぞれの割込み要求が行われます。しか
し , 16 ビット PPG モードでは , 16 ビットのカウンタのボローによって PUG0 と PUG1
が同時に設定されます。このため , 割込み要因を 1 本化するために , PIE0, または PIE1
のどちらか一方のみを許可します。また , 割込み要因のクリアも PUF0 と PUF1 により
同時に行います。
■ ハードウェアコンポーネントの初期値
8/16 ビット PPG タイマのハードウェアコンポーネントは , リセット時に次の値に初期
化されます。
<レジスタ>
<パルス出力>
<割込み要求>
PPGC0
→
0X000001B
PPGC1
→
00000001B
PPG01
→
XXXXXX00B
PPG0
→
"L"
PPG1
→
"L"
PE00
→
PPG0 出力禁止
PE10
→
PPG1 出力禁止
IRQ0
→
"L"
IRQ1
→
"L"
上記以外のハードウェアコンポーネントは初期化されません。
■ リロードレジスタへの書込みタイミング
16 ビット PPG モード以外のモードでは , リロードレジスタ PRLL, PRLH へのデータ書
込みはワード転送命令を使用することを推奨します。データ項目をバイト転送命令 2
回でレジスタに書き込んだ場合は,タイミングによっては予想しないパルス幅の出力が
発生する可能性があります。
図 16.5-3 に , リロードレジスタへの書込みタイミングを示します。
図 16.5-3 リロードレジスタへの書込みタイミングチャート
PPG0
A
B
A
B
C
B
C
D
C
D
①
図 16.5-3 において , ①のタイミングの前で PRLL を A から C に書き換えて , ①のあとに
PRLH の値を B から D に書き換えたとすると , ①のタイミングにおける PRL の値は ,
PRLL=C, PRLH=B であるため , 1 回だけ "L" 側のカウント数 C, "H" 側のカウント数 B の
パルスが発生します。同様に 16 ビット PPG モードで ch.0/ch.2 と ch.1/ch.3 の PRL にデー
タを書き込むには , ロングワード転送命令を使用するか , または ch.0 → ch.1(ch.2 → ch.3)
の PRL に順にワード転送命令を使用します。このモードのときは , データは ch.0/ch.2 か
ら PRL へ一時的に書き込まれ , その後 ch.1/ch.3 の PRL に書き込んだ時点で実際に ch.0
の PRL へ書き込まれます。
16 ビット PPG モード以外では , ch.0/ch.2 と ch.1/ch.3 の書込みは独立に行われます。
307
第 16 章 8/16 ビット PPG タイマ
図 16.5-4 に , PRL 書込み動作のブロックダイヤグラムを示します。
図 16.5-4 PRL 書込み動作のブロックダイヤグラム
ch.0のPRLの書込みデータ
16ビットPPGモード
以外のとき
ch.0の書込み
テンポラリラッチ
ch.0のPRL
308
ch.1のPRLの書込みデータ
16ビットPPGモード時
ch.1の書込みに
同期して転送
ch.1の書込みデータ
ch.1のPRL
第 16 章 8/16 ビット PPG タイマ
16.6
8/16 ビット PPG タイマのプログラム例
8/16 ビット PPG タイマのプログラム例を示します。
■ 8/16 ビット PPG タイマのプログラム例
プログラム例
設定手順例
インターバル割込みを発生させ , PPG 出力させる
( PPG1 端子から PPG 出力 , ソフトトリガ )。
void PPG_sample(void) {
PPG01_initial(); PPG01_start(); }
<初期設定>
void PPG01_initial(void)
{
・PPG01 の制御
レジスタ名 . ビット名
制御レジスタの設定
カウントクロック選択 >>
制御レジスタの設定
パルス出力許可 >>
割込み許可 >>
動作モード選択 >>
PPGC0,PPGC1
PRL0
*1
IO_PPG01.bit.PCS = 1;
/* bit7-5 = 0
PPG1 カウントクロック選択 */
*2
IO_PPGC01.word = 0x3101; /* bit15 = 0
PPG 動作停止 */
/* bit13 = 1
PPG1/PPG3/5 パルス出力許可 */
/* bit12 = 1
PPG 割込み許可 */
/* bit11 = 0
PUF1 割込み要求フラグクリア */
/* bit10-9 = 00 8 ビット PPG 2ch */
/* bit8 = 1
予約ビット */
/* bit0 = 1
予約ビット */
*3
IO_PRL0.word = 0x7f7f;
/* PPGduty 比 設定 */
ICR05
(CCR)
IO_ICR05.byte = 0x10;
__EI();
.PCS2 ~ PCS0
PPGC0, PPGC1
.PE10
.PIE1
.MD1, MD0
・デューティ設定
PPG01 のデューティ設定
・割込み関連
PPG01 割込みレベルの設定
I フラグの設定
/* 割込みレベル ( 値は任意 ) */
/* 割込み許可 */
}
<起動>
・PPG01 の起動
レジスタ名 . ビット名
割込み許可
PPG01 起動
PPGC0, PPGC1: PIE1
PPGC0, PPGC1: PEN1
<割込み>
・割込み処理
任意の処理
割込み要求フラグクリア
PPGC0, PPGC1: PUF1
<割込みベクタ>
・ベクタテーブルの設定
void PPG01_start(void)
{
IO_PPGC01.bit.PIE1 = 1;
IO_PPGC01.bit.PEN1 = 1;
}
/* bit12= 1
/* bit15 = 1
PIE1 割込み要求許可 */
PEN1 PPG 動作開始 */
__interrupt void PPG01_int(void) {
/* 任意の処理 */
IO_PPGC01.bit.PUF1 = 0; /* bit11 = 0
PUF1 割込み要求フラグ */
}
#pragma intvect PPG01_int 22
<その他>
( 注意事項 )
事前にクロック関連の設定および __set_il( 数値 ) の
設定が必要です。「第 4 章 割込み」および「第 6 章
クロック」を参照してください。
( 注意事項 )
レジスタの記述形式については , 「F2MC-16LX ファミリ MB90980 シリーズ用サン
プル I/O レジスタファイル 使用手引書」を参照してください。 *1: io_PPG01 は PPG1 レジスタ +PPG0 レジスタを表します。
*2: io_PPGC01 は PPGC1 レジスタ +PPGC0 レジスタを表します。
*3: io_PRL0 は PRLL0 レジスタ +PRLH0 レジスタを表します。
309
第 16 章 8/16 ビット PPG タイマ
■ プログラム例以外の設定方法
● PPG 動作を許可 / 停止する方法
PPG 動作許可ビット (PPG01/PPG23: PEN0 または PEN1) で設定します。
制御
PPG 動作許可ビット (PEN0 または PEN1)
PPG 動作を停止させるには
"0" にする
PPG 動作を許可するには
"1" にする
PPG 動作許可は PPG を起動する前に行ってください。
● PPG の動作モードを設定する方法
モード選択ビット (PPG01/PPG23: MD[1:0]) で設定します。
● カウントクロックの種類と選択方法
ch.1, ch.3 は , カウントクロック選択ビット (PPG01: PCS[2:0]/PPG23: PCS[2:0]) で選択で
きます。
ch.0, ch.2 は , カウントクロック選択ビット (PPG01: PCM[2:0]/PPG23: PCM[2:0]) で選択
できます。
● 割込み関連レジスタ
表 16.6-1 に , チャネル , 割込みレベル , ベクタの関係を示します。
割込みレベル , 割込みベクタの詳細については「第 4 章 割込み」を参照してください。
表 16.6-1 チャネル , 割込みレベル , ベクタの関係
チャネル
割込みベクタ
割込みレベル設定レジスタ
PPG0
#22
アドレス : 0FFFFA4H
割込み制御レジスタ 05 (ICR05)
アドレス : 000B5H
#23
アドレス : 0FFFFA0H
割込み制御レジスタ 06 (ICR06)
アドレス : 000B6H
PPG1
PPG2
PPG3
割込み要求フラグ (PPG01/PPG23.PUF0 または PUF1) は自動的にクリアしませんので ,
割込み処理から復帰する前にソフトウェアにてクリアしてください (PUF0またはPUF1
ビットに "0" を書き込む ) 。
● 割込みの種類
割込みは 1 種類です。PPG カウンタのアンダフローで発生します。
● 割込みを許可 / 禁止 / クリアする方法
割込みの許可 / 禁止は , 割込み要求許可ビット (PPGC0 ~ PPGC3: PIE0 または PIE1) で
設定します。
310
第 16 章 8/16 ビット PPG タイマ
表 16.6-2 割込みを許可 / 禁止する方法
制御内容
割込み要求許可ビット (PIE0 または PIE1)
割込み要求を禁止するには
"0" にする
割込み要求を許可するには
"1" にする
割込み要求のクリアは , 割込み要求ビット (PPG01/PPG23: PUF0 または PUF1) で設定
します。
表 16.6-3 割込み要求をクリアする方法
制御内容
割込要求ビット (PUF0 または PUF1)
割込み要求をクリアするには
"0" を書き込む
311
第 16 章 8/16 ビット PPG タイマ
312
第 17 章
DTP/ 外部割込み
DTP/ 外部割込みの概要 , レジスタの構成と機能 ,
動作および使用上の注意について説明します。
17.1 DTP/ 外部割込みの概要
17.2 DTP/ 外部割込みのレジスタ構成と機能
17.3 DTP/ 外部割込み
17.4 DTP/ 外部割込みの動作
17.5 DTP/ 外部割込み使用上の注意
17.6 DTP/ 外部割込みのプログラム例
313
第 17 章 DTP/ 外部割込み
17.1
DTP/ 外部割込みの概要
DTP(Data Transfer Peripheral) は , デバイス外部に存在する周辺装置と F2MC16LX CPU との間にあって , 外部周辺装置が発生する DMA 要求または割込み要求を
受け取り , これを F2MC-16LX CPU に伝えて μDMAC もしくは EI2OS または割込み
処理を起動させるための周辺制御部です。
■ DTP/ 外部割込みの概要
要求レベルとして , μDMAC もしくは EI2OS の場合は "H" と "L" の 2 種類が , 外部割込
み要求の場合は "H", "L" のほか , 立上りエッジと立下りエッジの計 4 種類が選択できま
す。
■ DTP/ 外部割込みのブロックダイヤグラム
図 17.1-1 に , DTP/ 外部割込みのブロックダイヤグラムを示します。
図 17.1-1 DTP/ 外部割込みのブロックダイヤグラム
F2MC-16LXバス
4
割込み/DTP許可レジスタ
4
ゲート
4
8
要因F/F
エッジ検出回路
4
要求入力
割込み/DTP要因レジスタ
要求レベル設定レジスタ
■ DTP/ 外部割込みに関する端子
外部割込み端子に関する端子には, IRQ0/IRQ1/IRQ2/IRQ3/IRQ4/IRQ5/IRQ6/IRQ7端子が
あり , 入力ポートとして機能します。IRQ0/IRQ1/IRQ2/IRQ3/IRQ4/IRQ5/IRQ6/IRQ7 端子
は , 汎用入出力ポート (P80/IRQ0, P81/IRQ1, P82/IRQ2, P83/IRQ3, P84/IRQ4, P85/IRQ5,
P86/IRQ6, P87/IRQ7) と外部割込み入力端子として機能を兼用しています。
● IRQ0/IRQ1/IRQ2/IRQ3/IRQ4/IRQ5/IRQ6/IRQ7 端子として使用する場合の設定
P80/IRQ0, P81/IRQ1, P82/IRQ2, P83/IRQ3, P84/IRQ4, P85/IRQ5, P86/IRQ6, P87/IRQ7 端子
を入力端子として使う場合は , ポート方向レジスタを入力ポート (DDR8 bit0 ~ bit7 →
"0") に設定してください。
314
第 17 章 DTP/ 外部割込み
■ DTP/ 外部割込みに関する端子のブロックダイヤグラム
図 17.1-2 DTP/ 外部割込みに関する端子のブロックダイヤグラム
周辺機能入力(IRQ0/IRQ1/IRQ2/IRQ3/IRQ4/IRQ5/IRQ6/IRQ7)
ポートデータレジスタ(PDR)
内 部データバス
PDRリード
出力ラッチ
P-ch
端子
PDRライト
ポート方向レジスタ(DDR)
方向ラッチ
N-ch
DDRライト
DDRリード
スタンバイ制御(SPL=1)
スタンバイ制御:ストップモード(SPL=1), タイムベースタイマモード(SPL=1), 時計モード(SPL=1)
315
第 17 章 DTP/ 外部割込み
17.2
DTP/ 外部割込みのレジスタ構成と機能
DTP/ 外部割込みに関するレジスタについて説明します。
■ DTP/ 外部割込みのレジスタ
図 17.2-1 に , DTP/ 外部割込みのレジスタ一覧を示します。
図 17.2-1 DTP/ 外部割込みのレジスタ一覧
割込み/DTP許可レジスタ(ENIR)
bit7 bit6
アドレス:00000CH EN7
EN6
R/W
R/W
割込み/DTP要因レジスタ(EIRR)
bit15 bit14
アドレス:00000DH ER7
ER6
R/W
R/W
要求レベル設定レジスタ(ELVR)
bit7 bit6
LB3
LA3
アドレス:00000EH
R/W
R/W
要求レベル設定レジスタ(ELVR)
bit15 bit14
LA7
アドレス:00000FH LB7
R/W
R/W
bit5 bit4 bit3 bit2 bit1 bit0 初期値
EN5 EN4 EN3
EN2
EN1 EN0
00000000B
R/W R/W R/W
R/W
R/W R/W
bit13 bit12 bit11 bit10 bit9 bit8
ER5 ER4 ER3
ER2
ER1 ER0
R/W R/W R/W
R/W
R/W R/W
bit5 bit4 bit3
LB2 LA2 LB1
R/W R/W R/W
bit2
LA1
R/W
XXXXXXXXB
bit1 bit0
LB0 LA0
R/W R/W
00000000B
bit13 bit12 bit11 bit10 bit9 bit8
LB6 LA6 LB5
LA5
LB4 LA4
R/W R/W R/W
R/W
R/W R/W
00000000B
R/W: リード/ライト可能
■ 割込み /DTP 許可レジスタ (ENIR:ENable Interrupt Request Register)
図 17.2-2 に , 割込み /DTP 許可レジスタ (ENIR) のビット構成を示します。
図 17.2-2 割込み /DTP 許可レジスタ (ENIR) のビット構成
割込み/DTP許可レジスタ(ENIR)
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 初期値
アドレス:00000CH EN7
EN6
EN5 EN4 EN3
EN2
EN1 EN0
00000000B
R/W
R/W
R/W R/W R/W
R/W
R/W R/W
R/W: リード/ライト可能
割込み /DTP 許可レジスタ (ENIR) は , 外部割込み /DTP チャネルに対して外部割込み /
DTP 要求を許可または禁止します。
割込み /DTP 許可ビット (ENIR:EN) に "1" が設定され , かつ割込み /DTP 要求フラグビッ
ト (EIRR:EN) に "1" がセットされた場合 , 対応する割込み /DTP 端子の割込み要求を発
生します。スタンバイモード時は入力を遮断しません。
316
第 17 章 DTP/ 外部割込み
■ 割込み /DTP 要因レジスタ (EIRR:External Interrupt Request Register)
図 17.2-3 に , 割込み /DTP 要因レジスタ (EIRR) のビット構成を示します。
図 17.2-3 割込み /DTP 要因レジスタ (EIRR) のビット構成
割込み/DTP要因レジスタ(EIRR)
bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8
アドレス:00000DH ER7
ER6
ER5 ER4 ER3
ER2
ER1 ER0
R/W
R/W
R/W R/W R/W
R/W
R/W R/W
R/W: リード/ライト可能
初期値
XXXXXXXXB
割込み /DTP 要因レジスタ (EIRR) は , 外部割込み端子に検出レベル設定レジスタの検
出条件選択ビット (ELVR:LB, LA) で設定したエッジまたはレベル信号が入力された場
合 , "1" にセットされます。
"1" がセットされた場合 :割込み/DTP要求許可ビット(ENIR:EN)を"1"に設定している
場合は , 対応する割込み /DTP チャネルの割込み要求が発生
します。
"0" に設定した場合
: 本レジスタはクリアされます。
"1" に設定した場合
: 影響しません。
<注意事項>
• リードモディファイライト (RMW) 系命令の読出し時には "1" が読み出されます。複数
の外部割込み要求出力が許可 (ENIR:EN7 ~ EN0=1) されている場合 , CPU が割込みを
受け付けたビット (EN7 ~ EN0 の "1" にセットされているビット ) だけを "0" にクリア
するようにしてください。それ以外のビットを無条件にクリアすることは避けてくだ
さい。
• DTP/ 外部割込み要求フラグビット (EIRR:ER) の値は,対応する DTP/ 外部割込み要求
出力許可ビット (ENIR:EV) が "1" に設定されているときのみ有効です。DTP/ 外部割込
みが許可されていない状態 (ENZR:EN=0) では,DTP/ 外部割込み要因の有無にかかわ
らず DTP/ 外部割込み要求フラグビットがセットされる可能性があります。
• DTP/ 外部割込みを許可 (ENIR:EN=1) する直前に , 対応する DTP/ 外部割込み要求フラ
グビット (EIRR:ER=0) をクリアしてください。
■ 要求レベル設定レジスタ (ELVR:External Level Register)
図 17.2-4 に , 要求レベル設定レジスタ (ELVR) のビット構成を示します。
図 17.2-4 要求レベル設定レジスタ (ELVR) のビット構成
要求レベル設定レジスタ(ELVR)
bit7 bit6
LB3
LA3
アドレス:00000EH
R/W
R/W
要求レベル設定レジスタ(ELVR)
bit15 bit14
LA7
アドレス:00000FH LB7
R/W
R/W
R/W: リード/ライト可能
bit5 bit4 bit3
LB2 LA2 LB1
R/W R/W R/W
bit2
LA1
R/W
bit1 bit0
LB0 LA0
R/W R/W
00000000B
初期値
bit13 bit12 bit11 bit10 bit9 bit8
LB6 LA6 LB5
LA5
LB4 LA4
R/W R/W R/W
R/W
R/W R/W
00000000B
317
第 17 章 DTP/ 外部割込み
要求レベル設定レジスタ (ELVR) は , 要求検出レベルを選択するレジスタです。1 つの
端子あたり 2 ビットが割り当てられていて , 表 17.2-1 に示す対応となっています。要
求入力がレベルの場合 , クリアしても入力がアクティブならば再びセットされます。
表 17.2-1 ELVR 割当て (LA0 ~ LA7, LB0 ~ LB7)
318
LBx
LAx
0
0
1
1
0
1
0
1
動
作
"L" レベルで要求あり
"H" レベルで要求あり
立上りエッジで要求あり
立下りエッジで要求あり
第 17 章 DTP/ 外部割込み
17.3
DTP/ 外部割込み
DTP/ 外部割込みに関する割込みは , 入力端子へのエッジ入力もしくはレベル入力を
検出した場合に発生します。
DTP/ 外部割込みでは , DMA 転送および拡張インテリジェント I/O サービス (EI2OS)
を起動することができます。
■ DTP/ 外部割込み
表 17.3-1 に , DTP/ 外部割込み制御ビットと割込み要因を示します。
表 17.3-1 DTP/ 外部割込み制御ビットと割込み要因
外部割込み
ICR の ISE=0 の場合
DTP 割込み
ICR の ISE=1 の場合
割込み要求フラグ
EIRR:ER (bit8 ~ bit15)
EIRR:ER (bit8 ~ bit15)
割込み要求出力許可ビット
ENIR:EN (bit0 ~ bit7)
ENIR:EN (bit0 ~ bit7)
割込み発生要因
外部割込み検出
外部割込み検出
設定の手順
DTP/ 外部割込みを使用する場合は , 次の手順で各レジスタの設定を行ってください。
1. 使用する DTP/ 外部割込みチャネルに対応する割込み要求許可ビットを "0" に設定し
ます (ENIR:EN)。
2. 使用する DTP/ 外部割込みチャネルに対応する検出条件選択ビットで , 検出するエッ
ジまたはレベルを設定します (ELVR:LA/LB)。
3. 使用する DTP/ 外部割込みチャネルに対応する割込み要求フラグを "0" に設定します
(EIRR:ER)。
4. 対応する割込み要求許可ビットを "1" に設定します (ENIR:EN)。
<注意事項>
• DTP/ 外部割込みのレジスタ設定は , 外部割込み要求を禁止に (ENIR:EN=0) に設定して
ください。
• DTP/ 外部割込みを許可 (ENIR:EN=1) にする場合は , 先に対応する DTP/ 外部割込み要
求フラグビットをクリア (EIRR:ER=0) してください。これは , レジスタ設定時に誤っ
て割込み要求が発生するのを防ぐためです。
319
第 17 章 DTP/ 外部割込み
外部割込み機能と DTP 機能の選択
外部割込み機能と DTP 機能のどちらが実行されるかは , 対応する割込み制御レジスタ
の EI2OS 許可ビット (ICR:ISE) の設定 , もしくは DMA イネーブルレジスタ (DER:EN)
の設定によって決定されます。
ISE ビットを "1" に設定した場合は拡張インテリジェントサービス (EI2OS) が , EN ビッ
トを "1" に設定した場合は DMA 転送が許可されます。
ISE ビットと EN ビットを "0" に設定した場合は , EI2OS および DMA 転送は禁止され ,
外部割込み機能が実行されます。
<注意事項>
・1 つの割込み制御レジスタに割り当てられている割込み要求は , すべて割込みレベル
(IL2 ~ IL0) が同じになります。
・1 つの割込み制御レジスタに複数の割込み要求が割り当てられている場合 , そのうちの
1 つで EI2OS を起動しようすると , ほかの割込み要求は使用できません。
■ DTP/ 外部割込みと DMA 転送および EI2OS
表 17.3-2 に , ソフトウェア割込みを除く割込み要因と割込みベクタおよび割込み制御
レジスタの関係を示します。
表 17.3-2 割込み要因と割込みベクタ / 割込み制御レジスタ
割込み要因
INT0 (IRQ0)
EI2OS の
クリア
μDMAC
チャネル
番号
番号
○
0
#11
FFFFD0H
割込みベクタ
アドレス
INT1 (IRQ1)
○
×
#12
FFFFCCH
INT2 (IRQ2)
○
×
#13
FFFFC8H
INT3 (IRQ3)
○
×
#14
FFFFC4H
INT4 (IRQ4)
○
×
#15
FFFFC0H
INT5 (IRQ5)
○
×
#16
FFFFBCH
INT6 (IRQ6)
○
×
#17
FFFFB8H
INT7 (IRQ7)
○
×
#18
FFFFB4H
割込み制御レジスタ
番号
アドレス
ICR00
0000B0H
ICR01
0000B1H
ICR02
0000B2H
ICR03
0000B3H
× : 割込み要求フラグはクリアされません。
○ : 割込み要求フラグはクリアされます。
( 注意事項 ) 同一割込み番号に 2 つの割込み要因があった場合は , リソースは両方の割込み要求フラグをクリ
アします。したがって , 2 要因のどちらか 1 つが EI2OS/μDMAC 機能を使用すると , もう 1 つの割
込み機能は使用できません。該当リソースの割込み要求許可ビットを "0" にしてソフトウェア
ポーリング処理で対処してください。
■ DMA 転送 , および EI2OS 機能への対応
DTP/ 外部割込みは EI2OS 機能と ch.0 のみが DMA 転送機能に対応しています。DMA
または EI2OS 機能を使用する場合には , 割込み制御レジスタ (ICR) を共有するほかの割
込みを禁止に設定する必要があります。
320
第 17 章 DTP/ 外部割込み
17.4
DTP/ 外部割込みの動作
DTP/ 外部割込みの動作について説明します。
■ 外部割込みの動作
外部割込み要求の設定の後 , 対応する端子に ELVR レジスタで設定された要求が入力
されると , 本リソースは割込みコントローラに対して割込み要求信号を発生します。割
込みコントローラ内で同時に発生した割込みの優先順位を識別した結果,本リソースか
らの割込みが最も優先順位が高かったときに , 割込みコントローラは F2MC-16LX CPU
に対して割込み要求を発生します。F2MC-16LX CPU は , プロセッサステータス (PS)
内のインタラプトレベルマスクレジスタ(ILM)と割込み要求を比較します。要求レベル
が ILM ビットより高かったときに現在実行中の命令が終了し次第 , ハードウェア割込
み処理マイクロプログラムを起動します。
図 17.4-1 に , 外部割込み動作のフローを示します。
図 17.4-1 外部割込み動作
外部割込み/DTP
F2MC-16LX CPU
割込みコントローラ
ほかの要求
ELVR
CMP
EIRR
ENIR
IL
ICRyy
CMP
ICFxx
ILM
INTA
要因
割込み処理マイクロプログラムでは割込みベクタ領域の読出しと割込みコントローラ
への割込みアクノリッジを発生し,ベクタから生成したマクロ命令のジャンプ先アドレ
スをプログラムカウンタへ転送した上で , ユーザの割込み処理プログラムを実行しま
す。
321
第 17 章 DTP/ 外部割込み
■ DTP の動作
μDMAC 初期化のため , ユーザプログラム内では μDMAC を起動するにあたって ,
μDMACディスクリプタ内のI/Oアドレスポインタに"000000H"から"0000FFH"に割り付
けられているレジスタのアドレスを設定し , バッファアドレスポインタにメモリバッ
ファの先頭アドレスを設定します。
DTP の動作シーケンスは外部割込みの場合と同じです。μDMAC が起動されると , アド
レッシングされている外部周辺装置に読出し信号または書込み信号が送られ,本チップ
との間で転送が行われます。外部周辺装置側では , その転送が行われてから 3 マシンサ
イクル以内に本チップに対する割込み要求を取り下げる必要があります。転送が終了
するとディスクリプタの更新などが行われ,その後割込み要因をクリアする信号を割込
みコントローラに発生させます。割込み要因をクリアする信号を受け取った本リソー
スは , 要因を保持しているフリップフロップをクリアして , 端子からの次の要求に備え
ます。
図 17.4-2 に , DTP 動作終了時の外部割込み要求を取り下げるタイミングを示します。
また , 図 17.4-3 に , 外部周辺装置とのインタフェース例を示します。
図 17.4-2 DTP 動作終了時の外部割込み要求の取下げタイミング
↑エッジ要求,または"H"レベル要求
割込み要因
ディスクリプタ
選択,読出し
内部動作
アドレスバス端子
リードアドレス
ライトアドレス
リードデータ
データバス端子
読出し信号
ライトデータ
①
書込み信号
②
3マシンサイクル以内に取り下げる
図 17.4-3 外部周辺装置とのインタフェース例
レジスタ
外部周辺装置
データ,アドレス,バス
IRQ
転送終了後,3マシンサイクル
以内に取り下げる
322
内部バス
②
①
DTP
INT
MB90980シリーズ
コア
メモリ
第 17 章 DTP/ 外部割込み
17.5
DTP/ 外部割込み使用上の注意
DTP/ 外部割込みを使用する上での注意事項について説明します。
■ 外部に接続する周辺装置の条件
DTP がサポートできる外部周辺装置は , 転送が行われたことにより自動的に要求をク
リアできるものでなければなりません。また , 転送動作を開始してから 3 マシンサイク
ル以内 ( 暫定値 ) で転送要求を取り下げるようになっていないと , 本リソースは次の転
送要求が発生したものとして処理を行います。
■ DTP/ 外部割込みの動作手順
DTP/ 外部割込み内に存在するレジスタの設定は , 次の手順で行ってください。
(1) 外部割込み入力として使用する端子と兼用する汎用入出力ポートを入力ポート
に設定する。
(2) 許可レジスタの対象となるビットをディセーブル状態にする。
(3) 要求レベル設定レジスタの対象となるビットを設定する。
(4) 要因レジスタの対象となるビットをクリアする。
(5) 許可レジスタの対象となるビットをイネーブル状態にする。
(4) と (5) はワード指定による同時書込みが可能です。
本リソース内のレジスタを設定するときには,必ず許可レジスタを禁止状態に設定して
おかなくてはなりません。また , 許可レジスタを許可状態にする前に必ず要因レジスタ
をクリアしておく必要があります。これは , レジスタ設定時や割込み許可状態時に誤っ
て割込み要因が発生してしまうことを避けるためです。
■ 外部割込み要求レベル
• 要求レベルがエッジ要求の場合 , エッジがあったことを検出するために必要なパル
ス幅は最小 3 マシンサイクルです。
• 要求入力レベルがレベル設定の場合 , 外部から要求入力が入って , その後 , 取り下げ
られても内部に要因保持回路が存在するので , 割込みコントローラへの要求はアク
ティブのままです。割込みコントローラへの要求を取り下げるには , 要因保持回路
をクリアする必要があります。
図 17.5-1 レベル設定時の要因保持回路のクリア
割込み要因
レベル検出
要因 F/F
(要因保持回路)
許可ゲート
割込み
コントローラへ
クリアしない限り
要因を保持し続ける
図 17.5-2 割込み許可時の割込み要因と割込みコントローラへの割込み要求
割込み要因
"H"レベル
割込みコントローラ
への割込み要求
要因F/Fのクリアによってインアクティブとなる
323
第 17 章 DTP/ 外部割込み
17.6
DTP/ 外部割込みのプログラム例
DTP/ 外部割込みのプログラム例を示します。
■ DTP/ 外部割込みのプログラム例
プログラム例
設定手順例
INT0 より入力した信号の立上りエッジで外部割込み
を発生させる。
void EX_INT_sample_1() {
EX_INT0_initial(); }
<初期設定>
・ポート
INT0 ポートの入力選択
・INT0 制御
外部割込み検出の選択
レジスタ名 . ビット名
DDR8 .P80
void EX_INT0_initial(void) {
IO_DDR8.bit.D80= 0;
レジスタ名 . ビット名
ELVR
/* INT0 入力 */
IO_ELVR.word= 0x0001;
/* 設定値:00000001 (bit) */
/* Bit7-2= "000000" */
/* Bit1-0= "01" "H" レベル検出 */
ICR00
(CCR)
IO_ICR00 = 0x00
__EI();
/* 値は任意 */
/* 割込み許可 */
INT0 割込み要因
EIRR. ER0
INT0 割込み許可
ENIR. EN0
IO_EIRR.bit.ER0= 0;
IO_ENIR.bit.EN0= 0;
/* ER0 割込みフラグクリア */
/* EN0 割込み許可 */
LB7,LA7 ~ LB1,LA1
LB0, LA0
・割込み関連 1
INT0 割込みレベルの設定
I フラグの設定
・割込み関連 2
}
<割込み>
・変換値の読出し
割込み要求フラグのクリア
レジスタ名 . ビット名
EIRR. ER0
・任意の処理
__interrupt void INT0_int(void)
{
IO_EIRR.bit.ER0= 0;
}
/* */
/* ER0 割込みフラグクリア */
<割込みベクタ>
・ベクタテーブルの設定
#pragma intvect INT0_int 11
( 注意事項 )
事前にクロック関連の設定および , __set_il( 数値 ) の
設定が必要です。
「第 4 章 割込み」および「第 6 章
クロック」を参照してください。
( 注意事項 )
レジスタの記述形式については , 「F2MC-16LX ファミリ MB90980 シリーズ用サ
ンプル I/O レジスタファイル 使用手引書」を参照してください。
324
第 17 章 DTP/ 外部割込み
■ プログラム例以外の設定方法
● 検出レベルの種類と設定方法
検出レベルの種類は 4 種類 ("L" レベル , "H" レベル , 立上り , 立下り ) です。
検出レベルビット (ELVR. LBx,LAx) x=0 ~ 7 で設定します。
表 17.6-1 検出レベルの種類と設定方法
動作モード
検出レベルビット (LBx,LAx) x=0 ~ 7
"L" レベル検出にするには
"00B" にする
"H" レベル検出にするには
"01B" にする
立上り検出にするには
"10B" にする
立下り検出にするには
"11B" にする
● IRQ 端子を入力にする方法
ポート 8 方向レジスタ (DDR8) で設定します。
表 17.6-2 IRQ 端子を入力にする方法
動作
方向ビット (P80 ~ P87)
設定
IRQ0 端子入力にするには
DDR8: P80
"0" にする
IRQ1 端子入力にするには
DDR8: P81
"0" にする
IRQ2 端子入力にするには
DDR8: P82
"0" にする
IRQ3 端子入力にするには
DDR8: P83
"0" にする
IRQ4 端子入力にするには
DDR8: P84
"0" にする
IRQ5 端子入力にするには
DDR8: P85
"0" にする
IRQ6 端子入力にするには
DDR8: P86
"0" にする
IRQ7 端子入力にするには
DDR8: P87
"0" にする
325
第 17 章 DTP/ 外部割込み
● 割込み関連レジスタ
表 17.6-3 に , 外部割込み端子 , 割込みレベル , ベクタの関係を示します。
割込みレベル , 割込みベクタの詳細については「第 4 章 割込み」を参照してください。
表 17.6-3 外部割込み端子 , 割込みレベル , ベクタの関係
外部割込み端子
割込みベクタ
割込みレベル設定ビット
IRQ0
#11
アドレス : 0FFFFD0H
割込み制御レジスタ 00 (ICR00)
アドレス : 000B0H
IRQ1
#12
アドレス : 0FFFFCCH
割込み制御レジスタ 00 (ICR00)
アドレス : 000B0H
IRQ2
#13
アドレス : 0FFFFC8H
割込み制御レジスタ 01 (ICR01)
アドレス : 000B1H
IRQ3
#14
アドレス : 0FFFFC4H
割込み制御レジスタ 01 (ICR01)
アドレス : 000B1H
IRQ4
#15
アドレス : 0FFFFC0H
割込み制御レジスタ 02 (ICR02)
アドレス : 000B2H
IRQ5
#16
アドレス : 0FFFFBCH
割込み制御レジスタ 02 (ICR02)
アドレス : 000B2H
IRQ6
#17
アドレス : 0FFFFB8H
割込み制御レジスタ 03 (ICR03)
アドレス : 000B3H
IRQ7
#18
アドレス : 0FFFFB4H
割込み制御レジスタ 03 (ICR03)
アドレス : 000B3H
● 割込みの種類
割込み要因は外部割込みのみです。選択のビットはありません。
● 割込みを許可 / 禁止 / クリアする方法
割込みの許可 / 禁止は , 割込み許可ビット (ENIR: ENx x=0 ~ 7) で設定します。
表 17.6-4 割込みを許可 / 禁止する方法
制御内容
割込み許可ビット (ENx x=0 ~ 7)
割込み要求を禁止するには
"0" にする
割込み要求を許可するには
"1" にする
割込み要求のクリアは , 割込み要求ビット (EIRR: ERx x=0 ~ 7) で設定します。
表 17.6-5 割込み要求をクリアする方法
制御内容
割込み要求をクリアするには
326
割込み要求ビット (ERx x=0 ~ 7)
"0" を書き込む
第 18 章
8/10 ビット A/D コンバータ
8/10 ビット A/D コンバータの概要 , レジスタの構
成と機能 , 動作 , 変換データ保護機能および使用上
の注意について説明します。
18.1 8/10 ビット A/D コンバータの概要
18.2 8/10 ビット A/D コンバータの構成
18.3 8/10 ビット A/D コンバータのレジスタの構成
18.4 8/10 ビット A/D コンバータの割込み
18.5 8/10 ビット A/D コンバータの動作
18.6 8/10 ビット A/D コンバータの変換データ保護機能
18.7 8/10 ビット A/D コンバータ使用上の注意
18.8 8/10 ビット A/D コンバータのプログラム例
327
第 18 章 8/10 ビット A/D コンバータ
18.1
8/10 ビット A/D コンバータの概要
8/10 ビット A/D コンバータの特長およびブロックダイヤグラムを示します。
■ 8/10 ビット A/D コンバータの特長
8/10 ビット A/D コンバータには , 以下の特長があります。
• 変換時間 : 1 チャネル当たり最小 3.68μs (92 マシンサイクル / マシンクロック 25MHz
時 / サンプリング時間を含む )
• サンプリング時間 : 1 チャネル当たり最小 1.92μs (48 マシンサイクル / マシンクロッ
ク 25MHz 時 )
• サンプル & ホールド回路付き RC 型逐次比較変換方式を採用
• 8 ビットまたは 10 ビットの分解能選択可能
• アナログ入力は 8 チャネルからプログラムで選択可能
- シングル変換モード :1 チャネルを選択変換
- スキャン変換モード : 連続した複数のチャネルを変換。最大 8 チャネルプログラ
ム可能
- 連続変換モード : 指定チャネルを繰り返し変換
- 停止変換モード : 1 チャネルを変換したら一時停止して次の起動がかかるまで待
機 ( 変換開始の同期が可能 )
A/D 変換終了時には , CPU に対して A/D 変換終了の割込み要求を発生します。この割
込み発生で μDMAC を起動することで , A/D 変換結果データをメモリに転送できます
ので連続処理に適しています。
起動要因は , ソフトウェア , 外部トリガ ( 立下りエッジ ), タイマ ( 立上りエッジ ) のい
ずれかから選択できます。
328
第 18 章 8/10 ビット A/D コンバータ
18.2
8/10 ビット A/D コンバータの構成
8/10 ビット A/D コンバータのブロックダイヤグラムと構成を示します。
■ 8/10 ビット A/D コンバータのブロックダイヤグラム
図 18.2-1 に , 8/10 ビット A/D コンバータのブロックダイヤグラムを示します。
図 18.2-1 8/10 ビット A/D コンバータのブロックダイヤグラム
AVCC
AVRH
AVSS
D/Aコンバータ
入
MPX
力
AN0
AN1
AN2
AN3
AN4
AN5
AN6
AN7
逐次比較レジスタ
回
路
比較器
データバス
サンプル&
ホールド回路
デコー ダ
データレジスタ
ADCR1,ADCR2
コントロール
ステータスレジスタ1
コントロール
ステータスレジスタ2
ADTG
トリガ起動
タイマ起動
タイマ
( PPG1出力 )
ADCS1,
ADCS2
動作クロック
プリスケーラ
■ 8/10 ビット A/D コンバータに関する端子
8/10 ビット A/D コンバータに関する端子には , アナログ入力 AN0/AN1/AN2/AN3/AN4/
AN5/AN6/AN7 端子と入力トリガ ADTG 端子があります。汎用入出力ポート (P60/AN0,
P61/AN1, P62/AN2, P63/AN3, P64/AN4, P65/AN5, P66/AN6, P67/AN7) は A/D のアナログ
入力端子として機能を兼用しており , 汎用入出力ポート (P93/ADTG) は A/D のトリガ入
力として機能を兼用しています。
329
第 18 章 8/10 ビット A/D コンバータ
● AN0/AN1/AN2/AN3/AN4/AN5/AN6/AN7 端子として使用する場合の設定
アナログ入力として使用する場合は , ポート方向レジスタ (DDR6: bit7 ~ bit0 → "0") と
アナログ許可レジスタ (ADER:bit7 ~ bit0 → "1") を設定してください。
● ADTG 端子として使用する場合の設定
A/D コンバータの外部トリガとして使用する場合 , P93/ADTG 端子はポート方向レジス
タにより入力ポート (DDR9: bit3 → "0") に設定してください。
■ 8/10 ビット A/D コンバータに関する端子のブロックダイヤグラム
図 18.2-2 8/10 ビット A/D コンバータに関する端子のブロックダイヤグラム
ADER
アナログ入力(AIN0~AIN7)
周辺機能
ポートデータレジスタ(PDR) 入力(ADTG)
内部データバス
PDRリード
出力ラッチ
P-ch
PDRライト
端子
ポート方向レジスタ(DDR)
方向ラッチ
N-ch
DDRライト
DDRリード
スタンバイ制御(SPL=1)
スタンバイ制御:ストップモード(SPL=1),タイムベースタイマモード(SPL=1),時計モード(SPL=1)
330
第 18 章 8/10 ビット A/D コンバータ
18.3
8/10 ビット A/D コンバータのレジスタの構成
8/10 ビット A/D コンバータに関するレジスタについて示します。
■ 8/10 ビット A/D コンバータのレジスタ一覧
図 18.3-1 に , 8/10 ビット A/D コンバータのレジスタ一覧を示します。
図 18.3-1 8/10 ビット A/D コンバータのレジスタ一覧
bit15
bit8
bit0
bit7
ADCS2
ADCR2
ADCS1
ADCR1
8ビット
8ビット
コントロールステータスレジスタ(ADCS1)
bit7 bit6
ADCS1
MD1
MD0
アドレス:000046H
R/W
R/W
コントロールステータスレジスタ(ADCS2)
bit15 bit14
ADCS2
BUSY INT
アドレス:000047H
R/W
R/W
bit5 bit4 bit3 bit2 bit1 bit0
ANS2 ANS1 ANS0 ANE2 ANE1 ANE0
R/W R/W R/W
R/W
R/W R/W
00000000B
bit13 bit12 bit11 bit10 bit9 bit8
INTE PAUS STS1 STS0 STRT 予約
R/W R/W R/W
R/W
W
R/W
00000000B
データレジスタ(ADCR1)
bit7
ADCR1
D7
アドレス:000048H
R
bit5 bit4 bit3
D5
D4
D3
R
R
R
XXXXXXXXB
bit6
D6
R
bit2
D2
R
bit1 bit0
D1
D0
R
R
初期値
データレジスタ(ADCR2)
bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8
ADCR2
00000XXXB
S10
ST1
ST0 CT1 CT0
―
D9
D8
アドレス:000049H
W
W
W
W
W
R
R
R
R/W: リード/ライト可能
R : リードオンリ
W : ライトオンリ
331
第 18 章 8/10 ビット A/D コンバータ
コントロールステータスレジスタ 1(ADCS1)
18.3.1
コントロールステータスレジスタ 1(ADCS1) は , A/D コンバータの制御およびス
テータス表示を行います。
■ コントロールステータスレジスタ 1(ADCS1)
図 18.3-2 に , コントロールステータスレジスタ 1(ADCS1) のビット構成を示します。
図 18.3-2 コントロールステータスレジスタ 1(ADCS1) のビット構成
コントロールステータスレジスタ(ADCS1)
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
ADCS1
MD1
MD0 ANS2 ANS1 ANS0 ANE2 ANE1 ANE0
アドレス:000046H
R/W
R/W
R/W R/W R/W
R/W
R/W R/W
初期値
00000000B
R/W: リード/ライト可能
<注意事項>
コントロールステータスレジスタ1(ADCS1)は, A/D変換動作中に書き換えないでください。
以下に , コントロールステータスレジスタ 1(ADCS1) の各ビットの機能を説明します。
[bit7, bit6] MD1, MD0:動作モード設定ビット
これらのビットは , 動作モードを設定します。表 18.3-1 に選択できる動作モードを
示します。
表 18.3-1 動作モード設定
MD1, MD0
動作モード
00B
単発モード , 動作中の再起動はすべて可能
01B
単発モード , 動作中の再起動不可能
10B
連続モード , 動作中の再起動不可能
11B
停止モード , 動作中の再起動不可能
各モードの機能は , 以下のとおりです。
• 単発モード : ANS2 ~ ANS0 の設定チャネルから ANE2 ~ ANE0 の設定チャネル
まで A/D 変換を連続して行い , 1 回変換が終了すると停止します。
• 連続モード : ANS2 ~ ANS0 の設定チャネルから ANE2 ~ ANE0 の設定チャネル
まで A/D 変換を繰り返し行います。
• 停止モード : ANS2 ~ ANS0 の設定チャネルから ANE2 ~ ANE0 の設定チャネル
まで 1 チャネルごとに A/D 変換を行い , 一時停止します。変換再開
は , 起動要因発生によって行われます。
これらのビットは , リセット時に "00B" に初期化されます。
各動作モードでは , 次の動作をします。
• 連続モード , 停止モードで A/D 変換を起動すると , BUSY ビットで停止するまで
変換動作を続けます。
• 各動作モードは , BUSY ビットに "0" を書き込むことによって停止します。
• 単発 , 連続 , 停止の各モードにおける「再起動の不可能」は , タイマ , 外部トリガ ,
ソフトウェアすべての起動要因に対して適用されます。
332
第 18 章 8/10 ビット A/D コンバータ
[bit5 ~ bit3] ANS2, ANS1, ANS0:A/D 変換開始チャネルビット
これらのビットによって , A/D 変換の開始チャネルを設定します。
A/D コンバータを起動すると , これらのビットによって選択されたチャネルから
A/D 変換を始めます。
表 18.3-2 A/D 変換の開始チャネル設定
ANS2
ANS1
ANS0
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
開始チャネル
AN0
AN1
AN2
AN3
AN4
AN5
AN6
AN7
• 読出し時
- これらのビットは , A/D 変換中には , 変換チャネルが読み出されます。
- 停止モードで停止中の場合は , 前の変換チャネルが読み出されます。
• リセット時に "000B" に初期化されます。
これらのビットの読出し値は , A/D 変換開始時に更新されるため , これらのビットを
設定しても , A/D 変換動作が開始するまでは前回の変換チャネルが読み出されます。
[bit2 ~ bit0] ANE2, ANE1, ANE0:A/D 変換終了チャネルビット
これらのビットは , A/D 変換の終了チャネルを設定します。
表 18.3-3 A/D 変換の終了チャネルの設定
ANE2
ANE1
ANE0
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
終了チャネル
AN0
AN1
AN2
AN3
AN4
AN5
AN6
AN7
• ANS2 ~ ANS0 と同じチャネルを設定すると , 1 チャネル変換になります ( シン
グル変換 )。
• 連続モード,停止モードを設定している場合は,これらのビットで設定されたチャ
ネルの変換が終わると , ANS2 ~ ANS0 で設定されたチャネルに戻ります。
• 設定チャネルが , ANS < ANE の場合は ANS で設定されたチャネルから変換が始
まります。7 チャネルまで変換したら 0 チャネルに戻り , 次に ANE で設定された
終了チャネルまで変換します。
• リセット時に "000B" に初期化されます。
例 : チャネル設定 ANS=6 チャネル , ANE=3 チャネルで単発モードの場合
動作 変換チャネル 6 チャネル→ 7 チャネル→ 0 チャネル→ 1 チャネル
→ 2 チャネル→ 3 チャネル
333
第 18 章 8/10 ビット A/D コンバータ
<注意事項>
A/D 変換開始チャネル選択ビット (ANS2, ANS1, ANS0) に開始チャネルを設定した後に , A/D 変
換モード選択ビット (MD1, MD0) および A/D 変換終了チャネル選択ビット (ANE2, ANE1, ANE0)
をリードモディファイライト (RMW) 系命令で設定しないでください。
ANS2, ANS1, ANS0 ビットは A/D 変換動作が開始するまでは前回の変換チャネルが読み出され
るため , ANS2, ANS1, ANS0 ビットに開始チャネルを設定した後に , MD1, MD0 ビットおよび
ANE2, ANE1, ANE0 ビットをリードモディファイライト (RMW) 系命令で設定した場合 , ANE2,
ANE1, ANE0 ビットの値が書き換わる可能性があります。
334
第 18 章 8/10 ビット A/D コンバータ
18.3.2
コントロールステータスレジスタ 2(ADCS2)
コントロールステータスレジスタ 2(ADCS2) は , A/D コンバータの制御およびス
テータス表示を行います。
■ コントロールステータスレジスタ 2(ADCS2)
図 18.3-3 に , コントロールステータスレジスタ 2(ADCS2) のビット構成を示します。
図 18.3-3 コントロールステータスレジスタ 2(ADCS2) のビット構成
コントロールステータスレジスタ(ADCS2)
bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8
ADCS2
BUSY
INT
INTE PAUS STS1 STS0 STRT 予約
アドレス:000047H
R/W
R/W
R/W
R/W
R/W
R/W
W
R/W
初期値
00000000B
R/W: リード/ライト可能
W: ライトオンリ
以下に , コントロールステータスレジスタ 2(ADCS2) の各ビットの機能を説明します。
[bit15] BUSY:A/D 変換動作中フラグビット
• 読出し時 : A/D コンバータ動作表示用のビットです。A/D 変換の起動によって
セットされ , 終了でクリアされます。
• 書込み時 : A/D 動作中にこのビットに "0" を書き込むと強制的に動作が停止され
ます。連続モード時および停止モード時の強制停止に利用します。
動作表示用のビットに "1" を書き込むことはできません。リードモディファイライ
ト (RMW) 系命令では "1" が読み出されます。単発モードでは A/D 変換終了によっ
てクリアされます。連続 , 停止モードでは "0" 書込みによって停止するまでクリア
はされません。
リセット時に "0" に初期化されます。
<注意事項>
強制停止とソフトウェア起動を同時には行わないでください (BUSY=0, STRT=1)。
335
第 18 章 8/10 ビット A/D コンバータ
[bit14] INT:A/D 変換終了割込み要求ビット
このビットは , データ表示ビットです。変換データが ADCR に書き込まれるとセッ
トされます。
bit5(INTE) が "1" のときにこのビットがセットされると , 割込み要求が発生します。
また , μDMAC 起動が許可されている場合は μDMAC が起動されます。"1" の書込み
は , 意味を持ちません。クリアは , "0" 書込みと μDMAC 割込みクリア信号で行われ
ます。
リセット時に "0" に初期化されます。
「18.6 8/10 ビット A/D コンバータの変換データ保護機能」
「■ 変換データ保護機能
の使用上の注意」を参照してください。
<注意事項>
このビットの "0" 書込みによるクリアは , A/D 停止中に行ってください。
[bit13] INTE:割込み許可ビット
このビットは , 変換終了による割込みの許可 / 禁止を指定します。
• 0: 割込みの禁止
• 1: 割込みの許可
μDMAC を使用するときは , このビットをセットしてください。
μDMAC は , 割込み要
求発生で起動します。
リセット時に "0" に初期化されます。
「18.6 8/10 ビット A/D コンバータの変換データ保護機能」
「■ 変換データ保護機能
の使用上の注意」を参照してください。
[bit12] PAUS:一時停止フラグビット
このビットは , A/D 変換動作が一時的に停止した場合にセットされます。
A/D 変換結果を格納するレジスタが 1 つのため , 連続で変換した場合 , 変換結果を
μDMAC で転送しなければ前のデータが壊れてしまいます。これを保護するため ,
データレジスタの内容を μDMAC で転送していない場合は , 次の変換データが格納
されません。この間 , A/D 変換動作は停止します。μDMAC で転送を終了すると , A/D
は変換を再開します。
このレジスタは , μDMAC を使用したときのみ有効です。
「18.6 8/10 ビット A/D コンバータの変換データ保護機能」
「■ 変換データ保護機能
の使用上の注意」を参照してください。
リセット時に "0" に初期化されます。
336
第 18 章 8/10 ビット A/D コンバータ
[bit11, bit10] STS1, STS0:起動要因選択ビット
これらのビットは , A/D 起動要因を選択します。
表 18.3-4 A/D 起動要因の選択
STS1
STS0
0
0
1
1
0
1
0
1
機能
ソフトウェア起動
外部端子トリガでの起動とソフトウェア起動
タイマでの起動とソフトウェア起動
外部端子トリガ , タイマでの起動とソフトウェア起動
起動が兼用になっているモードでは , 最初に発生した要因で起動します。
起動要因は書換えと同時に変わりますので , A/D 動作中に書き換えるときは注意し
てください。
• 外部端子トリガの場合は , 立下りエッジを検出します。
• 外部トリガ入力レベルが"L"のときにこのビットを書き換えて外部トリガ起動を
選択すると , A/D が起動する場合があります。
• タイマ選択時は , PPG1 の出力が選択されます。
リセット時 "00B" に初期化されます。
<注意事項>
A/D コンバータを外部トリガ , または内部タイマを使って起動する場合 , 外部トリガおよ
び内部タイマの入力値は , インアクティブ側の状態で設定してください。
STS1, STS0 の設定時は , ADTG=1 入力 , 内部タイマ (PPG1)=0 出力の状態で行ってくだ
さい。
[bit9] STRT:start
8/10 ビット A/D コンバータをソフトウェアで起動します。
• このビットに "1" を書き込むことによって A/D を起動します。
• 再起動をかけるときは , 再び書き込んでください。
• 停止モード時は , 動作機能上再起動はかかりません。
• リセット時に "0" に初期化されます。
• バイト / ワード命令では "1" が読み出されます。
• リードモディファイライト (RMW) 系命令では "0" が読み出されます。
<注意事項>
強制停止とソフト起動を同時には行わないでください (BUSY=0, STRT=1)。
[bit8] 予約
書込み時は , "0" を書き込んでください。
337
第 18 章 8/10 ビット A/D コンバータ
18.3.3
データレジスタ (ADCR2, ADCR1)
データレジスタ (ADCR2, ADCR1) の構成および機能について説明します。
■ データレジスタ (ADCR2, ADCR1)
図 18.3-4 に , データレジスタ (ADCR2, ADCR1) のビット構成を示します。
図 18.3-4 データレジスタ (ADCR2, ADCR1) のビット構成
データレジスタ(ADCR1)
bit7
ADCR1
D7
アドレス:000048H
R
bit6
D6
R
bit5 bit4 bit3
D5
D4
D3
R
R
R
bit2
D2
R
bit1 bit0
D1
D0
R
R
初期値
XXXXXXXXB
データレジスタ(ADCR2)
bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8
ADCR2
00000XXXB
S10
ST1
ST0 CT1 CT0
―
D9
D8
アドレス:000049H
W
W
W
W
W
R
R
R
R : リードオンリ
W : ライトオンリ
データレジスタ (ADCR2, ADCR1) は変換結果格納レジスタであり , 変換結果であるデジ
タル値が格納されます。ADCR2 には変換値の上位 2 ビットが , ADCR1 には下位 8 ビッ
トが格納されます。このレジスタの値は , 1 回の変換終了時ごとに更新されます。通常
は , 最終変換値が格納されています。S10 ビットの書換えは , 必ず変換動作前の A/D 動
作停止状態でするようにしてください。変換後に書換えをしたとき , ADCR の内容は不
定です。ADCR レジスタの読出しは 10 ビットモードを指定したときは , 必ずワード命
令を使用してください。また , ADCR レジスタには , 変換データ保護機能があります
(「18.6 8/10 ビット A/D コンバータの変換データ保護機能」を参照 )。
A/D 動作中にこのレジスタにデータを書き込まないようにしてください。S10 ビット
が "0" のときは変換結果が 10 ビットで , "1" のときは 8 ビットで得られます。
表 18.3-5 サンプリング時間とコンペア時間の設定
ST1
ST0
サンプリング時間設定ビット
CT1
CT0
コンペア時間設定ビット
20 マシンサイクル ([email protected])
44 マシンサイクル ([email protected])
32 マシンサイクル ([email protected])
66 マシンサイクル ([email protected])
48 マシンサイクル ([email protected])
88 マシンサイクル ([email protected])
128 マシンサイクル ([email protected])
176 マシンサイクル ([email protected])
( 注意事項 ) 25MHz 動作時に ST1, ST0=00 または 01 を設定すると , 正常にアナログ電圧を取り込めない場合が
あります。
0
0
1
1
338
0
1
0
1
0
0
1
1
0
1
0
1
第 18 章 8/10 ビット A/D コンバータ
18.4
8/10 ビット A/D コンバータの割込み
8/10 ビット A/D コンバータでは , A/D 変換が終了して変換結果が A/D データレジス
タ (ADCR) に格納されると割込み要求が発生します。また , DMA 転送および拡張イ
ンテリジェント I/O サービス (EI2OS) を起動することができます。
■ 8/10 ビット A/D コンバータの割込み
表 18.4-1 に , 8/10 ビット A/D コンバータの割込み制御ビットと割込み要因を示します。
表 18.4-1 A/D 変換の割込みと割込み要因
A/D 変換割込み
割込み要因
割込み要求フラグ
ADCS:INT (bit14)
割込み要求出力許可ビット
ADCS:INTE (bit13)
割込み発生要因
A/D 変換結果が A/D データレジスタ (ADCR) に格納された
■ A/D コンバータの割込み
アナログ入力電圧の A/D 変換が終了して , A/D 変換結果がデータレジスタ (ADCR) に
格納されると , A/D コントロールステータスレジスタの割込み要求フラグビット
(ADCS:INT) に "1" が 設 定 さ れ ま す。割 込 み 要 求 の 出 力 が 許 可 さ れ て い る 場 合
(ADCS:INTE=1) に , 割込み要求フラグビットが設定されると (ADCS:INT=1) 割込み要
求が発生します。
■ 8/10 ビット A/D コンバータの割込みと DMA 転送および EI2OS
表 18.4-2 に , ソフトウェア割込みを除く割込み要因と割込みベクタおよび割込み制御
レジスタの関係を示します。
表 18.4-2 割込み要因と割込みベクタ / 割込み制御レジスタ
割込み要因
A/D コンバータ *
EI2OS の
クリア
μDMAC
チャネル
番号
番号
アドレス
番号
アドレス
○
15
#40
FFFF5CH
ICR14
0000BEH
割込みベクタ
割込み制御レジスタ
○ : 割込み要求フラグはクリアされます。
この割込み要因は , ほかの周辺機能の割込み要因と割込み番号を共有しています。詳細につきましては ,
表 4.2-2 を参照してください。
( 注意事項 ) 同一割込み番号に 2 つの割込み要因があった場合は , リソースは両方の割込み要求フラグをクリア
します。したがって , 2 要因のどちらか 1 つが EI2OS/μDMAC 機能を使用すると , もう 1 つの割込
み機能は使用できません。該当リソースの割込み要求許可ビットを "0" にしてソフトウェアポーリ
ング処理で対処してください。
*:
■ DMA 転送 , および EI2OS 機能への対応
A/D コンバータ割込みは DMA 転送機能 , および EI2OS 機能に対応しています。DMA また
は EI2OS 機能を使用する場合には , 割込み制御レジスタ (ICR) を共有するほかの割込みを
禁止に設定する必要があります。
339
第 18 章 8/10 ビット A/D コンバータ
18.5
8/10 ビット A/D コンバータの動作
8/10 ビット A/D コンバータは , 逐次比較方式で動作し , 10 ビットの分解能をもって
います。
この 8/10 ビット A/D コンバータには , 変換結果格納用のレジスタが 1 つ (10 ビット )
しかないため , 1 回の変換が終了した時点でデータレジスタ (ADCR1, ADCR2) が更
新されます。このため , 単独では連続変換処理には適しませんので , F2MC-16LX の
μDMAC 機能を使って変換データをメモリに転送しながら変換することを推奨いたし
ます。
8/10 ビット A/D コンバータの動作について説明します。
■ 動作モード
● 単発モード
このモードは, ANSビットとANEビットで設定されたアナログ入力を順に変換し, ANE
ビットで設定された終了チャネルまで変換が終わると A/D は動作を停止します。開始
チャネルと終了チャネルが同じ場合 (ANS=ANE) は 1 チャネル変換動作になります。
例:
ANS=000B, ANE=011B
開始→ AN0 → AN1 → AN2 → AN3 →終了
ANS=010B, ANE=010B
開始→ AN2 →終了
● 連続モード
このモードは , ANS ビットと ANE ビットで設定されたアナログ入力を順に変換してい
き , ANE ビットで設定された終了チャネルまで変換が終わると , ANS のアナログ入力
に戻り A/D 変換動作を続けます。
開始チャネルと終了チャネルが同じ場合 (ANS=AME) は 1 チャネル変換を続けます。
例:
ANS=000B, ANE=011B
開始→ AN0 → AN1 → AN2 → AN3 → AN0 …… 繰返し
ANS=010B, ANE=010B
開始→ AN2 → AN2 → AN2 …… 繰返し
連続モードで変換させると , BUSY ビットに "0" を書き込むまで変換動作を繰り返し続
けます。
BUSY ビットに "0" を書き込むと強制動作停止となります。
強制動作停止した場合は,変換レジスタには変換完了した前のデータが格納されていま
す。
<注意事項>
連続モードを強制動作停止させると , 変換データは強制動作停止前のデータを保持します。
340
第 18 章 8/10 ビット A/D コンバータ
● 停止モード
このモードは , ANS ビットと ANE ビットで設定されたアナログ入力を順に変換してい
きますが , 1 チャネル変換するたびに変換動作を一時停止します。一時停止を解除する
には , もう一度 A/D 起動をかける必要があります。
ANE ビットで設定された終了チャネルまで変換が終わると , ANS で設定されたチャネ
ルのアナログ入力に戻り A/D 変換動作を続けます。
開始チャネルと終了チャネルが同じ場合 (ANS=ANE) は , 1 チャネルを変換します。
例:
ANS=000B, ANE011B
開始 → AN0 →停止→起動→ AN1 →停止→起動 →
→ AN2 →停止→起動→ AN3 →停止→起動→ AN0 …… → 繰返し
ANS=010B, ANE=010B
開始→ AN2 →停止→起動→ AN2 →停止→起動→ AN2 …… 繰返し
このときの A/D 起動要因は , STS1, STS0 で設定されたものだけです。
このモードを使用することによって , 変換開始の同期をかけることが可能となります。
■ μDMAC を使った変換動作
図 18.5-1 に , A/D 変換起動から変換データ転送までの動作フロー例 ( 連続モード ) を示
します。
図 18.5-1 A/D 変換起動から変換データ転送までの動作フロー例 ( 連続モード )
A/D変換起動
サンプル&ホールド
μDMAC起動
変換
データ転送
*
変換終了
割込み処理
割込みクリア
割込み発生
*: μDMAC の設定で決まります。
341
第 18 章 8/10 ビット A/D コンバータ
18.5.1
単発モードにおける μDMAC の起動例
単発モードにおける μDMAC の起動例を示します。
■ 単発モードにおける μDMAC の起動例
以下の条件における起動例を示します。
• アナログ入力 , AN1 ~ AN3 まで変換して終了
• 変換データを "200H" ~ "206H" 番地に順に転送
• ソフトウェアで起動
• 割込みレベルを最高に設定
表 18.5-1 単発モードにおける μDMAC の起動例
項目設定
プログラム例
MOV ICR14,#00H
動作
最高割込み設定 , 割込み許可を設定
MOV BAPL,#00H
MOV BAPM,#02H
変換データの転送番地
MOV BAPH,#00H
μDMAC の設定
A/D コンバータの設定
μDMAC 終了シーケンス
ICR14
BAPL
BAPM
BAPH
ISCS
IOA
DCT
MOV IOA,#48H
DMA コントロールステータスレジスタの設定
( ワードデータ転送 , 転送後 , 転送番地をインクリメントする )
A/D コンバータの結果をレジスタに設定
MOV DCT,#03H
転送回数の設定 (3 回転送 )
MOVW DERL,#8000H
μDMAC イネーブルレジスタ設定 (EN15)
MOV ADCS1,#0BH
単発モード , 開始チャネル AN1, 終了チャネル AN3
MOV ADCS2,#A2H
ソフトウェア起動 , A/D 変換開始
A/D 変換終了判定
MOV DMACS,#18H
WBTC io ADCS2:7
MOV ADCS2,#000H
MOVW DSRL,#0000H
RETI
: 割込み制御レジスタ
: バッファアドレスポインタ下位
: バッファアドレスポインタ中位
: バッファアドレスポインタ上位
: ステータスレジスタ
: アドレスレジスタ
: データカウンタ
リソースの割込みクリア
μDMAC ステータスレジスタのクリア
割込みからの復帰
図 18.5-2 に , 起動例の動作フローを示します。
図 18.5-2 単発モードにおける μDMAC の起動例の動作フロー
起動開始
AN1
割込み→μDMAC転送
AN2
割込み→μDMAC転送
AN3
割込み→μDMAC転送
終了
割込みシーケンス
並行処理
342
第 18 章 8/10 ビット A/D コンバータ
18.5.2
連続モードにおける μDMAC の起動例
連続モードにおける μDMAC の起動例を示します。
■ 連続モードにおける μDMAC の起動例
以下の条件における起動例を示します。
• アナログ入力 (AN3 ~ AN5) を変換して , 各チャネルの変換データを 2 つ取得
• 変換データを "600H" ~ "60CH" 番地に順に転送
• 外部エッジで起動
• 割込みレベルを最高に設定
表 18.5-2 連続モードにおける μDMAC の起動例
項目設定
プログラム例
MOV ICR14,#00H
動作
最高割込み設定 , 割込み許可を設定
MOV BAPL,#00H
MOV BAPM,#06H
変換データの転送番地
MOV BAPH,#00H
μDMAC の設定
A/D コンバータの設定
μDMAC 終了シーケンス
ICR14
BAPL
BAPM
BAPH
ISCS
IOA
DCT
MOV IOA,#48H
DMA コントロールステータスレジスタの設定
( ワードデータ転送 , 転送後 , 転送番地をインクリメントする )
A/D コンバータの結果をレジスタに設定
MOV DCT,#06H
転送回数の設定 (6 回転送 )
MOVW DERL,#8000H
μDMAC イネーブルレジスタ設定 (EN15)
MOV ADCS1,#9DH
単発モード , 開始チャネル AN3, 終了チャネル AN5
MOV ADCS2,#A4H
外部エッジ起動 , A/D 変換開始
A/D 変換終了判定
MOV DMACS,#18H
WBTC io ADCS2:7
MOV ADCS2,#000H
MOVW DSRL,#0000H
RETI
: 割込み制御レジスタ
: バッファアドレスポインタ下位
: バッファアドレスポインタ中位
: バッファアドレスポインタ上位
: ステータスレジスタ
: アドレスレジスタ
: データカウンタ
リソースの割込みクリア
μDMAC ステータスレジスタのクリア
割込みからの復帰
図 18.5-3 に , 起動例の動作フローを示します。
図 18.5-3 連続モードにおける μDMAC の起動例の動作フロー
起動開始
AN3
割込み→μDMAC転送
全6回転送後
AN4
割込み→μDMAC転送
AN5
割込み→μDMAC転送
割込みシーケンス
終了
343
第 18 章 8/10 ビット A/D コンバータ
停止モードにおける μDMAC の起動例
18.5.3
停止モードにおける μDMAC の起動例を示します。
■ 停止モードにおける μDMAC の起動例
以下の条件における起動例を示します。
• アナログ入力 AN3 を一定期間おいて 12 回変換
• 変換データを "600H" ~ "618H" 番地に順に転送
• 外部エッジで起動
• 割込みレベルを最高に設定
表 18.5-3 停止モードにおける μDMAC の起動例
項目設定
プログラム例
MOV ICR14,#00H
動作
最高割込み設定 , 割込み許可を設定
MOV BAPL,#00H
MOV BAPM,#06H
変換データの転送番地
MOV BAPH,#00H
μDMAC の設定
MOV IOA,#48H
DMA コントロールステータスレジスタの設定
( ワードデータ転送 , 転送後 , 転送番地をインクリメントする )
A/D コンバータの結果をレジスタに設定
MOV DCT,#0CH
転送回数の設定 (12 回転送 )
MOVW DERL,#8000H
μDMAC イネーブルレジスタ設定 (EN15)
連続モード , 開始チャネル AN3, 終了チャネル AN3
(1 チャネル変換 )
外部エッジ起動 , A/D 変換開始
A/D 変換終了判定
MOV DMACS,#18H
A/D コンバータの設定
MOV ADCS1,#DBH
MOV ADCS2,#A4H
μDMAC 終了シーケンス
ICR14
BAPL
BAPM
BAPH
ISCS
IOA
DCT
WBTC io ADCS2:7
MOV ADCS2,#000H
MOVW DSRL,#0000H
RETI
: 割込み制御レジスタ
: バッファアドレスポインタ下位
: バッファアドレスポインタ中位
: バッファアドレスポインタ上位
: ステータスレジスタ
: アドレスレジスタ
: データカウンタ
リソースの割込みクリア
μDMAC ステータスレジスタのクリア
割込みからの復帰
図 18.5-4 に , 起動例の動作フローを示します。
図 18.5-4 停止モードにおける μDMAC の起動例の動作フロー
起動開始
AN3
割込み→μDMAC転送
全12回転送後
停止
外部エッジ起動
344
割込みシーケンス
終了
第 18 章 8/10 ビット A/D コンバータ
18.6
8/10 ビット A/D コンバータの変換データ保護機能
8/10 ビット A/D コンバータには変換データ保護機能があり , μDMAC を使って連続
変換と複数のデータを確保できます。
■ 変換データ保護機能
変換データレジスタは 1 つのため , 連続で A/D 変換をすると 1 回の変換が終了した時
点で変換データが格納されて前のデータが失われます。これを保護するために , この
8/10 ビット A/D コンバータには変換が終了しても前データが μDMAC を使ってメモリ
へ転送されていなかった場合に変換データをレジスタへ格納せず, A/D変換を一時停止
する機能があります。
μDMAC で変換データがメモリへ転送された後に一時停止が解除されます。
前データが転送されていれば , 一時停止することなく連続して A/D 変換が行われます。
■ 変換データ保護機能の使用上の注意
この機能は , ADCS2 の INT, INTE ビットに関係しています。
データ保護機能は割込み許可 (INTE=1) 状態でしか動作しません。
割込み禁止 (INTE=0) の場合 , この機能は動作せず , 連続で A/D 変換した場合に次々と
変換データがレジスタに格納されて旧データは失われます。また , 割込み許可 (INTE=1)
状態で μDMAC を使わない場合 , INT ビットはクリアされないためデータ保護機能が働
き , 8/10 ビット A/D コンバータは変換を一時停止状態にします。この場合は , 割込み
シーケンスで INT ビットをクリアすると停止状態が解除されます。
DMA 動作中で A/D 変換が一時停止をしているときに割込みを禁止にすると , A/D 変換
が動作して転送する前に変換データレジスタの内容が変わることがあります。また , 一
時停止中に再起動をかけると待機データが壊れます。
345
第 18 章 8/10 ビット A/D コンバータ
■ 変換データ保護機能の動作フロー (μDMAC を使用時 )
図 18.6-1 に , 変換データ保護機能の動作フローを示します。
図 18.6-1 変換データ保護機能の動作フロー (μDMAC を使用時 )
μDMAC設定
A/Dコンバータの動作停止時のフロー
は省略します。
A/D連続変換起動
* : 一時停止中に再起動をかけると待機中の
変換データは壊れてしまいます。
1回変換終了
データレジスタに格納
2回変換終了
μDMAC終了
μDMAC起動
NO
YES
データレジスタに格納
A/D一時停止*
YES
μDMAC終了
μDMAC起動
3回変換終了
続く
μDMAC起動
すべて変換終了
割込みルーチン
終了
346
A/D停止
NO
第 18 章 8/10 ビット A/D コンバータ
18.7
8/10 ビット A/D コンバータ使用上の注意
8/10 ビット A/D コンバータ使用上の注意について説明します。
■ 外部トリガ / 内部タイマで起動する場合の注意
A/D コンバータを外部トリガ , または内部タイマを使って起動する場合 , 外部トリガお
よび内部タイマの入力値は , インアクティブの状態で設定してください。
STS1, STS0 の設定時は , ADTG=1 入力 , 内部タイマ (PPG1)=0 出力の状態で行ってくだ
さい。
■ アナログ入力端子の扱い
アナログ入力に使用する端子は , 必ずその対応する ADER のビットを "1" に設定して
ください。
図 18.7-1 アナログ入力端子の扱い
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 初期値
アドレス:00001FH ADE7 ADE6 ADE5 ADE4 ADE3 ADE2 ADE1 ADE0 11111111B
R/W
R/W
R/W R/W R/W
R/W
R/W R/W
R/W: リード/ライト可能
ポート 6 の各端子を以下のように制御してください。
• 0: ポート入出力モード
• 1: アナログ入力モード
リセットで "1" になります。
347
第 18 章 8/10 ビット A/D コンバータ
18.8
8/10 ビット A/D コンバータのプログラム例
8/10 ビット A/D コンバータのプログラム例を示します。
■ 8/10 ビット A/D コンバータのプログラム例
プログラム例
設定手順例
AN0 より入力したレベルを A/D 変換する例 ( シングル変換 ,
ソフトトリガ ) を以下に示します。
void AD_sample() {
AD0_INITIAL(); AD0_ch0_start(); }
<初期設定>
・AN0 入力許可
ポートの入力設定
AN0 の A/D 入力許可
レジスタ名 ビット名
void AD0_INITIAL(void) {
IO_DDR6.bit.D60 = 0;
IO_ADER.bit.ADE0 = 1;
DDR6: P60
ADER: ADE0
・A/D0 変換時間
変換時間の設定
サンプリング時間設定 >>
コンペア時間設定 >>
ADCR2
.ST1, ST0
.CT1, CT0
・A/D0 制御
レジスタ名 ビット名
コントロールステータスレジスタ 1
ADCS1
.MD1, MD0
動作モードの選択 >>
開始チャネルの設定 >>
.ANS2 ~ ANS0
終了チャネルの設定 >>
.ANE2 ~ ANE0
コントロールステータスレジスタ 2
割込み要求フラグのクリア >>
IO_ADCR2.byte = 0x70;
IO_ADCS1.byte= 0x00;
ADCS2
.BUSY
.INT
割込み禁止 >>
.INTE
起動トリガ選択 >>
.STS1 ~ STS0
.STRT
/* 設定値:00000000 (bit) */
/* Bit7-6=00: 単発モード */
/* Bit5-3=000: AN0 */
/* Bit2-0=000: AN0 */
IO_ICR14.byte= 0x00;
__EI();
/* Bit15=0: ( 影響なし )*/
/* Bit14=0: 割込み要求クリア */
/* Bit13=0: 割込み禁止 */
/* Bit12=0: */
/* Bit11-10=00: ソフトトリガ */
/* Bit9=0: */
/* Bit8=0: "0" 書込み */
/* 値は任意 */
/* 割込み許可 */
. 予約ビット
ICR14
(CCR)
/* 値は推奨値 */
/* 11 */
/* 10 */
/* 設定値:00000000 (bit) */
・割込み関連
A/D 割込みレベルの設定
/* DDR6 AN0(P60) 入力 */
/* AN0 のみ A/D 入力 */
IO_ADCS2.byte= 0x00;
.PAUS
I フラグの設定
}
< A/D 起動>
・AN0 起動
レジスタ名 ビット名
A/D0 割込み許可
ADCS2
.INT
.INTE
A/D0 のソフト起動
ADCS2
.STRT
void AD0_ch0_start(void)
{
IO_ADCS2.byte= 0x20;
/* Bit14=0: AD0 割込みフラグクリア */
/* Bit13=1: AD0 割込み許可 */
IO_ADCS2.byte= 0xA2;
/* Bit9=1: ソフト起動 */
}
( 続く )
348
第 18 章 8/10 ビット A/D コンバータ
( 続き )
<割込み>
・変換値の読出し
レジスタ名 . ビット名
割込み禁止 , 割込み要求フラグク ADCS2
リア
.INT
.INTE
変換値の読出し
ADCR1, ADCR2
割込み許可
ADCS2
.INTE
__interrupt void AD0_ch0_int(void)
{
/* */
/* Bit14=0: AD0 割込みフラグクリア */
/* Bit13=0: AD0 割込み禁止 ,
IO_ADCS2.bit.INT = 0;
IO_ADCS2.bit.INTE = 0;
[ 任意の格納場所 ] = IO_ADCR1-2;
/* 変換値の格納 */
/* Bit13=1: AD0 割込み許可 */
IO_ADCS2.bit.INTE = 1;
}
<割込みベクタ>
・ベクタテーブルの設定
#pragma intvect AD0_ch0_int 40
( 注意事項 )
事前にクロック関連の設定および , __set_il( 数値 ) の設定が
必要です。「第 4 章 割込み」および「第 6 章 クロック」
を参照してください。
( 注意事項 )
レジスタの記述形式については , 「F2MC-16LX ファミリ MB90980 シリー
ズ用サンプル I/O レジスタファイル 使用手引書」を参照してください。
■ プログラム例以外の設定方法
● 変換モードの種類と設定方法
変換には , 以下の 3 つのモードがあります。
• 1 回だけ変換して終了する単発変換モード
• 指定したチャネル分を変換する連続変換モード
• 指定したチャネル分を変換後 , 一時停止する停止モード
変換モードは , 変換モード選択ビット (ADCS1: MD[1:0]) で設定します。
表 18.8-1 変換モードの種類と設定方法
動作モード
変換モード選択ビット (MD[1:0])
単発変換モードにするには
"00B", "01B" にする
連続変換モードにするには
"10B" にする
停止モードにするには
"11B" にする
● ビット長を指定する方法
変換結果の格納ビット数 (ADCR: S10) で設定します。
表 18.8-2 ビット長を指定する方法
動作モード
変換結果の格納ビット数 (S10)
ADCR1, ADCR2 レジスタに 10 ビットで格納するには
"0" にする
ADCR1, ADCR2 レジスタに 8 ビットで格納するには
"1" にする
● チャネルを選択する方法
変換を開始するチャネルは A/D 変換開始チャネルビット (ADCS1: ANS[2:0]) にて指定
します。
変換を終了するチャネルは A/D 変換終了チャネルビット (ADCS1: ANE[2:0]) にて指定
します。
349
第 18 章 8/10 ビット A/D コンバータ
● アナログ端子入力を有効にする方法
アナログ入力許可レジスタ ADER で設定します。
表 18.8-3 アナログ端子入力を有効にする方法
動作
制御ビット
設定
AN0 端子を入力にするには
(ADER: ADE0)
"1" にする
AN1 端子を入力にするには
(ADER: ADE1)
"1" にする
AN2 端子を入力にするには
(ADER: ADE2)
"1" にする
AN3 端子を入力にするには
(ADER: ADE3)
"1" にする
AN4 端子を入力にするには
(ADER: ADE4)
"1" にする
AN5 端子を入力にするには
(ADER: ADE5)
"1" にする
AN6 端子を入力にするには
(ADER: ADE6)
"1" にする
AN7 端子を入力にするには
(ADER: ADE7)
"1" にする
● A/D コンバータの起動方法を選択する方法
起動トリガには , 以下 の 3 種類があります。
• ソフトトリガ
• リロードタイマの立上り信号
• 外部トリガ入力の立下り信号
起動トリガは , 起動要因選択ビット (ADCS2: STS[1:0]) で設定します。
表 18.8-4 A/D コンバータの起動方法を選択する方法
A/D 起動要因
起動要因選択ビット
(STS[1:0])
ソフトトリガ を指定するには
"00B" にする
外部トリガ / ソフトトリガ を指定するには
"01B" にする
リロードタイマ / ソフトトリガ を指定するには
"10B" にする
外部トリガ / リロードタイマ / ソフトトリガ を指定するには
"11B" にする
A/D コンバータは , 選択した要因の中で最初に発生した要因で起動します。
350
第 18 章 8/10 ビット A/D コンバータ
● A/D コンバータを起動する方法
• ソフトトリガの発生方法
ソフトトリガは A/D 変換ソフトトリガビット (ADCS2: STRT) で設定します
表 18.8-5 ソフトトリガの発生方法
動作
A/D 変換ソフトトリガビット (STRT)
"1" を書き込む
ソフトトリガを発生させるには
• リロードタイマ 0, リロードタイマ 1 での起動方法
リロードタイマの設定と起動が必要です。詳細は「第 15 章 16 ビットリロードタイ
マ」を参照してください。
リロードタイマのアンダフローによって , リロードタイマの出力信号が立ち上がる
と , 起動トリガが発生します。
• 外部トリガによる起動方法
外部トリガは外部トリガ入力端子 ADTG で設定します。
外部トリガ入力端子の設定は , データ方向ビット (DDR9: P93) で設定します。
表 18.8-6 外部トリガによる起動方法
動作
設定
ADTG 端子をトリガ入力にするには
データ方向レジスタの (DDR9: P93) ビットを "0" にする
● 変換終了を確認する方法
変換終了を確認する方法は 2 つあります。
• A/D 変換終了割込み要求ビット (ADCS2: INT) で確認する方法
表 18.8-7 A/D 変換終了割込み要求ビットで確認する方
(INT)
意味
読み出した値が "0" の場合
A/D 変換終了割込み要求なし
読み出した値が "1" の場合
A/D 変換終了割込み要求あり
• 動作確認ビット (ADCS2: BUSY) で確認する方法
表 18.8-8 動作確認ビットで確認する方法
(BUSY)
設定
読み出した値が "0" の場合
A/D 変換終了 ( 停止中 )
読み出した値が "1" の場合
A/D 変換中
351
第 18 章 8/10 ビット A/D コンバータ
● 変換値を読み出す方法
変換値は , データレジスタ ADCR1, ADCR2 から読み出すことができます。
● A/D 変換動作を強制的に停止させる方法
強制停止ビット (ADCS2: BUSY) で設定します。
表 18.8-9 A/D 変換動作を強制的に停止させる方法
動作
強制停止ビット (BUSY)
A/D 変換動作を強制的に停止させるには
"0" を書き込む
強制停止ビット (BUSY) に "1" を書き込んでも , A/D の動作に影響はありません。
● 割込み関連レジスタ
割込みレベル , ベクタの関係は下表のとおりです。
割込みレベル , 割込みベクタの詳細については「第 4 章 割込み」を参照してください。
表 18.8-10 割込みレベル , ベクタの関係
割込みベクタ
割込みレベル設定ビット
#40
アドレス : 0FFFF5CH
割込み制御レジスタ 14 (ICR14)
アドレス : 000BEH
● 割込みの種類
割込み要因は A/D 変換終了のみです。選択のビットはありません。
● 割込みを許可 / 禁止 / クリアする方法
割込み許可は , 割込み要求許可ビット (ADCS2: INTE) で設定します。
表 18.8-11 割込みを許可 / 禁止する方法
制御内容
割込み要求許可ビット (INTE)
割込み要求を禁止するには
"0" にする
割込み要求を許可するには
"1" にする
割込み要求のクリアは , 割込み要求ビット (ADCS2: INT) で設定します。
表 18.8-12 割込み要求をクリアする方法
制御内容
割込み要求をクリアするには
352
割込み要求ビット (INT)
"0" を書き込む
または A/D を起動する
第 19 章
拡張 I/O シリアル
インタフェース
拡張 I/O シリアルインタフェースの概要 , 構成 , レ
ジスタの構成と機能 , 割込みおよび動作について説
明します。
19.1 拡張 I/O シリアルインタフェースの概要
19.2 拡張 I/O シリアルインタフェースの構成
19.3 拡張 I/O シリアルインタフェースのレジスタの構成と
機能
19.4 拡張 I/O シリアルインタフェースの割込み
19.5 拡張 I/O シリアルインタフェースの動作
19.6 拡張 I/O シリアルインタフェースのプログラム例
353
第 19 章 拡張 I/O シリアル インタフェース
19.1
拡張 I/O シリアルインタフェースの概要
拡張 I/O シリアルインタフェースは , 8 ビット× 1 チャネル構成のクロック同期式に
よるデータ転送を行うシリアル I/O インタフェースです。また , データ転送において
LSB ファースト /MSB ファーストの選択ができます。
■ 拡張 I/O シリアルインタフェースの概要
拡張 I/O シリアルインタフェースには , 以下の 2 種類の動作モードがあります。
• 内部シフトクロックモード : 内部クロックに同期してデータ転送を行います。
• 外部シフトクロックモード : 外部端子 (SCK) から入力されるクロックに同期して
データ転送を行います。このモードで外部端子 (SCK) を
共有している汎用ポートを操作することにより, CPUの
命令による転送動作も可能です。
354
第 19 章 拡張 I/O シリアル インタフェース
19.2
拡張 I/O シリアルインタフェースの構成
拡張 I/O シリアルインタフェースは , シリアルモードコントロールステータスレジス
タ , シリアルデータレジスタから構成されています。
■ 拡張 I/O シリアルインタフェースのブロックダイヤグラム
図 19.2-1 に , 拡張 I/O シリアルインタフェースのブロックダイヤグラムを示します。
図 19.2-1 拡張 I/O シリアルインタフェースのブロックダイヤグラム
内 部 デ ー タ バ ス
初期値
D7~D0(LSBファースト)
転送方向選択
(MSBファースト)D0~D7
SIN1,SIN2
読出し
書込み
SDR(シリアルデータレジスタ)
SOT1,SOT2
SCK1,SCK2
シフトクロック
カウンタ
制御回路
内部クロック
2
1
0
SMD2 SMD1 SMD0 SIE
SIR BUSY STOP STRT MODE BDS
SOE SCOE
割込み
要求
内 部 デ ー タ バ ス
■ 拡張 I/O シリアルインタフェースに関する端子
拡張 I/O シリアルインタフェースに関する端子には , SIN1/SOT1/SCK1, SIN2/SOT2/
SCK2 端子の 2 チャネルがあります。SIN1/SIN2 端子がシリアル入力ポート , SOT1/SOT2
端子がシリアル出力ポート , SCK1/SCK2 端子が外部クロック入力ポートとして機能し
ます。SIN1, SCK1, SIN2, SCK2 端子は , 汎用入出力ポート (P90/SIN1, P92/SCK1, P40/
SIN2, P42/SCK2) と拡張 I/O シリアルインタフェースの入力端子として機能を兼用して
おり , SOT1, SOT2 端子は汎用入出力ポート (P91/SOT1, P41/SOT2) と拡張 I/O シリアル
インタフェースの出力端子を兼用しています。
355
第 19 章 拡張 I/O シリアル インタフェース
● SIN1/SCK1/SIN2/SCK2 端子として使用する場合の設定
拡張 I/O シリアルインタフェースで SIN1/SCK1/SIN2/SCK2 を入力として使用する場合
は , P90/SIN1, P92/SCK1, P40/SIN2, P42/SCK2 端子は , ポート方向レジスタにより入力
ポート (DDR9 bit0, bit2 → "0" DDR4 bit0, bit2 → "0") に設定してください。
● SOT1/SOT2 端子として使用する場合の設定
拡張 I/O シリアルインタフェースで SOT1/SOT2 をデータ出力端子として使用する場
合は , シリアルモードコントロールステータスレジスタ 0/1(SMCS0/SMCS1) をシリア
ル出力許可 (SOE bit1 → "1") に設定してください。
■ 拡張 I/O シリアルインタフェースに関する端子のブロックダイヤグラム
図 19.2-2 拡張 I/O シリアルインタフェースに関する端子のブロックダイヤグラム
周辺機能入力
(SIN1/SIN2/SCK1/SCK2)
ポートデータレジスタ(PDR)
周辺機能出力(SOT1/SOT2)
周辺機能出力許可
オープンドレイン制御信号
(P40/P41/P42のみ)
内部データバス
PDRリード
出力ラッチ
P-ch
PDRライト
端子
ポート方向レジスタ(DDR)
方向ラッチ
N-ch
DDRライト
DDRリード
スタンバイ制御(SPL=1)
スタンバイ制御:ストップモード(SPL=1), タイムベースタイマモード(SPL=1), 時計モード(SPL=1)
356
第 19 章 拡張 I/O シリアル インタフェース
19.3
拡張 I/O シリアルインタフェースのレジスタの構成と
機能
拡張 I/O シリアルインタフェースで使用するレジスタの構成と機能について説明し
ます。
■ 拡張 I/O シリアルインタフェースのレジスタ一覧
図 19.3-1 に , 拡張 I/O シリアルインタフェースのレジスタ一覧を示します。
図 19.3-1 拡張 I/O シリアルインタフェースのレジスタ一覧
シリアルモードコントロールステータスレジスタ0/1(SMCS0/SMCS1)
bit15 bit14 bit13 bit12
ch.0 アドレス:000027H SMD2 SMD1 SMD0 SIE
ch.1
00002BH
R/W
R/W
R/W R/W
シリアルモードコントロールステータスレジスタ0/1(SMCS0/SMCS1)
SMCS0/SMCS1
bit7 bit6 bit5 bit4
ch.0 アドレス:000026H ―
―
―
―
ch.1
00002AH
初期値
bit11 bit10 bit9 bit8
SIR BUSY STOP STRT 00000010B
R/W *1 R
R/W R/W *2
bit3
MODE
R/W
シリアルデータレジスタ0/1(SDR0/SDR1)
bit7 bit6 bit5 bit4 bit3
SDR0/SDR1
D7
D6
D5
D4
D3
ch.0 アドレス:000028H
ch.1
00002CH R/W
R/W
R/W R/W R/W
通信プリスケーラコントロールレジスタ0/1(SDCR0/SDCR1)
SDCR0/SDCR1
bit7 bit6 bit5 bit4 bit3
ch.0 アドレス:000029H MD
-
-
- DIV3
ch.1
00002DH
R/W
-
-
-
R/W
R/W: リード/ライト可能
R : リードオンリ
- : 未使用
*1:書込み動作は,"0"のみ可能
*2:書込み動作は,"1"のみ可能,読出し動作は常に"0"
bit2
BDS
R/W
bit1 bit0
SOE SCOE
R/W R/W
----0000B
bit2 bit1 bit0
D2
D1
D0
XXXXXXXXB
R/W
R/W R/W
(不定)
bit2 bit1 bit0
DIV2 DIV1 DIV0
R/W
R/W R/W
0---0000B
357
第 19 章 拡張 I/O シリアル インタフェース
シリアルモードコントロールステータスレジスタ 0/1
(SMCS0/SMCS1)
19.3.1
シリアルモードコントロールステータスレジスタ 0/1(SMCS0/SMCS1) の構成と機能
について説明します。
■ シリアルモードコントロールステータスレジスタ 0/1(SMCS0/SMCS1)
シリアルモードコントロールステータスレジスタ 0/1(SMCS0/SMCS1) は , シリアル I/O
の転送動作モードを制御するレジスタです。
図 19.3-2 に , シリアルモードコントロールステータスレジスタ 0/1(SMCS0/SMCS1) の
ビット構成を示します。
図 19.3-2 シリアルモードコントロールステータスレジスタ 0/1(SMCS0/SMCS1)
シリアルモードコントロールステータスレジスタ0/1(SMCS0/SMCS1)
bit15 bit14 bit13 bit12
ch.0 アドレス:000027H SMD2 SMD1 SMD0 SIE
ch.1
00002BH
R/W
R/W
R/W R/W
シリアルモードコントロールステータスレジスタ0/1(SMCS0/SMCS1)
SMCS0/SMCS1
bit7 bit6 bit5 bit4
ch.0 アドレス:000026H ―
―
―
―
ch.1
00002AH
初期値
bit11 bit10 bit9 bit8
SIR BUSY STOP STRT 00000010B
R/W *1 R
R/W R/W *2
bit3
MODE
R/W
bit2
BDS
R/W
bit1 bit0
SOE SCOE
R/W R/W
----0000B
R/W: リード/ライト可能
*1:書込み動作は,"0"のみ可能
*2:書込み動作は,"1"のみ可能,読出し動作は常に"0"
以下に , シリアルモードコントロールステータスレジスタ 0/1(SMCS0/SMCS1) の各ビッ
トの機能について説明します。
[bit15 ~ bit13] SMD2 ~ SMD0:シフトクロック選択ビット
これらのビットは , シリアルシフトクロックモードを選択します。
表 19.3-1 に , シリアルシフトクロックモードの設定内容を示します。
表 19.3-1 シリアルシフトクロックモードの設定内容
SMD2 SMD1 SMD0
φ=25MHz φ=16MHz
div=8
div=8
φ=8MHz
div=4
φ=4MHz
div=4 分周値
推奨マシン
クロック
MD DIV3 DIV2 DIV1 DIV0 サイクル
(Machine clock)
Div
0
0
0
1.56MHz
1MHz
1MHz
500kHz
2
1
1
0
0
0
0
2MHz
0
0
1
781.3kHz
500kHz
500kHz
250kHz
4
2
1
0
0
0
1
4MHz
0
1
0
195.3kHz
125kHz
125kHz
62.5kHz
16
3
1
0
0
1
0
6MHz
0
1
1
97.7kHz
62.5kHz
62.5kHz
31.2kHz
32
4
1
0
0
1
1
8MHz
1
0
0
48.8kHz
31.2kHz
31.2kHz
15.6kHz
64
5
1
0
1
0
0
10MHz
1
0
1
外部シフトクロックモード
6
1
0
1
0
1
12MHz
1
1
0
予約
7
1
0
1
1
0
14MHz
1
1
1
予約
8
1
0
1
1
1
16MHz 以上
358
第 19 章 拡張 I/O シリアル インタフェース
リセットにより"000B"に初期化されます。このビットの転送中の書換えは禁止です。
シフトクロックは , 内部シフトクロック 5 種類と , 外部シフトクロックが選択でき
ます。SMD2, SMD1, SMD0=110B, 111B は予約ですので設定しないでください。
クロック選択で SCOE=0 とし , SCK1, SCK2 端子を共有しているポートを操作する
ことによって , 命令ごとにシフト動作をさせることもできます。
[bit12] SIE:シリアル I/O 割込み許可ビット
このビットは , シリアル I/O の割込み要求を , 下表に示すように制御します。
動作
SIE
0
1
シリアル I/O 割込み禁止
シリアル I/O 割込み許可
( 初期値 )
• リセットにより "0" に初期化されます。
• このビットは , 読出し / 書込みが可能です。
[bit11] SIR:シリアル I/O 割込み要求フラグ
このビットは , シリアルデータの転送が終了すると "1" にセットされ , 割込み許可時
(SIE=1) にこのビットが "1" になると , CPU へ割込み要求が発生します。クリア条件
は , MODE ビットの設定によって異なります。
• MODE ビットが "0" のとき , SIR ビットへの "0" 書込みによってクリアされます。
• MODE ビットが "1" のとき , SDR の読出し , または書込み動作によってクリアさ
れます。
• MODE ビットの値にかかわらずリセット , または STOP ビットへの "1" 書込み動
作によってクリアされます。
• このビットに "1" を書き込んでも意味がありません。
• リードモディファイライト (RMW) 系命令の読出し時は , 常に "1" が読み出され
ます。
[bit10] BUSY:転送状態表示ビット
このビットは , シリアル転送が実行中か否かを示すビットです。
動作
BUSY
0
1
停止 , またはシリアルデータレジスタリード / ライト待機状態
シリアル転送状態
( 初期値 )
• リセットにより "0" に初期化されます。
• このビットは , 読出しのみ可能です。
[bit9] STOP:ストップビット
このビットは , シリアル転送を強制的に中断させるビットです。このビットを "1"
にすると停止状態になります。
動作
STOP
0
1
通常動作
STOP=1 による転送停止
( 初期値 )
• リセットにより "1" に初期化されます。
• このビットは , 読出し / 書込みが可能です。
359
第 19 章 拡張 I/O シリアル インタフェース
[bit8] STRT:スタートビット
このビットは , シリアル転送を起動するためのビットです。停止状態で "1" を書き
込むことによって転送が開始されます。シリアル転送動作中およびシリアルシフト
レジスタリード / ライト待機中の "1" の書込みは無視されます。
• "0" の書込みは意味がありません。
• 読出し時には , 常に "0" が読み出されます。
[bit3] MODE:シリアルモード選択ビット
このビットは , 停止状態からの起動条件を選択します。ただし , 動作中の書換えは
禁止です。
動作
MODE
0
1
STRT=1 にすることにより起動します。
( 初期値 )
シリアルデータレジスタの読出し / 書込みにより起動します。
• リセットによって "0" に初期化されます。
• 読出し / 書込みが可能です。
• μDMA を起動する際には , "1" にしておいてください。
[bit2] BDS:転送方向選択ビット
このビットは , シリアルデータ入出力時に最下位ビット側から先に転送するか (LSB
ファースト ), 最上位ビット側から先に転送するか (MSB ファースト ) を選択します。
動作
BDS
0
1
LSB ファースト
MSB ファースト
( 初期値 )
• リセットによって "0" に初期化されます。
• このビットは , 読出し / 書込み可能です。
<注意事項>
転送方向の選択は , SDR にデータを書き込む前に設定しておいてください。
[bit1] SOE:シリアル出力許可ビット
このビットは , シリアル I/O 用出力外部端子 (SOT1, SOT2) の出力を制御します。
動作
SOE
0
1
汎用ポート端子
シリアルデータ出力
( 初期値 )
• リセットによって "0" に初期化されます。
• このビットは , 読出し / 書込みが可能です。
360
第 19 章 拡張 I/O シリアル インタフェース
[bit0] SCOE:シフトクロック出力許可ビット
このビットは,シフトクロック用入出力外部端子(SCK1, SCK2)の出力を制御します。
動作
SCOE
0
1
汎用ポート端子 , 命令ごとの転送時
シフトクロック出力端子
( 初期値 )
外部シフトクロックモードで命令ごとに転送を行うときは , "0" に設定してくださ
い。
• リセットによって , "0" に初期化されます。
• このビットは , 読出し / 書込みが可能です。
361
第 19 章 拡張 I/O シリアル インタフェース
19.3.2
シリアルデータレジスタ 0/1(SDR0/SDR1)
シリアルデータレジスタ 0/1(SDR0/SDR1) の構成と機能について説明します。
■ シリアルデータレジスタ 0/1(SDR0/SDR1)
図 19.3-3 に , シリアルデータレジスタ 0/1(SDR0/SDR1) のビット構成を示します。
図 19.3-3 シリアルデータレジスタ 0/1(SDR0/SDR1) のビット構成
シリアルデータレジスタ0/1(SDR0/SDR1)
初期値
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
SDR0/SDR1
D6
D5
D4
D3
D2
D1
D0
XXXXXXXXB
ch.0 アドレス:000028H D7
ch.1
00002CH R/W
R/W
R/W R/W R/W
R/W
R/W R/W
(不定)
R/W: リード/ライト可能
シリアルデータレジスタ 0/1(SDR0/SDR1) は , シリアル I/O の転送データを保持するシ
リアルデータレジスタです。
転送中の SDR への書込みおよび読出しは禁止です。
362
第 19 章 拡張 I/O シリアル インタフェース
通信プリスケーラコントロールレジスタ 0/1
(SDCR0/SDCR1)
19.3.3
通信プリスケーラコントロールレジスタ 0/1(SDCR0/SDCR1) の構成と機能について
説明します。
■ 通信プリスケーラコントロールレジスタ 0/1(SDCR0/SDCR1)
図 19.3-4 に , 通信プリスケーラコントロールレジスタ 0/1(SDCR0/SDCR1) のビット構
成を示します。
図 19.3-4 通信プリスケーラコントロールレジスタ 0/1(SDCR0/SDCR1) のビット構成
通信プリスケーラコントロールレジスタ0/1(SDCR0/SDCR1)
SDCR0/SDCR1
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
ch.0 アドレス:000029H MD
-
-
- DIV3 DIV2 DIV1 DIV0
ch.1
00002DH
R/W
-
-
-
R/W
R/W
R/W R/W
R/W: リード/ライト可能
- : 未使用
初期値
0---0000B
以下に , 通信プリスケーラコントロールレジスタ 0/1(SDCR0/SDCR1) の各ビットの機能
を説明します。
[bit7] MD:通信プリスケーラ動作許可ビット
このビットは , 通信プリスケーラの動作を許可するビットです。
動作
SCOE
0
1
通信プリスケーラは停止します。
通信プリスケーラは動作します。
[bit3 ~ bit0] DIV3 ~ DIV0:マシンクロック分周比選択ビット
これらのビットは , マシンクロックの分周比を決定します
DIV3 ~ DIV0
分周比
0000B
1 分周
0001B
2 分周
0010B
3 分周
0011B
4 分周
0100B
5 分周
0101B
6 分周
0110B
7 分周
0111B
8 分周
<注意事項>
分周比を変えた場合には , クロックの安定時間として 2 分周分の時間をおいてから通信を
行ってください。
363
第 19 章 拡張 I/O シリアル インタフェース
19.4
拡張 I/O シリアルインタフェースの割込み
拡張 I/O シリアルインタフェースの割込みは , データの転送終了時に発生します。
拡張 I/O シリアルインタフェースの割込みでは , DMA 転送および拡張インテリジェ
ント I/O サービス (EI2OS) を起動することができます。
■ 拡張 I/O シリアルインタフェースの割込み
表 19.4-1 に , 拡張 I/O シリアルインタフェースの割込み制御ビットと割込み要因を示し
ます。
表 19.4-1 拡張 I/O シリアルインタフェースの割込み制御ビットと割込み要因
シリアル I/O 割込み
割込み要求フラグ
SMCS0:SIR (bit11)
SMCS1:SIR (bit11)
ch.0
ch.1
割込み要求出力許可ビット
SMCS0:SIE (bit12) ch.0
SMCS1:SIE (bit12) ch.1
割込み発生要因
シリアルデータの転送終了
■ 拡張 I/O シリアルインタフェースに関する割込み要因
拡張 I/O シリアルインタフェースの割込みはデータの転送終了時に発生します。シリ
アルモードコントロールステータスレジスタ (SMCS) の SIE (bit12) フラグがセットさ
れ , SIE(bit11): 割込み許可が "1" の場合に CPU へ割込み要求を行います。
■ 拡張 I/O シリアルインタフェースの割込みと DMA 転送および EI2OS
表 19.4-2 に , ソフトウェア割込みを除く割込み要因と割込みベクタおよび割込み制御
レジスタの関係を示します。
表 19.4-2 割込み要因と割込みベクタ / 割込み制御レジスタ
割込みベクタ
EI2OS の
クリア
μDMAC
チャネル番号
番号
SIO1
○
13
#37
アドレス
FFFF68H
SIO2
○
14
#38
FFFF64H
割込み要因
割込み制御レジスタ
番号
アドレス
ICR13
0000BDH
○ : 割込み要求フラグはクリアされます。
( 注意事項 ) 同一割込み番号に 2 つの割込み要因があった場合は , リソースは両方の割込み要求フラグをクリア
します。したがって , 2 要因のどちらか 1 つが EI2OS/μDMAC 機能を使用すると , もう 1 つの割込
み機能は使用できません。該当リソースの割込み要求許可ビットを "0" にして , ソフトウェアポー
リング処理で対処してください。
■ DMA 転送 , および EI2OS 機能への対応
拡張 I/O シリアルインタフェースは DMA 転送機能 , および EI2OS 機能に対応していま
す。DMA または EI2OS 機能を使用する場合には , 割込み制御レジスタ (ICR) を共有す
るほかの割込みを禁止に設定する必要があります。
364
第 19 章 拡張 I/O シリアル インタフェース
19.5
拡張 I/O シリアルインタフェースの動作
拡張 I/O シリアルインタフェースは , シリアルモードコントロールステータスレジス
タ (SMCS) およびシリアルデータレジスタ (SDR) によって構成され , 8 ビットのシ
リアルデータの入出力に使用します。
拡張 I/O シリアルインタフェースの動作について説明します。
■ 拡張 I/O シリアルインタフェースの動作概要
シリアルデータの入出力は , 入力 , 出力それぞれが以下のように動作します。
● シリアルデータの入力
シリアルシフトクロック ( 外部クロック , 内部クロック ) の立上りに同期してシリアル
入力端子 (SIN1 端子 ) から SDR( シリアルデータレジスタ ) に入力されます。
シフトの方向 (MSB からの転送 , または LSB からの転送 ) は , SMCS( シリアルモード
コントロールステータスレジスタ ) の方向指定ビット (BDS) により指定します。
転送が終了すると , シリアルモードコントロールステータスレジスタ (SMCS) の MODE
ビットによって停止状態 , またはデータレジスタリード / ライト待機状態に入ります。
各々の状態から転送状態に移るには , それぞれ次の設定を行います。
• 停止状態から復帰するときは , STOP ビットに "0", STRT ビットに "1" を書き込んで
ください (STOP と STRT は同時設定が可能です )。
• 待機状態から復帰するときは , データレジスタの読出し , または書込みをしてくだ
さい。
● シリアルデータの出力
シフトレジスタの内容がシリアルシフトクロック ( 外部クロック , 内部クロック ) の立
下りに同期してシリアル出力端子 (SOT1 端子 ) から出力されます。
365
第 19 章 拡張 I/O シリアル インタフェース
シフトクロックモード
19.5.1
シフトクロックには , 内部シフトクロックモードおよび外部シフトクロックモードの
2 種類があり , SMCS の設定で指定します。モードの切換えは , シリアル I/O が停止
した状態で行ってください。停止状態は , BUSY ビットを読み出すことによって確
認できます。
■ 内部シフトクロックモード
内部クロックを使用し,同期タイミング出力用としてデューティ比50%のシフトクロッ
クが SCK 端子より出力されます。
データが , 1 クロックごとに 1 ビット転送されます。
転送の速度は , 次式によって算出できます。
転送速度 (S) =
A
内部クロックマシンサイクル (A)
A は , SMCS の SMD ビットで選択される以下の分周比です。
(φ ÷ div)/2, (φ ÷ div)/22, (φ ÷ div)/24, (φ ÷ div)/25, (φ ÷ div)/26
■ 外部シフトクロックモード
SCK 端子から入力される外部シフトクロックに同期して , データが 1 クロックごとに
1 ビット転送されます。
転送速度は , DC から 1/(8 マシンサイクル ) まで可能です。例えば , 1 マシンサイクル =
62.5ns のときは , 2MHz まで可能となります。
命令ごとに転送することもできます。また , 以下の設定をすることによっても実現でき
ます。
• 外部シフトクロックモードを選択し , SMCS の SCOE ビットを "0" に設定します。
• SCK 端子を共有しているポートの方向レジスタに "1"を書き込み ,ポートを出力モー
ドに設定します。
以上の設定をした後 , ポートデータレジスタ (PDR) に "1", "0" を書き込むと , SCK 端子
に出力されるポートの値を外部クロックとして取り込み , 転送動作を行います。シフト
クロックは , "H" から開始させてください。
<注意事項>
シリアル I/O 動作中の SMCS, SDR への書込みは禁止です。
366
第 19 章 拡張 I/O シリアル インタフェース
19.5.2
シリアル I/O の動作状態
シリアル I/O の動作状態として , STOP 状態 , 停止状態 , SDR のリード / ライト待機
状態および転送状態の 4 種類の状態があります。
■ シリアル I/O の動作状態
● STOP 状態
RESET 時 , または SMCS の STOP ビットに "1" が書き込まれたときにシフトカウンタ
は初期化され , SIR=0 となります。
STOP 状態からの復帰は , STOP=0, STRT=1( 同時設定可能 ) とすることによって行われ
ます。STOP ビットは STRT ビットよりも優先度の高いビットですので , STOP=1 のと
き STRT=1 としても転送動作は行われません。
● 停止状態
MODE ビットが "0" のとき , 転送が終了したことによって SMCS が BUSY=0, SIR=1 と
なり , カウンタが初期化されて停止状態に入ります。停止状態からの復帰は , STRT=1
により行われ , 転送動作が再開されます。
● シリアルデータレジスタリード / ライト待機状態
SMCS の MODE ビットが "1" のとき , シリアル転送が終了すると , BUSY=0, SIR=1 と
なりシリアルデータレジスタリード / ライト待機状態に入ります。割込み許可レジス
タが許可状態であれば , 本ブロックより割込み信号が出力されます。
リード / ライト待機状態からの復帰は , シリアルデータレジスタが読み出されたり , 書
き込まれたりすると , BUSY=1 となり転送動作が再開されます。
● 転送状態
BUSY=1 はシリアル転送を行っている状態を示しています。MODE ビットにより , そ
れぞれ停止状態およびリード / ライト待機状態に遷移します。
図 19.5-1 に I/O 拡張シリアルインタフェースの動作遷移図を示し , 図 19.5-2 にシリアル
データレジスタの読出し / 書込みの概念図を示します。
図 19.5-1 I/O 拡張シリアルインタフェースの動作遷移図
リセット
転送終了
STRT=0,BUSY=0
MODE=0
MODE=0
STOP=0
&
&
STOP=0
STRT=1
&
終了
転送動作
STRT=1,BUSY=1
STOP=0
&
STRT=0
STOP=1
STOP=1
STOP
STRT=0,BUSY=0
STOP=0
&
STRT=1
MODE=1 &終了& STOP=0
SDRのリード/ライト &
MODE=1
STOP=1
シリアルデータレジスタ
リード/ライト待機
STRT=1,BUSY=0
MODE=1
367
第 19 章 拡張 I/O シリアル インタフェース
図 19.5-2 シリアルデータレジスタの読出し / 書込みの概念図
データバス
読出し
SIN
書込み
割込み出力
I/O拡張
データバス
SOT
読出し
書込み
CPU
(1)
(2)
シリアルインタフェース
割込み入力
データバス 割込みコントローラ
(1) MODE=1 のとき , シフトクロックカウンタによって転送終了し , SIR=1 となって読
出し / 書込み待機状態に入ります。SIE ビットが "1" であれば , 割込み信号を発生
します。ただし , SIE がインアクティブのときや STOP ビットへ "1" を書き込むこ
とによる転送中断のときは , 割込み信号は発生しません。
(2) シリアルデータレジスタが読出し / 書込みされると , 割込み要求はクリアされ , シ
リアル転送が開始されます。
368
第 19 章 拡張 I/O シリアル インタフェース
19.5.3
シフト動作のスタート / ストップタイミングと入出力
のタイミング
シフト動作のスタート / ストップタイミングと入出力のタイミングについて説明しま
す。
■ シフト動作のスタート / ストップタイミングと入出力のタイミング
• スタート
SMCS の STOP ビットを "0", STRT ビットを "1" に設定します。
• ストップ
転送終了によって停止する場合と , STOP=1 によって停止する場合があります。
- STOP=1 による停止 :MODE ビットにかかわらず , SIR=0 のまま停止します。
- 転送終了による停止 :MODE ビットにかかわらず , SIR=1 となり停止します。
BUSY ビットは , MODE ビットにかかわらず , シリアル転送状態の場合 "1" となり , 停
止状態 , またはリード / ライト待機状態の場合 "0" となります。転送状態を確認したい
ときは , このビットを読み出してください。
以下に , 各モードにおける転送動作のタイミングチャートを示します。図中の DO7 ~
DO0 は , 出力データを示します。
● 内部シフトクロックモード (LSB ファースト )
図 19.5-3 シフト動作のスタート / ストップタイミング ( 内部クロック )
SCK1,SCK2
STRT
"1"出力
(転送スタート)
MODE=0のとき
(転送終了)
BUSY
SOT1,SOT2
DO0
DO7 (データ保持)
● 外部シフトクロックモード (LSB ファースト )
図 19.5-4 シフト動作のスタート / ストップタイミング ( 外部クロック )
SCK1,SCK2
STRT
(転送スタート)
MODE=0のとき
(転送終了)
BUSY
SOT1,SOT2
DO0
DO7 (データ保持)
369
第 19 章 拡張 I/O シリアル インタフェース
● 外部シフトクロックモードで命令シフトを行った場合 (LSB ファースト )
命令シフトでは , PDR の SCK に対応するビットに "1" が書き込まれたとき "H" が出力
され , "0" が書き込まれたとき "L" が出力されます ( ただし , 外部シフトクロックモー
ド選択で SCOE=0 のとき )。
図 19.5-5 外部シフトクロックモードで命令シフトを行った場合
SCK1,SCK2
PDRのSCKビット"0"
STRT
PDRのSCKビット"1"
PDRのSCKビット"0"
(転送終了)
MODE=0のとき
BUSY
SOT1,SOT2
DO6
DO7 (データ保持)
● STOP=1 による停止 (LSB ファースト , 内部クロック時 )
図 19.5-6 STOP ビットを "1" とした場合のストップタイミング
SCK1,SCK2
(転送スタート)
STRT
"1"出力
(転送終了)
MODE=0のとき
BUSY
STOP
DO3
SOT1,SOT2
DO4
DO5 (データ保持)
■ シリアルデータ転送中の動作
シリアルデータの転送中は , シフトクロックの立下りでシリアル出力端子 (SOT2) から
のデータが出力され , 立上りでシリアル入力端子 (SIN) のデータが入力されます。
● LSB ファースト (BDS ビットが "0" のとき )
図 19.5-7 入出力のシフトタイミング (LSB ファースト )
SCK1,SCK2
SIN1,SIN2
DI0
DI1
SOT1,SOT2
DO0
DO1
SIN入力
DI2
DI3
DI4
SOT出力
DO2
DO3
DO4
DI5
DI6
DI7
DO5
DO6
DO7
● MSB ファースト (BDS ビットが "1" のとき )
図 19.5-8 入出力のシフトタイミング (MSB ファースト )
SCK1,SCK2
370
SIN1,SIN2
DI7
DI6
SOT1,SOT2
DO7
DO6
SIN入力
DI5
DI4
DI3
SOT出力
DO5
DO4
DO3
DI2
DI1
DI0
DO2
DO1
DO0
第 19 章 拡張 I/O シリアル インタフェース
割込み機能
19.5.4
拡張 I/O シリアルインタフェースは , CPU に対し割込み要求を発生します。
■ 拡張 I/O シリアルインタフェースの割込み機能
データの転送終了時に割込みフラグである SIR ビットがセットされ , 割込みを許可す
る SMCS の SIE ビットが "1" のとき , CPU へ割込み要求が出力されます。
図 19.5-9 に , 割込み信号の出力タイミングを示します。
図 19.5-9 割込み信号の出力タイミング
SCK1,SCK2
(転送終了)
BUSY
SIR
(注意事項) MODE=1のとき
SIE=1
SDRのRD/WR
SOT1,SOT2
DO6
DO7 (データ保持)
371
第 19 章 拡張 I/O シリアル インタフェース
19.6
拡張 I/O シリアルインタフェースのプログラム例
拡張 I/O シリアルインタフェースのプログラム例を示します。
■ 拡張 I/O シリアルインタフェースのプログラム例
表 19.6-1 拡張 I/O シリアルインタフェースのプログラム例
設定手順例
プログラム例
1 バイトのデータを sio1(ch.0) で送信する。
void sio_sample(void)
{
sio_initial();
sio_start();
}
<初期設定>
void sio_initial(void)
{
・SIO の制御
レジスタ名 . ビット名
モードレジスタの設定
シフトクロックの選択≫
SMCS0
割込み許可の設定≫
.SMD2 ~ .SMD0
.SIE
割込み要求の設定≫
.SIR
転送状態表示≫
.BUSY
SOT1,SOT2 端子の設定≫
.SOE
SCK1,SCK2 端子の設定≫
.SCOE
制御レジスタの設定
通信プリスケーラの設定≫
分周比の設定 >>
IO_SMCS0.word = 0x3003; /* 設定値 =0011_0000_0000_0011 */
SDCR0
.MD
IO_SDCR0.byte = 0x83;
.DIV3 ~ .DIV0
/* bit15-13 = 001
/* bit12 = 1
4 分周 */
割込み許可 */
/* bit11 = 0
/* bit10 = 0
割込み要求クリア */
R/W 待機状態 */
/* bit1 = 1
/* bit0 = 1
SOE シリアル出力許可 */
SCOE シフトクロック出力許可 */
/* 設定値 =1000_0011 */
/* bit15 = 1
通信プリスケーラ許可 */
/* bit11-8 = 11
4 分周 */
・割込み関連
割込みレベルの設定
I フラグの設定
ICR13
(CCR)
IO_ICR13.byte = 0x10;
__EI();
/* SIO 送信完了割込みレベル設定 ( 値は任意 ) */
/* 割込み許可 */
}
<起動>
・SIO 起動
任意のデータを送信
SIO 動作起動
レジスタ名 . ビット名
SDR0
SMCS0 .STRT
<割込み>
・送信割込み処理
レジスタ名 . ビット名
割込みフラグ初期化
SMCS0 .SIR
void sio_start(void)
{
IO_SDR0 = 0xaa;
IO_SMCS0.bit.STRT = 1;
}
__interrupt void sio_int(void)
{
IO_SMCS0.bit.SIR = 0;
}
/* 任意のデータ値を送信する。 */
/* bit1 = 1
SIO 動作許可 */
/* bit0 = 0
SIR 割込みフラグ初期化 */
<割込みベクタ>
・ベクタテーブルの設定
#pragma intvect sio_int 37
( 注意事項 )
事前にクロック関連の設定および __set_il( 数値 ) の
設定が必要です。「第 4 章 割込み」および「第 6 章
クロック」を参照してください。
( 注意事項 )
レジスタの記述形式については , 「F2MC-16LX ファミリ MB90980 シリーズ用サ
ンプル I/O レジスタファイル 使用手引書」を参照してください。
372
第 19 章 拡張 I/O シリアル インタフェース
■ プログラム例以外の設定方法
● 動作クロックの種類と選択方法
動作クロックには内蔵タイマと外部クロックの 2 種類があります。
シフトクロック選択ビット (SMCS0: SMD[2:0], SMCS1: SMD[2:0]) で設定します。
表 19.6-2 動作クロックの種類と選択方法
制御内容
シフトクロック選択ビット (SMD[2:0])
内蔵タイマを選択するには
"000B" ~ "100B" にする
外部クロックを選択するには
"101B" にする
● SCK 端子 , SIN 端子 , SOT 端子を制御する方法
SIO1, SIO2 で設定します。
表 19.6-3 SCK 端子 , SIN 端子 , SOT 端子を制御する方法
動作
SIO1
SIO2
SCK 端子を入力にするには
DDR9: P92 = 0
DDR4: P42 = 0
SCK 端子を出力にするには
SMCS0: SCOE = 1
SMCS1: SCOE = 1
SIN 端子入力にするには
DDR9: P90 = 0
DDR4: P40 = 0
SOT 端子を出力にするには
SMCS0: SOE = 1
SMCS1: SOE = 1
● SIO の動作を許可 / 停止する方法
スタートビット (SMCS0: STRT, SMCS1: STRT) で設定します。
表 19.6-4 SIO の動作を許可する方法
制御内容
スタートビット (STRT)
シリアル転送起動
"1" にする
ストップビット (SMCS0: STOP, SMCS1: STOP) で設定します。
表 19.6-5 SIO の動作を停止する方法
制御内容
ストップビット (STOP)
シリアル転送停止
"1" にする
373
第 19 章 拡張 I/O シリアル インタフェース
● 転送方向の設定方法
転送方向選択ビット (SMCS0: BDS, SMCS1: BDS) で設定します。
転送方向はどの動作モードでも , LSB/MSB の選択が可能です。
表 19.6-6 転送方向の設定方法
制御内容
転送方向選択ビット (BDS)
LSB 転送 ( 最下位ビットから ) にするには
"0" にする
MSB 転送 ( 最上位ビットから ) にするには
"1" にする
● 割込み関連レジスタ
表 19.6-7 に , SIO 番号 , 割込みレベル , ベクタの関係は示します。
割込みレベル , 割込みベクタの詳細については「第 4 章 割込み」を参照してください。
表 19.6-7 SIO 番号 , 割込みレベル , ベクタの関係
割込みベクタ
割込みレベル設定ビット
SIO1
#37
アドレス : 0FFFF68H
割込みレベルレジスタ (ICR13)
アドレス : 000BDH
SIO2
#38
アドレス : 0FFFF64H
割込みレベルレジスタ (ICR13)
アドレス : 000BDH
● 割込みの種類
割込みは 1 種類です。シリアルデータの転送終了で発生します。
● 割込みを許可 / 禁止 / クリアする方法
割込みの許可 / 禁止の設定は , 割込み要求許可ビット (SMCS0: SIE, SMCS1: SIE) で設定
します。
表 19.6-8 割込みを許可 / 禁止する方法
制御内容
割込み要求許可ビット (SIE)
割込み要求を禁止するには
"0" にする
割込み要求を許可するには
"1" にする
割込み要求のクリアは , 割込み要求フラグ (SMCS0: SIR, SMCS1: SIR) で設定します。
表 19.6-9 割込み要求をクリアする方法
374
制御内容
割込み要求フラグ (SIR)
割込み要求をクリアするには
"0" にする
第 20 章
UART
UART の概要 , 構成 , レジスタの構成と機能 , 割込
み , 動作 , 使用上の注意およびプログラム例につい
て説明します。
20.1 UART の概要
20.2 UART の構成
20.3 UART のレジスタの構成と機能
20.4 UART の割込み
20.5 UART の動作
20.6 UART 使用上の注意
20.7 UART のプログラム例
375
第 20 章 UART
20.1
UART の概要
UART は , 非同期 ( 調歩同期 ) 通信または CLK 同期通信を行うためのシリアル I/O
ポートです。
■ UART の特長
UART には , 以下の特長があります。
• 全二重ダブルバッファ搭載
• 非同期 ( 調歩同期 ), CLK 同期通信 ( スタートビット / ストップビットなし ) が可能
• マルチプロセッサモードのサポート
• 専用ボーレートジェネレータ内蔵
- 非同期 :76923/38461/19230/9615/500k/250kbps
- CLK 同期 :16M/8M/4M/2M/1M/500kbps
• 外部クロックによる自由なボーレートの設定が可能
• PPG1 から供給される内部クロックを利用可能
• データ長 :7 ビット長 ( 非同期ノーマルモードのみ )/8 ビット長
• マスタ / スレーブ型通信機能 ( マルチプロセッサモード時 ) :1( マスタ ) 対 n( スレー
ブ ) 間の通信が可能
• エラー検出機能 ( パリティ , フレーミング , オーバラン )
• 転送信号 :NRZ 符号
• DMA のサポート ( 受信 / 送信対応 )
376
第 20 章 UART
20.2
UART の構成
UART は , シリアルモードレジスタ , シリアルコントロールレジスタ , シリアルス
テータスレジスタと通信プリスケーラコントロールレジスタ , シリアルインプット /
アウトプットレジスタで構成されます。
■ UART のブロックダイヤグラム
図 20.2-1 に , UART のブロックダイヤグラムを示します。
図 20.2-1 UART のブロックダイヤグラム
制御信号
受信割込み(CPUへ)
専用ボーレートジェネレータ
PPG1(内部接続)
SCK0
クロック
選択回路
外部クロック
送信クロック
送信割込み(CPUへ)
受信クロック
SIN0
受信制御回路
送信制御回路
スタートビット
検出回路
送信スタート
回路
受信ビット
カウンタ
送信ビット
カウンタ
受信パリティ
カウンタ
送信パリティ
カウンタ
SOT0
受信状態判定回路
受信用シフトレジスタ
DMAC用受信
エラー発信信号
(CPUへ)
送信用シフトレジスタ
受信制御回路
送信開始
シリアルインプット
レジスタ(SIDR)
シリアルアウトプット
レジスタ(SODR)
F2MC-16LX バス
シリアル
モード
レジスタ
(SMR)
MD1
PEN
PE
MD0
P
ORE
CS2
CS1
CS0
シリアル
コントロール
レジスタ
(SCR)
SBL
CL
A/D
REC
シリアル
ステータス
レジスタ
(SSR)
FRE
RDRF
TDRE
BDS
SCKE
REX
RIE
SOE
TXE
TIE
制御信号
377
第 20 章 UART
■ UART に関する端子
UART に関する端子は , SIN0/SOT0/SCK0 端子があります。SIN0 端子がシリアル入力
ポート , SOT0 端子がシリアル出力ポート , SCK0 端子が外部クロック入力ポートして
機能します。SIN0, SCK0 端子は , 汎用入出力ポート (P70/SIN0, P72/SCK0) と , UART の
入力端子として機能を兼用しており , SOT0 端子は , 汎用入出力ポート (P71/SOT0) と
UART の出力端子を兼用しています。
● SIN0/SCK0 端子として使用する場合の設定
UART で SIN0/SCK0 を入力端子として使用する場合は , P70/SIN0, P72/SCK0 端子は ,
ポート方向レジスタにより入力ポート (DDR7 bit0, bit2 → "0" ) に設定してください。
● SOT0 端子として使用する場合の設定
UART で SOT0 をデータ出力端子として使用する場合は , シリアルモードレジスタ
(SMR) をシリアルデータ出力 (SOE bit0 → "1") に設定してください。
■ UART に関する端子のブロックダイヤグラム
図 20.2-2 UART に関する端子のブロックダイヤグラム
周辺機能入力
(SIN0/SCK0)
ポートデータレジスタ(PDR)
周辺機能出力(SOT0)
周辺機能出力許可
オープンドレイン制御信号
(P70/P71/P72のみ)
内部データバス
PDRリード
出力ラッチ
P-ch
PDRライト
端子
ポート方向レジスタ(DDR)
方向ラッチ
N-ch
DDRライト
DDRリード
スタンバイ制御(SPL=1)
スタンバイ制御:ストップモード(SPL=1), タイムベースタイマモード(SPL=1), 時計モード(SPL=1)
378
第 20 章 UART
20.3
UART のレジスタの構成と機能
UART で使用するレジスタの構成および機能について説明します。
■ UART のレジスタ一覧
図 20.3-1 に , UART のレジスタ一覧を示します。
図 20.3-1 UART のレジスタ一覧
bit15
bit8
SCR
SSR
CDCR
8ビット
bit7
bit0
SMR
SIDR(R)/SODR(W)
-
(R/W)
(R/W)
8ビット
シリアルモードレジスタ(SMR)
アドレス: bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
000020H MD1
MD0
CS2 CS1 CS0 予約 SCKE SOE
R/W
R/W
R/W R/W R/W
R/W
R/W R/W
シリアルコントロールレジスタ(SCR)
アドレス: bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8
000021H PEN
P
SBL
CL
A/D
REC
RXE TXE
R/W
R/W
R/W R/W R/W
W
R/W R/W
シリアルインプットレジスタ(SIDR)/シリアルアウトプットレジスタ(SODR)
アドレス: bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
000022H D7
D6
D5
D4
D3
D2
D1
D0
R/W
R/W
R/W R/W R/W
R/W
R/W R/W
シリアルステータスレジスタ(SSR)
アドレス: bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8
000023H PE
ORE
FRE RDRF TDRE BDS
RIE TIE
R
R
R
R
R
R/W
R/W R/W
通信プリスケーラコントロールレジスタ(CDCR)
アドレス: bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8
000025H MD
SRST
-
- DIV3 DIV2 DIV1 DIV0
R/W
R/W
-
-
R/W
R/W
R/W R/W
R/W:
R :
W :
- :
(R/W)
初期値
00000X00B
00000100B
XXXXXXXX B
00001000 B
00--0000 B
リード/ライト可能
リードオンリ
ライトオンリ
未使用
<注意事項>
UART のレジスタを設定する場合 , 通信モードの設定は動作停止中に行ってください。動
作中に設定すると , モード設定時に送受信したデータは保証されません。
379
第 20 章 UART
20.3.1
シリアルモードレジスタ (SMR)
シリアルモードレジスタ (SMR) の構成および機能について説明します。
■ シリアルモードレジスタ (SMR)
図 20.3-2 に , シリアルモードレジスタ (SMR) のビット構成を示します。
図 20.3-2 シリアルモードレジスタ (SMR) のビット構成
シリアルモードレジスタ(SMR)
アドレス: bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
000020H MD1
MD0
CS2 CS1 CS0 予約 SCKE SOE
R/W
R/W
R/W R/W R/W
R/W
R/W R/W
R/W: リード/ライト可能
初期値
00000X00B
以下に , シリアルモードレジスタ (SMR) の各ビットの機能を説明します。
[bit7, bit6] MD1, MD0:動作モード選択ビット
これらのビットは , UART 動作モードを選択します。
モード
0
1
2
-
MD1
MD0
0
0
1
1
0
1
0
1
動作モード
非同期 ( 調歩同期 ) ノーマルモード
非同期 ( 調歩同期 ) マルチプロセッサモード
CLK 同期モード
設定禁止
モード 1 の非同期 ( 調歩同期 ) マルチプロセッサモードとは , 1 台のホスト CPU に
数台のスレーブ CPU が接続される場合の使用方法です。本リソースでは , 受信デー
タのデータ形式を判別できません。したがって , マルチプロセッサモードのマスタ
のみをサポートします。また , パリティチェック機能は使用できませんので , SCR
レジスタの PEN は "0" に設定してください。
[bit5 ~ bit3] CS2 ~ CS0:動作クロック選択ビット
これらのビットは , ボーレートクロックソースを選択します。専用ボーレートジェ
ネレータを選択した場合には , 同時にボーレートも決定されます。
CS2 ~ CS0
000B ~ 101B
クロック入力
専用ボーレートジェネレータ
110B
内部クロック
111B
外部クロック
• 内部クロックを選択した場合 , PPG1 が選択されます。
• 同期転送時に専用ボーレートジェネレータを使用する場合, 以下の設定をしない
でください。
• CS2 ~ CS0 = 000B
• CS2 ~ CS0 = 001B, DIV3 ~ DIV0 = 0000B
380
第 20 章 UART
[bit2] 空き
このビットは , 空きビットです。
[bit1] SCKE:SCLK Enable
このビットは , CLK 同期モード ( モード 2) で通信する場合 , SCK0 をクロック入力
端子にするかクロック出力端子として使うかを指定します。CLK 非同期モード時 ,
または外部クロックモード時では "0" に設定してください。
• 0: クロック入力端子として機能します。
• 1: クロック出力端子として機能します。
<注意事項>
クロック入力端子として使用する場合は , 外部クロックソースが選択されている必要があ
ります。
[bit0] SOE:Serial Output Ebable
このビットは , 汎用 I/O ポート端子と兼用されている外部端子 (SOT0) をシリアル出
力端子として使うか , I/O ポート端子として使うかを指定します。
• 0: 汎用 I/O ポート端子として機能します。
• 1: シリアルデータ出力端子 (SOT0) として機能します。
381
第 20 章 UART
シリアルコントロールレジスタ (SCR)
20.3.2
シリアルコントロールレジスタ (SCR) の構成および機能について説明します。
■ シリアルコントロールレジスタ (SCR)
図 20.3-3 に , シリアルコントロールレジスタ (SCR) のビット構成を示します。
図 20.3-3 シリアルコントロールレジスタ (SCR) のビット構成
シリアルコントロールレジスタ(SCR)
アドレス: bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8
000021H PEN
P
SBL
CL
A/D
REC
RXE TXE
R/W
R/W
R/W R/W R/W
W
R/W R/W
R/W: リード/ライト可能
W : ライトオンリ
初期値
00000100B
以下に , シリアルコントロールレジスタ (SCR) の各ビットの機能を説明します。
[bit15] PEN:パリティ設定ビット
このビットはシリアルデータに対して , パリティビットの付加 ( 送信時 ) および検
出 ( 受信時 ) をするかどうかを選択します。
動作
PEN
0
1
パリティなし
パリティあり
<注意事項>
パリティを付加できるのは , 非同期 ( 調歩同期 ) 通信モードのノーマルモード ( モード 0)
のみです。マルチプロセッサモード ( モード 1) および CLK 同期通信 ( モード 2) では , パ
リティを付加できません。
[bit14] P:パリティ選択ビット
このビットは , パリティを付加してデータ通信を行うときの偶数 / 奇数パリティを
指定します
動作
P
0
1
偶数パリティ
奇数パリティ
[bit13] SBL:STOP ビット長選択ビット
このビットは , 非同期 ( 調歩同期 ) 通信を行うときのフレームエンドマークである
ストップビットのビット長を指定します。
動作
SBL
0
1
382
1 ストップビット
2 ストップビット
第 20 章 UART
[bit12] CL:データ長選択ビット
このビットは , 送受信する 1 フレームのデータ長を指定します。
動作
CL
0
1
7 ビットデータ
8 ビットデータ
<注意事項>
7 ビットデータを扱えるのは , 非同期 ( 調歩同期 ) 通信のうちノーマルモード ( モード 0)
のみです。マルチプロセッサモード ( モード 1) および CLK 同期モード ( モード 2) では ,
8 ビットデータを指定してください。
[bit11] A/D:Address/Data
このビットは , 非同期 ( 調歩同期 ) 通信のマルチプロセッサモード ( モード 1) にお
いて , 送受信するフレームのデータ形式を指定します。
動作
A/D
0
1
データフレーム
アドレスフレーム
[bit10] REC:エラーフラグクリアビット
"0"書込みで, SSRレジスタのエラーフラグ(PE.ORE, FRE)をクリアします。
"1"書込み
は無効であり , 読出し時は常に "1" となります。
[bit9] RXE:受信動作制御ビット
このビットは , UART の受信状態を制御します。
動作
RXE
0
1
受信動作を禁止します。
受信動作を許可します。
受信中 ( 受信シフトレジスタにデータが入力されているとき ) に受信動作を禁止し
た場合には , そのフレームの受信が完了し , 受信データバッファから SIDR レジスタ
に受信データをストアした時点で受信動作が禁止されます。
[bit8] TXE:送信動作制御ビット
このビットは , UART の送信状態を制御します。
動作
TXE
0
1
送信動作を禁止します。
送信動作を許可します。
送信中 ( 送信レジスタからデータが出力されているとき ) に送信動作を禁止した場
合には , シリアルアウトプットレジスタ (SODR) に , 送信データがなくなった後に送
信動作が禁止されます。送信動作は , シリアルアウトプットレジスタ (SODR) に値
を書き込むと内部のシリアルクロックに同期して動作が開始されます。また , 送信
動作の禁止 (TXE=0) は , TDRE フラグが "0" のときは無効になります。
383
第 20 章 UART
シリアルインプット / アウトプットレジスタ (SIDR/
SODR)
20.3.3
シリアルインプット / アウトプットレジスタ (SIDR/SODR) の構成と機能について説
明します。
■ シリアルインプット / アウトプットレジスタ (SIDR/SODR)
図 20.3-4 に , シリアルインプット / アウトプットレジスタ (SIDR/SODR) のビット構成
を示します。
図 20.3-4 シリアルインプット / アウトプットレジスタ (SIDR/SODR) のビット構成
シリアルインプットレジスタ(SIDR)/シリアルアウトプットレジスタ(SODR)
アドレス: bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
000022H D7
D6
D5
D4
D3
D2
D1
D0
R/W
R/W
R/W R/W R/W
R/W
R/W R/W
初期値
XXXXXXXX B
R/W: リード/ライト可能
シリアルインプット / アウトプットレジスタ (SIDR/SODR) は , データ長が 7 ビットの
場合は上位 1 ビット (D7) が無効となります。SODR レジスタにデータ要素を書き込む
には , SSR レジスタの TDRE に必ず "1" を書き込んでください。
<注意事項>
このアドレスへのデータ要素の書込みは , SODR レジスタへのデータ要素書込みを意味し
ます。このアドレスの読出しは , SIDR レジスタの読出しを意味します。
384
第 20 章 UART
20.3.4
シリアルステータスレジスタ (SSR)
シリアルステータスレジスタ (SSR) の構成および機能について説明します。
■ シリアルステータスレジスタ (SSR)
図 20.3-5 に , シリアルステータスレジスタ (SSR) のビット構成を示します。
図 20.3-5 シリアルステータスレジスタ (SSR) のビット構成
シリアルステータスレジスタ(SSR)
アドレス: bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8
000023H PE
ORE
FRE RDRF TDRE BDS
RIE TIE
R
R
R
R
R
R/W
R/W R/W
R/W: リード/ライト可能
R : リードオンリ
初期値
00001000 B
SSR は , UART の状態を表すフラグです。
以下に , シリアルステータスレジスタ (SSR) の各ビットの機能を説明します。
[bit15] PE:パリティエラーフラグ
このビットは , 受信時にパリティエラーが発生したときにセットされる割込み要求
フラグです。一度セットされたフラグをクリアするには , SCR レジスタの REC ビッ
ト (bit10) に "0" を書き込みます。このビットがセットされた場合には , SIDR のデー
タは無効となります。
動作
PE
0
1
パリティエラーなし
パリティエラーが発生
[bit14] ORE:オーバランエラーフラグ
このビットは , 受信時にオーバランエラーが発生したときにセットされる割込み要
求フラグです。一度セットされたフラグをクリアするには , SCR レジスタの REC
ビット (bit10) に "0" を書き込みます。このビットがセットされた場合には , SIDR の
データは無効となります。
動作
ORE
0
1
オーバランエラーなし
オーバランエラーが発生
[bit13] FRE:フレーミングエラーフラグ
このビットは , 受信時にフレーミングエラーが発生したときにセットされる割込み
要求フラグです。一度セットされたフラグをクリアするには , SCR レジスタの REC
ビット (bit10) に "0" を書き込みます。このビットがセットされた場合には ,SIDR の
データは無効となります。
動作
FRE
0
1
フレーミングエラーなし
フレーミングエラーが発生
385
第 20 章 UART
[bit12] RDRF: 受信データレジスタフル
このビットは , SIDR レジスタに受信データがあることを示す割込み要求フラグで
す。SIDR レジスタに受信データがロードされるとセットされ , SIDR レジスタを読
み出すと自動的にクリアされます。
動作
RDRF
0
1
受信データなし
受信データあり
[bit11] TDRE:送信バッファエンプティフラグ
このビットは , SODR レジスタに送信データを書き込めることを示す割込み要求フ
ラグです。SODR レジスタに送信データを書き込むとクリアされます。書き込んだ
データが送信用シフトレジスタにロードされて転送が開始されると再びセットさ
れ , 次の送信データを書き込めることを表します。
動作
TDRE
0
1
送信データの書込み禁止
送信データの書込み許可
[bit10] BDS:設定方向選択ビット
このビットは , 転送方向選択を制御します。
動作
BDS
0
1
シリアルデータを最下位ビット側から転送します (LSB ファースト )。
シリアルデータを最上位ビット側から転送します (MSB ファースト )。
<注意事項>
シリアルデータレジスタ (SDR) からの読出し , 書込み時にデータの上位側と下位側を入れ
替えるために SDR にデータを書き込んだ後 , このビットを書き換えると , そのデータは無
効になります。
[bit9] RIE: 受信割込み許可フラグ
このビットは , 受信割込みを制御します。
動作
RIE
0
1
割込みを禁止します。
割込みを許可します。
受信割込み要因は PE, ORE, FRE によるエラーのほか , RDRF による正常受信があり
ます。
[bit8] TIE: 送信割込み許可フラグ
このビットは , 送信割込みを制御します。
動作
TIE
0
1
386
割込みを禁止します。
割込みを許可します。
第 20 章 UART
<注意事項>
送信中に送信動作を禁止したときには , シリアルアウトプットレジスタ (SODR) にデータ
がなくなった後に送信動作を停止します。"0" の書込みは , SODR レジスタにデータを書
き込んだ後は , 一定の期間を置いてから行ってください。一定の期間とは , クロック非同
期転送モード時は , ボーレートの 1/16 の時間です。クロック同期転送モード時は , ボー
レートの時間です。
387
第 20 章 UART
通信プリスケーラコントロールレジスタ (CDCR)
20.3.5
通信プリスケーラコントロールレジスタ (CDCR) の構成および機能について説明し
ます。
■ 通信プリスケーラコントロールレジスタ (CDCR)
図 20.3-6 に,通信プリスケーラコントロールレジスタ(CDCR)のビット構成を示します。
図 20.3-6 通信プリスケーラコントロールレジスタ (CDCR) のビット構成
通信プリスケーラコントロールレジスタ(CDCR)
アドレス: bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8
000025H MD
SRST
-
- DIV3 DIV2 DIV1 DIV0
R/W
R/W
-
-
R/W
R/W
R/W R/W
初期値
00--0000 B
R/W: リード/ライト可能
- : 未使用
CDCR レジスタは , マシンクロックの分周を制御します。UART の動作クロックは , マ
シンクロックを分周することによって得られます。この通信プリスケーラによって ,
様々なマシンクロックに対して一定のボーレートを得ることが可能です。
[bit15] MD: マシンクロックモードセレクト
このビットは , 通信プリスケーラの動作許可ビットです。
動作
MD
0
1
通信プリスケーラは停止します。
通信プリスケーラは動作します。
[bit14] SRST: セットリセット
このビットは , UART のすべての動作をリセットします。また , すべてのデータ / レ
ジスタを初期化します。
動作
SRST
0
1
初期値 ( 何もしません。)
強制リセット
<注意事項>
このビットをセットすると , UART のすべてのデータ / レジスタ値が強制クリアされます。
初期値状態に戻るため , すべてのデータ / レジスタを再設定してください。転送中のデー
タも保存されたデータも , 再度設定されるまで無効となります。
388
第 20 章 UART
[bit11 ~ bit8] DIV3 ~ DIV0
これらのビットは , マシンクロックの分周比を決定します。
DIV3 ~ DIV0
分周比
0000B
1 分周
0001B
2 分周
0010B
3 分周
0011B
4 分周
0100B
5 分周
0101B
6 分周
0110B
7 分周
0111B
8 分周
<注意事項>
• 分周比を変えた場合には , クロックの安定時間として 2 分周分の時間をおいてから通信
してください。
• 同期転送時に専用ボーレートジェネレータを使用する場合 , 以下の設定をしないでく
ださい。
- CS2 ~ CS0 = 000B
- CS2 ~ CS0 = 001B, DIV3 ~ DIV0 = 0000B
389
第 20 章 UART
20.4
UART の割込み
UART 割込みには , 受信割込みと送信割込みがあります。
UART の割込みによって , DMA 転送および拡張インテリジェント I/O サービス
(EI2OS) を起動することができます。
■ UART の割込み
表 20.4-1 に , UART の割込み制御ビットと割込み要因を示します。
表 20.4-1 UART の割込み制御ビットと割込み要因
UART 受信割込み
UART 送信割込み
SSR:TDRE (bit11)
割込み要求フラグ
データ受信完了 SSR:RDRF (bit12)
フレーミングエラー SSR:FRE (bit13)
オーバランエラー SSR:ORE (bit14)
パリティエラー SSR:PE (bit15)
割込み要求出力許可ビット
SSR:RIE (bit9)
SSR:TIE (bit8)
割込み発生要因
UART 受信時
UART 送信時
■ UART に関する割込み要因
割込みは UART の受信時と送信時に発生します。
以下に示す要因で割込み要求が発生します。
• 受信データがシリアルインプットレジスタ (SIDR) にロードされた場合
• 受信エラー ( パリティエラー , オーバランエラー , フレーミングエラー ) が発生した
場合
• 送信データがシリアルアウトプットレジスタ (SODR) から送信用シフトレジスタへ
転送された場合
390
第 20 章 UART
■ UART の割込みと DMA 転送および EI2OS
表 20.4-2 に , 割込み要因と割込みベクタ / 割込み制御レジスタを示します。
表 20.4-2 割込み要因と割込みベクタ / 割込み制御レジスタ
EI2OS の
クリア
μDMAC
チャネル
番号
番号
UART 送信完了 *
○
11
UART 受信完了 *
◎
7
割込み要因
割込みベクタ
割込み制御レジスタ
アドレス
番号
アドレス
#34
FFFF74H
ICR11
0000BBH
#36
FFFF6CH
ICR12
0000BCH
○ : 割込み要求フラグはクリアされます。
◎ : 割込み要求フラグはクリアされます ( ストップ要求あり ) 。
この割込み要因は , ほかの周辺機能の割込み要因と割込み番号を共有しています。詳細につきましては ,
表 4.2-2 を参照してください。
( 注意事項 ) 同一割込み番号に 2 つの割込み要因があった場合は , リソースは両方の割込み要求フラグをクリ
アします。したがって , 2 要因のどちらか 1 つが EI2OS/μDMAC 機能を使用すると , もう 1 つの
割込み機能は使用できません。該当リソースの割込み要求許可ビットを "0" にして , ソフトウェ
アポーリング処理で対処してください。
*:
■ DMA 転送 , および EI2OS 機能への対応
UART は DMA 転送機能 , および EI2OS 機能に対応しています。DMA または EI2OS 機
能を使用する場合には , 割込み制御レジスタ (ICR) を共有するほかの割込みを禁止に設
定する必要があります。
391
第 20 章 UART
UART の動作
20.5
UART の動作について説明します。
■ 動作モード
UART は , 下表に示す動作モードを持ち , SMR レジスタおよび SCR レジスタに値を設
定することによってモードを切り換えることができます。
モード
パリティ
0
あり / なし
あり / なし
1
なし
データ長
動作モード
7
非同期 ( 調歩同期 ) ノーマルモード
8
8+1*1
1 ビットまたは 2 ビット *2
非同期 ( 調歩同期 ) マルチプロセッサモード
CLK 同期モード
なし
*1: +1 は , 通信制御用に使用されるアドレス / データ選択ビット (AD) です。
*2: 受信時のストップビットは , 1 ビットのみ検出可能です。
2
ストップビット長
8
なし
非同期 ( 調歩同期 ) モードでのストップビット長については , 送信動作のみ指定が可能
です。受信動作については , 常に 1 ビット長となります。非同期 ( 調歩同期 ) モード以
外ではストップビット長は設定しないでください。
UART 動作モード 1 は , マスタ / スレーブ型接続時のマスタ時だけに使用されます。
● CPU 間接続方式
1 対 1 接続 ( ノーマルモード ) とマスタ / スレーブ型接続 ( マルチプロセッサモード ) の
どちらかを選択できます。どちらの方式でもデータ長 , パリティの有無 , 同期方式など
は , すべての CPU で統一しておく必要があり , 動作モードを次のように選択します。
• 1 対 1 接続 ( ノーマルモード ) では , 2 つの CPU で動作モード 0, 2 のいずれかの同じ
方式を採用する必要があります。
非同期方式では動作モード 0 を , 同期式では動作モード 2 を選択してください。
• マスタ / スレーブ型接続 ( マルチプロセッサモード ) では , 動作モード 1 を使用しま
す。動作モード 1 を選択し , マスタとして使用してください。
なお , この接続ではパリティなしを選択してください。
392
第 20 章 UART
■ UART のクロック選択
● 専用ボーレートジェネレータ
- 非同期ボーレート = φ/( プリスケーラ分周比 )/( 非同期転送クロック分周比 )
- 同期ボーレート = φ/( プリスケーラ分周比 )/( 同期転送クロック分周比 )
φ: マシンクロック
• プリスケーラによる分周比 ( 非同期 / 同期共通 ) : 表 20.5-1 に示します。
表 20.5-1 プリスケーラによる分周比
MD
DIV3 ~ DIV0
DIV
0
1
φ
0000B
停止
1
1
0001B
2
1
0010B
3
1
0011B
4
1
0100B
5
1
0101B
6
1
0110B
7
1
0111B
8
• 同期転送クロック分周比 : 表 20.5-2 に示します。
表 20.5-2 同期転送クロック分周比
CS2
CS1
CS0
CLK 同期
算出式
0
0
1
12.5Mbps
(φ/DIV)/ 2
0
1
0
6.25Mbps
(φ/DIV)/ 4
0
1
1
3.125Mbps
(φ/DIV)/ 8
1
0
0
1.5625Mbps
(φ/DIV)/ 16
1
0
1
781.25kbps
(φ/DIV)/ 32
φ: マシンクロック ( 内部周波数 f=25MHz), DIV=1 で算出
SCK0
(φ/DIV)/ 2
(φ/DIV)/ 4
(φ/DIV)/ 8
(φ/DIV)/ 16
(φ/DIV)/ 32
<注意事項>
同期転送時に以下の設定をしないでください。
• CS2 ~ CS0 = 000B
• CS2 ~ CS0 = 001B, DIV3 ~ DIV0 = 0000B
• 非同期転送クロック分周比 : 表 20.5-3 に示します。
表 20.5-3 非同期転送クロック分周比
CS2
CS1
CS0
非 CLK 同期
算出式
(φ/DIV)/(8 × 13 × 2)
(φ/DIV)/(8 × 13 × 4)
(φ/DIV)/(8 × 13 × 8)
(φ/DIV)/(8 × 13 × 16)
(φ/DIV)/(8 × 2 × 2)
(φ/DIV)/(8 × 2 × 4)
φ: マシンクロック ( 内部周波数 f=25MHz), DIV=1 で算出
0
0
0
0
1
1
0
0
1
1
0
0
0
1
0
1
0
1
120192bps
60096bps
30048bps
15024bps
781.25kbps
390.625kbps
SCK0
(φ/DIV)/(13 × 2)
(φ/DIV)/(13 × 4)
(φ/DIV)/(13 × 8)
(φ/DIV)/(13 × 16)
(φ/DIV)/2
(φ/DIV)/4
393
第 20 章 UART
● 内部タイマ
CS2 ~ CS0 を "110B" に設定して , 内部タイマ (PPG1) を選択した場合のボーレートは
次式によって計算できます。
非同期 ( 調歩同期 ) :(φ/N)/(16 × 2 × (n+1))
CLK 同期 :(φ/N)/(2 × (n+1))
N: タイマ (PPG1) のカウントクロックソース
n: タイマ (PPG1) のリロード値
表 20.5-4 に , マシンクロックが 7.3728MHz の場合のボーレートとリロード値の関係を
示します。
表 20.5-4 ボーレートとリロード値の関係 ( マシンクロック =7.3728MHz)
リロード値
ボーレート
(bps)
クロック非同期 ( 調歩同期 )
クロック同期
N=21
N=23
N=21
N=23
( マシンクロック ( マシンクロックの ( マシンクロックの ( マシンクロックの
の 2 分周 )
8 分周 )
2 分周 )
8 分周 )
2
5
11
23
47
95
191
383
2
5
11
23
47
95
47
95
191
383
767
1535
3071
6143
38400
19200
9600
4800
2400
1200
600
300
11
23
47
95
191
383
767
1535
"-" は設定禁止です。
<注意事項>
クロック同期時 , 以下の設定をしないでください。
N = 1, n = 0
● 外部クロック
CS2 ~ CS0 を "111B" に設定した場合のボーレートは , 次式によって計算できます。
非同期 ( 調歩同期 ) :f/16
CLK 同期 :f'
ただし , f の最大はマシンクロックの 1/2 まで , f' の最大はマシンクロックの 1/8 ま
でです。
394
第 20 章 UART
20.5.1
非同期モード ( 動作モード 0, 1) 時の動作
UART を動作モード 0( ノーマルモード ) または動作モード 1( マルチプロセッサモー
ド ) で使用する場合は , 転送方式は非同期となります。
■ 非同期モード ( 動作モード 0, 1) 時の動作
● 転送データフォーマット
転送データは , 必ずスタートビット ("L" レベル ) から始まり , 指定されたデータビット
長の転送が LSB ファーストで行われ , ストップビット ("H" レベル ) で終了します。
• 動作モード 0 のノーマルモードでは , データ長は 7 ビットまたは 8 ビットに設定が
可能です。
• 動作モード 1 では , データは 8 ビット長固定でパリティは付加されず , その代わり
AD( アドレス / データ選択ビット ) が付加されています。
図 20.5-1 転送データフォーマット ( 非同期モード )
動作モード0
ST
D0
D1
D2
D3
D4
D5
D6
動作モード1
ST
D0
D1
D2
D3
D4
D5
D6
D7*1/P*2
D7
SP
AD
SP
*1 :D7(データビット7)………パリティなしのとき
*2 :P(パリティビット)………パリティありのとき
ST :スタートビット
SP :ストップビット
AD :動作モード1(マルチプロセッサモード)のアドレス/データ選択ビット
● 送信動作
送信データエンプティフラグビット (SSR:TDRE) が "1" のとき , アウトプットデータレ
ジスタ (SODR) に送信データを書き込みます。ここで送信動作が許可 (SCR:TXE=1) さ
れていると送信が行われます。送信データが送信用シフトレジスタに転送され , 送信が
開始されると TDRE フラグが再び "1" にセットされて , 次の送信データをセットできる
ようになります。
このとき , 送信割込み要求が許可 (SSR:TIE=1) されていれば , 送信割込み要求を出力し
て SODR に送信データをセットするように要求します。TDRE フラグは , SODR に送信
データが書き込まれると "0" にクリアされます。
● 受信動作
受信動作が許可 (SCR;RXE=1) されていると , 常に受信動作が行われます。スタートビッ
トを検出すると , シリアルコントロールレジスタ (SCR) で決められたデータフォーマッ
トに従って 1 フレームデータの受信が行われます。1 フレームの受信が終わると , エ
ラーが発生したときにはエラーフラグがセットされた後,受信データフルフラグビット
(SSR:RDRF) が "1" にセットされます。このとき , 受信割込み要求が許可 (SSR:RIE=1)
されていれば , 受信割込み要求を出力します。シリアルステータスレジスタ (SSR) の各
フラグを調べ , 正常受信であればシリアルインプットレジスタ (SIDR) を読み出して ,
エラーが発生していた場合はエラー処理をするようにしてください。
RDRF フラグは , SIDR から受信データを読み出すと "0" にクリアされます。
395
第 20 章 UART
● スタートビット検出方法
スタートビットを検出するには , 以下のように設定してください。
• 通信期間直前は通信線を必ず "H"( マークレベルを付加 ) にしてください。
• 通信線が "H"( マークレベル ) の期間に , 受信許可 (RXE="H") にしてください。
• 非通信期間中 ( マークレベルを除く ) は , 受信許可 (RXE="H") にしないでください。
ストップビット検出後 (RDRF フラグが "1" にセットされた後 ), 通信線が "H" ( マー
クレベル ) の間に受信禁止 (RXE="L") にしてください。
図 20.5-2 正常動作例
非通信期間
非通信期間
通信期間
マークレベル
スタート
ビット
ST
SIN
(01010101B送信)
RXE
ストップ
ビット
データ
D1
D0
D2
D3
D4
D5
D6
D7
SP
D7
SP
受信クロック
サンプリングクロック
受信クロック(8パルス)
ST
マイコン側の認識
受信クロックを16分周してサンプリングクロックを生成
D1
D0
D2
D3
D4
D5
D6
(01010101B受信)
以下のようなタイミングで受信許可に設定した場合は , マイコン側で入力データ (SIN)
が正しく確認されませんので注意してください。
• 通信線が "L" の期間に , 受信許可 (RXE="H") にした場合の動作例
図 20.5-3 異常動作例
非通信期間
通信期間
マークレベル
SIN
(01010101B送信)
RXE
スタート
ビット
非通信期間
ストップ
ビット
データ
ST
D0
D1
D2
D3
D4
D5
D6
D7
D0
D1
D2
D3
D4
D5
D6
D7
SP
SP
受信クロック
サンプリングクロック
マイコン側の認識
ST認識
(10101010B受信)
PE, ORE, FRE
受信エラー発生
● ストップビット
送信時には 1 ビットまたは 2 ビットを選択できます。ただし , 受信側では常に最初の 1
ビットだけを判別します。
● エラー検出
• モード 0: パリティエラー, オーバランエラー, フレーミングエラーを検出できます。
• モード 1: オーバランエラー, フレーミングエラーを検出でき , パリティエラーは検
出できません。
396
第 20 章 UART
● パリティ
パリティは , 動作モード 0( 非同期 , ノーマルモード ) のときだけに使用できます。シリ
アルコントロールレジスタ (SCR) の PEN ビットでパリティの有無を , P ビットで偶数 /
奇数パリティを設定できます。動作モード 1( 非同期 , マルチプロセッサモード ) およ
び動作モード 2 (CLK 同期モード ) では , パリティの使用はできません。図 20.5-4 に ,
パリティ有効時の送受信データのデータフォーマットを示します。
図中の ST はスタートビット , SP はストップビットです。
図 20.5-4 パリティ使用時の転送データフォーマット
SIN0
ST
SP
1
SOT0
0
1
1
0
0
パリティエラー発生
0
ST
偶数パリティにて受信時
(SCR;P=0)
SP
偶数パリティの送信
1
SOT0
0
1
1
0
0
1
ST
(SCR:P=0)
SP
1
0
1
データ
1
0
0
0
奇数パリティの送信
(SCR:P=1)
パリティ
<注意事項>
動作モード 1, 2 では , パリティを使用できません。
397
第 20 章 UART
20.5.2
同期モード ( 動作モード 2) 時の動作
UART 動作モード 2 (CLK 同期モード ) で使用するときは , 転送方式はクロック同期
となります。
■ CLK 同期モード ( 動作モード 2) 時の動作
● 転送データフォーマット
同期モードでは , 8 ビットデータを LSB ファーストで転送します。スタートビット / ス
トップビットは付加されません。
図 20.5-5 に , 転送データフォーマット (CLK 同期モード ) を示します。
図 20.5-5 転送データフォーマット (CLK 同期モード )
送信データ書込み
マークレベル
送受信クロック
RXE,TXE
送受信データ
1
0
LSB
1
1
0
データ
0
1
0
MSB
● クロック供給
クロック同期 (I/O 拡張シリアル ) 方式では , 送受信ビット数に等しい数のクロックの供
給が必要になります。
内部クロック ( 専用ボーレートジェネレータ , または内部タイマ ) を選択しているとき
は , データを送信するとデータ受信用同期クロックが自動生成されます。
外部クロックを選択しているときは , 送信側 UART のシリアルアウトプットレジスタ
(SODR) にデータがあることが必要です。SSR の TDRE=0 であることを確かめた後に ,
正確に 1 バイト分のクロックを外部から供給する必要があります。また , 送信開始前と
終了後は , 必ずマークレベル ("H") にする必要があります。
● エラー検出
オーバランエラーだけ検出可能で , パリティエラー, フレーミングエラーは検出できま
せん。
398
第 20 章 UART
● 初期化
以下に , 同期モードを使用するときの各制御レジスタの設定値を示します。
[ シリアルモードレジスタ (SMR)]
• MD1, MD0: "10B"
• CS2, CS1, CS0: クロックセレクタのクロックソースを指定
• SCKE: 専用ボーレートジェネレータ , または内部クロック時は "1", 外部クロック時
は "0"
• SOE: 送信するとき "1", 受信だけのとき "0"
[ シリアルコントロールレジスタ (SCR)]
• PEN: "0"
• P, SBL, AD: これらのビットは意味を持ちません。
• CL: "1"(8 ビットデータ )
• REC: "0"( 初期化するために , エラーフラグをクリア )
• RXE, TXE: 少なくともどちらか一方が "1"
[ シリアルステータスレジスタ (SSR)]
• RIE: 割込みを使用するときは "1", 割込みを使用しないときは "0"
• TIE: "0"
● 通信開始
シリアルアウトプットレジスタ (SODR) への書込みで通信を開始します。受信する場
合でも通信を開始するときは , 必ず仮のデータを SODR に書き込む必要がありますの
で注意してください。
● 通信終了
1 フレームのデータ送受信が終了すると , シリアルステータスレジスタ (SSR) の RDRF
フラグが "1" にセットされます。受信時は , オーバランエラーフラグビット (SSR:ORE)
をチェックし , 通信が正常に行われたかどうかの判断をしてください。
399
第 20 章 UART
20.5.3
双方向通信機能 ( ノーマルモード )
動作モード 0, 2 で , 1 対 1 接続の通常シリアル双方向通信をすることができます。
同期方式は , 動作モード 0 の場合は非同期 , 動作モード 2 の場合は同期となります。
■ 双方向通信時における各レジスタの設定
双方向通信を行う場合は , 各レジスタを図 20.5-6 に示すように設定する必要がありま
す。
図 20.5-6 双方向通信時における各レジスタの設定
bit15 bit14 bit13 bit12
SBL
◎
×
CL
◎
1
bit11 bit10
SCR/SMR PEN
モード0 ◎
モード2 0
P
◎
×
AD
×
×
SSR,
SIDR/SODR PE
モード0 ◎
モード2 ×
ORE FRE TDRF -
◎ ◎ ◎ -
◎ × ◎ -
DDR7*
bit9
bit8
REC RXE TXE
0
◎ ◎
0
◎ ◎
bit7
bit6
MD1 MD0
0
0
1
0
bit5
bit4
bit3
-
-
P74 P73
* :UART0を使用する場合は,DDR7:bit0,bit2を設定してください。
◎:使用ビット
×:未使用ビット
1 :"1"を設定
0 :"0"を設定
△:端子入力を使用する場合"0"を設定
■ 双方向通信時の CPU 間接続
図 20.5-7 に , 双方向通信時の CPU 間接続を示します。
図 20.5-7 双方向通信時の CPU 間接続
CPU1
400
bit1
bit0
RIE TIE 変換データを設定(書込み時)/受信データを保持(読出し時)
◎ ◎
◎ ◎
-
SOT0
SOT0
SIN0
SCK0
SIN0
SCK0
出力
bit2
CS2 CS1 CS0 BCH SCKE SOE
◎ ◎ ◎ ◎
◎ ◎
◎ ◎ ◎ ◎
◎ ◎
入力
CPU2
P72 P71 P70
△
△
第 20 章 UART
■ 双方向通信機能の通信手順
通信は任意のタイミングで送信データが準備できたときに送信側から開始します。
受信側で送信データを受け取ると , 定期的に ANS( 本例では , 1 バイトごと ) を返します。
図 20.5-8 に , 双方向通信機能の通信手順を示します。
図 20.5-8 双方向通信機能の通信手順
(送信側)
(送信側)
スタート
スタート
動作モード設定(0,2のいずれか)
動作モード設定(送信側と合わせる)
データ送信
SODRに1バイトデータセットして通信
NO
受信データ
あり
YES
NO
受信データ
あり
YES
受信データ読出しと処理
データ送信
受信データ読出しと処理
1バイトデータ送信
(ANS)
401
第 20 章 UART
20.5.4
マスタ / スレーブ型通信機能
( マルチプロセッサモード )
UART は , 複数 CPU のマスタ / スレーブ型接続による通信が可能であり , 動作モー
ド 1 を使用します。ただし , UART はマスタとしてだけ使用可能です。
■ マスタ / スレーブ通信時の各レジスタの設定
マスタ / スレーブ通信を行う場合は , 各レジスタを図 20.5-9 に示すように設定する必要
があります。
図 20.5-9 マスタ / スレーブ通信時の各レジスタの設定
bit15 bit14 bit13 bit12 bit11 bit10
SCR/SMR PEN
モード1 0
P
×
SBL
◎
CL
1
AD
◎
SSR,
SIDR/SODR PE
モード1 ×
ORE FRE TDRF -
◎ ◎ ◎ -
bit9
bit8
bit7
bit6
bit5
bit4
bit3
-
-
-
■ マスタ / スレーブ通信時の CPU 間接続
図 20.5-10 に , マスタ / スレーブ通信時の CPU 間接続を示します。
図 20.5-10 マスタ / スレーブ通信時の CPU 間接続
SOT0
SIN0
SIN
スレーブCPU#0
402
bit0
P74 P73 P72 P71 P70
△
△
* :UART0を使用する場合は,DDR7:bit0,bit2を設定してください。
◎:使用ビット
×:未使用ビット
1 :"1"を設定
0 :"0"を設定
△:端子入力を使用する場合"0"を設定
SOT
bit1
RIE TIE 変換データを設定(書込み時)/受信データを保持(読出し時)
◎ ◎
DDR7*
マスタCPU
bit2
REC RXE TXE MD1 MD0 CS2 CS1 CS0 BCH SCKE SOE
0
◎ ◎
0
1
◎ ◎ ◎ ◎
0 ◎
SOT
SIN
スレーブCPU#1
第 20 章 UART
■ 機能選択
表 20.5-5 に , マスタ / スレーブ通信時の通信方式の設定内容を示します。
表 20.5-5 マスタ / スレーブ通信時の機能選択
動作モード
アドレス送受信
データ送受信
マスタ
CPU
スレーブ
CPU
モード 1
-
データ
パリティ 同期方式
AD=1+8 ビットアドレス
AD=0+8 ビットアドレス
なし
非同期
ストップビット
1 ビットまたは
2 ビット
■ マスタ / スレーブ通信機能の通信手順
通信は , マスタ CPU がアドレスデータを送信することによって開始します。アドレス
データとは , AD ビットを "1" としたデータで通信先となるスレーブ CPU を選択しま
す。各スレーブ CPU はプログラムでアドレスデータを判断し , 割り当てられたアドレ
スと一致するとき , マスタ CPU との通信 ( 通常データ ) を行います。
図 20.5-11 に , マスタ / スレーブ通信機能の通信手順を示します。
図 20.5-11 マスタ / スレーブ通信機能の通信手順
(マスタCPU)
スタート
動作モードを"1"とする
SIN端子をシリアルデータ入力に設定
D0~D7にスレーブCPUを選択する1バイトデータ
(アドレスデータ)をセットして送信(AD=1)
ADに"0"をセット
受信動作許可
スレーブCPUと通信
通信終了
NO
YES
ほかの
スレーブCPUと
通信
END
NO
YES
受信動作禁止
403
第 20 章 UART
20.6
UART 使用上の注意
UART を使用する場合は , 次の点に注意してください。
■ UART 使用上の注意
● 動作許可
送信 , 受信のそれぞれに対してシリアルコントロールレジスタ (SCR) 内に TXE( 送
信 ), RXE( 受信 ) の動作許可ビットがあります。
デフォルト ( 初期値 ) では , 送受信ともに動作禁止です。必要に応じて動作を許可して
ください。
● 通信モードの設定
通信モードは , 停止中に設定してください。送受信中に通信モード設定をすると , その
送受信データは保証されません。
● 同期モード
UART のクロック同期モード ( 動作モード 2) は , クロック制御 (I/O 拡張シリアル ) 方
式を採用しています。スタートビットおよびストップビットはデータに付加されませ
ん。
● 送信データエンプティフラグビット
送信データエンプティフラグビット (SSR の TDRE) は , デフォルト ( 初期値 ) が "1" ( 送
信データなし , 送信データ書込み許可 ) であるため , 送信割込み要求を許可 (SSR の
TIE=1) すると , 直ちに送信割込み要求が発生します。必ず , 送信データを準備してから
TIE フラグを "1" にしてください。
● 同期転送時のクロック設定
• 同期転送時に専用ボーレートジェネレータを使用する場合 , 以下の設定をしないで
ください。
- CS2 ~ CS0 = 000B
- CS2 ~ CS0 = 001B, DIV3 ~ DIV0 = 0000B
• 同期転送時に内部タイマ (PPG1) を使用する場合 , 以下の設定をしないでください。
N = 1, n = 0
404
第 20 章 UART
20.7
UART のプログラム例
UART のプログラム例を示します。
■ UART のプログラム例
表 20.7-1 UART のプログラム例
設定手順例
プログラム例
1 バイトのデータを UART で送信する。
非同期ノーマルモード
void Asynch_uart_sample(void)
{
INT_initial();
Asynch_uart_initial();
Uart_start();
}
<初期設定>
void INT_initial(void)
{
IO_ICR11.byte = 0x10;
・割込み関連
割込みレベルの設定
I フラグの設定
ICR11
(CCR)
・UART の制御
レジスタ名 . ビット名
モードレジスタの設定
SMR
__EI();
/* UART 送信完了割込みレベル設定 ( 値は任意 ) */
/* 割込み許可 */
}
void Asynch_uart_initial(void)
{
IO_SMR.byte = 0x19;
;
/* 設定値 =0001_1001 */
動作モードの設定≫
.MD1,MD0
動作クロックの設定≫
.CS2 ~ CS0
/* bit7-6 = 00 MD1, MD0 非同期ノーマルモード */
/* bit5-3 = 011 CS2-0 専用ボーレートジェネレータ */
SCK0 端子の設定≫
SOT0 端子の設定≫
.SCKE
.SOE
/* bit2 = 0
/* bit1 = 0
制御レジスタの設定
SCR
パリティ有無の設定≫
偶数 / 奇数パリティの設定≫
ストップビット長の設定
1 フレームデータ長の設定≫
フレームデータ形式の設定≫
エラーフラグ≫
受信動作許可設定≫
送信動作許可設定≫
.PEN
.P
.SBL
.CL
.A/D
.REC
.RXE
.TXE
割込み制御
送信データの設定
SSR
SIDR
.TIE
未定義ビット */
SCKE クロック入力端子 */
IO_SCR.byte = 0x10;
/* bit0 = 1
SOE 外部端子 */
/* 設定値 =0001_0000 */
IO_SSR.bit.TIE = 1;
/* bit15 = 0
/* bit14 = 0
/* bit13 = 0
/* bit12 = 1
/* bit11 = 0
/* bit10 = 0
/* bit9 = 0
/* bit8 = 0
/* bit8 = 1
IO_SIDR = 0x0aa;
/* 任意のデータ値を送信する。 */
PEN パリティなし */
P 偶数パリティ */
SBL 1 ストップビット */
CL 8 ビットデータ */
A/D データフレーム */
REC エラーフラグクリア */
RXE 受信動作禁止 */
TXE 送信動作禁止 */
TIE 送信割込み許可 */
}
<起動>
・UART 起動
UART0 送信動作起動
void Uart_start(void)
レジスタ名 . ビット名
SCR0
.TXE
<割込み>
• 送信割込み処理
任意のデータを送信
レジスタ名 . ビット名
SIDR
{
IO_SCR.bit.TXE = 1;
/* bit8 = 1
TXE 送信動作許可 */
}
__interrupt void uart_tx_int(void)
{
IO_SIDR = 0x0aa;
/* 任意のデータ値を送信する。*/
}
<割込みベクタ>
・ベクタテーブルの設定
#pragma intvect uart_tx_int 34
( 注意事項 )
事前にクロック関連の設定および , __set_il( 数値 ) の
設定が必要です。「第 4 章 割込み」および「第 6 章
クロック」を参照してください。
( 注意事項 )
レジスタの記述形式については , 「F2MC-16LX ファミリ MB90980 シリーズ用サン
プル I/O レジスタファイル 使用手引書」を参照してください。
405
第 20 章 UART
■ プログラム例以外の設定方法
● 設定できる組合せ
組合せは以下のとおりです。
表 20.7-2 設定できる組合せ
データ長 パリティ パリティ データ形式
(CL)
(PEN) 選択 (P)
(A/D)
動作モード
(MD[1:0])
なし
(0)
7 ビット
(0)
0
非同期 ノーマルモード
(00B)
なし
(0)
8 ビット
(1)
1
2
あり
(1)
あり
(1)
エラーフラグの有無
STOP ビット長
選択 (SBL) *
オーバラン フレーミング パリティ
(ORE)
(FRE)
(PE)
―
1 ビット 2 ビット
(0)
(1)
偶 (0)
1 ビット 2 ビット
(0)
(1)
奇 (1)
1 ビット 2 ビット
(0)
(1)
―
―
1 ビット 2 ビット
(0)
(1)
偶 (0)
1 ビット 2 ビット
(0)
(1)
奇 (1)
1 ビット 2 ビット
(0)
(1)
非同期 マルチプロセッサ
モード (01B)
8 ビット
(1)
なし
(0)
―
CLK 同期モード
(10B)
8 ビット
(1)
なし
(0)
―
アドレス (1)
1 ビット 2 ビット
(0)
(1)
アドレス (0)
1 ビット 2 ビット
(0)
(1)
―
―
○
○
○
○
○
―
○
―
―
*: STOP ビットの選択は送信時のみ有効です。受信時は 1 ビット目のみの検出 (2 ビット目は無視 ) となります。
● 各動作モードを選択する方法
動作モードビット (SMR: MOD[1:0]) で設定します。
表 20.7-3 動作モードの選択方法
動作モード
動作モードビット (MOD[1:0])
モード 0
非同期 - ノーマルモード
"00B" にする
モード 1
非同期 - マルチプロセッサモード
"01B" にする
モード 2
CLK 同期モード
"10B" にする
―
"11B" は設定禁止
● 動作クロックの種類と選択方法
動作クロック選択ビット (SMR: CS[2:0]) で設定します。
表 20.7-4 動作クロックの種類と選択方法
クロック入力
406
動作クロック選択ビット (CS[2:0])
専用ボーレートジェネレータ
"000B" ~ "101B" にする
内蔵クロックを選択するには
"110B" にする
外部クロックを選択するには
"111B" にする
第 20 章 UART
● SCK 端子 , SIN 端子 , SOT 端子を制御する方法
表 20.7-5 のように設定します。
表 20.7-5 SCK 端子 , SIN 端子 , SOT 端子を制御する方法
UART レジスタ
SCK 端子を入力にするには
DDR7: P72 = 0
SMR: SCKE = 0
SCK 端子を出力にするには
SMR: SCKE = 1
SIN 端子を入力にするには
DDR7: P70 = 0
SOT 端子を出力にするには
SMR: SOE = 1
● UART の動作を許可 / 停止する方法
受信動作制御ビット (SCR: RXE) で設定します。
表 20.7-6 UART の受信動作を許可 / 停止する方法
制御内容
受信動作制御ビット (RXE)
受信動作禁止 ( 停止 )
"0" にする
受信動作許可
"1" にする
送信動作制御ビット (SCR: TXE) で設定します。
表 20.7-7 UART の送信動作を許可 / 停止する方法
制御内容
送信動作制御ビット (TXE)
送信動作禁止 ( 停止 )
"0" にする
送信動作許可
"1" にする
● パリティを設定する方法
パリティ設定ビット (SCR: PEN), パリティ選択ビット (SCR: P) で設定します。
表 20.7-8 パリティを設定する方法
動作
パリティ設定 , 選択ビット (PEN, P)
パリティなしにするには
"00B" または "01B" にする
偶数パリティにするには
"10B" にする
奇数パリティにするには
"11B" にする
407
第 20 章 UART
● データ長を設定する方法
データ長選択ビット (SCR: CL) で設定します。
表 20.7-9 データ長を設定する方法
動作
データ長選択ビット (CL)
7 ビット長にするには
"0" にする
8 ビット長にするには
"1" にする
● STOP ビット長を選択する方法
STOP ビット長選択ビット (SCR: SBL) で設定します。
表 20.7-10 STOP ビット長を選択する方法
動作
STOP ビット長選択ビット (SBL)
STOP ビットを 1 ビット長にするには
"0" にする
STOP ビットを 2 ビット長にするには
"1" にする
● エラーフラグをクリアする方法
エラーフラグクリアビット (SCR: REC) で設定します。
表 20.7-11 エラーフラグをクリアする方法
制御内容
エラーフラグクリアビット (REC)
エラーフラグ (PE, ORE, FRE) をクリアするには
"0" を書き込む
● 転送方向の設定方法
設定方向選択ビット (SSR: BDS) で設定します。
転送方向はどの動作モードでも , LSB/MSB の選択が可能です。
表 20.7-12 転送方向の設定方法
制御内容
設定方向選択ビット (BDS)
LSB 転送 ( 最下位ビットから ) にするには
"0" にする
MSB 転送 ( 最上位ビットから ) にするには
"1" にする
● 受信完了フラグをクリアする方法
下記の方法で行います。
表 20.7-13 受信完了フラグをクリアする方法
制御内容
受信完了フラグをクリアするには
シリアルインプットレジスタ (SIDR)
SIDR レジスタを読み出す
初回の SIDR レジスタの読出しが , 受信開始になります。
408
第 20 章 UART
● エラーフラグの種類と意味
エラーフラグは 3 種類あり以下の意味を持っています。
表 20.7-14 エラーフラグの種類と意味
エラーフラグ
意味
パリティエラー (PE)
受信した値 ( 数値 ) に誤りがあります。
オーバランエラー (ORE)
受信データの読出しを終える前に , 次のデータが届きました。
フレーミングエラー (FRE)
受信したデータの形式に誤りがあります。
● 受信データの格納レジスタ
シリアルインプットレジスタ (SIDR) に受信データが格納されます。
● 送信データを書込みタイミングのステータス確認方法
送信バッファエンプティフラグ (SSR: TDRE) で確認できます。
● 送信データの書込みレジスタ
送信データはシリアルアウトプットレジスタ (SODR) に書き込みます。
● 送信バッファエンプティフラグをクリアする方法
下記の方法で行います。
表 20.7-15 送信バッファエンプティフラグをクリアする方法
制御内容
シリアルアウトプットレジスタ (SODR)
送信バッファエンプティフラグをクリアするには
SODR レジスタに書き込む
初回の SODR レジスタの書込みは , 送信開始になります。
● データ形式 ( アドレス / データ ) を選択する方法
データ長選択ビット (SCR: AD) で設定します。
表 20.7-16 データ形式 ( アドレス / データ ) を選択する方法
動作
データ長選択ビット (AD)
bit8 をデータ ("L" レベル ) にするには
"0" にする
bit8 をアドレス ("H" レベル ) にするには
"1" にする
送信時のみ有効です。受信時 AD ビットを無視します。
409
第 20 章 UART
● 受信 / 送信を開始させる方法
下記の方法で行います。
• モード 0/1, 送信
:1. 送信動作を許可にする
2. シリアルアウトプットレジスタ (SODR) へデータを書き
込む ( =送信開始 )
• モード 0/1, 受信
:1. 受信を許可にする
2. シリアルインプットレジスタ (SIDR) を読む
( ダミーリード=受信開始 )
• モード 2, 送信 / 受信 :1. 送信を許可にする ( 受信許可省略可 )
2. シリアルアウトプットレジスタ (SODR) へデータを書き
込む ( =送受信開始 )
( 受信動作だけでもシリアルアウトプットレジスタ
(SODR) への書込みが 必要となります )
● 動作の停止と状態
• モード 0/1, 送信 :送信動作を禁止にすると , 送信バッファが空になった後で , 最後
の送信データを送信し , STOP ビットを送信し終えたところで動
作を停止します。
• モード 0/1, 受信 :受信動作を禁止にすると , 受信中のデータを受信完了後 (STOP
ビット受信後 ), 受信データをシフタからレジスタに転送した後
で動作を停止します。
• モード 2, 送受信 :受信動作と送信動作の両方を禁止にすると , 送信 / 受信している
データの送信 / 受信を完了し , 最後に受信データをシフタからレ
ジスタに転送した後で動作を停止します。
● 動作完了を確認する方法
下記の方法で行います。
• モード 0/1, 送信 :次の送信データを書き込んだ後に , SSR レジスタエンプティフラ
グをチェック ( 次の送信データをレジスタからシフタに転送し ,
シリアルアウトプットレジスタのエンプティフラグが "1" になる
ことで確認可能。)
• モード 0/1, 受信 :レジスタフルフラグをチェック ( シリアルインプットレジスタの
フルフラグが "1" になることで確認可能。)
• モード 2, 送受信 :レジスタフルフラグをチェック ( シリアルインプットレジスタの
フルフラグが "1" になることで確認可能。)
● ボーレートを設定する方法
「20.5 UART の動作」を参照してください。
410
第 20 章 UART
● 割込み関連レジスタ
表 20.7-17 に , UART 割込みベクタと UART 割込みレベルの設定レジスタの関係を示し
ます。
割込みレベル , 割込みベクタの詳細については「第 4 章 割込み」を参照してください。
表 20.7-17 UART 割込みベクタと UART 割込みレベルの設定レジスタの関係
割込みベクタ
割込みレベル設定ビット
UART 受信
#36
アドレス : 0FFFF6CH
割込み制御レジスタ 12 (ICR12)
アドレス : 000BCH
UART 送信
#34
アドレス : 0FFFF74H
割込み制御レジスタ 11 (ICR11)
アドレス : 000BBH
● 割込みの種類
割込み要因は , 受信側が 4 種類 , 送信側が 1 種類です。
表 20.7-18 割込みの種類
割込みの種類
UART 受信
受信完了 ( シリアルインプットレジスタフル ), パリティエラー ,
オーバランエラー , フレーミングエラーのうち最初に発生した要
因によって割込み要求が発生します。
UART 送信
送信バッファエンプティにて割込み要求が発生します。
● 割込みを許可 / 禁止 / クリアする方法
割込み許可 / 禁止の設定は , 割込み要求許可ビット (SSR: RIE, SSR: TIE) で設定します。
表 20.7-19 割込みを許可 / 禁止する方法
UART 受信
UART 送信
割込み要求許可ビット (RIE)
割込み要求許可ビット (TIE)
割込み要求を禁止するには
"0" にする
割込み要求を許可するには
"1" にする
割込み要求のクリアは , 下記の方法で行います。
表 20.7-20 割込み要求をクリアする方法
UART 受信
受信完了フラグ (RDRF) はシリア
ルインプットレジスタ SIDR を読
み出すことで "0" になります。
割込み要求を
クリアするには
エラーフラグ (PE, ORE, FRE) はエ
ラーフラグクリアビット (REC) に
"0" を書き込むことで "0" になりま
す。
UART 送信
送信バッファエンプティフラグ
(TDRE) はシリアルアウトプットレ
ジスタ (SODR) にデータを書き込
むことで "0" になります。
-
411
第 20 章 UART
412
第 21 章
アドレス一致検出機能
アドレス一致検出機能と動作について説明します。
21.1 アドレス一致検出機能の概要
21.2 アドレス一致検出機能のブロックダイヤグラム
21.3 アドレス一致検出機能のレジスタ構成
21.4 アドレス一致検出機能の動作説明
21.5 アドレス一致検出機能のプログラム例
413
第 21 章 アドレス一致検出機能
21.1
アドレス一致検出機能の概要
アドレス一致検出機能は , プログラムが現在処理している命令の次に処理される命
令のアドレスがプログラムアドレス検出レジスタに設定したアドレスと一致した場
合に , プログラムで次に処理される命令を強制的に INT9 命令に置き換え , 割込み処
理プログラムへ分岐する機能です。INT9 割込みを利用できるので本機能はプログラ
ムのパッチ処理による修正に利用できます。
■ アドレス一致検出機能の概要
• アドレス一致検出機能は , プログラムが現在処理している命令の次に処理される命
令のアドレスがプログラムアドレス検出レジスタに設定したアドレスと一致した
場合に , プログラムで次に処理される命令を強制的に INT9 命令に置き換え , 割込み
処理プログラムへ分岐する機能です。INT9 割込みを利用できるので本機能はプログ
ラムのパッチ処理による修正に利用できます。
• プログラムアドレス検出レジスタ (PADR0 , PADR1 ) は 2 つあり , 各レジスタごとに
割込み許可ビットが用意されています。アドレスラッチに保持されたアドレスと検
出アドレス設定レジスタに設定したアドレスの一致による割込みの発生をレジス
タごとに許可または禁止できます。
414
第 21 章 アドレス一致検出機能
21.2
アドレス一致検出機能のブロックダイヤグラム
アドレス一致検出モジュールは , 以下のブロックで構成されています。
• アドレスラッチ
• プログラムアドレス検出制御ステータスレジスタ (PACSR)
• プログラムアドレス検出レジスタ (RADR)
■ アドレス一致検出機能のブロックダイヤグラム
図 21.2-1 に , アドレス一致検出機能のブロックダイヤグラムを示します。
図 21.2-1 アドレス一致検出機能のブロックダイヤグラム
アドレスラッチ
比較器
PADR0(24ビット)
プログラムアドレス検出レジスタ0
INT9命令
(INT9割込み発生)
PADR1(24ビット)
プログラムアドレス検出レジスタ1
PACSR
予約
予約
予約
予約
AD1E
予約
AD0E
予約
プログラムアドレス検出制御ステータスレジスタ(PACSR)
予約:必ず"0"を設定してください。
• アドレスラッチ
内部データバスへ出力されたアドレス値を保持します。
• プログラムアドレス検出制御ステータスレジスタ (PACSR)
アドレスが一致した場合の割込み出力の許可または禁止を設定します。
• プログラムアドレス検出レジスタ (PADR0, PADR1)
アドレスラッチの値と比較するためのアドレスを設定します。
<注意事項>
プログラムアドレス検出レジスタは , "1FF0H" ~ "1FF5H" にレジスタがあるため , RAM 領
域と重なりますので , 本機能をご使用の場合は , RAM アクセスを行わないようにしてくだ
さい。
415
第 21 章 アドレス一致検出機能
21.3
アドレス一致検出機能のレジスタ構成
アドレス一致検出機能で使用するレジスタの一覧と詳細を記述します。
■ アドレス一致検出機能のレジスタと初期値の一覧
図 21.3-1 アドレス一致検出機能のレジスタと初期値の一覧
プログラムアドレス検出制御ステータスレジスタ(PACSR)
アドレス:
00009E H
bit7
bit6
予約
bit4
bit3
bit2
bit1
bit0
予約 予約
予約
ADE1 予約
ADE0
予約
R/W
R/W
R/W
R/W
R/W
R/W
bit1
bit0
R/W
bit5
R/W
初期値
00000000B
プログラムアドレス検出レジスタ 0 (PADR0):上位
アドレス:
001FF2 H
bit7
bit6
bit5
bit4
bit3
bit2
D23
D22
D21
D20
D19
D18
D17
D16
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
XXXXXXXXB
プログラムアドレス検出レジスタ 0 (PADR0): 中位
アドレス:
001FF1H
bit15 bit14 bit13 bit12 bit11 bit10 bit9
D15
R/W
D14
R/W
D13
R/W
D12
R/W
D11
R/W
D10
R/W
bit8
D9
D8
R/W
R/W
XXXXXXXXB
プログラムアドレス検出レジスタ 0 (PADR0):下位
アドレス:
001FF0 H
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
D7
D6
D5
D4
D3
D2
D1
D0
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
XXXXXXXXB
プログラムアドレス検出レジスタ 1 (PADR1):上位
アドレス:
001FF5 H
bit7
bit6
bit5
bit4
bit3
bit2
D23
D22
D21
D20
D19
D18
D17
bit1
D16
bit0
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
XXXXXXXXB
プログラムアドレス検出レジスタ 1 (PADR1): 中位
アドレス:
001FF4 H
bit15 bit14 bit13 bit12 bit11 bit10 bit9
D15
R/W
D14
R/W
D13
R/W
D12
R/W
D11
R/W
D10
R/W
bit8
D9
D8
R/W
R/W
XXXXXXXXB
プログラムアドレス検出レジスタ 1 (PADR1):下位
アドレス:
001FF3 H
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
D7
D6
D5
D4
D3
D2
D1
D0
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W :リード/ライト可能
X
: 不定
416
XXXXXXXXB
第 21 章 アドレス一致検出機能
21.3.1
プログラムアドレス検出制御ステータスレジスタ
(PACSR)
アドレス一致による割込み出力の許可または禁止を設定します。アドレス一致によ
る割込み出力を許可した場合にアドレス一致が検出されると , INT9 の割込みが出力
されます。
■ プログラムアドレス検出制御ステータスレジスタ (PACSR)
図 21.3-2 プログラムアドレス検出制御ステータスレジスタ (PACSR)
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
初期値
予約 予約 予約 予約 ADE1 予約 ADE0 予約
00000000B
アドレス
00009E H
R/W R/W R/W R/W R/W R/W R/W R/W
予約ビット
予約
0
必ず"0"を設定してください
ADE0
0
1
アドレス一致検出許可ビット0
PADR0でのアドレス一致検出を禁止する
PADR0でのアドレス一致検出を許可する
予約ビット
予約
0
必ず"0"を設定してください
ADE1
0
1
アドレス一致検出許可ビット1
PADR1でのアドレス一致検出を禁止する
PADR1でのアドレス一致検出を許可する
予約ビット
予約
0
必ず"0"を設定してください
予約ビット
予約
0
必ず"0"を設定してください
予約ビット
予約
0
必ず"0"を設定してください
予約
R/W :リード/ライト可能
:初期値
0
予約ビット
必ず"0"を設定してください
417
第 21 章 アドレス一致検出機能
表 21.3-1 プログラムアドレス検出制御ステータスレジスタ (PACSR) の機能
ビット名
bi7 ~ bit4 予約 : 予約ビット
bit3
bit2
bit1
bit0
418
機能
必ず "0" を設定してください。
プログラムアドレス検出レジスタ 1 (PADR1) とのアドレス一致検出 動作
を許可または禁止します。
このビットに "0" を設定した場合 : アドレス一致検出動作を禁止します。
ADE1: アドレス一致
このビットに "1" を設定した場合 : アドレス一致検出動作を許可します。
検出許可ビッ ト 1
アドレス一致検出動作を許可すると (ADE1=1), アドレスラッチの値と プ
ログラムアドレス検出レジスタ 1 (PADR1) の値が 一致した場合は , 直ちに
INT9 命令が実行されます。
予約 : 予約ビット
必ず "0" を設定してください。
プログラムアドレス検出レジスタ 0 (PADR0) とのアドレス一致検出 動作
を許可または禁止します。
このビットに "0" を設定した場合 : アドレス一致検出動作を禁止します。
ADE0: アドレス一致
このビットに "1" を設定した場合 : アドレス一致検出動作を許可します。
検出許可ビッ ト 0
アドレス一致検出動作を許可すると (ADE0=1), アドレスラッチの値と プ
ログラムアドレス検出レジスタ 0 (PADR0) の値が一致した場合は , 直ちに
INT9 命令が実行されます。
予約 : 予約ビット
必ず "0" を設定してください。
第 21 章 アドレス一致検出機能
21.3.2
プログラムアドレス検出レジスタ (PADR0, PADR1)
プログラムアドレス検出レジスタには , 検出するアドレス値を設定します。プログ
ラムで実行されている命令のアドレスがプログラムアドレス検出レジスタに設定さ
れたアドレスと一致すると , 次に実行される命令は強制的に INT9 命令に置き換えら
れ , 割込み処理プログラムが実行されます。
■ プログラムアドレス検出レジスタ (PADR0, PADR1)
図 21.3-3 プログラムアドレス検出レジスタ (PADR0, PADR1))
PADR0,PADR1:上位
アドレス:
001FF2 H 001FF5 H
PADR0,PADR1:中位
アドレス:
001FF1H 001FF4 H
PADR0,PADR1:下位
アドレス:
001FF0 H 001FF3 H
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
D23
D22
D21
D20
D19
D18
D17
D16
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
bit15 bit14 bit13 bit12 bit11 bit10 bit9
bit8
D15
D14
D13
D12
D11
D10
D9
D8
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
初期値
XXXXXXXXB
XXXXXXXXB
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
D7
D6
D5
D4
D3
D2
D1
D0
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
XXXXXXXXB
R/W :リード/ライト可能
X :不定
419
第 21 章 アドレス一致検出機能
■ プログラムアドレス検出レジスタ (PADR0, PADR1)
プログラムアドレス検出レジスタは 2 本 (PADR0, PADR1) 用意されており , それぞれ上
位 , 中位 , 下位の 3 バイト , 合計 24 ビットで構成されています。
表 21.3-2 プログラムアドレス検出レジスタのアドレス設定
レジスタ名
割込み出力許可
プログラムアドレス
検出レジスタ 0(PADR0)
PACSR:AD0E
プログラムアドレス
検出レジスタ 1(PADR1)
PACSR:AD1E
アドレス設定
上位
中位
下位
上位
中位
下位
プログラムアドレス 0 の上位 8 ビットを設定 ( バンク )
プログラムアドレス 0 の中位 8 ビットを設定
プログラムアドレス 0 の下位 8 ビットを設定
プログラムアドレス 1 の上位 8 ビットを設定 ( バンク )
プログラムアドレス 1 の中位 8 ビットを設定
プログラムアドレス 1 の下位 8 ビットを設定
プログラムアドレス検出レジスタ (PADR0, PADR1) には , INT9 命令と置き換える命令
の先頭アドレス (1 バイト目 ) を設定する必要があります。
図 21.3-4 INT9 命令と置き換える命令コードの先頭アドレスの設定
検出アドレスに設定(上位:FFH,中位:00H,下位:1FH)
FF001CH:
FF001FH:
FF0022H:
A8
4A
4A
00
00
00
00
00
00
MOVW
MOVW
MOVW
RW0,#0000
A,#0000
A,#0000
<注意事項>
プログラムアドレス検出レジスタ (PADR0, PADR1) に , 1 バイト目以外のアドレスを設定
した場合は , 命令コードが INT9 命令に置き換えられず , 割込み処理プログラムは実行さ
れません。また , 2 バイト目以降に設定した場合は , 命令コードで指定した番地が "01H"
(INT9 命令コード ) に置き換わってしまい , 誤作動を起こす原因になる場合があるので注
意してください。
プログラムアドレス検出レジスタ (PADR0, PADR1) は , 対応するプログラムアドレス一
致制御レジスタのアドレス一致検出動作を禁止してから
(PACSR レ ジ ス タ の
AD0E:bit1=0 または AD1E:bit3=0) 設定してください。アドレス一致検出動作を禁止せず
にプログラムアドレス検出レジスタを変更した場合 , アドレスの書込み中にアドレスが一
致すると直ちにアドレス一致検出機能が働いてしまい , 誤動作を起こす原因になります。
アドレス一致検出機能は , 内部 ROM のアドレスに対してのみ使用できます。外部メモリ
領域のアドレスを設定してもアドレス一致検出機能は働かず , INT9 命令は実行されませ
ん。
420
第 21 章 アドレス一致検出機能
21.4
アドレス一致検出機能の動作説明
アドレス一致検出機能は , プログラムで実行される命令のアドレスがプログラムア
ドレス検出レジスタ (PADR0, PADR1) で設定したアドレスと一致した場合に CPU
で実行される先頭の命令コードを INT9 (01H) 命令に置き換え , 割込み処理プログラ
ムへ分岐します。
■ アドレス一致検出機能の動作
図 21.4-1 に , アドレス一致検出機能の動作を示します。
図 21.4-1 アドレス一致検出機能の動作
プログラム実行
アドレス
プログラムで実行される命令
のアドレスがプログラムアド
レス検出レジスタ0H,M,Lと
一致
FF001CH:
FF001FH:
FF0022H:
命令コード
ニーモニック
A8
4A
4A
MOVW
MOVW
MOVW
00
00
80
00
00
08
RW0,#0000
A,#0000
A,#0880
INT9命令(01H)に置き換わる
■ 検出アドレスの設定方法
検出アドレスを設定するプログラムアドレス検出レジスタ 0(PADR0) のアドレス一致
検出動作を禁止してください (PACSR レジスタの AD0E:bit1=0)。プログラムアドレス
検出レジスタ 0(PADR0) に検出するアドレスを設定します。プログラムアドレス検出
レジスタ 0(PADR0) の上位に "FFH", 中位に "00H" 下位に "1FH" を設定してください。
検出アドレスを設定するプログラムアドレス検出レジスタ 0(PADR0) のアドレス一致
検出動作を許可してください (PACSR レジスタの AD0E:bit1=1 ) 。
■ プログラムの実行
プログラムで実行される命令のアドレスが設定した検出アドレスと一致すると , 一致
したアドレスの先頭の命令コードが INT9 命令コード ("01H") に置き換わります。
INT9 命令が実行されると , INT9 割込みが発生し , 割込み処理プログラムが実行されま
す。
421
第 21 章 アドレス一致検出機能
21.4.1
アドレス一致検出機能の使用例
アドレス一致検出機能を利用したプログラム修正のパッチ処理の例を示します。
■ システム構成と E2PROM のメモリ構成
● システム構成
図 21.4-2 に , アドレス一致検出機能を利用したシステム構成例を示します。
図 21.4-2 アドレス一致検出機能を利用したシステム構成例
シリアルE2PROM
インタフェース
MCU
MB90980
シリーズ
E2PROM
パッチプログラムを格納
SIN0
■ E2PROM のメモリマップ
図 21.4-3 に ,E2PROM 修正プログラムとデータの配置方法を示します。
図 21.4-3 E2PROM 修正プログラムとデータの配置方法
E2PROM
アドレス
PADR0
PADR1
422
0000H
修正プログラムバイト数
0001H
検出アドレス0(下位)
0002H
検出アドレス0(中位)
0003H
検出アドレス0(上位)
0004H
修正プログラムバイト数
0005H
検出アドレス1(下位)
0006H
検出アドレス1(中位)
0007H
検出アドレス1(上位)
0010H
修正プログラム0
(本体)
0020H
修正プログラム1
(本体)
修正プログラム0用
修正プログラム1用
第 21 章 アドレス一致検出機能
● 修正プログラムバイト数
修正プログラム ( 本体 ) の総バイト数を格納します。バイト数が "00H" の場合は , " 修
正プログラムは存在しない " ことを示します。
● 検出アドレス (24 ビット )
プログラムミスにより INT9 命令に置き換える箇所のアドレスを格納します。このアド
レスはプログラムアドレス検出レジスタ (PADR0, PADR1) に設定するアドレスです。
● 修正プログラム ( 本体 )
プログラムのアドレスと検出アドレスが一致した場合のINT9割込みによって実行する
プログラムを格納します。修正プログラム 0 は , 任意に決めたアドレスから配置しま
す。修正プログラム 1 は , <修正プログラム 0 の先頭アドレス + 修正プログラム 0 の
総バイト数>のアドレスから配置します。
■ 設定と動作状態
● 初期設定
E2PROM のデータはすべて "00H" にクリアします。
● プログラムミスが発生した場合
コネクタ接続 (UART) を使用して , 外部から MCU (MB90980) へ , E2PROM 修正プログ
ラムとデータの配置方法に従って修正プログラムの情報を送ります。
MCU (MB90980) 側では , 外部から受け取った修正プログラムの情報を E2PROM へ格納
します。
● リセットシーケンス
リセット後 , MCU (MB90980) は , E2PROM 修正プログラムのバイト数を読み出して , 修
正プログラムの有無を確認します。
修正プログラムのバイト数が "00H" でない場合は , 検出アドレス 0, 1 の上位 , 中位 , 下位
を読み出してプログラムアドレス検出レジスタ 0, 1 (PADR0, PADR1) へ読み出したデー
タを設定します。また , 修正プログラムバイト数に従って , 修正プログラム ( 本体 ) を読
み出して , MCU (MB90980) の RAM へ書き込みます。
修正プログラム ( 本体 ) は , アドレス一致検出機能によって INT9 割込み処理で実行す
るアドレスに配置します。
アドレス一致検出動作を許可します (PACSR レジスタの AD0E:bit1=1, AD1E:bit3=1)。
● INT9 割込み処理
INT9 命令によって割込み処理が実行されます。MB90980 シリーズには , アドレス一致
検出による割込み要求フラグがありません。したがって , プログラムカウンタのスタッ
ク情報が破棄されると検出アドレスを確認できません。検出アドレスを確認する場合
は , 割込み処理ルーチンでスタックされているプログラムカウンタの値を確認してく
ださい。
修正プログラムの実行後に通常のプログラムに分岐します。
423
第 21 章 アドレス一致検出機能
■ 修正プログラムを E2PROM に格納する場合のアドレス一致検出機能の動作
図 21.4-4 に , 修正プログラムを E2PROM に格納する場合のアドレス一致検出機能の動
作を示します。
図 21.4-4 修正プログラムを E2PROM に格納する場合のアドレス一致検出機能の動作
000000 H
③
修正プログラム
RAM
プログラムアドレス検出レジスタ
E2PROM
①
検出アドレス設定
(リセットシーケンス)
・修正プログラムバイト数
・アドレス検出用アドレス
シリアルE2PROM ・修正プログラム
インタフェース
ROM
②
④
プログラムミス
FFFFFFH
①リセットシーケンスの検出アドレス設定と通常プログラムの実行
②アドレス一致検出によるINT9割込み処理でRAMに展開した修正プログラムへ分岐
③INT9処理の分岐による修正プログラムの実行
④修正プログラムから分岐した元の通常プログラムの実行
424
第 21 章 アドレス一致検出機能
■ プログラム修正のパッチ処理フロー
図 21.4-5 に , プログラム修正のパッチ処理のフローを示します。
図 21.4-5 プログラム修正のパッチ処理フロー
E2PROM
MB90980 シリーズ
I/O 領域
0000H
パッチプログラムバイト数:80H
000100H
レジスタ /RAM 領域
0001H
検出アドレス ( 下位 ):00H
000400H
パッチプログラム
0002H
検出アドレス ( 中位 ):80H
000480H
RAM 領域
0003H
検出アドレス ( 上位 ):FFH
000000H
RAM
スタック領域
0010H
パッチプログラム
0090H
FFFFH
検出アドレス設定レジスタ
FF0000H
ROM
プログラムエラー
FF0000H
FF0050H
FFFFFFH
リセット
YES
INT9
E2PROM の "00H"
を読み出す
パッチプログラムへ分岐
JMP 000400H
E2PROM : "0000H"=0
パッチプログラム実行
"000400H" ~ "000480H"
NO
パッチプログラム終了
JMP FF8050H
検出アドレスを読み出す
E2PROM : "0001H" ~ "0003H"
↓ MOV
MCU : PADR0 に設定
パッチプログラムを読み出す
E2PROM : "0010H" ~ "008FH"
↓
MCU : "000400H" ~ "00047FH"
許可アドレス一致検出
(PACSR : ADE0 = 1)
通常プログラム実行
NO
プログラムアドレス
PC = PADR0
YES
INT9
425
第 21 章 アドレス一致検出機能
21.5
アドレス一致検出機能のプログラム例
アドレス一致検出機能のプログラム例を示します。
■ アドレス一致検出機能のプログラム例
● 処理仕様
プログラムで実行される命令のアドレスとプログラムアドレス検出レジスタ (PADR0)
に設定したアドレスが一致した場合に INT9 命令が実行されます。
● コーディング例
PACSR EQU
PADRL EQU
PADRM EQU
PADRH EQU
;
00009EH
000001H
000002H
000003H
; プログラムアドレス検出制御 ステータスレジスタ
; プログラムアドレス検出レジスタ 0 下位
; プログラムアドレス検出レジスタ 0 中位
; プログラムアドレス検出レジスタ 0 上位
;--------- メインプログラム ------------------------------------------------------------------------CODE CSEG
START:
MOV PADRL,#00H
MOV PADRM,#00H
MOV PADRH,#00H
; スタックポインタ (SP) などは
; 初期化済みとする
; プログラムアドレス検出レジスタ 0 下位設定
; プログラムアドレス検出レジスタ 0 中位設定
; プログラムアドレス検出レジスタ 0 上位設定
;
MOV I:PACSR,#00000010B
・
ユーザ処理
・
LOOP:
; アドレス一致検出の許可
・
ユーザ処理
・
BRA LOOP
;--------- 割込みプログラム ------------------------------------------WARI:
・
ユーザ処理
・
RETI
CODE ENDS
; 割込み処理からの復帰
;--------- ベクタ設定 -----------------------------------------------VECT CSEG ABS=0FFH
ORG 00FFDCH
DSL START
DB 00H
VECT ENDS
END START
426
; リセットベクタ設定
; シングルチップモードに設定
第 22 章
ROM ミラー機能選択
モジュール
ROM ミラー機能選択モジュールの概要およびレジ
スタについて説明します。
22.1 ROM ミラー機能選択モジュールの概要
22.2 ROM ミラー機能選択レジスタ (ROMM)
427
第 22 章 ROM ミラー機能選択 モジュール
22.1
ROM ミラー機能選択モジュールの概要
ROM ミラー機能選択モジュールは , FF バンクに配置されている ROM 内のデータを
00 バンクへのアクセスで読み出せるように設定します。
■ ROM ミラー機能選択モジュールのブロックダイヤグラム
図 22.1-1 に , ROM ミラー機能選択モジュールのブロックダイヤグラムを示します。
図 22.1-1 ROM ミラー機能選択モジュールのブロックダイヤグラム
F2MC-16LXバス
ROMミラー機能選択
アドレス領域
アドレス
FFバンク
データ
00バンク
ROM
■ ROM ミラー機能選択モジュールのレジスタ
図 22.1-2 に , ROM ミラー機能選択レジスタ (ROMM) を示します。
図 22.1-2 ROM ミラー機能選択レジスタ (ROMM)
ROMM
アドレス:
00006F H
bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8
-
-
-
-
-
-
MS
MI
R/W R/W
R/W :リード/ライト可能
428
初期値
------01B
第 22 章 ROM ミラー機能選択 モジュール
22.2
ROM ミラー機能選択レジスタ (ROMM)
ROM ミラー機能選択レジスタ (ROMM) の構成および機能について説明します。
■ ROMM(ROM ミラー機能選択レジスタ )
図 22.2-1 に , ROM ミラー機能選択レジスタ (ROMM) のビット構成を示します。
図 22.2-1 ROM ミラー機能選択レジスタ (ROMM) のビット構成
ROMM
アドレス:
00006F H
bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8
-
-
-
-
-
-
MS
MI
R/W R/W
初期値
------01B
R/W :リード/ライト可能
[bit9] MS
このビットは ROM ミラーの領域を選択します .
"1" : ROM ミラー領域が 32K バイト (008000H ~ 00FFFFH) となります。
"0" : ROM ミラー領域が 48K バイト (004000H ~ 00FFFFH) となります。
[bit8] MI
このビットは ROM ミラー機能を有効にするか , 無効にするかを設定します。
"1" : ミラー機能を有効にします。
"0" : ミラー機能を無効にします。
<注意事項>
• このレジスタは , アドレス "004000H" ~ "00FFFFH" (008000H ~ 00FFFFH) 番地の使用
中にアクセスしないでください。
• ROM ミラー機能を起動している場合 , 00 バンクの "004000H" ~ "00FFFFH" (008000H ~
00FFFFH) 番地へ"FF4000H"~"FFFFFFH" (FF8000H ~FFFFFFH) 番地のデータがミラー
されます。"FF3FFFH" (FF7FFFH) 番地以下の ROM アドレスでは ROM のミラー機能を
設定しても 00 バンクにミラーされません。
429
第 22 章 ROM ミラー機能選択 モジュール
430
第 23 章
1.5M ビットフラッシュメモリ
1.5M ビットフラッシュメモリの機能や動作につい
て説明します。
フラッシュメモリへのデータの書込み / 消去の方法
には下記の方法があります。
• プログラム実行による書込み / 消去
• シリアルライタによる書込み
• フラッシュメモリライタによる書込み
「プログラム実行による書込み / 消去」および「シ
リアルライタによる書込み」について説明します。
23.1 1.5M ビットフラッシュメモリの概要
23.2 1.5M ビットフラッシュメモリのセクタ構成
23.3 フラッシュメモリコントロールステータスレジスタ
(FMCS)
23.4 フラッシュメモリの自動アルゴリズム起動方法
23.5 自動アルゴリズム実行状態の確認
23.6 フラッシュメモリの書込み / 消去
431
第 23 章 1.5M ビットフラッシュメモリ
23.1
1.5M ビットフラッシュメモリの概要
1.5M ビットフラッシュメモリは , フラッシュメモリインタフェース回路の機能に
よって , マスク ROM と同様に CPU からの読出しアクセスおよびプログラムアクセ
スが可能です。フラッシュメモリへの書込み / 消去は , フラッシュメモリインタ
フェース回路を介して , CPU からの命令動作により実行されます。このため , 内蔵
CPU の制御による実装状態での書換えが可能となり , プログラムおよびデータの改
善を効率よくできます。
なお , イネーブルセクタプロテクトなどのセレクタオペレーションは使用できません。
■ 1.5M ビットフラッシュメモリの特長
1.5M ビットフラッシュメモリには , 以下の特長があります。
• 192K ワード× 8 ビット /96K ワード× 16 ビット (16K+8K+8K+32K+32K+64K+32K) セク
タ構成
• 自動プログラムアルゴリズム (Embedded AlgorithmTM*:MBM29F400TA と同様 )
• 消去一時停止 / 消去再開機能の搭載
• データポーリング , トグルビットによる書込み / 消去の完了検出
• CPU 割込みによる書込み / 消去の完了検出
• JEDEC 標準型コマンドと互換
• セクタごとの消去が可能 ( セクタの組合せ自由 )
• 書込み / 消去回数 ( 最小 ) 10000 回
*: Embedded AlgorithmTM は , Advanced Micro Devices 社の商標です。
■ フラッシュメモリの書込み / 消去の方法
フラッシュメモリは , 書込みと読出しを同時に行うことはできません。フラッシュメモ
リにデータ書込み / 消去の動作をさせる際には , フラッシュメモリ上にあるプログラム
を RAM に一度コピーし , RAM 上で実行してください。これによって , フラッシュメ
モリの読出しをせずに書込み動作だけを行うことが可能となります。
■ フラッシュメモリコントロールステータスレジスタ (FMCS)
図 23.1-1 に , フラッシュメモリで使用するフラッシュメモリコントロールステータス
レジスタ (FMCS) のビット構成を示します。
図 23.1-1 フラッシュメモリで使用するフラッシュメモリコントロールステータスレジスタ (FMCS)
のビット構成
フラッシュメモリコントロールステータスレジスタ(FMCS)
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
アドレス:
0000AE H INTE RDYINT WE
RDY 予約 LPM1 予約 LPM0
R/W
R/W
R/W :リード/ライト可能
W
:ライトオンリ
432
R/W
W
W
R/W
W
R/W
初期値
000X0000B
第 23 章 1.5M ビットフラッシュメモリ
23.2
1.5M ビットフラッシュメモリのセクタ構成
1.5M ビットフラッシュメモリのセクタ構成を示します。
■ セクタ構成
図 23.2-1 に , 1.5M ビットフラッシュメモリのセクタ構成を示します。図中のアドレス
には , 各セクタの上位アドレスと下位アドレスを示します。
CPU からアクセスする場合 , FC バンクレジスタに SA0, FD バンクレジスタに SA1, FE
バンクレジスタに SA2, FF バンクレジスタに SA3 ~ SA6 が配置されています。
図 23.2-1 1.5M ビットフラッシュメモリのセクタ構成
フラッシュメモリ
CPU アドレス
ライタアドレス
FFFFFFH
3FFFFH
FFC000H
FFBFFFH
3C000H
3BFFFH
FFA000H
FF9FFFH
3A000H
39FFFH
FF8000H
FF7FFFH
38000H
37FFFH
FF0000H
FEFFFFH
30000H
2FFFFH
FE8000H
FE7FFFH
28000H
27FFFH
FE0000H
FDFFFFH
20000H
1FFFFH
FD0000H
FCFFFFH
10000H
0FFFFH
FC8000H
FC7FFFH
08000H
07FFFH
FC0000H
00000H
SA6 (16K バイト )
SA5 (8K バイト )
SA4 (8K バイト )
SA3 (32K バイト )
SA2 (32K バイト )
未使用
SA1 (64K バイト )
SA0 (32K バイト )
未使用
● ライタアドレス
図 23.2-1 の中のライタアドレスとは , フラッシュメモリにパラレルライタでデータを
書き込む際 , CPU アドレスに相当するアドレスです。汎用ライタを使用して書込み / 消
去を行う際には , このアドレスで書込み / 消去を実行します。
433
第 23 章 1.5M ビットフラッシュメモリ
23.3
フラッシュメモリコントロールステータスレジスタ
(FMCS)
フラッシュメモリコントロールステータスレジスタ (FMCS) は , フラッシュメモリイ
ンタフェース回路にあるレジスタでフラッシュメモリの書込み / 消去の際に使用しま
す。
■ フラッシュメモリコントロールステータスレジスタ (FMCS)
図 23.3-1 に , フラッシュメモリコントロールステータスレジスタ (FMCS) のビット構成
を示します。
図 23.3-1 フラッシュメモリコントロールステータスレジスタ (FMCS) のビット構成
フラッシュメモリコントロールステータスレジスタ(FMCS)
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
アドレス:
0000AE H INTE RDYINT WE
RDY 予約 LPM1 予約 LPM0
R/W
R/W
R/W
W
W
W
R/W
初期値
000X0000B
R/W
R/W :リード/ライト可能
W
:ライトオンリ
以下に , フラッシュメモリコントロールステータスレジスタ (FMCS) の各ビットの機能
を説明します。
[bit7] INTE:INTerrupt Enable
このビットは , フラッシュメモリの書込み / 消去の終了による割込み要求発生を許
可または禁止します。
INTE ビットが "1" で , かつ RDYINT ビットが "1" のときに CPU へ割込みが発生し
ます。INTE ビットが "0" であれば , 割込みは発生しません。
動作
INTE
書込み / 消去終了での割込み禁止
書込み / 消去終了での割込み許可
0
1
[bit6] RDYINT:ReaDY INTerrupt
このビットは , フラッシュメモリの動作状態を表します。
フラッシュメモリの書込み / 消去が終了後 , "1" となります。フラッシュメモリ書込
み / 消去後 , このビットが "0" の間は , フラッシュメモリへの書込み / 消去はできま
せん。書込み / 消去が終了して "1" になった後は , フラッシュメモリへの書込み / 消
去が可能になります。
"0" の書込みによって "0" にクリアされます。"1" の書込みは無視されます。フラッ
シュメモリ自動アルゴリズム (「23.4 フラッシュメモリの自動アルゴリズム起動方
法」を参照 ) 終了タイミングで "1" にセットされます。リードモディファイライト
(RMW) 系命令使用時は , 必ず "1" が読み出されます。
RDYINT
0
1
434
動作
書込み / 消去動作実行中
書込み / 消去動作終了 ( 割込み要求発生 )
第 23 章 1.5M ビットフラッシュメモリ
[bit5] WE:書込みイネーブルビット
このビットは , フラッシュメモリ領域への書込みイネーブルビットです。
このビットが "1" のとき , FC ~ FF バンクへのコマンドシーケンス (「23.4 フラッ
シュメモリの自動アルゴリズム起動方法」を参照 ) 発行後の書込みは , フラッシュ
メモリ領域への書込みになります。このビットが "0" の場合 , 書込み / 消去の信号は
発生されません。このビットは , フラッシュメモリの書込み / 消去のコマンドを起
動する際に使用します。
書込み / 消去を行わないときは , 誤ってフラッシュメモリにデータを書き込まない
よう , 常に "0" に設定することを推奨します。
動作
WE
0
1
フラッシュメモリ書込み / 消去禁止
フラッシュメモリ書込み / 消去許可
[bit4] RDY:書込み / 消去許可ビット
このビットは , フラッシュメモリの書込み / 消去許可ビットです。
このビットが "0" の間は , フラッシュメモリへの書込み / 消去はできません。
なお , この状態でも読出し / リセットコマンド , セクタ消去一時停止コマンドは受け
付けられます。
動作
RDY
0
1
書込み / 消去動作実行中
書込み / 消去動作終了 ( 次データ書込み / 消去許可 )
[bit3] 予約ビット
このビットは , 予約ビットです。通常使用時は , 必ず "0" に設定してください。
[bit1] 空きビット
このビットは , 空きビットです。通常使用時は , 必ず "0" に設定してください。
[bit2, bit0] LPM1, LPM0: 低電力消費モード
これらのビットは , フラッシュメモリの消費電力を制御します。このビットが "00B"
のとき , フラッシュメモリは通常動作となります。また , "01B", "10B", "11B" のとき
は , フラッシュメモリアクセス時のフラッシュメモリへのセレクト信号により , フ
ラッシュメモリ本体の消費電力が抑えられます。しかし , アクセスタイムは
LPM=00B のときに比べて大幅に大きくなりますので, CPUの高速動作時はメモリア
クセスが不可能になります。このモードを使用するときは , それぞれ CPU を 4MHz,
8MHz, 10MHz の周波数で動作させてください。
LPM1
LPM0
0
0
1
1
0
1
0
1
消費電力モード
通常消費電力モード
低電力消費モード ( 内部動作周波数 4MHz 以下で動作 )
低電力消費モード ( 内部動作周波数 8MHz 以下で動作 )
低電力消費モード ( 内部動作周波数 10MHz 以下で動作 )
<注意事項>
CPU の周波数を 10MHz を超えて使用する場合は , 必ず通常モードで使用してください。
435
第 23 章 1.5M ビットフラッシュメモリ
■ 自動アルゴリズム終了タイミング
図 23.3-2 に , 自動アルゴリズム終了タイミングと RDYINT ビットおよび RDY ビットの
関係を示します。
RDYINT ビットと RDY ビットは同時には変化しません。どちらか一方のビットで自動
アルゴリズムの終了を判定するようにプログラムを作成してください。
図 23.3-2 自動アルゴリズム終了タイミングと RDYINT ビットおよび RDY ビットの関係
自動アルゴリズム
終了タイミング
RDYINTビット
RDYビット
1マシンサイクル
■ サブクロックモード使用時の注意点
サブクロックモードを使用する場合には , 表 23.3-1 に示すとおりフラッシュメモリコ
ントロールステータスレジスタ (AEH 番地 :FMCS レジスタ ) の低消費電力モード選択
ビット (LPM1, LPM0) を通常消費電力モード (LPM1, LPM0=0, 0) 以外に設定する必要が
あります。したがって , 内部クロックが 10MHz を超えて動作している状態からサブク
ロックモードへ遷移することはできません。
表 23.3-1 低消費電力モード選択ビット
LPM1
LPM0
0
0
1
1
0
1
0
1
436
低消費電力モード選択ビット
低消費電力モード
通常消費電力モード
低消費電力モード 内部クロック 4MHz 以下
低消費電力モード 内部クロック 8MHz 以下
低消費電力モード 内部クロック 10MHz 以下
サブクロックモード時の設定
×設定禁止
○設定可能
○設定可能
○設定可能
第 23 章 1.5M ビットフラッシュメモリ
■ サブクロックモード設定方法
サブクロックモードを使用する場合には , 以下の設定が必要となります。
● 内部クロック 10MHz 以下で使用する場合
サブクロックモードを使用する場合には,初期設定にてフラッシュメモリコントロール
ステータスレジスタの低消費電力モード選択ビットの変更 (LPM1, LPM0=0, 0 以外 ) を
行ってください。図 23.3-3 に , 内部クロック 10MHz 以下で使用する場合のフロー例を
示します。
図 23.3-3 内部クロック 10MHz 以下で使用する場合のフロー例
START
低消費電力モード設定
FMCSレジスタ設定
LPM1,LPM0=11B,10B または 01B
サブクロックモード
へ遷移するか?
NO
YES
サブクロックモードへ遷移
CKSCRレジスタ設定
SCS=0
サブクロックモードへ
437
第 23 章 1.5M ビットフラッシュメモリ
● 内部クロック 10MHz を超えて使用する場合
サブクロックモードを使用する場合には , サブクロックモードへ遷移する前に , 内部ク
ロックを 10MHz 以下に設定し , 次に低消費電力モード選択ビットの変更 (LPM1,
LPM0=00B 以外 ) を行ってください。図 23.3-4 に , 内部クロック 10MHz を超えて使用
する場合のフロー例を示します。
図 23.3-4 内部クロック 10MHz を超えて使用する場合のフロー例 1
START
サブクロックモード
へ遷移するか?
YES
内部クロック10MHz以下に設定
CKSCRレジスタ設定
低消費電力モード設定
FMCSレジスタ設定
LPM1,LPM0=11B,10B または 01B
サブクロックモードへ遷移
CKSCRレジスタ設定
SCS=0
サブクロックモードへ
438
NO
第 23 章 1.5M ビットフラッシュメモリ
サブクロックモード解除後 , 内部クロック 10MHz を超えて動作させる場合には , メイ
ンクロックモードまたは PLL クロックモード ( 内部クロックを 10MHz 以下 ) へ遷移し
た後に低消費電力モード選択ビットの変更 (LPM1, LPM0=00B) を行い , その後 , 内部ク
ロックを 10MHz を超える値に設定してください。図 23.3-5 に , 内部クロック 10MHz
を超えて使用する場合のフロー例を示します。
図 23.3-5 内部クロック 10MHz を超えて使用する場合のフロー例 2
サブクロックモード動作
メイン/PLLクロックモード
へ遷移するか?
NO
YES
メイン/PLLクロックモードへ遷移
CKSCRレジスタ設定
メイン/PLLクロックモード
へ遷移したか?
NO
YES
低消費電力モード設定
FMCSレジスタ設定
LPM1,LPM0=00B
内部クロック10MHzを超える値に設定
CKSCRレジスタ設定
内部クロック10MHzを超える動作へ
<注意事項>
サブクロックモードを使用する場合には , メインクロックに 20MHz 以下のクロック入力
を行ってください。20MHz を超えるクロック入力を行った場合 , 内部クロック 10MHz 以
下の設定が行えませんので , サブクロックモードは使用できません。
439
第 23 章 1.5M ビットフラッシュメモリ
23.4
フラッシュメモリの自動アルゴリズム起動方法
フラッシュメモリの自動アルゴリズムを起動するコマンドには , 読出し / リセット ,
書込み , チップ消去およびセクタ消去の 4 種類があります。セクタ消去について
は , 一時停止と再開の制御が可能です。
■ コマンドシーケンス表
表 23.4-1 に , コマンドシーケンス表を示します。コマンドレジスタに書き込むデータ
はすべてバイトですが , ワードアクセスで書き込むようにしてください。このときの上
位バイト分のデータは無視されます。
表 23.4-1 コマンドシーケンス表
1st バス書込み 2nd バス書込み 3rd バス書込み 4th バス書込み 5th バス書込み 6th バス書込み
バス
コマンド
サイクル
サイクル
サイクル
サイクル
サイクル
サイクル
書込み
シーケンス
サイクル アドレス データ アドレス データ アドレス データ アドレス データ アドレス データ アドレス データ
読出し /
リセット *
読出し /
リセット *
書込み
プログラム
チップ消去
セクタ消去
1
FxXXXX XXF0
-
-
-
-
4
FxAAAA XXAA Fx5554
4
FxAAAA XXAA Fx5554
6
FxAAAA XXAA Fx5554
PA
PD
(even) (word)
XX55 FxAAAA XX80 FxAAAA XXAA Fx5554
6
FxAAAA XXAA Fx5554
XX55 FxAAAA XX80 FxAAAA XXAA Fx5554
XX55 FxAAAA XXF0
-
-
-
-
-
-
RA
RD
-
-
-
-
-
-
-
XX55 FxAAAA XXA0
XX55 FxAAAA XX10
SA
XX55
XX30
(even)
セクタ消去一時停止
Address "FxXXXXH" Data(xxB0H) の入力で , セクタ消去中の消去一時停止
セクタ消去再開
Address "FxXXXXH" Data(xx30H) の入力で , セクタ消去一時停止後 , 消去再開
RA: 読出しアドレス
PA: 書込みアドレス , 偶数アドレスのみ指定可能
SA: セクタアドレス (「23.2 1.5M ビットフラッシュメモリのセクタ構成」を参照 )
RD: 読出しデータ
PD: 書込みデータ , ワードデータのみ指定可能
*: 2 種類の読出し / リセットコマンドは , どちらもフラッシュメモリを読出しモードにリセットすることができます。
( 注意事項 )・ 表中のアドレス Fx は , FF, FE, FD, FC を意味します。それぞれの操作時には , アクセス対象バンクの値を指定して
ください。
・ 表中のアドレスは , CPU メモリマップ上の値です。アドレスおよびデータはすべて 16 進数表記しています。ただし ,
"X" は任意の値です。
440
第 23 章 1.5M ビットフラッシュメモリ
23.5
自動アルゴリズム実行状態の確認
フラッシュメモリでは , 書込み / 消去のフローを自動アルゴリズムで行うため , フ
ラッシュメモリ内部の動作状態や動作が完了したことを知らせるハードウェアシー
ケンスフラグを持っています。
■ ハードウェアシーケンスフラグ
ハードウェアシーケンスフラグは , データポーリングフラグ (DQ7), トグルビットフラ
グ (DQ6), タイミングリミット超過フラグ (DQ5), セクタ消去タイマフラグ (DQ3) の 4
ビットの出力で構成されます。各ビットの状態により , 書込み / チップセクタ消去終了 ,
消去コード書込みの有効性を確認します。
表 23.5-1 に , ハードウェアシーケンスフラグのビット割当てを示します。
表 23.5-1 ハードウェアシーケンスフラグのビット割当て
ビット No.
ハードウェアシーケンス
フラグ
7
6
5
4
3
2
1
0
DQ7
DQ6
DQ5
-
DQ3
-
-
-
コマンドシーケンス ( 表 23.4-1 を参照 ) 設定後にフラッシュメモリ内部の対象セクタの
アドレスをリードアクセスすることにより, ハードウェアシーケンスフラグを参照でき
ます。
自動アルゴリズム実行状態は , 以下の方法で確認できます。
• ハードウェアシーケンスフラグの参照による確認
• フラッシュメモリコントロールレジスタ (FMCS) の RDY ビット参照による確認
実際にプログラムを作成する際には , これらの確認方法で自動アルゴリズム実行の完
了を確認後に , 次の命令を実行するようにしてください。次項より各ハードウェアシー
ケンスフラグについて説明します。
表 23.5-2 に , ハードウェアシーケンスフラグの一覧を示します。
表 23.5-2 ハードウェアシーケンスフラグの機能一覧
状態
DQ7
DQ6
DQ5
DQ3
DQ7 →
DATA:7
Toggle →
DATA:6
0→
DATA:5
0→
DATA:3
0→1
Toggle → Stop
01
1
0
Toggle
0
0→1
正常動作時の 消去動作→セクタ消去一時停止
状態変化
( 消去中のセクタ )
0→1
Toggle → 1
0
1→0
セクタ消去一時停止→消去再開
( 消去中のセクタ )
1→0
1 → Toggle
0
0→1
DATA:7
DATA:6
DATA:5
DATA:3
DQ7
Toggle
1
0
0
Toggle
1
1
書込み動作→書込み完了
( 書込みアドレス指定時 )
チップセクタ消去動作→消去完了
セクタ消去ウェイト→消去開始
セクタ消去一時停止中
( 消去中でないセクタ )
異常動作
書込み動作
チップセクタ消去動作
441
第 23 章 1.5M ビットフラッシュメモリ
データポーリングフラグ (DQ7)
23.5.1
データポーリングフラグ (DQ7) は , 自動アルゴリズム実行が進行中または終了状態
であることをデータポーリング機能によって知らせるためのフラグです。
■ データポーリングフラグ (DQ7) の状態遷移
● 正常動作時の状態変化
動作
状態
書込み動作
→完了
DQ7
DQ7 →
DATA:7
チップセクタ消去 セクタ消去ウェイト
→完了
→開始
0→1
0
セクタ消去
→消去一時停止
消去中のセクタ
0→1
セクタ消去一時停止
セクタ消去
→再開
一時停止中
消去中のセクタ
消去中でないセクタ
1→0
DATA:7
● 異常動作時の状態変化
動作
状態
書込み動作
チップセクタ
消去動作
DQ7
DQ7
0
■ 書込み動作時
自動書込みアルゴリズム実行中に読出しアクセスをすると,フラッシュメモリはアドレ
スの示す番地によらず , 最後に書き込まれたデータの bit7 の反転データを出力します。
自動書込みアルゴリズム終了時に読出しアクセスをすると,フラッシュメモリはアドレ
スの示す番地の読出し値の bit7 を出力します。
■ チップ / セクタ消去動作時
チップ消去 / セクタ消去アルゴリズム実行中に , セクタ消去時は現在消去しているセク
タから , チップ消去時はアドレスの示す番地に関係なく読出しアクセスするとフラッ
シュメモリは "0" を出力します。同様に , 終了時には "1" を出力します。
■ セクタ消去一時停止時
セクタ消去一時停止時に読出しアクセスをすると,フラッシュメモリはアドレスの示す
番地が消去中のセクタであれば "1" を出力し , 消去中のセクタでなければアドレスの示
す番地の読出し値の bit7(DATA:7) を出力します。トグルビットフラグ (DQ6) とともに
参照することで , 現在セクタ一時停止状態であるか , どのセクタが消去中であるかを判
定できます。
<注意事項>
自動アルゴリズム起動時は , 指定したアドレスへのリードアクセスは無視されます。デー
タポーリングフラグ (DQ7) の終了確認後 , データの読出しができます。このため , 自動ア
ルゴリズム終了後のデータの読出しは , データポーリング終了を確認したリードアクセス
直後に行うようにしてください。
442
第 23 章 1.5M ビットフラッシュメモリ
トグルビットフラグ (DQ6)
23.5.2
トグルビットフラグ (DQ6) は , データポーリングフラグ (DQ7) と同様に , 主に自動
アルゴリズム実行が進行中 , もしくは終了状態であることをトグルビット機能によっ
て知らせるためのフラグです。
■ トグルビットフラグ (DQ6) の状態遷移
● 正常動作時の状態変化
動作
状態
書込み動作
→完了
DQ6
Toggle
→ DATA:6
チップセクタ消去 セクタ消去ウェイト
→完了
→開始
Toggle → Stop
Toggle
セクタ消去
→消去一時停止
消去中のセクタ
Toggle → 1
セクタ消去一時停止
セクタ消去
→再開
一時停止中
消去中のセクタ
消去中でないセクタ
1 → Toggle
DATA:6
● 異常動作時の状態変化
動作
状態
書込み動作
チップセクタ
消去動作
DQ6
Toggle
Toggle
■ 書込み / チップセクタ消去時
自動書込みアルゴリズムおよびチップセクタ消去アルゴリズム実行中に連続した読出
しアクセスを行うと , フラッシュメモリはアドレスの示す番地によらず , 読出しごとに
"1" と "0" を交互に出力するトグル状態を出力します。自動書込みアルゴリズムおよび
チップ / セクタ消去アルゴリズム終了時に連続したリードアクセスを行うと , フラッ
シュメモリは bit6 のトグル動作を止め , アドレスの示す番地の読出し値の bit6(DATA:6)
を出力します。
■ セクタ消去一時停止時
セクタ消去一時停止時にリードアクセスすると,フラッシュメモリはアドレスの示す番
地が消去中のセクタに属する場合は "1" を出力します。消去中のセクタに属さない場
合は , アドレスの示す番地の読出し値の bit6(DATA:6) を出力します。
<参考>
書込みの際 , 書き込もうとしているセクタが書換え保護されている場合は , 約 2μs のトグ
ル動作をした後 , データを書き換えることなくトグル動作を終わります。
消去の際 , 選択されたすべてのセクタが書換え保護されている場合は , トグルビットは約
100μs のトグル動作を行い , その後データを書き換えずに読出し / リセット状態に戻りま
す。
443
第 23 章 1.5M ビットフラッシュメモリ
タイミングリミット超過フラグ (DQ5)
23.5.3
タイミングリミット超過フラグ (DQ5) は , 自動アルゴリズムの実行がフラッシュメ
モリ内部に規定された時間 ( 内部パルス回数 ) を超えてしまったことを知らせるフラ
グです。
■ タイミングリミット超過フラグ (DQ5) の状態遷移
● 正常動作時の状態変化
動作
状態
書込み動作
→完了
DQ5 0 → DATA:5
チップセクタ消去 セクタ消去ウェイト
→完了
→開始
0→1
0
セクタ消去
→消去一時停止
消去中のセクタ
0
セクタ消去一時停止
セクタ消去
→再開
一時停止中
消去中のセクタ
消去中でないセクタ
0
DATA:5
● 異常動作時の状態変化
動作
状態
書込み動作
チップセクタ
消去動作
DQ5
1
1
■ 書込み / チップセクタ消去時
書込みまたはチップセクタ消去自動アルゴリズム起動後にリードアクセスすると,規定
時間 ( 書込み / 消去に要する時間 ) 内であれば "0" を , 規定時間を超えた場合は "1" を
出力します。これは,自動アルゴリズムが実行中か終了状態にあるかとは無関係なため,
書込み / 消去が成功したか失敗したかの判定に使用できます。すなわち , このフラグが
"1" を出力したとき , データポーリング機能またはトグルビット機能によって自動アル
ゴリズムがまだ実行中であれば , 書込みが失敗していると判断できます。
例えば , "0" が書き込まれているフラッシュメモリアドレスに "1" を書き込もうとする
とフェイルが発生します。この場合 , フラッシュメモリはロックされ , 自動アルゴリズ
ムは終了しません。まれに "1" が書き込めたように正常終了する場合もあります。し
たがって , データポーリングフラグ (DQ7) から有効なデータが出力されません。また ,
トグルビットフラグ (DQ6) はトグル動作を止めず , タイムリミットを超えると , タイミ
ングリミット超過フラグ (DQ5) は "1" を出力します。この状態は , フラッシュメモリが
不良ということではなく , 正しく使用されなかったということを表しています。この状
態が発生したときは , リセットコマンドを実行してください。
444
第 23 章 1.5M ビットフラッシュメモリ
23.5.4
セクタ消去タイマフラグ (DQ3)
セクタ消去タイマフラグ (DQ3) は , セクタ消去コマンド起動後 , セクタ消去ウェイト
期間中であるか否かを知らせるフラグです。
■ セクタ消去タイマフラグ (DQ3) の状態遷移
● 正常動作時の状態変化
動作
状態
書込み動作
→完了
チップセクタ消去 セクタ消去ウェイト
→完了
→開始
DQ3 0 → DATA:3
1
0→1
セクタ消去
→消去一時停止
消去中のセクタ
1→0
セクタ消去一時停止
セクタ消去
→再開
一時停止中
消去中のセクタ
消去中でないセクタ
0→1
DATA:3
● 異常動作時の状態変化
動作
状態
書込み動作
チップセクタ
消去動作
DQ3
0
1
■ セクタ消去動作時
セクタ消去コマンド起動後に読出しアクセスをすると,フラッシュメモリはコマンドを
発行したセクタのアドレス信号の示す番地によらずに,セクタ消去ウェイト期間中であ
れば "0" を , セクタ消去ウェイト期間を超えてしまっている場合は "1" を出力します。
データポーリング機能やトグルビット機能によって消去アルゴリズムが実行中を示し
ている場合 , このフラグが "1" であれば , 内部で制御される消去が始まっています。続
けてのセクタ消去コードの書込みまたは消去一時停止以外のコマンド発行は,消去が終
了されるまで無視されます。
このフラグが "0" であれば , フラッシュメモリは , 追加のセクタ消去コードの書込みを
受け付けます。
このことを確認するために,次のセクタ消去コードの書込みに先立って,
このフラグの状態をチェックしておくことを推奨します。2 回目の状態チェックでフラ
グが "1" であった場合は , 追加セクタの消去コードは受け付けられていない可能性があ
ります。
■ セクタ消去一時停止時
セクタ消去一時停止中に読出しアクセスをすると,フラッシュメモリはアドレスの示す
番地が消去中のセクタに属する場合は "1" を出力します。消去中のセクタに属さない
場合はアドレスの示す番地の読出し値の bit3(DATA:3) を出力します。
445
第 23 章 1.5M ビットフラッシュメモリ
23.6
フラッシュメモリの書込み / 消去
自動アルゴリズムの起動によるフラッシュメモリの書込み / 消去の手順について説明
します。
■ フラッシュメモリの書込み / 消去
自動アルゴリズムは , 読出し / リセット , 書込み , チップ消去 , セクタ消去 , セクタ消去
一時停止 , 消去再開のいずれかのコマンドシーケンス ( 表 23.4-1 を参照 ) を CPU から
フラッシュメモリに書き込むことにより起動できます。CPU からフラッシュメモリへ
の書込みは必ず連続して行ってください。また , 自動アルゴリズムはデータポーリング
機能により終了状態を確認できます。正常終了後は , 読出し / リセット状態に戻ります。
以下の項で , フラッシュメモリの書込み / 消去に関する下記項目について説明します。
• 読出し / リセット状態にする方法
• データを書き込む方法
• 全データを消去する方法 ( チップ全消去 )
• 任意のデータを消去する方法 ( セクタ消去 )
• セクタ消去を一時停止する方法
• セクタ消去を再開する方法
446
第 23 章 1.5M ビットフラッシュメモリ
23.6.1
フラッシュメモリを読出し / リセット状態にする方法
読出し / リセットコマンドを発行し , フラッシュメモリを読出し / リセット状態にす
る手順について説明します。
■ フラッシュメモリを読出し / リセット状態にする方法
フラッシュメモリを読出し / リセット状態にするには , コマンドシーケンス表 ( 表 23.41 を参照 ) の読出し / リセットコマンドをフラッシュメモリ内の対象セクタに続けて送
ることで実行できます。
読出し / リセットコマンドには , 1 回と 3 回のバス動作を行う 2 とおりのコマンドシー
ケンスがありますが , これらに本質的な違いはありません。
読出し / リセット状態は , フラッシュメモリの初期状態であり , 電源投入時 , およびコ
マンドの正常終了時は常に読出し / リセット状態になります。読出し / リセット状態は ,
ほかのコマンドの入力待ち状態です。
読出し / リセット状態では , 通常の読出しアクセスでデータを読み出すことができま
す。マスク ROM と同様に , CPU からのプログラムアクセスが可能です。通常読出しで
のデータ読出しに , このコマンドは必要ありません。何らかの理由でコマンドが正常に
終了しなかったときなど , 自動アルゴリズムを初期化する場合に , 主にこのコマンドを
使用します。
447
第 23 章 1.5M ビットフラッシュメモリ
23.6.2
フラッシュメモリにデータを書き込む方法
書込みコマンドを発行し , フラッシュメモリにデータを書き込む手順について説明し
ます。
■ フラッシュメモリへのデータ書込み
フラッシュメモリのデータ書込み自動アルゴリズムを起動するには,コマンドシーケン
ス表 ( 表 23.4-1 を参照 ) の書込みコマンドをフラッシュメモリ内の対象セクタに続け
て送ることで実行できます。4 サイクル目に目的のアドレスへのデータ書込みが終了し
た時点で自動アルゴリズムが起動され , 自動書込みが開始されます。
● アドレス指定方法
書込みデータサイクルの中で指定する書込みアドレスは,偶数アドレスのみ指定が可能
です。奇数アドレスを指定すると正しく書き込むことができません。つまり , 偶数アド
レスへのワードデータ単位での書込みが必要となります。
書込みはどのようなアドレスの順番でも , また , セクタの境界を超えても可能ですが ,
1 回の書込みコマンドによって書き込まれるデータは 1 ワードのみです。
● データ書込み上の注意
フラッシュメモリ上のデータを "0" から "1" に書き込むと , データポーリングフラグ
(DQ7) またはトグルビットフラグ (DQ6) が終了状態にならないため , フラッシュメモリ
素子が不良と判定され以下の状態に陥るため , 書込みによってフラッシュメモリ上の
データを "0" から "1" へ戻すことは行わないでください。
• 書込み規定時間を超えてタイムリミット超過フラグ (DQ5) がエラー状態となる。
• 見かけ上フラッシュメモリ上のデータに "1" が書き込まれたかのように見える状態
となる ( 読出し / リセット状態でデータを読み出すと , データは "0" のままです。デー
タを "0" から "1" に戻す場合は , 消去を行ってください )。
自動書込み実行中は , すべてのコマンドが無視されます。書込み中にハードウェアリ
セットが起動されると , 書き込んでいるアドレスのデータは保証されません。
448
第 23 章 1.5M ビットフラッシュメモリ
■ フラッシュメモリの書込み手順
図 23.6-1 に , フラッシュメモリ書込み手順の例を示します。ハードウェアシーケンス
フラグ (「23.5 自動アルゴリズム実行状態の確認」を参照 ) を用いることでフラッシュ
メモリ内部の自動アルゴリズムの状態を判定できます。ここでは , 書込み終了の確認
に , データポーリングフラグ (DQ7) を用いています。
フラグチェックのために読み出すデータは,最後に書込みを行ったアドレスからの読出
しとなります。
データポーリングフラグ (DQ7) は , タイミングリミット超過フラグ (DQ5) と同時に変
わるので , たとえタイミングリミット超過フラグ (DQ5) が "1" であっても , データポー
リングフラグビット (DQ7) を再チェックする必要があります。
トグルビットフラグ (DQ6) も同様に , タイミングリミット超過フラグビット (DQ5) が
"1"に変わるのと同時にトグル動作を止めるので,トグルビットフラグ(DQ6)を再チェッ
クする必要があります。
図 23.6-1 フラッシュメモリ書込み手順の例
書込み開始
FMCS:WE(bit5)
フラッシュメモリ
書込み許可
書込みコマンドシーケンス
① FxAAAA←XXAA
② Fx5554←XX55
③ FxAAAA←XXA0
④ 書込みアドレス←書込みデータ
内部アドレスリード
データポーリング(DQ7)
次アドレス
Data
Data
0
タイミングリミット(DQ5)
1
内部アドレスリード
Data
データポーリング(DQ7)
Data
書込みエラー
最終アドレス
FMCS:WE(bit5)
フラッシュメモリ
書込み禁止
書込み完了
:ハードウェアシーケンス
フラグによる確認
449
第 23 章 1.5M ビットフラッシュメモリ
23.6.3
フラッシュメモリの全データを消去する方法
( チップ全消去 )
チップ消去コマンドを発行し , フラッシュメモリの全データを消去する手順について
説明します。
■ フラッシュメモリの全データを消去する方法 ( チップ全消去 )
フラッシュメモリからすべてのデータを消去するには,コマンドシーケンス表(表 23.41 を参照 ) のチップ消去コマンドをフラッシュメモリ内の対象セクタに続けて送るこ
とで実行できます。チップ消去コマンドは , 6 回のバス動作で行われます。6 サイクル
目の書込みが完了した時点でチップ消去動作が開始します。
チップ消去では , 消去前にユーザがフラッシュメモリに書込みを行う必要はありませ
ん。自動消去アルゴリズム実行中には , フラッシュメモリは自動的にすべてのセルを消
去する前に "0" を書き込んで検証します。
450
第 23 章 1.5M ビットフラッシュメモリ
23.6.4
フラッシュメモリの任意のデータを消去する方法
( セクタ消去 )
セクタ消去コマンドを発行し , フラッシュメモリの任意のセクタを消去する手順につ
いて説明します。セクタごとの消去が可能であり , 複数のセクタを同時に指定するこ
ともできます。
■ フラッシュメモリの任意のデータを消去する方法 ( セクタ消去 )
フラッシュメモリの任意のセクタを消去するためには,コマンドシーケンス表(表 23.41 を参照 ) のセクタ消去コマンドをフラッシュメモリ内の対象セクタに続けて送るこ
とで実行できます。
● セクタ指定方法
セクタ消去コマンドは , 6 回のバス動作で行われます。6 サイクル目に目的のセクタ内
のアクセス可能な任意の偶数の 1 アドレスへセクタ消去コード (30H) を書き込みます。
これによって 50μs のセクタ消去ウェイトが開始します。複数のセクタを消去する場合
は , 上記の処理に引き続き , 消去する目的のセクタ内のアドレスに消去コード (30H) を
書き込んでください。
● 複数のセクタを指定する場合の注意
最後のセクタ消去コードの書込みから 50μs のセクタ消去ウェイト期間終了により消去
が開始します。つまり , 複数のセクタを同時に消去する場合は , 次の消去セクタのアド
レスと消去コード ( コマンドシーケンス 6 サイクル目 ) をそれぞれ 50μs 以内に入力す
る必要があります。引き続くセクタ消去コードの書込みが有効かどうかは , セクタ消去
タイマ ( ハードウェアシーケンスフラグ :DQ3) によって調べることができます。
なお , このとき , セクタ消去タイマを読み出すアドレスは , 消去しようとしているセク
タを指すようにしてください。
■ セクタ消去の手順
ハードウェアシーケンスフラグ (「23.5 自動アルゴリズム実行状態の確認」を参照 ) を
用いることによってフラッシュメモリ内部の自動アルゴリズムの状態を判定できま
す。図 23.6-2 に , フラッシュメモリのセクタ消去手順の例を示します。ここでは , 消去
終了の確認にトグルビットフラグ (DQ6) を用いています。
フラグチェックのために読み出すデータは,消去しようとしているセクタからの読出し
となりますので注意が必要です。
トグルビットフラグ (DQ6) は , タイミングリミット超過フラグ (DQ5) が "1" に変わる
のと同時にトグル動作を止めるので , たとえタイミングリミット超過フラグ (DQ5) が
"1" であってもトグルビットフラグ (DQ6) を再チェックする必要があります ( 図 23.6-2
の
内の処理 )。
データポーリングフラグ (DQ7) も同様に , タイミングリミット超過フラグ (DQ5) と同
時に変わるので , データポーリングフラグ (DQ7) を再チェックする必要があります。
451
第 23 章 1.5M ビットフラッシュメモリ
図 23.6-2 フラッシュメモリのセクタ消去手順の例
消去開始
FMCS:WE(bit5)
フラッシュメモリ
消去許可
消去コマンドシーケンス
① FxAAAA
XXAA
② Fx5554
XX55
③ FxAAAA
XX80
④ FxAAAA
XXAA
⑤ Fx5554
XX55
⑥消去セクタへコード入力 (30H)
YES
消去セクタが
ほかにあるか
NO
内部アドレスリード 1
内部アドレスリード 2
次セクタ
NO
YES
トグルビット (DQ6)
データ1 (DQ6) =
データ2 (DQ6)
セクタ消去終了
YES
NO
0
タイミングリミット (DQ5)
1
内部アドレスリード 1
内部アドレスリード 2
NO
トグルビット (DQ6)
データ1 (DQ6) =
データ2 (DQ6)
YES
消去エラー
最終セクタ
NO
YES
FMCS:WE(bit5)
フラッシュメモリ
消去禁止
消去完了
452
:ハードウェアシーケンス
フラグによる確認
第 23 章 1.5M ビットフラッシュメモリ
23.6.5
フラッシュメモリのセクタ消去を一時停止する方法
セクタ消去一時停止コマンドを発行し , フラッシュメモリのセクタ消去を一時停止す
る手順について説明します。一時停止中に , 消去中でないセクタからデータを読み出
すことができます。
■ フラッシュメモリのセクタ消去を一時停止する方法
フラッシュメモリのセクタ消去を一時停止するには , コマンドシーケンス表 ( 表 23.4-1
を参照 ) のセクタ消去一時停止コマンドを CPU からフラッシュメモリ内に送ることで
実行できます。
セクタ消去一時停止コマンドは,セクタ消去中に消去を一時停止し消去中でないセクタ
からのデータ読出しを可能にします。セクタ消去一時停止状態では , 読出しのみが可能
で書込みはできません。
セクタ消去一時停止コマンドは , 消去ウェイト時間を含むセクタ消去中のみ有効で ,
チップ消去中や書込み動作中は無視されます。
セクタ消去の一時停止は , 消去一時停止コード (B0H) の書込みを行うことで実施されま
す。このとき , アドレスはフラッシュメモリ内の任意のアドレスを設定してください。
消去一時停止中の再度の消去一時停止コマンドは無視されます。
セクタ消去ウェイト期間中にセクタ消去一時停止コマンドが入力されると,直ちにセク
タ消去ウェイトを終了し , 消去動作を中断して消去停止状態になります。
セクタ消去ウェイト期間後のセクタ消去動作中に消去一時停止コマンドが入力される
と , 最大 20μs の時間の後 , 消去一時停止状態に入ります。セクタ消去一時停止コマン
ドでは , セクタ消去コマンドあるいはセクタ消去再開コマンド発行後 , 20μs 以上後に
行ってください。
453
第 23 章 1.5M ビットフラッシュメモリ
23.6.6
フラッシュメモリのセクタ消去を再開する方法
セクタ消去再開コマンドを発行し , 一時停止したフラッシュメモリセクタ消去を再開
する手順について説明します。
■ フラッシュメモリのセクタ消去を再開する方法
一時停止したセクタ消去を再開させるには , コマンドシーケンス表 ( 表 23.4-1 を参照 )
のセクタ消去再開コマンドをフラッシュメモリ内に送ることで実行できます。
セクタ消去再開コマンドは,セクタ消去一時停止コマンドによるセクタ消去一時停止状
態からセクタ消去を再開するためのコマンドです。このコマンドは消去再開コード
(30H) の書込みを行うことで実施されますが , このときのアドレスはフラッシュメモリ
領域内の任意のアドレスを示すようにします。
なお , セクタ消去中のセクタ消去再開コマンドの発行は無視されます。
454
第 24 章
MB90F983 シリアル書込み
接続例
横河ディジタルコンピュータ株式会社製 AF220/
AF210/AF120/AF110 フラッシュマイコンプログラ
マを用いた場合のシリアル書込み接続例について
説明します。
24.1 MB90F983 シリアル書込み接続の基本構成
24.2 シングルチップモード時の接続例 ( ユーザ電源使用時 )
24.3 フラッシュマイコンプログラマとの接続例 ( ユーザ電源
使用時 )
455
第 24 章 MB90F983 シリアル書込み接続例
24.1
MB90F983 シリアル書込み接続の基本構成
MB90F983 ではフラッシュ ROM のシリアルオンボード書込み ( 富士通標準 ) をサ
ポートしています。その仕様について以下に解説します。
■ MB90F983 シリアル書込み接続の基本構成
富士通標準シリアルオンボード書込みには,横河ディジタルコンピュータ株式会社製フ
ラッシュマイコンプログラマを使用します。シングルチップモードで動作するプログ
ラム , あるいは内 ROM 外バスモードで動作するプログラムのどちらかを選択して書き
込むことができます。
図 24.1-1 に , シリアル書込み接続例の基本構成を示します。
図 24.1-1 シリアル書込み接続例の基本構成
ホストインタフェースケーブル(AZ201)
汎用共通ケーブル(AZ210)
RS232C
フラッシュマイ
コンプログラマ CLK 同期シリアル
+
メモリカード
MB90F983
ユーザシステム
スタンドアロンで動作可能
フラッシュマイコンプログラマ (AF220/AF210/AF120/AF110) の機能 , 操作方法および
接続用汎用共通ケーブル (AZ210), コネクタについては , 横河ディジタルコンピュータ
株式会社にお問い合わせください。
456
第 24 章 MB90F983 シリアル書込み接続例
■ 富士通標準シリアルオンボード書込みに使用する端子
表 24.1-1 に , 使用する端子の機能を示します。
表 24.1-1 使用する端子の機能
端子
MD2, MD1,
MD0
X0, X1
P80, P81
RST
SIN0
SOT0
SCK0
VCC
VSS
機能
補足説明
MD2=1, MD1=1, MD0=0 に設定することで , シリアル書込みモード
になります。
シリアル書込みモード時に , CPU 内部動作クロックは PLL クロッ
ク 1 逓倍となりますので , 内部動作クロック周波数は発振クロッ
発振用端子
ク周波数と同じになります。したがって , シリアル書込みを行う
場合 , 高速発振入力端子に入力可能な周波数は 4.0 MHz ~ 25 MHz
となります。
書込みプログラム起動端子 P80 に "L" レベル , P81 に "H" レベルを入力してください。
リセット端子
シリアルデータ入力端子
シリアルデータ出力端子
UART0 を CLK 同期モードとして使用します。
シリアルクロック入力端子
電源電圧供給端子
GND 端子
フラッシュマイコンプログラマの GND と共通にしてください。
モード端子
P80, P81, SIN0, SOT0, SCK0 端子をユーザシステムでも使用する場合には , 図 24.1-2 に
示す制御回路が必要です。フラッシュマイコンプログラマの /TICS 信号の "L" 出力に
より , シリアル書込み中はユーザ回路を切り離すことができます。
図 24.1-2 端子制御回路
AF220/AF210/AF120/AF110
書込み制御端子
10kΩ
MB90F983
書込み制御端子
AF220/AF210/AF120/AF110
/TICS 端子
ユーザ回路
■ 発振クロック周波数とシリアルクロック入力周波数について
MB90F983 の入力可能なシリアルクロック周波数は , 以下の計算式により求めることが
できます。
したがって , フラッシュマイコンプログラマの設定により , 使用する発振クロック周波
数に対応したシリアルクロック入力周波数に変更してください。
入力可能なシリアルクロック周波数 = 0.125 ×発振クロック周波数
表 24.1-2 に , 入力可能なシリアルクロック周波数を示します。
表 24.1-2 入力可能なシリアルクロック周波数
発振クロック
周波数
マイコンの入力可能な最大
シリアルクロック周波数
8MHz 時
16MHz 時
1MHz
2MHz
AF220/AF210/AF120/AF110 の設定
可能な最大シリアルクロック周波数
850kHz
1.25MHz
AF200 の設定可能な最大
シリアルクロック周波数
500kHz
500kHz
457
第 24 章 MB90F983 シリアル書込み接続例
■ フラッシュマイコンプログラマのシステム構成 ( 横河ディジタルコンピュータ株式
会社製 )
表 24.1-3 に , フラッシュマイコンプログラマのシステム構成を示します。
表 24.1-3 フラッシュマイコンプログラマのシステム構成
本
体
型 格
AF220/AC4P
AF210/AC4P
AF120/AC4P
AF110/AC4P
AZ221
AZ210
機 能
イーサネットインタフェース内蔵モデル
スタンダードモデル
単キー イーサネットインタフェース内蔵モデル
単キーモデル
ライタ用 PC/AT 用 RS232C ケーブル
標準ターゲットプローブ (a) 長さ :1m
/100V ~ 220V 電源アダプタ
/100V ~ 220V 電源アダプタ
/100V ~ 220V 電源アダプタ
/100V ~ 220V 電源アダプタ
富士通 F2MC-16LX フラッシュマイコン用コントロールモジュール
リモートコントローラ
2M バイト PC Card(Option) フラッシュメモリ容量 ~ 128K バイト対応
4M バイト PC Card(Option) フラッシュメモリ容量 ~ 512K バイト対応
問い合わせ先:横河ディジタルコンピュータ株式会社 電話:042-333-6224
FF201
AZ290
/P2
/P4
458
第 24 章 MB90F983 シリアル書込み接続例
24.2
シングルチップモード時の接続例 ( ユーザ電源使用時 )
ユーザシステムにて , シングルチップモードに設定されているモード端子 MD2, MD0
には , AF220/AF210/AF120/AF110 の TAUX3, TMODE より MD2=1, MD0=0 が入力さ
れ , シリアル書込みモードになります ( シリアル書込みモード :MD2, MD1,
MD0=110B)。
■ シングルチップモード時の接続例 ( ユーザ電源使用時 )
図 24.2-1 MB90F983 シングルチップモード時 シリアル書込み接続例 ( ユーザ電源使用時 )
AF220/AF210/AF120/AF110
フラッシュマイコン
プログラマ
TAUX3
ユーザシステム
コネクタ
DX10-28S
(19)
MB90F983
MD2
10k
10k
MD1
10k
TMODE
MD0
X0
(12)
4.5MHz ~ 25MHz
X1
TAUX
(23)
P80
10k
/TICS
(10)
ユーザ回路
10k
/TRES
10k
RST
(5)
10k
ユーザ回路
P81
TTXD
(13)
SIN0
TRXD
TCK
(27)
(6)
SOT0
TVcc
(2)
GND
(7,8,
14,15,
21,22,
1,28)
SCK0
Vcc
ユーザ電源
14ピン
3,4,9,11,16,17,18,
20,24,25,26ピンは開放
1ピン
DX10-28S
28ピン
DX10-28S : ライトアングルタイプ
Vss
15ピン
コネクタ(ヒロセ電機製)のピン配列
459
第 24 章 MB90F983 シリアル書込み接続例
<注意事項>
SIN0, SOT0, SCK0 端子をユーザシステムでも使用する場合には , P80 と同様 , 図 24.2-2 に
示す制御回路が必要です。フラッシュマイコンプログラマの /TICS 信号の "L" 出力により ,
シリアル書込み中はユーザ回路を切り離すことができます。
図 24.2-2 端子制御回路
AF220/AF210/AF120/AF110
MB90F983
書込み制御端子
書込み制御端子
10kΩ
AF220/AF210/AF120/AF110
/TICS端子
ユーザ回路
<注意事項>
AF220/AF210/AF120/AF110 との接続は , ユーザ電源が OFF の状態で行ってください。
460
第 24 章 MB90F983 シリアル書込み接続例
24.3
フラッシュマイコンプログラマとの接続例
( ユーザ電源使用時 )
シリアル書込み時に , 各端子 (MD2, MD0, P80) を図 24.3-1 に示すように設定した場
合は , MD2, MD0, P80 とフラッシュマイコンプログラマとの接続は必要ありません。
■ フラッシュマイコンプログラマとの接続例 ( ユーザ電源使用時 )
図 24.3-1 に , MB90F983 フラッシュマイコンプログラマとの接続例 ( ユーザ電源使用
時 ) を示します。
図 24.3-1 MB90F983 フラッシュマイコンプログラマとの接続例 ( ユーザ電源使用時 )
AF220/AF210/AF120/AF110
フラッシュマイコン
プログラマ
ユーザシステム
MB90F983
10 k
シリアル書換え時1
MD2
10 k
10 k
シリアル書換え時1
MD1
10 k
10 k
MD0
シリアル書換え時0
10 k
X0
4.5 MHz~
25 MHz
X1
P80
シリアル書換え時0
10 k
10 k
ユーザ回路
シリアル書換え時1
P81
ユーザ回路
コネクタ
DX10-28S
/TRES
TTXD
TRXD
10 k
(5)
RST
(13)
SIN0
SOT0
TCK
(27)
(6)
TVcc
(2)
GND
(7,8,
14,15,
21,22,
1,28)
SCK0
Vcc
ユーザ電源
Vss
14ピン
3, 4, 9, 10, 11, 12, 16, 17, 18,
19, 20, 23, 24, 25,26ピンは開放
DX10-28S
28ピン
DX10-28S : ライトアングルタイプ
1ピン
15ピン
コネクタ(ヒロセ電機製)のピン配列
461
第 24 章 MB90F983 シリアル書込み接続例
<注意事項>
SIN0, SOT0, SCK0 端子をユーザシステムでも使用する場合には , 図 24.3-2 に示す制御回
路が必要です。フラッシュマイコンプログラマの /TICS 信号の "L" 出力により , シリアル書
込み中はユーザ回路を切り離すことができます。
図 24.3-2 端子制御回路
AF220/AF210/AF120/AF110
書込み制御端子
MB90F983
書込み制御端子
10 k
AF220/AF210/AF120/AF110
/TICS端子
ユーザ回路
<注意事項>
AF220/AF210/AF120/AF110 との接続は , ユーザ電源が OFF の状態で行ってください。
462
第 25 章
PWC タイマ
PWC タイマの概要 , 構成 , レジスタの構成と機能 ,
割込み動作および使用上の注意について説明しま
す。
25.1 PWC タイマの概要
25.2 PWC タイマの構成
25.3 PWC タイマのレジスタの構成と機能
25.4 PWC タイマの割込み
25.5 PWC タイマの動作
25.6 PWC タイマ使用上の注意
463
第 25 章 PWC タイマ
25.1
PWC タイマの概要
PWC タイマは , 入力信号のパルス幅測定機能を持つ 16 ビットの多機能アップカウ
ントタイマです。
PWC:Pulse Width Count ( パルス幅測定 )
■ PWC タイマの機能
ハードウェアとして , 16 ビットアップカウントタイマ 1 個 , 入力パルス分周器および分
周比制御レジスタ1個, 測定入力端子1本, 16ビット制御レジスタ1個を1チャネルとして,
合計 2 チャネルを有し , これらによって以下の機能を実現します。
● タイマ機能
• 設定された時間ごとに割込み要求を発生することができます。
• 基準となる内部クロックは , 3 種類 ( マシンクロックの 4 分周 /16 分周 /32 分周 ) の
中から選択できます。
● パルス幅測定機能
• 外部からのパルス入力の任意イベント間の時間を測定します。
• 基準となる内部クロックは , 3 種類 ( マシンクロックの 4 分周 /16 分周 /32 分周 ) の
中から選択可能です。
• 各種測定モードに対応できます。
- "H" パルス幅 ( ↑~↓ )/ "L" パルス幅 ( ↑~↓ )
- 立上り周期 ( ↑~↑ )/ 立下り周期 ( ↓~↓ )
- エッジ間測定 ( ↑または↓~↓または↑ )
• 8 ビット入力分周器で , 入力パルスを 22n 分周 (n=1, 2, 3, 4) して分周測定を行うこと
ができます。
• 測定終了時に割込みを発生させることができます。
• 1 回のみの測定か , 連続測定かを選択できます。
464
第 25 章 PWC タイマ
PWC タイマの構成
25.2
PWC タイマは , PWC コントロール / ステータスレジスタ , PWC データバッファ ,
分周比制御レジスタから構成されています。
■ PWC タイマのブロックダイヤグラム
図 25.2-1 に , PWC タイマのブロックダイヤグラムを示します。
図 25.2-1 PWC タイマのブロックダイヤグラム
PWCRリード
エラー検出
ERR
内部クロック(マシンクロック/4)
PWCR
16
リロード
データ転送
16
オーバフロー
クロック
22
16ビットアップカウントタイマ
クロック分周器
F2MC-16LXバス
23
タイマクリア
カウント許可
制御ビット出力
フラグセットなど
制 御 回 路
測定開始エッジ
開始エッジ選択 終了エッジ選択
分周ON/OFF
測定終了エッジ
PIS0/PIS1
PWCSR
2
PWC0
PWC1
8ビット
分周器
測定終了割込み要求
ERR
分周器クリア
入力波形
比較器
エッジ検出
オーバフロー割込み要求
15
CKS1/CKS0
CKS0/CKS1
分周比選択
DIVR
465
第 25 章 PWC タイマ
■ PWC タイマに関する端子
PWC タイマに関する端子は , PWC0/PWC1 の 2 チャネルがあり , PWC 使用時には入力
ポートとして機能します。PWC0/PWC1 端子は , 汎用入出力ポート (P36/PWC0, P37/
PWC1) と入力端子として機能を兼用しています。
● PWC0/PWC1 端子として使用する場合の設定
PWC タイマで PWC0/PWC1 を入力として使用する場合は , P36/PWC0, P37/PWC1 端子
は,ポート方向レジスタにより入力ポート(DDR3 bit6, bit7→"0")に設定してください。
■ PWC タイマに関する端子のブロックダイヤグラム
図 25.2-2 PWC タイマに関する端子のブロックダイヤグラム
周辺機能入力
ポートデータレジスタ(PDR)
(EXTC)
周辺機能出力(MT00,MT01)
周辺機能出力許可
オープンドレイン制御信号
(P43/P44/P45のみ)
内部データバス
PDRリード
出力ラッチ
P-ch
PDRライト
端子
ポート方向レジスタ(DDR )
方向ラッチ
N-ch
DDRライト
DDRリード
スタンバイ制御(SPL=1)
スタンバイ制御:ストップモード(SPL=1),タイムベースタイマモード(SPL=1),時計モード(SPL=1)
466
第 25 章 PWC タイマ
25.3
PWC タイマのレジスタの構成と機能
PWC タイマに関連するレジスタの構成と機能を説明します。
■ PWC タイマのレジスタ一覧
図 25.3-1 に , PWC タイマのレジスタ一覧を示します。
図 25.3-1 PWC タイマのレジスタ一覧
bit15
bit8 bit7
bit0
PWCSR0,PWCSR1
(R/W)
PWCR0,PWCR1
(R/W)
DIVR0,DIVR1
(R/W)
PWCコントロール/ステータスレジスタ(PWCSR0,PWCSR1)
アドレス:
000077H bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8
00007BH STRT STOP EDIR EDIE OVIR OVIE ERR 予約
-
R
R/W
R/W
R/W
R/W
R/W
R
PWCコントロール/ステータスレジスタ(PWCSR0,PWCSR1)
アドレス:
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
000076H
00007AH CKS1 CKS0 PIS1 PIS0 S/C MOD2 MOD1 MOD0
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
PWCデータバッファレジスタ(PWCR0,PWCR1)
アドレス:
bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8
000079H D15
D14
D13 D12 D11
D10
D9
D8
00007DH
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
初期値
0000000XB
00000000B
00000000B
PWCデータバッファレジスタ(PWCR0,PWCR1)
アドレス:
bit7 bit6 bit5 bit4 bit3
000078H
D6
D5
D4
D3
00007CH D7
R/W
R/W
R/W
R/W
R/W
bit2
D2
R/W
bit1 bit0
D1
D0
R/W
R/W
00000000B
分周比制御レジスタ(DIVR0,DIVR1)
アドレス:
bit7 bit6 bit5 bit4 bit3
000082H
-
-
-
-
000084H -
-
-
-
-
-
bit2 bit1 bit0
-
DIV1 DIV0
-
R/W
R/W
------00B
R/W: リード/ライト可能
R : リードオンリ
- : 未使用
467
第 25 章 PWC タイマ
25.3.1
PWC コントロール / ステータスレジスタ
(PWCSR0, PWCSR1)
PWC コントロール / ステータスレジスタ (PWCSR0, PWCSR1) の構成と機能につい
て説明します。
■ PWC コントロール / ステータスレジスタ (PWCSR0, PWCSR1)
図 25.3-2 に , PWC コントロール / ステータスレジスタ (PWCSR0, PWCSR1) のビット構
成を示します。
図 25.3-2 PWC コントロール / ステータスレジスタ (PWCSR0, PWCSR1) のビット構成
PWCコントロール/ステータスレジスタ(PWCSR0,PWCSR1)
アドレス:
bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8
000077H
STRT STOP EDIR EDIE OVIR OVIE ERR 予約
00007BH
-
R
R/W
R/W
R/W
R/W
R/W
R
PWCコントロール/ステータスレジスタ(PWCSR0,PWCSR1)
アドレス:
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
000076H
CKS1
CKS0 PIS1 PIS0 S/C MOD2 MOD1 MOD0
00007AH
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
初期値
0000000XB
00000000B
R/W: リード/ライト可能
R : リードオンリ
- : 未使用
以下に , PWC コントロール / ステータスレジスタ (PWCSR0, PWCSR1) の各ビットの機
能を説明します。
[bit15, bit14] STRT, STOP:タイマスタートビット , タイマストップビット
これらのビットは , 16 ビットアップカウントタイマの起動 / 再起動 / 停止を制御し
ます。読出し時には , タイマの動作状態を表示します。
表 25.3-1 に, 書込み時機能(16ビットアップカウントタイマの動作制御)を示します。
表 25.3-1 書込み時機能 (16 ビットアップカウントタイマの動作制御 )
STRT
STOP
0
0
0
1
1
0
1
1
動作制御機能
機能なし / 動作に影響なし
タイマ起動 / 再起動 ( カウント許可 )*
タイマ動作強制停止 ( カウント禁止 )*
機能なし / 動作に影響なし
*: クリアビット命令を使用可能
表 25.3-2 読出し時機能 (16 ビットアップカウントタイマの動作状態表示 )
468
STRT
STOP
0
1
0
1
動作制御機能
タイマ停止中 ( 起動されていないか , または測定終了 ) ( 初期値 )
タイマカウント動作中 ( 測定中 )
第 25 章 PWC タイマ
• リセット時 , "00B" に初期化されます。
• 読出し / 書込みが可能です。ただし , 書込み時と読出し時では , 表 25.3-1 , 表 25.32 に示すように機能が異なります。
• リードモディファイライト (RMW) 系命令における読出し値は , ビット値にかか
わらず "11B" です。
• タイマの起動 / 停止のための STRT/STOP ビットへの書込みは , それぞれのビッ
トに対するビット命令 ( ビットクリア ) を用いることが可能ですが , 動作状態の
読出しには , ビット命令は使用できませんので注意してください ( 読み出すと必
ず "1" が読み出せます )。
[bit13] EDIR:測定終了割込み要求フラグ
このビットは , パルス幅測定時 , 測定が終了したことを示すフラグです。測定終了
割込み要因が許可されているとき (bit12:EDIE=1) に , このビットがセットされると
測定終了割込み要求が発生します。
EDIR
要因
セット要因
クリア要因
パルス幅測定が終了するとセット (PWCR に測定結果が収納されています )
PWCR( 測定結果 ) を読み出すことによってクリア
• リセット時 "0" に初期化されます。
• 読出しのみ可能です。
• 書き込んでもビット値は変化しません。
[bit12] EDIE:測定終了割込み許可ビット
このビットは , パルス幅測定時の , 測定終了割込み要求を下表のように制御します。
動作
EDIE
0
1
測定終了割込み要求出力禁止 (EDIR がセットされていても割込みは発生しません )
[ 初期値 ]
測定終了割込み要求出力許可 (EDIR がセットされると割込みが発生します )
• リセット時 "0" に初期化されます。
• 読出し / 書込みが可能です。
[bit11] OVIR:タイマオーバフロー割込み要求フラグ
このビットは , 16 ビットアップカウントタイマが "FFFFH" から "0000H" に変化し
オーバフローが発生したことを示すフラグです。タイマオーバフロー割込み要求が
許可されているとき (bit10:OVIE=1 のとき ) にこのビットがセットされると , タイマ
オーバフロー割込み要求が発生します。
要因
OVIR
セット要因
タイマオーバフローが発生するとセット (FFFFH から 0000H)
クリア要因
"0" 書込み , または μDMAC によりクリア
• リセット時 "0" に初期化されます。
• 読出し / 書込みが可能です。書込みは "0" のみ可能です。"1" を書き込んでもビッ
ト値は変化しません。
• リードモディファイライト (RMW) 系命令における読出しは , ビット値にかかわ
らず "1" です。
469
第 25 章 PWC タイマ
[bit10] OVIE:タイマオーバフロー割込み要求許可ビット
このビットは , パルス幅測定時の測定終了割込み要求を下表のように制御します。
動作
OVIE
0
1
オーバフロー割込み要求出力禁止 (OVIR がセットされていても割込み発生しま
せん )[ 初期値 ]
オーバフロー割込み要求出力許可 (OVIR がセットされると割込みが発生します )
• リセット時 "0" に初期化されます。
• 読出し / 書込みが可能です。
[bit9] ERR:エラーフラグ
パルス幅測定時の連続測定モード時において , PWCR 内の測定結果を読み出さない
うちに , 次の測定が終了してしまったことを示すフラグです。この際 , PWCR の値
は新しい測定結果に更新され , 1 つ前の測定結果は消失します。測定は , 本ビット値
とは関係なく続行されます。
要因
ERR
セット要因
クリア要因
読み出していない測定結果が次の結果により消失するとセット
PWCR( 測定結果 ) を読み出すことによりクリア
• リセット時 "0" に初期化されます。
• 読出しのみ可能です。書き込んでもビット値は変化しません。
[bit8] 予約ビット
このビットは , 予約ビットです。
[bit7, bit6] CKS1, CKS0:内部クロック選択ビット
これらのビットは , 内部カウントクロックを選択します。表 25.3-3 に示す 3 種類の
いずれかを選択できます。
表 25.3-3 16 ビットアップカウントタイマのカウントクロック
CKS1
CKS0
0
0
0
1
1
1
0
1
カウントクロック選択
マシンクロックの 4 分周クロック ( マシンクロック =25MHz 時 0.16μs)
[ 初期値 ]
マシンクロックの 16 分周クロック ( マシンクロック =25MHz 時 0.64μs)
マシンクロックの 32 分周クロック ( マシンクロック =25MHz 時 1.28μs)
設定禁止 ( 未定義 )
• リセット時 , "00B" に初期化されます。
• 読出し / 書込みが可能です。ただし , "11B" の設定は禁止です。
<注意事項>
PWC タイマ起動後の書換えは 禁止です。必ず起動前か停止後に書き込んでください。
470
第 25 章 PWC タイマ
[bit5, bit4] PIS1, PIS0:パルス幅測定入力端子選択ビット
これらのビットは , パルス幅測定入力端子を選択します。
表 25.3-4 パルス幅測定入力端子の選択
PIS1
PIS0
0
0
1
1
0
1
0
1
入力クロック選択
(PWC0 端子を選択 ) [ 初期値 ]
2 入力比較選択 ( 立上りエッジ比較 )
2 入力比較選択 ( 立下りエッジ比較 )
設定禁止 ( 未定義 )
• リセット時 "00B" に初期化されます。
• 読出し / 書込みが可能です。ただし , "11B" の設定は禁止です。
• このビットは , PWC0 のみに有効です (PWC0/PWC1 を入力として使用します )。
詳細は「25.5.2 パルス幅測定機能の動作」を参照してください。
<注意事項>
PWC タイマ起動後の書換えは禁止です。必ず起動前か停止後に書き込んでください。
[bit3] S/C:測定モード ( 単発 / 連続 ) 選択ビット
このビットは , 測定モードを選択します。
表 25.3-5 16 ビットアップカウントタイマの測定モードの選択
S/C
0
1
測定モード選択
タイマモード時
リロードなし
単発測定モード [ 初期値 ]
( ワンショット )
リロードあり
連続測定モード
( リロードタイマ )
パルス幅
1 回測定後停止
連続測定 : バッファレジスタ有効
• リセット時 "0" に初期化されます。
• 読出し / 書込みが可能です。
<注意事項>
PWC タイマ起動後の書換えは禁止です。必ず起動前か停止後に書き込んでください。
471
第 25 章 PWC タイマ
[bit2 ~ bit0] MOD2 ~ MOD0: 動作モード / 測定エッジ選択ビット
これらのビットは , 動作モードおよび幅測定を行うエッジを選択します。
表 25.3-6 16 ビットアップカウントタイマの動作モード / 測定エッジの選択
MOD2
MOD1
MOD0
0
0
0
0
0
1
0
1
0
0
1
1
1
1
1
0
0
1
1
1
0
1
0
1
動作モード / 測定エッジ選択
タイマモード [ 初期値 ]
タイマモード ( リロードモードのみ )
全エッジ間パルス幅測定モード
( ↑または↓~↓または↑ )
分周周期測定モード ( 入力分周有効 )
立上りエッジ間周期測定モード ( ↑~↑ )
"H" パルス幅測定モード ( ↑~↓ )
"L" パルス幅測定モード ( ↓~↑ )
立下りエッジ間周期測定モード ( ↓~↓ )
• リセット時 "00B" に初期化されます。
• 読出し / 書込みが可能です。
<注意事項>
PWC タイマ起動後の書換えは禁止です。必ず起動前か停止後に書き込んでください。
472
第 25 章 PWC タイマ
PWC データバッファレジスタ (PWCR0, PWCR1)
25.3.2
PWC データバッファレジスタ (PWCR0, PWCR1) の構成および機能について説明し
ます。
■ PWC データバッファレジスタ (PWCR0, PWCR1)
図 25.3-3 に , PWC データバッファレジスタ (PWCR0, PWCR1) のビット構成を示しま
す。
図 25.3-3 PWC データバッファレジスタ (PWCR0, PWCR1) のビット構成
PWCデータバッファレジスタ(PWCR0,PWCR1)
アドレス:
bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8
000079H
D15
D14
D13 D12 D11
D10
D9
D8
00007DH
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
PWCデータバッファレジスタ(PWCR0,PWCR1)
アドレス:
bit7 bit6 bit5 bit4 bit3
000078H
D7
D6
D5
D4
D3
00007CH
R/W
R/W
R/W
R/W
R/W
bit2
D2
R/W
bit1 bit0
D1
D0
R/W
R/W
初期値
00000000B
00000000B
R/W: リード/ライト可能
PWC データバッファレジスタ (PWCR0, PWCR1) は , PWCSR レジスタの bit2 ~ bit0(MOD2 ~
MOD0) の設定によるタイマモード時と , パルス幅測定モード時で機能が異なります。
● タイマモード時 ( 読出し / 書込み可能 )
リロードタイマ動作時 (PWCSR の bit3:S/C=1) は , リロードデータを保持するバッファ
レジスタとなります。この場合 , 読出し / 書込みともに可能です。
ワンショットタイマ動作モード時 (PWCSR の bit3:S/C=0) は , アップカウントタイマを
直接アクセスするバッファレジスタになります。この場合も , 読出し / 書込みともに可
能ですが , 書込みはタイマ停止中に行ってください。読出しは随時可能で , カウント中
のタイマ値を読み出すことができます。
● パルス幅測定モード時 ( 読出しのみ可能 )
連続測定モード時 (PWCSR の bit3:S/C=1) は , 前回の測定結果を保持するバッファレジ
スタとなります。
この場合は読出しのみ可能で , 書き込んでもレジスタ値は変化しません。
単発モード時(PWCSRのbit3:S/C=0)は, アップカウントタイマを直接アクセスするバッ
ファレジスタとなります。
この場合も読出しのみ可能で , 書き込んでもレジスタ値は変化しません。読出しは随時
可能で , カウント中のタイマ値が得られます。測定終了後は , 測定結果を保持します。
<注意事項>
このレジスタのアクセスは , 必ずワード転送命令で行ってください。また , リセット時は
"00B" に初期化されます。
473
第 25 章 PWC タイマ
分周比制御レジスタ (DIVR0, DIVR1)
25.3.3
分周比制御レジスタ (DIVR0, DIVR1) の構成および機能について説明します。
■ 分周比制御レジスタ (DIVR0, DIVR1)
図 25.3-4 に , 分周比制御レジスタ (DIVR0, DIVR1) のビット構成を示します。
図 25.3-4 分周比制御レジスタ (DIVR0, DIVR1) のビット構成
分周比制御レジスタ(DIVR0,DIVR1)
アドレス:
bit7 bit6 bit5 bit4 bit3
000082H
-
-
-
-
000084H -
-
-
-
-
-
bit2 bit1 bit0
-
DIV1 DIV0
-
R/W
R/W
初期値
------00B
R/W: リード/ライト可能
- : 未使用
分周周期測定モード (PWCSR の bit2 ~ bit0:MOD2 ~ MOD0=001B) において使用するレ
ジスタであり , ほかのモードでは分周比制御レジスタ (DIVR0, DIVR1) の設定は意味を
もちません。
分周周期測定モードには , このレジスタによって設定された分周比だけ測定端子に入
力されたパルスを分周し , 分周後の 1 周期幅を測定します。
表 25.3-7 分周比の選択
DIV1
DIV0
0
0
1
1
0
1
0
1
カウントクロック選択
4 分周
[ 初期値 ]
16 分周
64 分周
256 分周
• リセット時 "00B" に初期化されます。
• 読出し / 書込みが可能です。
<注意事項>
PWC タイマ起動後の書換えは禁止です。必ず起動前か停止後に書き込んでください。
474
第 25 章 PWC タイマ
25.4
PWC タイマの割込み
PWC タイマの割込みは , タイマ機能時のアップカウンタのオーバフローとパルス幅
測定終了時に発生します。DMA 転送および拡張インテリジェント I/O サービス
(EI2OS) を起動することができる PWC 割込みは PWC0 のみです。
■ PWC タイマの割込み
表 25.4-1 に , PWC タイマの割込み制御ビットと割込み要因を示します。
表 25.4-1 PWC タイマの割込み制御ビットと割込み要因
パルス幅測定終了割込み
タイマモード動作時のタイマの
オーバフロー割込み
割込み要求フラグ
PWCSR0:EDIR (bit13) ch.0
PWCSR1:EDIR (bit13) ch.1
PWCSR0:OVIR (bit11) ch.0
PWCSR1:OVIR (bit11) ch.1
割込み要求出力許可ビット
PWCSR0:EDIE (bit12) ch.0
PWCSR1:EDIE (bit12) ch.1
PWCSR0:OVIE (bit10) ch.0
PWCSR1:OVIE (bit10) ch.1
割込み発生要因
パルス幅測定終了したとき
16 ビットアップカウントタイマが
FFFFH → 0000H にオーバフローし
たとき
■ PWC タイマに関する割込み要因
割込み要因には , 下記の 2 種類があります。
• タイマ機能時に PWC コントロール / ステータスレジスタ (PWCSR0, PWCSR1) の
OVIR(bit11) フラグがセットされ , OVIE(bit10) が "1" の場合にオーバフロー割込みが
発生します。
• パルス幅測定時に PWC コントロール / ステータスレジスタ (PWCSR0, PWCSR1) の
EDIR(bit13) フラグがセットされ , EDIE(bit12) が "1" の場合 ( 送信終了時 ) に割込み
が発生します。
475
第 25 章 PWC タイマ
■ PWC タイマの割込みと DMA 転送および EI2OS
表 25.4-2 に,ソフトウェア割込み要因と割込みベクタ/割込み制御レジスタを示します。
表 25.4-2 割込み要因と割込みベクタ / 割込み制御レジスタ
割込みベクタ
割込み要因
EI2OS のクリア
μDMAC
チャネル番号
番号
PWC1
○
×
#19
アドレス
FFFFB0H
−
−
−
#20
FFFFACH
PWC0 *
○
1
#21
FFFFA8H
割込み制御レジスタ
番号
アドレス
ICR04
0000B4H
ICR05
0000B5H
× : 割込み要求フラグはクリアされません。
○ : 割込み要求フラグはクリアされます。
この割込み要因は , ほかの周辺機能の割込み要因と割込み番号を共有しています。詳細については , 表
4.2-2 を参照してください。
( 注意事項 ) 同一割込み番号に 2 つの割込み要因があった場合は , リソースは両方の割込み要求フラグをクリア
します。したがって , 2 要因のどちらか 1 つが EI2OS/μDMAC 機能を使用すると , もう 1 つの割込
み機能は使用できません。該当リソースの割込み要求許可ビットを "0" にして , ソフトウェアポー
リング処理で対処してください。
*:
■ DMA 転送 , および EI2OS 機能への対応
PWC タイマは EI2OS 機能のみに対応し , DMA 転送機能には対応していません。EI2OS
機能を使用する場合には , 割込み制御レジスタ (ICR) を共有するほかの割込みを禁止に
設定する必要があります。
476
第 25 章 PWC タイマ
25.5
PWC タイマの動作
PWC タイマの動作について説明します。
■ PWC タイマ動作概略
PWC タイマは , 16 ビットアップカウントタイマを基本にした多機能タイマであり , 測
定入力端子と 8 ビット入力分周回路などが組み込まれています。PWC タイマには , 次
の 2 種類の主要機能があります。
• タイマ機能
• パルス幅カウント機能
どちらの機能でも 3 種類 ( マシンクロックの 4 分周 /16 分周 /32 分周 ) のカウントクロッ
クを選択できます。以下に , 各機能における基本性能 / 動作について説明します。
477
第 25 章 PWC タイマ
25.5.1
タイマ機能の動作
アップカウントタイマはリロード動作とワンショット動作が可能です。
■ タイマ機能の動作
タイマ起動後 , カウントクロックごとにカウントアップを行います。オーバフロー
(FFFFH → 0000H) が発生すると , 割込み要求が発生する場合があります。
オーバフローが発生した場合 , 本タイマはモードによって以下のように動作します。
• ワンショットモード : カウントを停止します。
• リロードモード
: タイマにリロードレジスタの内容をリロードし , 再びカウン
トを開始します。
図 25.5-1 に , タイマ機能の動作を示します。
図 25.5-1 タイマ機能の動作
〔ワンショットモード〕
(実線がタイマカウント値)
オーバフロー
PWCRへの書込み
FFFFH
オーバフロー
(再起動禁止)
0000H
タイマスタート OVIRフラグセット/タイマストップ
タイマスタート
OVIRフラグセット/タイマストップ
時間
〔リロードモード〕
タイマカウント値
オーバフロー オーバフロー
FFFFH
オーバフロー
オーバフロー オーバフロー
リロード
PWCRライト値
0000H
リロード
PWCRライト タイマスタート *
リロード リロード リロード
*
*
リロード
*
リロード
*
タイマストップ
再起動
時間
*:OVIRフラグセット
478
第 25 章 PWC タイマ
25.5.2
パルス幅測定機能の動作
入力パルスの任意イベント間の時間周期をタイマで測定できます。
■ パルス幅測定機能の動作
パルス幅測定機能は , 設定した測定開始エッジが入力されるまでカウントを開始しま
せん。開始エッジを検出するとタイマを "0000H" にクリア後 , カウントアップを開始し ,
停止エッジを検出するとカウントを停止します。この間のカウント値がパルス幅とし
てレジスタに保存されます。測定終了時に割込みを検出します。
測定終了後は , 本タイマは測定モードに応じて以下のように動作します。
• 単発測定モード : 動作を中断します。
• 連続測定モード : タイマ値はバッファレジスタに転送され , 次の開始エッジが入力
されるまで測定が中断されます。
図 25.5-2 にパルス幅測定動作 ( 単発測定モード /"H" 幅測定 ) を , 図 25.5-3 にパルス幅
測定動作 ( 連続測定モード /"H" 幅測定 ) を示します。
図 25.5-2 パルス幅測定動作 ( 単発測定モード /"H" 幅測定 )
PWC入力被測定パルス
(実線がタイマカウント値)
タイマカウント値
FFFFH
タイマクリア
0000H
測定開始
タイマスタート
タイマストップ
時間
EDIRフラグセット(測定終了)
図 25.5-3 パルス幅測定動作 ( 連続測定モード /"H" 幅測定 )
PWC入力被測定パルス
(実線がタイマカウント値)
タイマカウント値
オーバフロー
FFFFH
PWCRへデータ転送
タイマクリア
タイマクリア
0000H
測定開始
タイマスタート
タイマストップ
タイマスタート
時間
EDIRフラグセット(測定終了)
EDIRフラグセット
479
第 25 章 PWC タイマ
カウントクロックおよび動作モードの選択
25.5.3
カウントクロックの選択および動作モードの選択について説明します。
■ カウントクロックの選択
タイマのカウントクロックは , PWCSR の bit7(CKS1) および bit6(CKS0) の設定によって
内部クロックソース 3 種類から選択ができます。
表 25.5-1 に , カウントクロックの選択内容を示します。
表 25.5-1 カウントクロックの選択内容
PWCSR/bit7, bit6:CKS1, CKS0
00B
01B
10B
選択される内部カウントクロック
マシンクロックの 4 分周
(25MHz のマシンクロックの場合は 0.16μs) [ 初期値 ]
マシンクロックの 16 分周
(25MHz のマシンクロックの場合は 0.64μs)
マシンクロックの 32 分周
(25MHz のマシンクロックの場合は 1.28μs)
リセット後の初期値では , マシンクロックの 4 分周が選択されます。
<注意事項>
カウントクロックの選択は , 必ずタイマ起動前に行ってください。
480
第 25 章 PWC タイマ
■ 動作モードの選択
各動作モード / 測定モードの選択は , PWCSR ビットの設定によって行います。
• 動作モードの選択 :PWCSR の bit2 ~ bit0 (MOD2 ~ MOD0 ビット )
タイマモード / パルス幅測定モードの選択 , 測定エッジの決定など
• 測定モードの設定 :PWCSR の bit3 (S/C ビット )
単発測定 / 連続測定またはリロード / ワンショットの選択
表 25.5-2 に , 動作モード / 測定モードの設定内容を示します。
表 25.5-2 動作モード / 測定モードの設定内容
動作モード
タイマ
-
↑または↓~↑または↓
全エッジ間測定
分周周期測定
(1 ~ 256 分周 )
パルス幅測定
↑~↑
立上り間周期測定
↑~↓
"H" パルス幅測定
↓~↑
"L" パルス幅測定
↓~↓
立下り間周期測定
ワンショットタイマ
リロードタイマ
単発測定 : バッファ無効
連続測定 : バッファ有効
単発測定 : バッファ無効
連続測定 : バッファ有効
単発測定 : バッファ無効
連続測定 : バッファ有効
単発測定 : バッファ無効
連続測定 : バッファ有効
単発測定 : バッファ無効
連続測定 : バッファ有効
単発測定 : バッファ無効
連続測定 : バッファ有効
S/C
MOD2
MOD1
MOD0
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
0
0
0
0
0
1
1
1
1
1
1
1
1
0
0
1
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0
1
1
0
0
1
1
0
0
1
1
リセット後の初期設定では , ワンショットタイマが選択されています。
<注意事項>
動作モードの選択は , 必ずタイマ起動前に行ってください。
481
第 25 章 PWC タイマ
25.5.4
タイマ / パルス幅測定の起動と停止
各動作の起動 / 再起動 / 停止 / 強制停止は , PWCSR の bit15, bit14 (STRT, STOP
ビット ) によって制御されます。
■ タイマ / パルス幅測定の起動と停止
タイマ / パルス幅測定の起動 / 再起動は STRT ビットで制御され , 強制停止は STOP ビッ
トとで制御されます。それぞれ "0" を書き込むことによって機能します。しかし , この
ときに両ビットに書き込む値が排他的でないと機能しません。ビット操作命令以外の
命令 ( バイト以上の命令 ) で書き込む場合は , 必ず表 25.5-3 に示すビットの組合せに限
定されます。
表 25.5-3 STRT ビットと STOP ビットの機能
STRT
STOP
0
1
1
0
機能
タイマ / パルス幅測定の起動 / 再起動
タイマ / パルス幅測定の強制停止
ビット操作命令 ( クリアビット命令 ) を用いる場合は , ハードウェアによって自動的に
表 25.5-3 に示す組合せで書き込まれるため , 特に設定する必要はありません。
■ 起動後の動作
タイマモードおよびパルス幅測定モードの起動後の動作は以下のとおりです。
● タイマモード
直ちにカウント動作を開始します。
● パルス幅測定モード
測定開始エッジが入力されるまでカウントは行いません。測定開始エッジ検出後 , 16
ビットアップカウントタイマを "0000B" にクリアし , カウントを開始します。
■ 再起動
タイマ / パルス幅測定モード起動後 , 動作中に起動をかける (STRT ビットに "0" を書き
込む ) ことを再起動とよびます。
再起動をすると , モードによって以下の動作が行われます。
● ワンショットタイマモード
動作に影響はありません。
● リロードタイマモード
リロード動作を行い , 動作を続行します。オーバフロー発生タイミングと同時に再起動
したとき , オーバフローフラグ (OVIR) がセットされます。
● パルス幅測定モード
測定開始エッジ待ち状態の場合 , 動作に影響はありません。測定中の場合は , カウント
を停止し再度測定開始エッジ待ち状態となります。この際 , 測定終了エッジ検出と再起
動のタイミングが同時になると , 測定終了割込み要求フラグ (EDIR) がセットされ , 連
続測定モード時は結果が PWCR に転送されます。
482
第 25 章 PWC タイマ
■ 停止
ワンショットタイマモード / 単発測定モードでは , タイマのオーバフローまたは測定終
了により自動的にカウントを停止しますので , 特に意識して停止させる必要はありま
せん。ただし , ほかのモードでは , タイマを強制的に停止させる必要があります。タイ
マが自動的に停止する前にタイマを停止させたい場合にも同様です。
● 2 入力比較選択時
選択されている PWC1 からエッジが強制停止の前に検出されていないと , 再起動後 1
回目の測定結果が誤ったものとなります。強制停止は , PWC1 からエッジが検出されて
からにしてください。
■ 動作状態の確認
前述の STRT, STOP ビットは , 読出し時には動作状態表示ビットとして機能します。
表 25.5-4 に , 動作状態表示ビットの機能を示します。
表 25.5-4 動作状態表示ビットの機能
STRT
STOP
0
0
1
1
動作状態
タイマ停止 ( 測定開始エッジ待ち状態を除く ):
起動されていないかまたは測定が終了したことを示します。
タイマカウント動作中または測定開始エッジ状態待ちです。
<注意事項>
STRT, STOP どちらのビットを読み出しても同じ値となります。ただし , リードモディ
ファイライト (RMW) 系命令 ( ビット処理命令など ) でこのビットを読み出すと常に "11B"
になるため , これらの命令を使用して読み出さないでください。
483
第 25 章 PWC タイマ
25.5.5
タイマモードの動作
タイマモードの動作について説明します。
■ タイマのクリア
次の場合には , 16 ビットアップカウントタイマが "0000H" にクリアされます。
• リセット時
• パルス幅測定モードで , 測定開始エッジを検出しカウントを開始したとき
■ ワンショット動作モード
ワンショット動作モードでは , タイマ起動後 , カウントクロックごとにカウントアップ
を行い , "FFFFH" から "0000H" へカウントする際のオーバフロー発生によって自動的に
停止します。タイマ起動前に PWCR に値を設定しておくと , その値からカウントが開
始されます。この場合 , 設定した値は保持されず , PWCR の値は現行のカウント値とな
ります。
■ リロード動作モード
リロード動作モードでは , タイマ起動後 , PWCR 中のリロード値をタイマに設定してか
らカウントクロックごとにカウントアップを行います。"FFFFH" から "0000H" へカウン
トする際のオーバフロー発生によって , 再度 PWCR 中のリロード値をタイマに設定し
( リロード動作 ), カウント動作を繰り返します。PWCSR の STOP ビットへの書込みに
よる強制停止されるか , リセットされるまでタイマは停止しません。タイマ起動前に
PWCR に設定した値は , リロード値としてカウント中も保持されます。起動 / 再起動時
およびオーバフロー発生時には必ずタイマにリロード値を設定します。カウント中に
設定値を変更する場合は , 次のオーバフロー発生時またはタイマの再起動のときに , 変
更した値が新規リロード値として使用されます。
■ タイマ値とリロード値
ワンショット動作モードでの PWCR は , 直接アップカウントタイマにアクセスします。
PWCR に値を書き込むとそのままアップカウントタイマに書き込まれ , タイマ動作中
にPWCRの値を読み出すとカウント中のタイマ値が得られます。タイマ起動前にPWCR
に任意の値を書き込んでから起動すると , この指定された値からカウントが開始され
ます。リロード動作モードでは , 直接アップカウントタイマをアクセスすることは不可
能です。PWCR は , リロード値を保持するリロードレジスタとして機能します。タイ
マの起動 / 再起動 / オーバフローが生じる際には必ず , PWCR に書き込まれた値がタイ
マに設定されます。PWCR を読み出すと , 格納されたリロード値が読み出されます。た
だし , リロード動作モードを強制的に中断させた後にタイマをワンショット動作モー
ドに設定した場合は PWCR の値とタイマの値が定まりません。したがって , タイマの
使用前に必ず値を書き込んでから使用してください。
■ 割込み発生要求
タイマモード動作においては , タイマのオーバフローによる割込み要求を発生させる
ことが可能です。カウントアップによってオーバフローが発生するとオーバフローフ
ラグがセットされ , オーバフロー割込み要求が許可されている場合は割込み要求が発
生します。
484
第 25 章 PWC タイマ
■ タイマ周期
ワンショット動作モードで PWCR に "0000H" を設定してタイマを起動すると , 65536 回
カウントアップ後にオーバフローを発生し , カウントを停止します。起動から停止まで
の時間は , 次の式によって計算できます。
T1=(65536-n1) × t
T1 : 起動から停止までの時間 [μs]
n1 : 起動時に PWCR に書き込まれていたタイマ値
t : カウントクロックの周期 [μs]
リロード動作モードで PWCR に "0000H" を設定してタイマを起動すると , 65536 回カウ
ントアップごとにオーバフローを発生します。リロード周期の時間は , 次の式によって
計算できます。
TR=(65536-nR) × t
TR : リロード周期 ( オーバフロー周期 )[μs]
nR :PWCR に保持されているリロード値
t
: カウントクロックの周期 [μs]
■ カウントクロックと最大周期
タイマモードの場合 , PWCR に設定する値が "0000H" のときに最大周期となります。
表 25.5-5 に , マシンクロック ( 以下 φ とする )=25MHz 時のカウントクロックの周期と
タイマの最大周期を示します。
表 25.5-5 カウントクロックと周期
カウントクロック選択
CKS1, CKS0=
00B:(φ/4) 時
CKS1, CKS0=
00B:(φ/16) 時
CKS1, CKS0=
00B:(φ/32) 時
カウントクロック周期
タイマ最大周期
0.16μs
10.49ms
0.64μs
41.94ms
1.28μs
83.89ms
485
第 25 章 PWC タイマ
■ タイマの動作フロー
図 25.5-4 に , タイマの動作フローを示します。
図 25.5-4 タイマの動作フロー
各種設定
カウントクロック選択
動作/測定モード選択
割込みフラグクリア
割込み許可
PWCRに値を設定
再起動
リロード動作モード
STRTビットにより起動
ワンショット動作モード
PWCRの値をタイマにリード
カウント開始
カウント開始
アップカウント
アップカウント
オーバフローの発生
→OVIRフラグセット
オーバフローの発生
→OVIRフラグセット
カウント停止
動作停止
486
第 25 章 PWC タイマ
パルス幅測定モードの動作
25.5.6
パルス幅測定モードの動作について説明します。
■ 単発測定と連続測定
パルス幅測定モードには , 1 回のみ測定を行う単発測定モードと , 連続して測定を行う
連続測定モードがあります。各モードは , PWCSR の S/C ビットによって選択されます
(「25.5.3 カウントクロックおよび動作モードの選択」を参照 )。
● 単発測定モード
1 回目の測定終了エッジが検出されると , タイマのカウンタが停止して PWCSR 中の測
定終了割込み要求フラグ (EDIR) がセットされ , 以降は測定が行われません ( ただし , 同
時に再起動がかかった場合は , 測定開始待ちとなります )。
● 連続測定モード
測定終了エッジが検出されると , タイマのカウンタが停止して PWCSR 中の測定終了割
込み要求フラグ (EDIR) がセットされ , 再度 , 測定開始エッジが検出されるまでカウン
トを停止します。再度 , 測定開始エッジが検出されると , タイマを "0000H" にクリアし
た後 , 測定を開始します。測定終了時タイマ内の測定結果は PWCR に転送されます。
<注意事項>
測定モードの選択変更は , 必ずタイマの停止中に行ってください。
■ 測定結果のデータ
単発測定モードと連続測定モードでは , 測定結果とタイマ値の扱い , および PWCR の
機能に違いがあります。両モードにおける測定結果は以下のとおりです。
● 単発測定モード
• 動作中に PWCR を読み出すと , 測定中のタイマ値が得られます。
• 測定終了後に PWCR を読み出すと , 測定結果データが得られます。
● 連続測定モード
• 測定終了時 , タイマ内の測定結果は PWCR に転送されます。
• PWCR を読み出すと直前の測定結果が得られます。測定動作中も前回の測定結果を
保持しています。測定中のタイマ値は読み出せません。
連続測定モードで , 測定結果を読み出さないうちに次の測定が終了してしまった場合
は , 前回の測定結果は新しい測定結果に上書きされ消失してしまいます。この場合 ,
PWCSR 中のエラーフラグ (ERR) がセットされます。エラーフラグ (ERR) は PWCR を
読み出すと自動的にクリアされます。
487
第 25 章 PWC タイマ
■ 入力端子の選択
PWC タイマは , 2 チャネル用意されています。パルス幅カウント用の信号入力に使用
する端子は PWC0, PWC1 の 2 チャネルです。チャネルごとに単独での使用も可能です。
また , 入力端子 PWC0, PWC1 については , PWCSR0 中の PIS1, PIS0 の組合せで , 各入力
波形の立上り / 立下り間の時間を測定することができます。この際に使用する PWC レ
ジスタは , PWC0 を使用しますので注意してください。
図 25.5-5 に , 入力波形と内部測定波形を示します。
図 25.5-5 入力波形と内部測定波形
PWC0
入力波形
PWC1
入力波形
PIS1,PIS0=01B時の
PWC内部測定波形
立上り間/立下り間の時間
は,この内部測定波形の
"H"幅を測定すればよい。
PIS1,PIS0=10 B時の
PWC内部測定波形
<注意事項>
• 2 入力比較の場合 , 立上り / 立下り検出のいずれでも PWC0 からカウントを開始し ,
PWC1 でカウントを停止してください。
• 立上りと立下りの検出モードを変える場合は , 必ず測定終了後に行ってください。
488
第 25 章 PWC タイマ
■ 測定モードとカウンタ動作
入力されたパルスのどこを測定するかによって, 測定モードは6種類のうちから選択で
きます。高い周波数のパルス幅を精度よく測定できるように , 入力されたパルスを任意
分周して周期を測定するモードも用意されています。表 25.5-6 に , 測定モード一覧を
示します。
表 25.5-6 測定モード一覧 (1 / 2)
測定モード
MOD2
MOD1
MOD0
測定モード測定内容 (W: 測定するパルス幅 )
W
"H" パルス幅
測定
1
0
1
W
カウントスタート カウントストップ スタート
ストップ
"H" 期間の幅を測定します。
カウント ( 測定 ) 開始 : 立上りエッジ検出時
カウント ( 測定 ) 終了 : 立下りエッジ検出時
W
"L" パルス幅
測定
1
1
0
W
カウントスタート カウントストップ スタート
ストップ
"L" 期間の幅を測定します。
カウント ( 測定 ) 開始 : 立下りエッジ検出時
カウント ( 測定 ) 終了 : 立上りエッジ検出時
W
立上り
エッジ間
周期測定
1
0
0
カウントスタート
W
カウントストップ
スタート
W
ストップ
スタート
ストップ
立上りエッジ間の周期を測定します。
カウント ( 測定 ) 開始 : 立上りエッジ検出時
カウント ( 測定 ) 終了 : 立上りエッジ検出時
W
立下り
エッジ間
周期測定
1
1
1
カウントスタート
W
カウントストップ
スタート
W
ストップ
スタート
ストップ
立下りエッジ間の周期を測定します。
カウント ( 測定 ) 開始 : 立下りエッジ検出時
カウント ( 測定 ) 終了 : 立下りエッジ検出時
W
全エッジ間
パルス幅測定
0
1
0
カウントスタート
W
カウントストップ
スタート
W
ストップ
スタート
ストップ
連続して入力されるエッジ間の幅を測定します。
カウント ( 測定 ) 開始 : エッジ検出時
カウント ( 測定 ) 終了 : エッジ検出時
489
第 25 章 PWC タイマ
表 25.5-6 測定モード一覧 (2 / 2)
測定モード
MOD2
MOD1
MOD0
測定モード測定内容 (W: 測定するパルス幅 )
W
分周周期測定
0
1
1
カウントスタート
(4分周の例)
W
カウントストップ
スタート
W
ストップ
分周比制御レジスタ DIVR で選択した分周比だけ入力パルスを分
周してその周期を測定します。
カウント ( 測定 ) 開始 : 起動直後の立上りエッジ検出時
カウント ( 測定 ) 終了 : 分周後の 1 周期終了時
どのモードでも , カウントの開始からカウント開始エッジの入力までの間はタイマに
よるカウントは行われません。カウント開始エッジ入力後に , タイマは "0000H" にクリ
アされ , カウント終了エッジが入力されるまでは , カウントクロックのたびにタイマの
カウントが行われます。カウント終了エッジの入力時には , 次の動作が実行されます。
1. PWCSR 中の測定終了割込み要求フラグ (EDIR) がセットされます。
2. タイマのカウント動作が停止します ( 再起動と同時であった場合を除く )。
3. 連続測定モードではタイマの値 ( 測定結果 ) は PWCR に転送され , 次の測定開始エッ
ジが入力されるまでカウントを中断したままとなります。
4. 単発測定モードでは測定を終了します ( 再起動と同時であった場合を除く )。
なお , 連続測定モードの場合で , 全エッジ間パルス幅測定や分周測定などを行った場合 ,
終了エッジが次の測定エッジとなります。
490
第 25 章 PWC タイマ
■ 最小入力パルス幅
パルス幅測定入力端子 (PWC1, PWC0) に入力できるパルスには以下の制限があります。
パルス幅は , 4 マシンサイクル (25MHz のマシンクロックの場合は , 0.16μs) 以上とする
こと
■ パルス幅 / 周期算出方法
測定するパルスの幅 / 周期は , 次の式で算出できます。
TW=n × t ÷ DIV [μs]
TW
: 被測定パルス幅 / 周期 [μs]
n
:PWCR 内の測定結果データ
t
: カウントクロックの周期 [μs]
DIV
: 分周比制御レジスタ DIVR で選択した分周比
( 分周周波数測定モード以外は 1 を代入 )
■ パルス幅 / 周期カウントの範囲
カウントクロックおよび入力分周器の分周比の組合せにより , 測定可能なパルス幅 / 周
期のレンジが変化します。
表 25.5-7 に , マシンクロック ( 以下 φ とする )=25MHz 時の測定レンジ一覧を示します。
表 25.5-7 パルス幅測定レンジ一覧
分周比
DIV1
DIV0
CKS1, CKS0=00B(φ/4) 時 CKS1, CKS0=01B(φ/16) 時 CKS1, CKS0=10B(φ/32) 時
0.16μs ~ 10.49ms
[0.16μs]
0.16μs ~ 2.62ms
0
0
4 分周
[0.04μs]
0.16μs ~ 0.66ms
0
1
16 分周
[10ns]
0.16μs ~ 164μs
1
0
64 分周
[2.5ns]
0.16μs ~ 41μs
1
1
256 分周
[0.625ns]
( 注意事項 ) [ ] 内は , 1 ビット当たりの分解能を示します。
分周なし
-
-
0.16μs ~ 41.94ms
[0.64μs]
0.16μs ~ 10.49ms
[0.16μs]
0.16μs ~ 2.62ms
[0.04μs]
0.16μs ~ 0.66ms
[10ns]
0.16μs ~ 164μs
[2.5ns]
0.16μs ~ 83.89ms
[1.28μs]
0.16μs ~ 20.97ms
[0.64μs]
0.16μs ~ 5.24ms
[0.16μs]
0.16μs ~ 1.31ms
[0.04μs]
0.16μs ~ 328μs
[10ns]
■ 割込み要求発生
パルス幅測定モードにおいては , 以下の 2 つの割込み要求を発生させることができま
す。
● タイマのオーバフローによる割込み要求
測定中 , カウントアップによってオーバフローが発生すると , オーバフローフラグが
セットされます。オーバフロー割込み要求が許可されている場合は , 割込み要求が発生
します。
● 測定終了による割込み要求
測定終了エッジを検出すると PWCSR 中の測定終了フラグ (EDIR) がセットされ , 測定
終了割込み要求が許可されていると割込み要求が発生します。
測定終了フラグEDIRは, 測定結果PWCRを読み出すと同時に自動的にクリアされます。
491
第 25 章 PWC タイマ
■ パルス幅測定の動作フロー
図 25.5-6 に , パルス幅測定の動作フローを示します。
図 25.5-6 パルス幅測定の動作フロー
各種設定
再起動
STRTビットにより起動
連続測定モード
単発測定モード
測定開始エッジ検出
測定開始エッジ検出
タイマをクリア
タイマをクリア
カウント開始
カウント開始
アップカウント
アップカウント
オーバフローの発生
→OVIRフラグセット
492
カウントクロック選択
動作/測定モード選択
割込みフラグクリア
割込み許可
オーバフローの発生
→OVIRフラグセット
測定終了エッジ検出
→EDIRフラグセット
測定終了エッジ検出
→EDIRフラグセット
カウント停止
カウント停止
タイマ値をPWCRに転送
動作停止
第 25 章 PWC タイマ
25.6
PWC タイマ使用上の注意
PWC タイマ使用上の注意について説明します。
■ PWC タイマ使用上の注意
● レジスタの書換えに関する注意事項
PWCSR 中の 以下に示すビットは , 動作中に書き換えることを禁止します。書換えは ,
必ず起動前か停止後に行ってください。
• [bit7, bit6] CKS1, CKS0( クロック選択 )
• [bit5, bit4] PIS1, PIS0( 入力信号選択 )
• [bit3] CKS1, CKS0( クロック選択 )
• [bit2 ~ bit0] MOD2 ~ MOD0( 動作モード / 測定エッジ選択 )
DIVR は , 動作中に書き換えることを禁止します。書換えは必ず起動前か停止後に行っ
てください。
● タイマモードの測定終了フラグの扱い
PWCSR 中の測定終了割込み要求フラグ (EDIR) の値は , タイマモードでは意味を持ち
ません。このため , PWCSR 中の測定終了割込み許可ビット (EDIE) は , タイマモードで
使用するときは必ず "0" を設定してください。
● PWCSR 中の STRT/ STOP ビットの扱い
両ビットとも書込み時と読出し時では , 意味が異なるので注意してください (「25.3.1
PWC コントロール / ステータスレジスタ (PWCSR0, PWCSR1)」を参照 )。また , リード
モディファイライト (RMW) 系命令における読出し値は , ビット値にかかわらず "11B" で
す。このため , 動作状態の読出しには , ビット処理命令は使用できません ( 読み出すと必
ず動作中となります ) ので注意してください。タイマの起動 / 停止のための STRT/ STOP
ビットへの書込みは , それぞれのビットに対するビット処理命令 ( ビットクリア命令な
ど ) を用いることができます。
● タイマのクリア
パルス幅測定モードの場合 , 測定開始エッジでタイマがクリアされますので , 起動前に
タイマ中のデータは無効となります。
● モード変更時の PWCR とタイマの値
• リロードタイマモードで使用した後 , タイマを強制停止してからワンショットタイ
マモードにした場合は , PWCR に保持された値およびタイマの値は不定となります
ので , 必ず値を書き込んでから使用してください。
• ワンショットタイマモードで使用した場合 , PWCR の値は不定となりますので , 必
ず値を書き込んでから使用してください。
• パルス幅測定モードからタイマモードへ切り換える場合は , 起動前に必ず PWCR に
値を再設定してから起動してください。
● 最小パルス幅
パルス幅測定入力端子に入力できるパルスには以下の制限があります。
493
第 25 章 PWC タイマ
• 最小パルス幅 : マシンクロックの 2 分周 (25MHz マシンクロック時 , 0.16μs 以上 )
• 最小入力周波数 : マシンクロックの 4 分周 (25MHz マシンクロック時 , 6.25MHz 以下 )
上記パルスより小さい幅や高い周波数のパルスを入力した場合は , 動作は保証できま
せん。入力信号にそのようなノイズがのる可能性がある場合は , チップ外部でフィルタ
などを通して除去してから入力してください。
● 分周周波数測定モード
パルス幅測定モードのうちの分周周期測定モードでは入力パルスを分周するため , 測
定結果より算出して得られるパルス幅は平均値となります。
● クロック選択ビットの扱い
PWCSR 中の [bit7, bit6] CKS1, CKS0 ( クロック選択 ) には , "11B" を設定しないでくだ
さい。
● 予約ビットの扱い
PWCSR 中の [bit8] は , 予約ビットとなっています。このビットに書き込む場合は , "0"
にしてください。
● 動作中の再起動
カウント動作を開始した後に再起動をする場合は , そのタイミングによっては以下に
示すようなことが起こり得ます。
• リロードタイマモード時において , オーバフロー発生と同時に再起動をかけた場合 ,
オーバフローフラグ (OVIR) がセットされます。
• パルス幅単発測定モードにおいて, 測定終了エッジと同時に再起動をかけた場合, 測
定終了割込み要求フラグ (EDIR) がセットされます。
• パルス幅連続測定モードにおいて, 測定終了エッジと同時に再起動をかけた場合, 測
定終了割込み要求フラグ (EDIR) はセットされ , その時点での測定結果は PWCR に
転送されます。
● PWC タイマを「"H" パルス幅または "L" パルス幅測定モードを連続測定モード」で使用して
いる場合
パルス幅測定が完了して次のパルス幅測定開始待ち状態になっている間 , 本来停止さ
れるはずのタイマが動作し続け , 次のパルス幅測定開始前にタイマのオーバフローフ
ラグ (OVIR) がセットされてしまうことがあります。このため , 次回パルス幅測定終了
時にオーバフローしていない場合でもオーバフローフラグがセットされている場合が
あります。したがって , PWC タイマを "H" パルス幅または "L" パルス幅測定モードを
連続測定モードで使用する場合には , オーバフローフラグを使用しないでください。
494
第 26 章
I2C インタフェース
I2C インタフェースの概要 , 構成 , レジスタの構成
と機能 , 割込みおよび動作について説明します。
26.1 I2C インタフェースの概要
26.2 I2C インタフェースの構成
26.3 I2C インタフェースのレジスタの構成と機能
26.4 I2C インタフェースの割込み
26.5 I2C インタフェースの動作
495
第 26 章 I2C インタフェース
26.1
I2C インタフェースの概要
I2C インタフェースは , Inter IC BUS をサポートし , I2C バス上のマスタ / スレーブ
デバイスとして動作するシリアル I/O ポートです。
■ I2C インタフェースの機能
I2C インタフェースには , 以下の機能があります。
• マスタ / スレーブ送受信機能
• アービトレーション機能
• クロック同期化機能
• スレーブアドレス / ゼネラルコールアドレス検出機能
• 転送方向検出機能
• スタートコンディションの繰返し発生および検出機能
• バスエラー検出機能
496
第 26 章 I2C インタフェース
I2C インタフェースの構成
26.2
■ I2C インタフェースのブロックダイヤグラム
図 26.2-1 に , I2C インタフェースのブロックダイヤグラムを示します。
図 26.2-1 I2C インタフェースのブロックダイヤグラム
ICCR
EN
I2Cイネーブル
ICCR
クロック分周1
5
6
7
8
CS4
周辺クロック
クロック選択1
CS3
クロック分周2
2 4 8 16 32 64 128 256
CS2
CS1
CS0
Sync
シフトクロック発生
クロック選択2
シフトクロック
エッジ変化タイミング
IBSR
BB
RSC
LRB
F2MC-16LXバス
TRX
バスビジー
リピートスタート
ラストビット
スタート・ストップ
コンディション検出
エラー
送信/受信
ファーストバイト
FBT
ア-ビトレーションロスト検出
AL
IBCR
SCL
BER
BEIE
割込み要求
INTE
IRQ
SDA
INT
IBCR
SCC
MSS
ACK
GCAA
終了
スタート
マスタ
ACK許可
スタート・ストップ
コンディション発生
GC-ACK許可
IDAR
IBCR
AAS
GCA
スレーブ
グローバル
コール
スレーブアドレス比較
IADR
497
第 26 章 I2C インタフェース
■ I2C インタフェースに関する端子
I2C インタフェースに関する端子は , SDA データ入出力端子と SCL クロック入出力端
子があります。SCL/SDA 端子は , 汎用入出力ポート (P76/SCL, P77/SDA) と I2C インタ
フェースを兼用しています。
汎用入出力ポートとして使用する場合は , P76, P77 のポート方向レジスタ (DDR) が存
在しませんので , 常にポートとしてデータを有効にします 。
P76/SCL, P77/SDA 端子は , N-ch オープンドレイン端子です。
● SCL/SDA 端子として使用する場合の設定
I2C インタフェースとして使用する場合は , ポートデータレジスタ (PDR7 :bit6, bit7 → "1")
を設定してください。また , 入力ポートとして使用する場合は , 外部端子にはプルアップ
抵抗を付加する必要があります。
■ I2C インタフェースに関する端子のブロックダイヤグラム
図 26.2-2 I2C インタフェースに関する端子のブロックダイヤグラム
周辺機能入力
ポートデータレジスタ(PDR)
(SCL/SDA)
周辺機能出力(SCL/SDA)
周辺機能出力許可
内部データバス
PDRリード
出力ラッチ
端子
PDRライト
N-ch
スタンバイ制御(SPL=1)
スタンバイ制御:ストップモード(SPL=1), タイムベースタイマモード(SPL=1),時計モード(SPL=1)
498
第 26 章 I2C インタフェース
26.3
I2C インタフェースのレジスタの構成と機能
I2C インタフェースのレジスタの構成と機能について説明します。
■ I2C インタフェースのレジスタ一覧
● バスステータスレジスタ (IBSR)
図 26.3-1 バスステータスレジスタ (IBSR)
バスステータスレジスタ(IBSR)
アドレス:
000088H
bit7 bit6 bit5 bit4 bit3
BB
RSC
AL
R
R
R
bit2
bit1 bit0
LRB TRX AAS GCA FBT
R
R
R
R
初期値
00000000B
R
R:リードオンリ
● バスコントロールレジスタ (IBCR)
図 26.3-2 バスコントロールレジスタ (IBCR)
バスコントロールレジスタ(IBCR)
アドレス:
000089H
bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8
BER BEIE SCC
MSS ACK GCAA INTE INT
R/W R/W R/W R/W R/W R/W R/W
初期値
00000000B
R/W
R/W: リード/ライト可能
● クロックコントロールレジスタ (ICCR)
図 26.3-3 クロックコントロールレジスタ (ICCR)
クロックコントロールレジスタ(ICCR)
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
アドレス:
00008AH
- - EN CS4 CS3 CS2 CS1 CS0
-
R/W: リード/ライト可能
- : 未使用
-
初期値
--0XXXXXB
R/W R/W R/W R/W R/W R/W
● アドレスレジスタ (IADR)
図 26.3-4 アドレスレジスタ (IADR)
アドレスレジスタ(IADR)
アドレス:
00008BH
bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8
-
-
A6
A5
A4
A3
A2
A1
R/W R/W R/W R/W R/W R/W
A0
初期値
-XXXXXXXB
R/W
R/W: リード/ライト可能
- : 未使用
499
第 26 章 I2C インタフェース
● データレジスタ (IDAR)
図 26.3-5 データレジスタ (IDAR)
データレジスタ(IDAR)
アドレス:
00008CH
R/W: リード/ライト可能
500
bit7 bit6 bit5 bit4 bit3
bit2
bit1 bit0
D7
D2
D1
D0
R/W R/W R/W R/W R/W R/W R/W
R/W
D6
D5
D4
D3
初期値
XXXXXXXXB
第 26 章 I2C インタフェース
26.3.1
バスステータスレジスタ (IBSR)
バスステータスレジスタ (IBSR) の構成と機能について説明します。
■ バスステータスレジスタ (IBSR)
図 26.3-6 に , バスステータスレジスタ (IBSR) のビット構成を示します。
図 26.3-6 バスステータスレジスタ (IBSR) のビット構成
バスステータスレジスタ(IBSR)
アドレス:
000088H
bit7 bit6 bit5 bit4 bit3
BB
RSC
AL
R
R
R
bit2
LRB TRX AAS GCA FBT
R
R
R
初期値
bit1 bit0
R
00000000B
R
R:リードオンリ
以下に , バスステータスレジスタ (IBSR) の各ビットの機能を説明します。
[bit7] BB:Bus Busy
このビットは , I2C バスの状態を示します。
動作
BB
0
1
ストップコンディションを検出した。
スタートコンディションを検出した ( バスは使用されている )。
[bit6] RSC:Repeated Start Condition
このビットは , 繰返しスタートコンディションの検出を示します。
動作
RSC
0
1
繰返しスタートコンディションは検出されていない。
バス使用中に , 再びスタートコンディションを検出した。
このビットは , INT ビットへの "0" の書込み時 , スレーブ時にアドレスされなかった
場合 , バス停止中のスタートコンディション検出またはストップコンディション検
出時にクリアされます。
[bit5] AL:Arbitration Lost
このビットは , アービトレーションロストの検出を示します。
AL
動作
0
アービトレーションロストは検出されていない。
マスタ送信中にアービトレーションロストが発生した。またはほかのシステム
がバスを使用中のときに MSS ビットに "1" を書き込んだ。
1
このビットは , INT ビットへの "0" の書込みによってクリアされます。
[bit4] LRB:Last Received ビット
このビットは , アクノリッジ格納用です。受信側からのアクノリッジを格納します。
動作
LRBL
0
1
受信を確認した。
受信が確認されない。
このビットは , スタートコンディションまたはストップコンディションの検出に
よってクリアされます。
501
第 26 章 I2C インタフェース
[bit3] TRX:Transfer/Recieve
このビットは , データ転送の送受信状態を示します。
動作
TRX
0
1
受信状態
送信状態
[bit2] AAS:Addressed As Slave
このビットは , アドレッシングモードの検出を示します。
動作
AAS
0
1
スレーブモードで , アドレッシングされていない。
スレーブモードで , アドレッシングされた。
このビットは , スタートコンディションまたはストップコンディション検出時にク
リアされます。
[bit1] GCA:General Call Address
このビットは , ゼネラルコールアドレス (00H) の検出を示します。
動作
GCA
0
1
スレーブモードで , ゼネラルコールアドレスは受信されていない。
スレーブモードで , ゼネラルコールアドレスを受信した。
このビットは , スタートコンディションまたはストップコンディション検出時にク
リアされます。
[bit0] FBT:First Byte Transfer
このビットは , 第 1 バイト ( アドレスデータ ) の検出を示します。
FBT
0
1
動作
受信データが第 1 バイト以外である。
受信データが第 1 バイト ( アドレスデータ ) である。
このビットは , スタートコンディションの検出で "1" にセットされても , INT ビット
の "0" の書込みまたはスレーブ時にアドレスされなかった場合にクリアされます。
502
第 26 章 I2C インタフェース
26.3.2
バスコントロールレジスタ (IBCR)
バスコントロールレジスタ (IBCR) の構成と機能について説明します。
■ バスコントロールレジスタ (IBCR)
図 26.3-7 に , バスコントロールレジスタ (IBCR) のビット構成を示します。
図 26.3-7 バスコントロールレジスタ (IBCR) のビット構成
バスコントロールレジスタ(IBCR)
アドレス:
000089H
初期値
bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8
BER BEIE SCC
MSS ACK GCAA INTE INT
R/W R/W R/W R/W R/W R/W R/W
00000000B
R/W
R/W: リード/ライト可能
以下に , バスコントロールレジスタ (IBCR) の各ビットの機能を説明します。
[bit15] BER:Bus ERror
このビットは , バスエラー割込み要求フラグです。書込み時と読出し時で機能が異
なります。
( 書込み時 )
動作
BER
0
1
バスエラー割込み要求フラグをクリアする。
関係なし。
( 読出し時 )
動作
BER
0
1
バスエラーは検出されていない。
データ転送中に不正なスタート , ストップコンディションを検出した。
このビットがセットされた場合 , ICCR レジスタの EN ビットはクリアされて I2C イ
ンタフェースは停止状態になり , データ転送は中断されます。
[bit14] BEIE:Bus Error Interrupt Enable
このビットは , バスエラー割込み許可を示します。
動作
BEIE
0
1
バスエラー割込み禁止。
バスエラー割込み許可。
このビットが "1" のとき BER ビットが "1" であれば , 割込みを発生します。
[bit13] SCC:Start Condition Continue
このビットは , スタートコンディションの発生を示します。
( 書込み時 )
動作
SCC
0
1
関係なし。
マスタ転送時に再びスタートコンディションを発生させる。
このビットの読出し値は , 常に "0" です。
503
第 26 章 I2C インタフェース
[bit12] MSS:Master Slave Select
このビットは , マスタ / スレーブの選択を示します。
動作
MSS
0
1
ストップコンディションを発生する。転送終了後にスレーブモードとなる。
マスタモードとなり , スタートコンディションを発生し転送を開始する。
このビットは , マスタ送信中にアービトレーションロストが発生した場合にクリア
され , スレーブモードになります。
<注意事項>
本 LSI のほかにマスタモードとなるほかの LSI がバス上に存在し , 本 LSI がマスタとして
ゼネラルコールアドレスを送信し第2バイト目以降でアービトレーションロストが発生す
る場合 , スレーブとして受信できませんのでゼネラルコールアドレスの送信は禁止です。
[bit11] ACK:ACKnowledge
このビットは , データを受信した場合のアクノリッジ発生許可を示します。
動作
ACK
0
1
アクノリッジを発生しない。
アクノリッジを発生する。
このビットは , スレーブモードにおけるアドレスデータ受信時には無効となりま
す。
[bit10] GCAA:General Call Address Ackowledge
このビットは , ゼネラルコールアドレス (00H) を受信した場合のアクノリッジ発生
許可を示します。
動作
GCAA
0
1
アクノリッジを発生しない。
アクノリッジを発生する。
[bit9] INTE:INTerrupt Enable
このビットは , 割込み許可を示します。
動作
INTE
0
1
割込み禁止
割込み許可
このビットが "1" のときに INT ビットが "1" であれば割込みを発生します。
[bit8] INT:INTerrupt
このビットは , 転送終了割込み要求フラグです。
( 書込み時 )
INT
0
1
504
動作
転送終了割込み要求フラグをクリアする。
関係なし。
第 26 章 I2C インタフェース
( 読出し時 )
動作
INT
転送が終了していない。
アクノリッジビットを含めた 1 バイト転送が終了したときに , 次の条件に該当
する場合にセットされます。
・バスマスタである。
・アドレスされたスレーブである。
・ゼネラルコールアドレスを受信した。
・アービトレーションロストが起こった。
・ほかのシステムがバスを使用中にスタートコンディションを発生しようとし
た。
0
1
このビットが "1" のとき , SCL ラインは "L" レベルに保たれます。このビットへ "0"
を書き込むことによって , SCL ラインが開放され次バイトが転送されます。また ,
マスタ時にスタートコンディションまたはストップコンディションの発生によっ
て "0" にリセットされます。
<注意事項>
図 26.3-8 と図 26.3-9 に示したタイミングで,スタートコンディションを発生させる命令
を実行 (MSS ビットに "1" を設定 ) すると , アービトレーションロスト検出 (AL ビット =1)
による割込み (INT ビット =1) が発生しません。
• AL ビット =1 検出による割込み (INT ビット =1) が発生しない条件 1
スタートコンディション未検出 (BB ビット =0) 状態で , SDA 端子または SCL 端子レベ
ルが "L" のときに , スタートコンディションを発生させる命令を実行 (IBCR レジスタの
MSS ビットに "1" を設定 ) した場合。
図 26.3-8 AL ビット =1 検出による割込みが発生しないタイミング図
SCL端子またはSDA端子”L”レベル
SCL端子
"L"
SDA端子
"L"
1
I2C動作許可状態(ENビット=1)
マスタモード設定(MSSビット=1)
アービトレーションロスト検出(ALビット=1)
バスビジー(BBビット)
0
割込み(INTビット)
0
505
第 26 章 I2C インタフェース
• AL ビット =1 検出による割込み (INT ビット =1) が発生しない条件 2
ほかのマスタに I2C バスが占有されている状態で , I2C 動作許可 (EN ビット =1) をして
スタートコンディションを発生させる命令を実行 (IBCR レジスタの MSS ビットに "1"
を設定 ) した場合。
図 26.3-9 に示したとおり , I2C が動作禁止 (EN ビット =0) の状態で , I2C バス上のほか
のマスタが通信を開始すると , スタートコンディション未検出 (BB ビット =0) で I2C バ
スが占有されている状態になるためです。
図 26.3-9 AL ビット =1 検出による割込みが発生しないタイミング図
9クロック目でINTビット
割込みが発生しない
ストップコンディション
スタートコンディション
SCL端子
SDA端子
SLAVE ADDRESS
ACK
DAT
ACK
ENビット
MSSビット
ALビット
BBビット
0
INTビット
0
上記のような現象が発生する可能性がある場合には , 以下の手順でソフトウェアによる処
理を行ってください。
1. スタートコンディションを発生させる命令を実行 (MSS ビットに "1" を設定 )。
2. タイマ機能などを用いて , ICCR レジスタに設定されている I2C 転送周波数で 3 ビット
データ送信時間分待つ。*
例:I2C 転送周波数 100kHz の場合
3 ビットデータ送信時間 {1/(100 × 103)} × 3=30 μs
3. IBSR レジスタの AL ビットと BB ビットを確認し , AL ビット =1, BB ビット =0 の場合
AL ビットと BB ビッ
には , ICCR レジスタの EN ビットを "0" にして I2C を初期化する。
トがその他の状態の場合は通常処理を行う。
以下にフロー例を示します。
506
第 26 章 I2C インタフェース
マスタモード設定
バスコントロールレジスタ (IBCR) の MSS ビットに "1" を設定
クロックコントロールレジスタ (ICCR) に設定されている
I2C 転送周波数での 3 ビットデータ送信時間待ち *
NO
BB ビット =0 でかつ AL ビット =1
YES
通常処理へ
EN ビットを "0" にして I2C の初期化
* : アービトレーションロストが検出された場合 , MSS ビット =1 設定後 I2C 転送周波数で 3 ビットデー
タ送信時間後には確実に AL ビット =1 となります。
• AL ビット =1 検出による割込み (INT ビット =1) が発生する例
バスビジー検出 (BB ビット =1) されている状態で , スタートコンディションを発生さ
せる命令を実行 (MSS ビットに "1" を設定 ) しアービトレーションロストした場合には ,
AL ビット =1 検出時に INT ビット割込みが発生します。
図 26.3-10 AL ビット =1 時に割込みが発生するタイミング図
9 クロック目で割込み
スタートコンディション
SCL 端子
SDA 端子
SLAVE ADDRESS
ACK
DAT
EN ビット
MSS ビット
AL ビット
ソフトウェアでの
AL ビットクリア
BB ビット
INT ビット
ソフトウェアでの INT ビット
クリアで SCL 開放
507
第 26 章 I2C インタフェース
■ バスコントロールレジスタ (IBCR) 使用上の注意
SCC ビットに "1", MSS ビットに "0" の同時書込みは禁止です。また , INT ビットと MSS
または SCC ビットの同時書込みにより , 次バイト転送 , スタートコンディション発生
およびストップコンディション発生の競合が起こります。この場合の優先度は , 次のよ
うになります。
• 次のバイト転送とストップコンディション発生
INT ビットに "0", MSS ビットに "0" を書き込むと , MSS ビットの "0" の書込みが優
先され , ストップコンディションが発生します。
• 次のバイト転送とスタートコンディション発生
INT ビットに "0", SCC ビットに "1" を書き込むと , SCC ビットの "1" の書込みが優
先され , スタートコンディションが発生します。
• スタートコンディション発生とストップコンディション発生
SCC ビットに "1", MSS ビットに "0" の同時書込みは禁止です。
508
第 26 章 I2C インタフェース
26.3.3
クロックコントロールレジスタ (ICCR)
クロックコントロールレジスタ (ICCR) の構成と機能について説明します。
■ クロックコントロールレジスタ (ICCR)
図 26.3-11 に , クロックコントロールレジスタ (ICCR) のビット構成を示します。
図 26.3-11 クロックコントロールレジスタ (ICCR) のビット構成
クロックコントロールレジスタ(ICCR)
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
アドレス:
00008AH
-
-
EN
CS4 CS3 CS2 CS1 CS0
R/W: リード/ライト可能
- : 未使用
-
-
R/W
R/W
R/W
R/W
R/W
初期値
--0XXXXXB
R/W
以下に , クロックコントロールレジスタ (ICCR) の機能を説明します。
[bit7, bit6] 未使用
これらのビットは未使用です。
[bit5] EN:ENable
このビットは , I2C インタフェースの動作許可を示します。
動作
EN
0
1
動作禁止
動作許可
• このビットが "0" のとき , IBSR レジスタおよび IBCR レジスタ (BER, BEIE ビッ
トを除く ) の各ビットがクリアされます。
• BER ビットがセットされると , このビットはクリアされます。
509
第 26 章 I2C インタフェース
[bit4 ~ bit0] CS4 ~ CS0:Clock Period Select 4 ~ 0
これらのビットは , シリアルクロックの周波数を設定します。シフトクロックの周
波数 fsck は , 次式で求められます。
m, n は , CS4 ~ CS0 に対して表 26.3-1 に示すようになります。
fsck=
φ
m×n+4
φ:マシンクロック
表 26.3-1 シリアルクロック周波数設定
m
CS4
CS3
n
CS2
CS1
CS0
5
0
0
4
0
0
0
6
0
1
8
0
0
1
7
1
0
16
0
1
0
8
1
1
32
0
1
1
64
1
0
0
128
1
0
1
256
1
1
0
512
1
1
1
<注意事項>
fsckを求める式の分母の+4のサイクルは, SCL端子の出力レベルが変化したことをチェッ
クするための最小のオーバヘッドです。SCL 端子の立上りのディレイが大きい場合や , ス
レーブデバイスでクロックを引き延ばしている場合には , +4 のサイクルより大きくなり
ます。
なお , シリアルクロックの周波数は 100kHz 以上に設定しないでください。
510
第 26 章 I2C インタフェース
26.3.4
アドレスレジスタ (IADR)
アドレスレジスタ (IADR) の構成と機能について説明します。
■ アドレスレジスタ (IADR)
図 26.3-12 に , アドレスレジスタ (IADR) のビット構成を示します。
図 26.3-12 アドレスレジスタ (IADR) のビット構成
アドレスレジスタ(IADR)
アドレス:
00008BH
bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8
-
-
A6
A5
A4
A3
A2
A1
R/W R/W R/W R/W R/W R/W
A0
初期値
-XXXXXXXB
R/W
R/W: リード/ライト可能
- : 未使用
[bit15] 未使用
このビットは未使用です。
[bit14 ~ bit8] A6 ~ A0
これらのビットは , スレーブアドレスを示します。本レジスタはスレーブアドレス
を指定するためのレジスタです。スレーブ時 , アドレスデータ受信後に IDAR レジ
スタとの比較が行われ , 一致している場合はマスタに対してアクノリッジを送信し
ます。
511
第 26 章 I2C インタフェース
26.3.5
データレジスタ (IDAR)
データレジスタ (IDAR) の構成と機能について説明します。
■ データレジスタ (IDAR)
図 26.3-13 に , データレジスタ (IDAR) のビット構成を示します。
図 26.3-13 データレジスタ (IDAR) のビット構成
データレジスタ(IDAR)
アドレス:
00008CH
bit7 bit6 bit5 bit4 bit3
bit2
bit1 bit0
D7
D2
D1
D0
R/W R/W R/W R/W R/W R/W R/W
R/W
D6
D5
D4
D3
初期値
XXXXXXXXB
R/W: リード/ライト可能
[bit7 ~ bit0] D7 ~ D0
これらのビットは , データビットです。
本レジスタは , シリアル転送用のデータレジスタとして使用します。データは MSB
から転送されます。
データ受信時 (TRX=0) は , データレジスタのデータ出力値は "1"
になります。
このレジスタの書込み側はダブルバッファになっており , バスが使用中(BB=1)であ
る場合は , 書込みデータはシリアル転送用のレジスタにロードされます。読出し時
は , シリアル転送用のレジスタを直接読み出すため , 受信データは IBCR レジスタの
INT ビットがセットされている場合のみ有効です。
512
第 26 章 I2C インタフェース
26.4
I2C インタフェースの割込み
I2C インタフェースに関する割込みは , データの転送終了時に発生します。
■ I2C インタフェースの割込み制御ビットと割込み要因
表 26.4-1 に , I2C インタフェースの割込み制御ビットと割込み要因を示します。
表 26.4-1 I2C インタフェースの割込み制御ビットと割込み要因
I2C 割込み
割込み要求フラグ
IBCR:INT (bit8)
割込み要求出力許可ビット
IBCR:INTE (bit9)
割込み発生要因
I2C 転送終了
■ I2C インタフェースに関する割込み要因
I2C バスには 1 つの割込み要因しかありません。1 バイト転送を終了した時点で割込み
条件に該当していた場合 , 割込みが発生します。
1 つの割込みで複数の割込み条件を判断しなければならないため , 割込みルーチン内で
各フラグをチェックしなければなりません。1 バイト転送終了時点での割込み条件を下
記に示します。
• バスマスタであった場合
• アドレスされたスレーブであった場合
• ゼネラルコールアドレスを受信した場合
• アービトレーションロストが発生した場合
513
第 26 章 I2C インタフェース
■ I2C インタフェースの割込みと DMA 転送および EI2OS
表 26.4-2 に , ソフトウェア割込みを除く , 割込み要因と割込みベクタ / 割込み制御レジ
スタを示します。
表 26.4-2 割込み要因と割込みベクタ / 割込み制御レジスタ
割込み要因
I2
C インタフェース *
割込みベクタ
EI2OS のクリア
μDMAC
チャネル番号
番号
×
×
#39
アドレス
FFFF60H
割込み制御レジスタ
番号
ICR14
アドレス
0000BEH
× : 割込み要求フラグはクリアされません。
この割込み要因は , ほかの周辺機能の割込み要因と割込み番号を共有しています。詳細については , 表 4.2-2
を参照してください。
( 注意事項 ) 同一割込み番号に 2 つの割込み要因があった場合は , リソースは両方の割込み要求フラグをクリ
アします。したがって , 2 要因のどちらか 1 つが EI2OS/μDMAC 機能を使用すると , もう 1 つの割
込み機能は使用できません。該当リソースの割込み要求許可ビットを "0" にしてソフトウェア
ポーリング処理で対処してください。
*:
■ DMA 転送 , および EI2OS 機能への対応
I2C インタフェースは DMA 転送機能 , および EI2OS 機能に対応していません。
514
第 26 章 I2C インタフェース
26.5
I2C インタフェースの動作
I2C バスは , シリアルデータライン (SDA) とシリアルクロックライン (SCL) の 2 本
の双方向バスラインを使用して通信を実行します。I2C インタフェースには , これら
に対応する 2 本のオープンドレイン入出力端子 (SDA/SCL) があり , ワイヤード論理
を使用することができます。
■ スタートコンディション
バスが開放されている状態 (BB=0, MSS=0) で MSS ビットに "1" を書き込むと , I2C イ
ンタフェースはマスタモードとなり , 同時にスタートコンディションを発生します。マ
スタモードでは , バスが使用状態 (BB=1) であっても , SCC ビットに "1" を書き込むこ
とによって , 再びスタートコンディションを発生させることができます。スタートコン
ディションを発生させる条件として次の 2 とおりがあります。
• バスが使用されていない状態 (MSS=0, BB=0, INT=0 および AL=0) での MSS ビット
への "1" の書込み
• バスマスタ時の割込み状態 (MSS=1, BB=1, INT=1 および AL=0) での SCC ビットへ
の "1" の書込み
ほかのシステム ( アイドル状態中 ) がバス使用中に , MSS ビットへ "1" を書き込むと ,
AL ビットが "1" にセットされます。
上記条件以外では MSS ビット , SCC ビットへの "1" の書込みは無視されます。
■ ストップコンディション
マスタモード (MSS=1) 時に , MSS ビットに "0" を書き込むと , ストップコンディショ
ンを発生し, スレーブモードになります。ストップコンディションを発生させる条件は,
次のとおりです。
• バスマスタ時の割込み状態 (MSS=1, BB=1, INT=1 および AL=0) での MSS ビットへ
の "0" の書込み
上記以外では , MSS ビットへの "0" の書込みは無視されます。
■ アドレッシング
マスタモードではスタートコンディション発生後 , BB=1, TRX=1 にセットされ , IDAR
レジスタの内容が MSB から出力されます。アドレスデータ送信後 , スレーブからアク
ノリッジを受信すると , 送信データの bit0( 送信後の IDAR レジスタの bit0) を反転して
TRX ビットへ格納します。
スレーブモードでは , スタートコンディション発生後 , BB=1, TRX=0 にセットされ , マ
スタからの送信データが IDAR レジスタで受信されます。アドレスデータ受信後 , IDAR
レジスタと IADR レジスタとの比較が行われ , 一致している場合 , AAS=1 にセットして
マスタに対してアクノリッジを送信します。その後 , 受信データの bit0( 受信後の IDAR
レジスタの bit0) を TRX ビットへ格納します。
515
第 26 章 I2C インタフェース
■ アービトレーション
マスタ送信時に , ほかのマスタも同時にデータを送信している場合 , アービトレーショ
ンが起こります。自分の送信データが "1", SDA ライン上のデータが "L" レベルの場合 ,
自分はアービトレーションを失ったと見なし , AL=1 にセットします。また , 前述のよ
うにバスが使用状態のときに , スタートコンディションを発生させようとした場合も
AL=1 にセットされます。AL=1 にセットされると , MSS=0, TRX=0 となりスレーブ受
信モードとなります。
■ アクノリッジ
アクノリッジは , 受信側が送信側に対して送信します。データ受信時は , ACK ビット
によってアクノリッジの有無を選択できます。データ送信時は , 受信側からのアクノ
リッジが LRB ビットに格納されます。
スレーブ送信側にマスタ受信側からアクノリッジを受信しなかった場合 , TRX=0 とな
りスレーブ受信モードになります。これによって , マスタはスレーブが SCL ラインを
開放したときに , ストップコンディションを発生させることができます。
■ バスエラー
以下の条件が成立した場合はバスエラーと判断され , I2C インタフェースは停止状態に
なります。
• データ転送中 (ACK ビットを含む ) の I2C バス上の基本規定違反の検出
• マスタ時のストップコンディション検出
• バスアイドルにおける I2C バス上の基本規定違反の検出
■ その他
● アービトレーションロスト検出後の処理
アービトレーションロストを検出した後 , 自分がアドレッシングされている場合とア
ドレッシングされていなかった場合をソフトウェアで判断しなければなりません。
アービトレーションロスト検出するとハードウェア的にスレーブになりますが , 1 バイ
ト転送終了後 , CLK ライン , DATA ライン双方を "L" に設定します。このため , アド
レッシングされていない場合は , 即座に CLK ライン , DATA ラインを開放し , アドレッ
シングされていた場合には , スレーブ送信, またはスレーブ受信の準備をしてからCLK
ライン , DATA ラインを開放する必要があります ( すべてソフトウェアで処理する必要
があります )。
● アービトレーションロスト検出時の割込み要因
アービトレーションロストを検出した場合 , 即時に割込み要因が発生するのではなく ,
1 バイト転送終了した時点で割込み要因が発生します。
アービトレーションロストを検出するとハードウェア的にスレーブになりますが , ス
レーブになっても , 割込み要因が発生するために , 計 9 クロックを出力します。した
がって , 即時に割込み要因が発生しないため , アービトレーションロスト後に即時に割
込み処理を行うことはできません。
516
第 26 章 I2C インタフェース
● 割込み条件
I2C バスには 1 つの割込みしかありません。1 バイト転送を終了した時点で , 割込み条
件に該当していた場合に割込みが発生します。
1 つの割込みで複数の割込み条件を判断しなければならないため , 割込みルーチン内で
各フラグをチェックしなければなりません。1 バイト転送終了時点での割込み条件を下
記に示します。
• バスマスタであった場合
• アドレスされたスレーブであった場合
• ゼネラルコールアドレスを受信した場合
• アービトレーションロストが発生した場合
● 転送速度
I2C バスは , 最大でシリアルクロック周波数 100kHz の転送までしか行えません。
517
第 26 章 I2C インタフェース
518
付録
メモリマップおよび F2MC-16LX に使用している命
令について説明します。
付録 A メモリマップ
付録 B I/O マップ
付録 C 割込み要因 , 割込みベクタおよび割込み制御レジスタ
付録 D 命令
519
付録
付録 A
メモリマップ
メモリ空間は , 3 つのモードに分かれます。
■ メモリ空間
メモリ空間は , 図 A-1 に示すように 3 つのモードにそれぞれ依存して分かれます。
図 A-1 メモリマップ
シングルチップ
FFFFFFH
ROM領域
アドレス#1
FC0000H
010000H
ROM領域
FFバンクの
イメージ
アドレス#2
アドレス#3
RAM
レジスタ
000100H
0000D0H
周
辺
000000H
: 内部
:アクセスなし
*:アドレス#3がアドレス#2と重なる品種では,外部領域は存在しません。
表 A-1 に , 各品種のアドレス #1, アドレス #2 およびアドレス #3 の対応を示します。
表 A-1 各品種のアドレス #1, アドレス #2 およびアドレス #3 の対応
520
品種
アドレス #1
アドレス #2
アドレス #3
MB90F983
FC0000H*1
ROMM レジスタの
MS ビットにより 004000H,
003100H
MB90982
FD0000H*2
008000H を選択可能
002900H
付録 A メモリマップ
*1:FC0000H ~ FC7FFFH と FE0000H ~ FE7FFFH にはメモリセルがありません。
*2:FE0000H ~ FEFFFFH にはメモリセルがありません。
MB90F983 では , 00 バンクの上位に FF バンク (FC0000H ~ FC7FFFH または FE0000H ~
FE7FFFH) の ROM がイメージで見えるようになっていますが , これは C コンパイラの
スモールモデルを有効に生かすためです。FF バンクの下位 16 ビットアドレスと 00 バ
ンクの下位 16 ビットアドレスは同じになるようにしてありますので , ポインタで far 指
定を宣言しなくとも ROM 内のテーブルを参照できます。
例えば , "00C000H" をアクセスした場合に , 実際には , "FFC000H" の ROM の内容がアク
セスされることになります。ここで , ROMM レジスタの MS ビットが "0" の場合 , FF
バンクの ROM 領域は 48K バイトを超えますので , 00 バンクのイメージとしてすべて
の領域をみせることはできません。そこで , "FF4000H" ~ "FFFFFFH" までのイメージを
00 バンクに見えるようにし , "FF0000H" ~ "FF3FFFH" は FF バンクだけで見えるように
してあります。
521
付録
付録 B
I/O マップ
表 B-1 に , 各周辺機能のレジスタに割り当てられるアドレスを示します。
■ I/O マップ
表 B-1 に , 各周辺機能のレジスタに割り当てられるアドレスを示します。
表 B-1 I/O マップ (1 / 5)
アドレス
000000H,
000001H
レジスタ
000002H ポート 2 データレジスタ
000003H ポート 3 データレジスタ
000004H ポート 4 データレジスタ
000005H
000006H ポート 6 データレジスタ
000007H ポート 7 データレジスタ
略称
アクセス
リソース
初期値
PDR2
R/W
ポート 2
XXXXXXXXB
PDR3
R/W
ポート 3
XXXXXXXXB
予約領域
PDR4
R/W
ポート 4
XXXXXXXXB
予約領域
PDR6
R/W
ポート 6
XXXXXXXXB
ポート 7
11XXXXXXB
PDR7
R/W
000008H ポート 8 データレジスタ
000009H ポート 9 データレジスタ
PDR8
R/W
ポート 8
XXXXXXXXB
PDR9
R/W
ポート 9
XXXXXXXXB
00000AH ポート A データレジスタ
PDRA
R/W
----XXXXB
00000BH アップダウンタイマ入力許可レジスタ
UDER
R/W
ポート A
アップダウン
タイマ入力制御
00000CH 割込み /DTP 許可レジスタ
00000DH 割込み /DTP 要因レジスタ
ENIR
R/W
EIRR
R/W
00000EH 要求レベル設定レジスタ
00000FH 要求レベル設定レジスタ
000010H,
000011H
ELVR
R/W
XX000000B
00000000B
DTP/ 外部割込み
XXXXXXXXB
00000000B
00000000B
R/W
予約領域
000012H ポート 2 方向レジスタ
000013H ポート 3 方向レジスタ
DDR2
R/W
ポート 2
0000XXXXB
DDR3
R/W
ポート 3
00000000B
000014H ポート 4 方向レジスタ
000015H
DDR4
R/W
ポート 4
00000000B
予約領域
DDR6
R/W
ポート 6
00000000B
XXX00000B
000016H ポート 6 方向レジスタ
000017H ポート 7 方向レジスタ
DDR7
R/W
ポート 7
000018H ポート 8 方向レジスタ
000019H ポート 9 方向レジスタ
DDR8
R/W
ポート 8
00000000B
DDR9
R/W
ポート 9
00XX0000B
00001AH ポート A 方向レジスタ
DDRA
R/W
----0000B
00001BH ポート 4 出力端子レジスタ
ODR4
R/W
ポート A
ポート 4
( オープンドレイン
制御 )
00001CH,
00001DH
予約領域
00001EH ポート 7 出力端子レジスタ
ODR7
R/W
00001FH アナログ入力許可レジスタ
ADER
R/W
522
XXXXX000B
ポート 7
( オープンドレイン
制御 )
ポート 6, A/D
XXX00000B
11111111B
付録 B I/O マップ
表 B-1 I/O マップ (2 / 5)
アドレス
レジスタ
000020H シリアルモードレジスタ
000021H シリアルコントロールレジスタ
000022H シリアルインプット / アウトプットレジスタ
000023H シリアルステータスレジスタ
000024H
略称
アクセス
SMR
R/W
SCR
SIDR/
SODR
SSR
W, R/W
R/W
XXXXXXXXB
00001000B
予約領域
CDCR
R/W
000026H シリアルモードコントロールステータスレジスタ 0
000027H シリアルモードコントロールステータスレジスタ 0
SMCS0
R, R/W
SMCS0
R, R/W
SDR0
R/W
000029H 通信プリスケーラコントロールレジスタ 0
SDCR0
R/W
00002AH シリアルモードコントロールステータスレジスタ 1
00002BH シリアルモードコントロールステータスレジスタ 1
SMCS1
R, R/W
SMCS1
R, R/W
SDR1
R/W
00002CH シリアルデータレジスタ 1
初期値
00000X00B
00000100B
UART
R, R/W
000025H 通信プリスケーラコントロールレジスタ
000028H シリアルデータレジスタ 0
リソース
通信プリスケーラ
(UART)
00--0000B
SIO1(ch.0)
00000010B
----0000B
XXXXXXXXB
通信プリスケーラ
SIO1(ch.0)
0---0000B
SIO2(ch.1)
00000010B
----0000B
XXXXXXXXB
通信プリスケーラ
SIO2(ch.1)
0---0000B
00002DH 通信プリスケーラコントロールレジスタ 1
SDCR1
00002EH リロードレジスタ L(ch.0)
00002FH リロードレジスタ H(ch.0)
PRLL0
R/W
XXXXXXXXB
PRLH0
R/W
XXXXXXXXB
000030H リロードレジスタ L(ch.1)
000031H リロードレジスタ H(ch.1)
PRLL1
R/W
PRLH1
R/W
PRLL2
R/W
PRLH2
R/W
XXXXXXXXB
PRLL3
R/W
XXXXXXXXB
PRLH3
R/W
XXXXXXXXB
0X000XX1B
000032H リロードレジスタ L(ch.2)
000033H リロードレジスタ H(ch.2)
000034H リロードレジスタ L(ch.3)
000035H リロードレジスタ H(ch.3)
R/W
XXXXXXXXB
8/16 ビット PPG
(ch.0 ~ ch.3)
XXXXXXXXB
XXXXXXXXB
000036H
~
000039H
予約領域
00003AH PPG0 動作モード制御レジスタ
00003BH PPG1 動作モード制御レジスタ
PPGC0
R/W
PPGC1
R/W
00003CH PPG2 動作モード制御レジスタ
00003DH PPG3 動作モード制御レジスタ
PPGC2
R/W
PPGC3
R/W
00003EH,
00003FH
000042H PPG2, PPG3 出力制御レジスタ
000043H
~
000045H
000047H
000048H
000049H
0X000001B
0X000XX1B
0X000001B
予約領域
000040H PPG0, PPG1 出力制御レジスタ
000041H
000046H
8/16 ビット PPG
(ch.0 ~ ch.3)
PPG01
R/W
8/16 ビット PPG
00000000B
予約領域
PPG23
R/W
8/16 ビット PPG
00000000B
予約領域
コントロールステータスレジスタ
データレジスタ
ADCS1
00000000B
R/W
ADCS2 W, R/W
ADCR1
R
ADCR2
W, R
A/D コンバータ
00000000B
XXXXXXXXB
00000XXXB
523
付録
表 B-1 I/O マップ (3 / 5)
アドレス
レジスタ
00004AH アウトプットコンペアレジスタ (ch.0) 下位
00004BH アウトプットコンペアレジスタ (ch.0) 上位
00004CH アウトプットコンペアレジスタ (ch.1) 下位
00004DH アウトプットコンペアレジスタ (ch.1) 上位
00004EH アウトプットコンペアレジスタ (ch.2) 下位
00004FH アウトプットコンペアレジスタ (ch.2) 上位
000050H アウトプットコンペアレジスタ (ch.3) 下位
000051H アウトプットコンペアレジスタ (ch.3) 上位
略称
アクセス
OCCP0
R/W
OCCP1
OCCP2
OCCP3
R/W
R/W
リソース
初期値
00000000B
16 ビット
入出力タイマ
アウトプット
コンペア
(ch.0 ~ ch.3)
00000000B
00000000B
00000000B
00000000B
00000000B
00000000B
R/W
00000000B
000052H
~
000055H
000056H アウトプットコンペアコントロールレジスタ
(ch.0, ch.1) 下位
000057H アウトプットコンペアコントロールレジスタ
(ch.0, ch.1) 上位
000058H アウトプットコンペアコントロールレジスタ
(ch.2, ch.3) 下位
000059H アウトプットコンペアコントロールレジスタ
(ch.2, ch.3) 上位
00005AH,
00005BH
00005CH インプットキャプチャデータレジスタ (ch.0) 下位
00005DH インプットキャプチャデータレジスタ (ch.0) 上位
00005EH インプットキャプチャデータレジスタ (ch.1) 下位
予約領域
R/W
R/W
OCS23
00006AH リロード / コンペアレジスタ (ch.0)
00006BH リロード / コンペアレジスタ (ch.1)
00006CH カウンタコントロールレジスタ (ch.0) 下位
00006DH カウンタコントロールレジスタ (ch.0) 上位
00006EH
00006FH ROM ミラー機能選択レジスタ
000070H カウンタコントロールレジスタ (ch.1) 下位
000071H カウンタコントロールレジスタ (ch.1) 上位
000072H カウンタステータスレジスタ (ch.0)
---00000B
0000--00B
---00000B
予約領域
IPCP0
000062H タイマカウンタデータレジスタ 下位
TCDT
000063H タイマカウンタデータレジスタ 上位
TCDT
000064H タイマカウンタコントロール ステータスレジスタ TCCS
000065H タイマカウンタコントロール ステータスレジスタ TCCS
000068H アップダウンカウントレジスタ (ch.0)
000069H アップダウンカウントレジスタ (ch.1)
16 ビット
入出力タイマ
アウトプット
コンペア
(ch.0 ~ ch.3)
R/W
IPCP1
00005FH インプットキャプチャデータレジスタ (ch.1) 上位
000060H インプットキャプチャコントロールステータス ICS01
レジスタ
000061H
予約領域
000066H コンペアクリアレジスタ下位
000067H コンペアクリアレジスタ上位
0000--00B
R/W
OCS01
R
R
R
R
R/W
16 ビット入出力
タイマ
インプット
キャプチャ
(ch.0, ch.1)
R/W
R/W
CPCLR
R/W
UDCR0
R
UDCR1
R
RCR0
W
RCR1
W
CCRL0 W, R/W
XXXXXXXXB
XXXXXXXXB
XXXXXXXXB
00000000B
00000000B
R/W
R/W
XXXXXXXXB
16 ビット入出力
タイマ
フリーランタイマ
00000000B
00000000B
0--00000B
XXXXXXXXB
XXXXXXXXB
00000000B
8/16 ビットアップ
ダウンカウンタ /
タイマ
00000000B
00000000B
00000000B
0X00X000B
00000000B
CCRH0
R/W
予約領域
ROMM
R/W
ROM ミラー機能
------01B
CCRL1
R/W
R/W
8/16 ビットアップ
ダウンカウンタ /
タイマ
0X00X000B
CCRH1
CSR0
R/W
CSR1
R, R/W
-0000000B
00000000B
000073H 予約領域
000074H カウンタステータスレジスタ (ch.1)
000075H
524
予約領域
8/16 ビット アップ
ダウンカウンタ /
タイマ
00000000B
付録 B I/O マップ
表 B-1 I/O マップ (4 / 5)
アドレス
000076H
000077H
000078H
000079H
00007AH
00007BH
00007CH
00007DH
レジスタ
略称
アクセス
PWC コントロール / ステータスレジスタ
PWCSR0 R, R/W
PWC データバッファレジスタ
PWCR0
R/W
PWC コントロール / ステータスレジスタ
PWCSR1 R, R/W
PWC データバッファレジスタ
PWCR1
R/W
リソース
初期値
00000000B
PWC タイマ
(ch.0)
0000000XB
00000000B
00000000B
00000000B
PWC タイマ
(ch.1)
0000000XB
00000000B
00000000B
00007EH
~
000081H
000082H 分周比制御レジスタ
000083H
000084H 分周比制御レジスタ
000085H
~
000087H
000088H バスステータスレジスタ
000089H バスコントロールレジスタ
予約領域
DIVR0
R/W
PWC (ch.0)
------00B
予約領域
DIVR1
R/W
PWC (ch.1)
------00B
予約領域
IBSR
R
IBCR
R/W
00000000B
00000000B
2C
00008AH クロックコントロールレジスタ
00008BH アドレスレジスタ
ICCR
R/W
IADR
R/W
-XXXXXXXB
00008CH データレジスタ
IDAR
R/W
XXXXXXXXB
00008DH,
00008EH
I
--0XXXXXB
予約領域
00008FH
~
00009BH
00009CH μDMAC ステータスレジスタ
00009DH μDMAC ステータスレジスタ
00009EH プログラムアドレス検出制御
ステータスレジスタ
00009FH 遅延割込み要因発生 / 解除レジスタ
0000A0H 低消費電力モード制御レジスタ
0000A1H クロック選択レジスタ
0000A2H,
0000A3H
0000A4H μDMAC ストップステータスレジスタ
禁止領域
DSRL
DSRH
R/W
μDMAC
00000000B
R/W
μDMAC
00000000B
LPMCR W, R/W
アドレス一致
検出機能
遅延割込発生
モジュール
低消費電力
00011000B
CKSCR R, R/W
低消費電力
11111100B
μDMAC
00000000B
PACSR
R/W
DIRR
R/W
00000000B
-------0B
予約領域
DSSR
R/W
0000A5H
~
0000A7H
予約領域
ウォッチドッグ
タイマ
タイムベース
タイマ
時計タイマ
0000A8H ウォッチドッグタイマ制御レジスタ
WDTC
R, W
0000A9H タイムベースタイマ制御レジスタ
TBTC
W, R/W
0000AAH 時計タイマ制御レジスタ
WTC
R, R/W
予約領域
DERL
R/W
μDMAC
00000000B
DERH
R/W
μDMAC
00000000B
FMCS
W, R/W
フラッシュメモリ I/F
000X0000B
0000ABH
0000ACH μDMAC イネーブルレジスタ
0000ADH μDMAC イネーブルレジスタ
0000AEH フラッシュメモリコントロールステータスレジスタ
XXXXX111B
1XX00100B
10001000B
525
付録
表 B-1 I/O マップ (5 / 5)
アドレス
0000AFH
レジスタ
0000B0H 割込み制御レジスタ 00
0000B1H 割込み制御レジスタ 01
略称
アクセス
リソース
禁止領域
ICR00 W,R/W
初期値
00000111B
ICR01
W,R/W
00000111B
0000B2H 割込み制御レジスタ 02
0000B3H 割込み制御レジスタ 03
ICR02
W,R/W
00000111B
ICR03
W,R/W
00000111B
0000B4H 割込み制御レジスタ 04
0000B5H 割込み制御レジスタ 05
ICR04
W,R/W
00000111B
ICR05
W,R/W
00000111B
0000B6H 割込み制御レジスタ 06
0000B7H 割込み制御レジスタ 07
ICR06
W,R/W
00000111B
ICR07
W,R/W
0000B8H 割込み制御レジスタ 08
0000B9H 割込み制御レジスタ 09
ICR08
W,R/W
ICR09
W,R/W
00000111B
0000BAH 割込み制御レジスタ 10
0000BBH 割込み制御レジスタ 11
ICR10
W,R/W
00000111B
ICR11
W,R/W
00000111B
0000BCH 割込み制御レジスタ 12
0000BDH 割込み制御レジスタ 13
0000BEH 割込み制御レジスタ 14
ICR12
W,R/W
00000111B
ICR13
W,R/W
00000111B
ICR14
W,R/W
00000111B
0000BFH 割込み制御レジスタ 15
0000C0H
ICR15
W,R/W
00000111B
~
0000C9H
0000CAH
0000CBH
00000111B
00000111B
予約領域
タイマ制御ステータスレジスタ
0000CCH 16 ビットタイマレジスタ /
0000CDH 16 ビットリロードレジスタ
0000CEH
0000CFH PLL 出力選択レジスタ
0000D0H
~
0000FFH
000100H
~ #H
001FF0H プログラムアドレス検出レジスタ 0 ( 下位 )
001FF1H プログラムアドレス検出レジスタ 0 ( 中位 )
TMCSR
R/W
TMR/
TMRLR
R/W
予約領域
PLLOS
001FF4H プログラムアドレス検出レジスタ 1 ( 中位 )
001FF5H プログラムアドレス検出レジスタ 1 ( 上位 )
( 注意事項 )
・アクセスについて
R/W: リード / ライト可能
R : リードオンリ
W : ライトオンリ
・初期値についての説明
0 : このビットの初期値は "0" です。
1 : このビットの初期値は "1" です。
X : このビットの初期値は不定です。
- : このビットは利用されていません。
00000000B
16 ビットリロード
タイマ
----0000B
XXXXXXXXB
W
低消費電力
------00B
PADR0
R/W
アドレス一致検出
機能
XXXXXXXXB
PADR1
R/W
アドレス一致検出
機能
XXXXXXXXB
外部領域
RAM 領域
001FF2H プログラムアドレス検出レジスタ 0 ( 上位 )
001FF3H プログラムアドレス検出レジスタ 1 ( 下位 )
526
割込みコントローラ
付録 C 割込み要因 , 割込みベクタおよび割込み制御レジスタ
付録 C
割込み要因 , 割込みベクタおよび割込み制御レジスタ
表 C-1 に , 割込み要因 , 割込みベクタおよび割込み制御レジスタの関係を示します。
■ 割込み要因 , 割込みベクタおよび割込み制御レジスタ
表 C-1 割込み要因 , 割込みベクタおよび割込み制御レジスタの関係 (1 / 2)
割込み要因
μDMAC
割込みベクタ
割込み制御レジスタ
チャネル
番号
番号
アドレス
ICR
アドレス
リセット
-
#08
FFFFDCH
-
-
INT9 命令
-
#09
FFFFD8H
-
-
例外処理
-
#10
FFFFD4H
-
-
INT 0
0
#11
FFFFD0H
×
ICR00
#12
FFFFCCH
0000B0H
INT 1
INT 2
×
#13
FFFFC8H
×
ICR01
#14
FFFFC4H
0000B1H
INT 3
INT 4
×
#15
FFFFC0H
×
ICR02
#16
FFFFBCH
0000B2H
INT 5
INT 6
×
#17
FFFFB8H
×
ICR03
#18
FFFFB4H
0000B3H
INT 7
PWC1
×
#19
FFFFB0H
ICR04
-
#20
FFFFACH
0000B4H
PWC0
1
#21
FFFFA8H
ICR05
PPG0/PPG1 カウンタボロー
#22
FFFFA4H
0000B5H
2
PPG2/PPG3 カウンタボロー
3
#23
FFFFA0H
ICR06
-
#24
FFFF9CH
0000B6H
8/16 ビット アップダウンカウンタ /
タイマ コンペア / アンダフロー /
オーバフロー / アップダウン反転
(ch.0, ch.1)
×
#25
FFFF98H
ICR07
0000B7H
インプットキャプチャ (ch.0) ロード
5
#26
FFFF94H
インプットキャプチャ (ch.1) ロード
6
#27
FFFF90H
ICR08
アウトプットコンペア (ch.0) 一致
#28
FFFF8CH
0000B8H
8
527
付録
表 C-1 割込み要因 , 割込みベクタおよび割込み制御レジスタの関係 (2 / 2)
割込み要因
μDMAC
割込みベクタ
割込み制御レジスタ
チャネル
番号
番号
アドレス
アウトプットコンペア (ch.1) 一致
9
#29
FFFF88H
アウトプットコンペア (ch.2) 一致
10
#30
FFFF84H
アウトプットコンペア (ch.3) 一致
×
#31
FFFF80H
-
-
#32
FFFF7CH
-
-
#33
FFFF78H
UART 送信完了
11
#34
FFFF74H
16 ビット フリーランタイマ
オーバフロー /
16 ビット リロードタイマ
アンダフロー
12
#35
FFFF70H
UART 受信完了
7
#36
FFFF6CH
SIO1
13
#37
FFFF68H
SIO2
14
#38
FFFF64H
I2C インタフェース
×
#39
FFFF60H
A/D コンバータ
15
#40
FFFF5CH
フラッシュメモリ書込み / 消去 ,
タイムベースタイマ / 時計タイマ *
×
#41
FFFF58H
遅延割込み発生モジュール
×
#42
ICR
アドレス
ICR09
0000B9H
ICR10
0000BAH
ICR11
0000BBH
ICR12
0000BCH
ICR13
0000BDH
ICR14
0000BEH
ICR15
0000BFH
FFFF54H
* : タイムベースタイマと時計タイマの動作中は , フラッシュメモリ書込み / 消去動作を行わない
でください。
× : 割込み要求は , 割込みクリア信号ではクリアできません。
<注意事項>
同一割込み信号に 2 つの割込み要因があった場合は , 両方の割込み要求フラグが DMA 割
込みクリア信号でクリアされたときのみ , リソースはクリアされます。したがって , 2 つ
の割込み機能のどちらかが DMA 機能を使用していた場合 , もう 1 つの割込み機能は使用
できません。該当リソースの割込み要求許可ビットを "0" にして , ソフトウェアポーリン
グ処理で対処してください。
528
付録 D 命令
付録 D
命令
F2MC-16LX に使用している命令について説明します。
D.1 命令の種類
D.2 アドレッシング
D.3 直接アドレッシング
D.4 間接アドレッシング
D.5 実行サイクル数
D.6 実効アドレスフィールド
D.7 命令一覧表の読み方
D.8 F2MC-16LX 命令一覧表
D.9 命令マップ
管理番号 : CM44-00202-1
529
付録
D.1
命令の種類
F2MC-16LX には , 以下に示す 351 種類の命令があります。
■ 命令の種類
• 転送系命令 ( バイト ) 41 命令
• 転送系命令 ( ワード , ロングワード ) 38 命令
• 加減算命令 ( バイト , ワード , ロングワード ) 42 命令
• 増減算命令 ( バイト , ワード , ロングワード ) 12 命令
• 比較命令 ( バイト , ワード , ロングワード ) 11 命令
• 符号なし乗除算命令 ( ワード , ロングワード ) 11 命令
• 符号付き乗除算命令 ( ワード , ロングワード ) 11 命令
• 論理演算命令 ( バイト , ワード ) 39 命令
• 論理演算命令 ( ロングワード ) 6 命令
• 符号反転命令 ( バイト , ワード ) 6 命令
• ノーマライズ命令 ( ロングワード ) 1 命令
• シフト命令 ( バイト , ワード , ロングワード ) 18 命令
• 分岐命令 50 命令 ( 分岐命令 1: 31 命令 , 分岐命令 2: 19 命令 )
• アキュムレータ操作命令 ( バイト , ワード ) 6 命令
• その他制御命令 ( バイト , ワード , ロングワード ) 28 命令
• ビット操作命令 21 命令
• ストリング命令 10 命令
530
付録 D 命令
D.2
アドレッシング
F2MC-16LX では , 命令の実効アドレスフィールドまたは命令コード自体 ( インプラ
イド ) でアドレス形式が決定されます。命令コード自体でアドレス形式が決定する
場合は , 使用する命令コードに合わせてアドレスを指定します。命令によっては , 数
種類のアドレス指定方式から設定できるものがあります。
■ アドレッシング
F2MC-16LX には , 以下に示す 23 種類のアドレッシングがあります。
• 即値 (#imm)
• レジスタ直接
• 直接分岐アドレス (addr16)
• 物理直接分岐アドレス (addr24)
• I/O 直接 (io)
• 短縮直接アドレス (dir)
• 直接アドレス (addr16)
• I/O 直接ビットアドレス (io: bp)
• 短縮直接ビットアドレス (dir: bp)
• 直接ビットアドレス (addr16: bp)
• ベクタアドレス (#vct)
• レジスタ間接 (@RWj j=0 ~ 3)
• ポストインクリメント付レジスタ間接 (@RWj+ j=0 ~ 3)
• ディスプレースメント付レジスタ間接 (@RWi+disp8 i=0 ~ 7, @RWj+disp16 j=0 ~ 3)
• ディスプレースメント付ロングレジスタ間接 (@RLi+disp8 i=0 ~ 3)
• ディスプレースメント付プログラムカウンタ間接 (@PC+disp16)
• ベースインデックス付レジスタ間接 (@RW0+RW7, @RW1+RW7)
• プログラムカウンタ相対分岐アドレス (rel)
• レジスタリスト (rlst)
• アキュムレータ間接 (@A)
• アキュムレータ間接分岐アドレス (@A)
• 間接指定分岐アドレス (@ear)
• 間接指定分岐アドレス (@eam)
531
付録
■ 実効アドレスフィールド
実効アドレスフィールドで指定される , アドレス形式を表 D.2-1 に示します。
表 D.2-1 実効アドレスフィールド
コード
表記
アドレス形式
00
R0
RW0
RL0
01
R1
RW1
(RL0)
02
R2
RW2
RL1
03
R3
RW3
(RL1)
04
R4
RW4
RL2
05
R5
RW5
(RL2)
06
R6
RW6
RL3
07
R7
RW7
(RL3)
08
@RW0
09
@RW1
レジスタ直接
ea は左から順に
バイト
ワード
ロングワード
の型に対応する。
デフォルトバンク
なし
DTB
DTB
レジスタ間接
532
0A
@RW2
ADB
0B
@RW3
SPB
0C
@RW0+
DTB
0D
@RW1+
0E
@RW2+
0F
@RW3+
SPB
10
@RW0+disp8
DTB
11
@RW1+disp8
DTB
12
@RW2+disp8
ADB
13
@RW3+disp8
14
@RW4+disp8
15
@RW5+disp8
DTB
16
@RW6+disp8
ADB
17
@RW7+disp8
SPB
18
@RW0+disp16
DTB
19
@RW1+disp16
1A
@RW2+disp16
IB
@RW3+disp16
1C
@RW0+RW7
インデックス付レジスタ間接
DTB
1D
@RW1+RW7
インデックス付レジスタ間接
DTB
1E
@PC+disp16
16 ビットディスプレースメント付 PC 間接
PCB
1F
addr16
直接アドレス
DTB
ポストインクリメント付
レジスタ間接
8 ビットディスプレースメント付
レジスタ間接
16 ビットディスプレースメント付
レジスタ間接
DTB
ADB
SPB
DTB
DTB
ADB
SPB
付録 D 命令
D.3
直接アドレッシング
直接アドレッシングでは , オペランド値 , レジスタおよびアドレスを直接指定しま
す。
■ 直接アドレッシング
● 即値 (#imm)
オペランドの値を直接指定します。(#imm4/#imm8/#imm16/#imm32) 。
図 D.3-1 に例を示します。
図 D.3-1 即値 (#imm) 例
MOVW A, #01212H (A にオペランドの値を格納する命令 )
実行前
A 2233
4455
実行後
A 4455
1 2 1 2 ( 命令によっては AL → AH に転送が行われる )
● レジスタ直接
オペランドとして , 直接レジスタを指定します。指定できるレジスタを表 D.3-1 に示し
ます。
表 D.3-1 レジスタ直接
汎用レジスタ
専用レジスタ
*:
バイト
R0, R1, R2, R3, R4, R5, R6, R7
ワード
RW0, RW1, RW2, RW3, RW4, RW5, RW6, RW7
ロングワード
RL0, RL1, RL2, RL3
アキュムレータ
A, AL
ポインタ
SP *
バンク
PCB, DTB, USB, SSB, ADB
ページ
DPR
制御
PS, CCR, RP, ILM
SP は , コンディションコードレジスタ (CCR) 中の S フラグビットの値に応じてユーザス
タックポインタ (USP) またはシステムスタックポインタ (SSP) のどちらか一方が選択さ
れ , 使用されます。分岐系の命令ではプログラムカウンタ (PC) は命令のオペランドには
記述されることなく指定されます。
533
付録
図 D.3-2 に例を示します。
図 D.3-2 レジスタ直接例
MOV R0, A ( 汎用レジスタ R0 に A の下位 8 ビットを転送する命令 )
実行前
A 0716
2534
メモリ空間
R0
実行後
A 0716
2564
??
メモリ空間
R0
34
● 直接分岐アドレス (addr16)
分岐先のアドレスをディスプレースメントで直接指定します。ディスプレースメント
のデータ長は 16 ビットで , 論理空間内での分岐先を示します。無条件分岐命令 , サブ
ルーチンコール命令およびソフトウェア割込み命令に使用します。アドレスの bit23 ~
bit16 はプログラムカウンタバンクレジスタ (PCB) で指定されます。図 D.3-3 に例を示
します。
図 D.3-3 直接分岐アドレス (addr16) 例
JMP 3B20H ( バンク内で直接分岐アドレス指定で , 無条件分岐を行う命令 )
実行前
PC 3 C 2 0
メモリ空間
PCB 4 F
4F3B20H 次の命令
実行後
534
PC 3 B 2 0
PCB 4 F
4F3C20H
62
4F3C21H
20
4F3C22H
3B
JMP 3B20H
付録 D 命令
● 物理直接分岐アドレス (addr24)
分岐先のアドレスをディスプレースメントで直接指定します。ディスプレースメント
のデータ長は 24 ビットです。無条件分岐命令 , サブルーチンコール命令およびソフト
ウェア割込み命令に使用します。図 D.3-4 に例を示します。
図 D.3-4 物理直接分岐アドレス (addr24) 例
JMPP 333B20H ( 直接分岐アドレス 24 ビット指定で , 無条件分岐を行う命令 )
実行前
PC 3 C 2 0
メモリ空間
PCB 4 F
333B20H 次の命令
実行後
PC 3 B 2 0
PCB 3 3
4F3C20H
63
4F3C21H
20
4F3C22H
3B
4F3C23H
33
JMPP 333B20H
● I/O 直接 (io)
オペランドのメモリアドレスを 8 ビットのディスプレースメントで直接指定します。
データバンクレジスタ (DTB) , ダイレクトページレジスタ (DPR) の値にかかわらず ,
物理アドレス "000000H" ~ "0000FFH" の空間の I/O 空間がアクセスされます。I/O 直接
アドレス指定を使用した命令の前にバンク指定用のバンクセレクトプリフィックスを
記述しても無効です。図 D.3-5 に例を示します。
図 D.3-5 I/O 直接 (io) 例
MOVW A, i : 0C0H (I/O 直接で読出しを行い , A に格納する命令 )
実行前
実行後
A 0716
2534
メモリ空間
0000C0H
EE
0000C1H
FF
A 2534 FFEE
535
付録
● 短縮直接アドレス (dir)
オペランドでメモリアドレスの下位 8 ビットを直接指定します。アドレスの bit15 ~
bit8 はダイレクトページレジスタ (DPR) により指定されます。アドレスの bit23 ~ bit16
はデータバンクレジスタ (DTB) により指定されます。図 D.3-6 に例を示します。
図 D.3-6 短縮直接アドレス (dir) 例
MOV S : 20H, A (A の下位 8 ビットの内容を短縮直接アドレス指定方式で書き込む命令 )
実行前
A 4455
DPR 6 6
実行後
DTB 7 7
A 4455
DPR 6 6
メモリ空間
1212
776620H
メモリ空間
1212
DTB 7 7
??
776620H
12
● 直接アドレス (addr16)
オペランドで , メモリアドレス下位 16 ビットを直接指定します。アドレスの bit23 ~
bit16 はデータバンクレジスタ (DTB) で指定されます。直接アドレスのアドレッシング
に対しては , アクセス空間指定用のプリフィックス命令は無効です。図 D.3-7 に例を示
します。
図 D.3-7 直接アドレス (addr16) 例
MOVW A, 3B20H ( 直接アドレスで読出しを行い , A に格納する命令 )
実行前
実行後
536
A 2020
A AABB
AABB
0123
DTB 5 5
DTB 5 5
メモリ空間
553B21H
01
553B20H
23
付録 D 命令
● I/O 直接ビットアドレス (io: bp)
物理アドレス "000000H" ~ "0000FFH" 内のビットを直接指定します。ビットの位置は
": bp" で表され , 数字の大きいほうが最上位ビット (MSB) , 小さい方が最下位ビット
(LSB) となります。図 D.3-8 に例を示します。
図 D.3-8 I/O 直接ビットアドレス (io: bp) 例
SETB i : 0C1H : 0 (I/O 直接ビットアドレス指定でセットビットを行う命令 )
メモリ空間
実行前
0000C1H
00
メモリ空間
実行後
0000C1H
01
● 短縮直接ビットアドレス (dir: bp)
オペランドでメモリアドレスの下位 8 ビットを直接指定します。アドレスの bit15 ~
bit8 はダイレクトページレジスタ (DPR) で指定されます。アドレスの bit23 ~ bit16 は
データバンクレジスタ (DTB) で指定されます。ビットの位置は ": bp" で表され , 数字の
大きい方が最上位ビット , 小さい方が最下位ビットとなります。図 D.3-9 に例を示しま
す。
図 D.3-9 短縮直接ビットアドレス (dir: bp) 例
SETB S : 10H : 0 ( 短縮直接ビットアドレス指定でセットビットを行う命令 )
メモリ空間
実行前
DTB 5 5
DPR 6 6
556610H
00
メモリ空間
実行後
DTB 5 5
DPR 6 6
556610H
01
537
付録
● 直接ビットアドレス (addr16: bp)
64K バイト内の任意のビットに対し直接指定します。アドレスの bit23 ~ bit16 はデー
タバンクレジスタ (DTB) で指定されます。ビットの位置は ": bp" で表され , 数字の大き
い方が最上位ビット , 小さい方が最下位ビットとなります。図 D.3-10 に例を示します。
図 D.3-10 直接ビットアドレス (addr16: bp) 例
SETB 2222H : 0 ( 直接ビットアドレス指定でセットビットを行う命令 )
メモリ空間
実行前
DTB 5 5
00
552222H
メモリ空間
実行後
DTB 5 5
01
552222H
● ベクタアドレス (#vct)
分岐先のアドレスは指定されたベクタの内容となります。ベクタ番号のデータ長には
4 ビットと 8 ビットの 2 種類があります。サブルーチンコール命令 , ソフトウェア割込
み命令に使用します。図 D.3-11 に例を示します。
図 D.3-11 ベクタアドレス (#vct) 例
CALLV #15 ( オペランドで指定した割込みベクタが示すアドレスへ分岐する命令 )
実行前
PCB F F
実行後
FFC000H
EF
FFFFE0H
00
FFFFE1H
D0
PC D 0 0 0
PCB F F
538
メモリ空間
PC 0 0 0 0
CALLV #15
付録 D 命令
表 D.3-2 CALLV ベクタ一覧表
命令
ベクタアドレス L
ベクタアドレス H
CALLV #0
XXFFFEH
XXFFFFH
CALLV #1
XXFFFCH
XXFFFDH
CALLV #2
XXFFFAH
XXFFFBH
CALLV #3
XXFFF8H
XXFFF9H
CALLV #4
XXFFF6H
XXFFF7H
CALLV #5
XXFFF4H
XXFFF5H
CALLV #6
XXFFF2H
XXFFF3H
CALLV #7
XXFFF0H
XXFFF1H
CALLV #8
XXFFEEH
XXFFEFH
CALLV #9
XXFFECH
XXFFEDH
CALLV #10
XXFFEAH
XXFFEBH
CALLV #11
XXFFE8H
XXFFE9H
CALLV #12
XXFFE6H
XXFFE7H
CALLV #13
XXFFE4H
XXFFE5H
CALLV #14
XXFFE2H
XXFFE3H
CALLV #15
XXFFE0H
XXFFE1H
( 注意事項 ) XX には PCB レジスタの値が入ります。
<注意事項>
プログラムカウンタバンクレジスタ (PCB) が "FFH" の場合ベクタ領域は INT #vct8 (#0 ~
#7) のベクタ領域と共有しているため , 使用する場合は注意が必要です。( 表 D.3-2 を参照
してください )
539
付録
D.4
間接アドレッシング
間接アドレッシングでは , 記述したオペランドが示すアドレスのデータで , 間接的に
アドレスを指定します。
■ 間接アドレッシング
● レジスタ間接 (@RWj j=0 ~ 3)
汎用レジスタ RWj の内容をアドレスとしたメモリをアクセスするアドレッシングで
す。アドレスの bit23 ~ bit16 は , RW0, RW1 を用いた場合はデータバンクレジスタ
(DTB) で示され , RW3 の場合はシステムスタックバンクレジスタ (SSB) またはユーザ
スタックバンクレジスタ (USB) で示され , RW2 の場合はアディショナルデータバンク
レジスタ (ADB) で示されます。図 D.4-1 に例を示します。
図 D.4-1 レジスタ間接 (@RWj j=0 ~ 3) 例
MOVW A, @RW1 ( レジスタ間接で読出しを行い , A に格納する命令 )
実行前
A 0716
2534
メモリ空間
RW1 D 3 0 F
実行後
DTB 7 8
78D30FH
EE
78D310H
FF
A 2534 FFEE
RW1 D 3 0 F
DTB 7 8
● ポストインクリメント付レジスタ間接 (@RWj+ j=0 ~ 3)
汎用レジスタ RWj の内容をアドレスとしたメモリをアクセスするアドレッシングで
す。
オペランド操作後RWjはオペランドデータ長 (バイトの場合は1, ワードの場合は2,
ロングワードの場合は 4) 分だけ加算されます。アドレスの bit23 ~ bit16 は , RW0, RW1
を用いた場合はデータバンクレジスタ (DTB) で示され , RW3 の場合はシステムスタッ
クバンクレジスタ (SSB) またはユーザスタックバンクレジスタ (USB) で示され , RW2
の場合はアディショナルデータバンクレジスタ (ADB) で示されます。
ポストインクリメントした結果がインクリメント指定したレジスタ自身のアドレス
だった場合は , 参照される値はインクリメントした値となり , 命令が書込みだった場合
は命令による書込みが優先されるので , インクリメントするはずだったレジスタは書
込みデータとなります。
図 D.4-2 に例を示します。
540
付録 D 命令
図 D.4-2 ポストインクリメント付レジスタ間接 (@RWj+ j=0 ~ 3) 例
MOVW A, @RW1+ ( ポストインクリメント付レジスタ間接で読出しを行い , A に格納する命令 )
実行前
A 0716
2534
メモリ空間
RW1 D 3 0 F
実行後
DTB 7 8
78D30FH
EE
78D310H
FF
A 2534 FFEE
RW1 D 3 1 1
DTB 7 8
● ディスプレースメント付レジスタ間接
(@RWi+disp8 i=0 ~ 7, @RWj+disp16 j=0 ~ 3)
汎用レジスタ RWj の内容にディスプレースメントを加算したものをアドレスとしたメ
モリをアクセスするアドレッシングです。ディスプレースメントは , バイトとワードの
2 種類があり , 符号付数値として加算されます。アドレスの bit23 ~ bit16 は , RW0, RW1,
RW4, RW5 を用いた場合はデータバンクレジスタ (DTB) で示され , RW3, RW7 を用い
た場合はシステムスタックバンクレジスタ (SSB) またはユーザスタックバンクレジス
タ (USB) で示され , RW2, RW6 を用いた場合はアディショナルデータバンクレジスタ
(ADB) で示されます。図 D.4-3 に例を示します。
図 D.4-3 ディスプレースメント付レジスタ間接
(@RWi+disp8 i=0 ~ 7, @RWj+disp16 j=0 ~ 3) 例
MOVW A, @RW1+10H (ディスプレースメント付レジスタ間接で読出しを行い, Aに格納する命令)
実行前
A 0716
2534
メモリ空間
(+10H)
RW1 D 3 0 F
実行後
DTB 7 8
78D31FH
EE
78D320H
FF
A 2534 FFEE
RW1 D 3 0 F
DTB 7 8
541
付録
● ディスプレースメント付ロングレジスタ間接 (RLi+disp8 i=0 ~ 3)
汎用レジスタ RLi の内容にディスプレースメントを加算した結果の下位 24 ビットをア
ドレスとしたメモリをアクセスするアドレッシングです。ディスプレースメントは 8
ビットで符号付数値として加算されます。図 D.4-4 に例を示します。
図 D.4-4 ディスプレースメント付ロングレジスタ間接 (@RLi+disp8 i=0 ~ 3) 例
MOVW A, @RL2+25H (ディスプレースメント付ロングレジスタ間接で読出しを行い, Aに格納する命令)
実行前
A 0716
2534
メモリ空間
(+25H)
RL2 F 3 8 2
実行後
4B02
824B27H
EE
824B28H
FF
A 2534 FFEE
RL2 F 3 8 2
4B02
● ディスプレースメント付プログラムカウンタ間接 (@PC+disp16)
(命令のアドレス+4+disp16) で示されるアドレスのメモリをアクセスするアドレッシン
グです。ディスプレースメントはワード長です。アドレスの bit23 ~ bit16 はプログラ
ムカウンタバンクレジスタ (PCB) により指定されます。次に示す命令のオペランドア
ドレスは , ( 次の命令のアドレス +disp16) とは , みなしませんので注意してください。
• DBNZ eam, rel
• CBNE eam, #imm8, rel
• MOV eam, #imm8
• DWBNZ eam, rel
• CWBNE eam, #imm16, rel
• MOVW eam, #imm16
図 D.4-5 に例を示します。
図 D.4-5 ディスプレースメント付プログラムカウンタ間接 (@PC+disp16) 例
MOVW A, @PC+20H ( ディスプレースメント付 PC 間接で読出しを行い , A に格納する命令 )
実行前
A 0716
メモリ空間
2534
PCB C 5 PC 4 5 5 6
実行後
A 2534
FFEE
PCB C 5 PC 4 5 5 A
542
+4
C54556H
73
C54557H
9E
C54558H
20
C54559H
00
C5455AH
・
・
・
+20H
C5457AH
EE
C5457BH
FF
MOVW
A, @PC+20H
付録 D 命令
● ベースインデックス付レジスタ間接 (@RW0+RW7, @RW1+RW7)
汎用レジスタ RW7 の内容に , RW0 あるいは RW1 を加算したものをアドレスとしたメ
モリをアクセスするアドレッシングです。アドレスの bit23 ~ bit16 はデータバンクレ
ジスタ (DTB) で示されます。図 D.4-6 に例を示します。
図 D.4-6 ベースインデックス付レジスタ間接 (@RW0+RW7, @RW1+RW7) 例
MOVW A, @RW1+RW7 ( ベースインデックス付レジスタ間接で読出しを行い , A に格納する命令 )
実行前
A 0716
RW1 D 3 0 F
WR7 0 1 0 1
実行後
A 2534
RW1 D 3 0 F
メモリ空間
2534
+
DTB 7 8
78D410H
EE
78D411H
FF
FFEE
DTB 7 8
WR7 0 1 0 1
● プログラムカウンタ相対分岐アドレス (rel)
分岐先のアドレスはプログラムカウンタ (PC) の値と 8 ビットのディスプレースメント
を加算した値となります。加算の結果が 16 ビットを超えた場合は , バンクレジスタの
インクリメントまたはデクレメントをせずに , 超えた分は無視されますので , 64K バイ
トのバンク内で閉じたアドレスとなります。プログラムカウンタ相対分岐アドレスに
よるアドレッシングは , 無条件 / 条件分岐命令に使用します。アドレスの bit23 ~ bit16
はプログラムカウンタバンクレジスタ (PCB) で示されます。
図 D.4-7 に例を示します。
図 D.4-7 プログラムカウンタ相対分岐アドレス (rel) 例
BRA 10H ( 無条件相対分岐を行う命令 )
実行前
PC 3 C 2 0
メモリ空間
PCB 4 F
4F3C32H 次の命令
実行後
PC 3 C 2 0
PCB 4 F
4F3C21H
10
4F3C20H
60
BRA 10H
543
付録
● レジスタリスト (rlst)
スタックに対するプッシュ / ポップの対象となるレジスタを指定します。図 D.4-8 にレ
ジスタリストの構成 , 図 D.4-9 に例を示します。
図 D.4-8 レジスタリストの構成
MSB
LSB
RW7 RW6 RW5 RW4 RW3 RW2 RW1 RW0
対応ビットが "1" の場合に設定 , "0" の場合に非設定
MSB: 最上位ビット
LSB: 最下位ビット
図 D.4-9 レジスタリスト (rlst) 例
POPW, RW0, RW4 ( レジスタリストで示された複数のワードレジスタに , SP で示されるメモリの
データを転送する命令 )
SP 3 4 F A
SP 3 4 F E
RW0
×× ××
RW0
02 01
RW1
×× ××
RW1
×× ××
RW2
×× ××
RW2
×× ××
RW3
×× ××
RW3
×× ××
RW4
×× ××
RW4
04 03
RW5
×× ××
RW5
×× ××
RW6
×× ××
RW6
×× ××
RW7
×× ××
RW7
×× ××
メモリ空間
SP
01
メモリ空間
34FAH
01
34FAH
02
34FBH
02
34FBH
03
34FCH
03
34FCH
34FDH
04
04
34FEH
実行前
544
SP
34FDH
34FEH
実行後
付録 D 命令
● アキュムレータ間接 (@A)
アキュムレータの下位バイト (AL) の内容 (16 ビット ) で示されるアドレスのメモリを
アクセスするアドレス方式です。アドレスの bit23 ~ bit16 はデータバンクレジスタ
(DTB) によりニーモニックで指定されます。図 D.4-10 に例を示します。
図 D.4-10 アキュムレータ間接 (@A) 例
MOVW A, @A ( アキュムレータ間接で読出しを行い , A に格納する命令 )
実行前
A
0716
DTB B B
実行後
A
0716
メモリ空間
2534
BB2534H
EE
BB2535H
FF
FFEE
DTB B B
● アキュムレータ間接分岐アドレス (@A)
分岐先のアドレスは , アキュムレータの下位バイト (AL) の内容 (16 ビット ) となりま
す。バンク空間内での分岐先を示し , アドレスの bit23 ~ bit16 はプログラムカウンタ
バンクレジスタ (PCB) で指定されますが , JCTX (Jump Context) 命令の場合は , アド
レスの bit23 ~ bit16 はデータバンクレジスタ (DTB) で指定されます。アキュムレータ
間接分岐アドレスによるアドレッシングは , 無条件分岐命令に使用します。図 D.4-11
に例を示します。
図 D.4-11 アキュムレータ間接分岐アドレス (@A) 例
JMP @A ( アキュムレータ間接分岐アドレスで , 無条件分岐を行う命令 )
実行前
PC 3 C 2 0
A 6677
PCB 4 F
3B20
メモリ空間
4F3B20H 次の命令
4F3C20H
実行後
PC 3 B 2 0
A 6677
61
JMP @A
PCB 4 F
3B20
545
付録
● 間接指定分岐アドレス (@ear)
ear で示される番地のワードデータが分岐先アドレスとなります。図 D.4-12 に例を示
します。
図 D.4-12 間接指定分岐アドレス (@ear) 例
JMP @@RW0 ( レジスタ間接の間接で無条件分岐を行う命令 )
実行前
PC 3 C 2 0
PCB 4 F
RW0 7 F 4 8
DTB 2 1
メモリ空間
217F48H
20
217F49H
3B
4F3B20H 次の命令
実行後
PC 3 B 2 0
PCB 4 F
RW0 7 F 4 8
DTB 2 1
4F3C20H
73
4F3C21H
08
JMP @@RW0
● 間接指定分岐アドレス (@eam)
eam で示される番地のワードデータが分岐先アドレスとなります。図 D.4-13 に例を示
します。
図 D.4-13 間接指定分岐アドレス (@eam) 例
JMP @RW0 ( レジスタ間接で無条件分岐を行う命令 )
実行前
PC 3 C 2 0
PCB 4 F
RW0 3 B 2 0
実行後
PC 3 B 2 0
RW0 3 B 2 0
546
メモリ空間
4F3B20H 次の命令
PCB 4 F
4F3C20H
73
4F3C21H
00
JMP @RW0
付録 D 命令
D.5
実行サイクル数
命令の実行に要するサイクル数 ( 実行サイクル数 ) は , 各命令の「サイクル数」の値
と , 条件で決まる「補正値」の値およびプログラムフェッチの「サイクル数」の値
を加算することで得られます。
■ 実行サイクル数
内蔵 ROM などの 16 ビットバスに接続されたメモリ上のプログラムをフェッチする場
合には , 実行中の命令がワード境界を越えるごとにプログラムフェッチをするため ,
データのアクセスなどに干渉すると実行サイクル数が増大します。
外部データバスの 8 ビットバスに接続されたメモリ上のプログラムをフェッチする場
合は , 実行中の命令の 1 バイトごとにプログラムフェッチをするため , データのアクセ
スなどに干渉すると実行サイクル数が増大します。
CPU 間欠動作時は , 汎用レジスタ , 内蔵 ROM, 内蔵 RAM, 内蔵 I/O, 外部データバスの
アクセスをすると , 低消費電力モード制御レジスタの CG0, CG1 ビットで指定されるサ
イクル数分 CPU へ供給されるクロックが一時停止しますので , CPU 間欠動作の命令の
実行に要するサイクル数は , 通常の実行サイクル数に , 汎用レジスタ , 内蔵 ROM, 内蔵
RAM, 内蔵 I/O, 外部データバスの「アクセス回数」×一時停止の「サイクル数」の値
を「補正値」として加算してください。
■ 実行サイクル数計算方法
表 D.5-1 , 表 D.5-2 , 表 D.5-3 に命令実行サイクル数および補正値のデータを示します。
表 D.5-1 各種アドレッシングに対する実行サイクル数
(a) *
コード
00 ~ 07
オペランド
Ri
RWi
RLi
各種アドレッシングに対する
実行サイクル数
各種アドレッシングに
対するレジスタ
アクセス回数
命令一覧表に記載
命令一覧表に記載
08 ~ 0B
@RWj
2
1
0C ~ 0F
@RWj+
4
2
10 ~ 17
@RWi+disp8
2
1
18 ~ 1B
@RWi+disp16
2
1
1C
1D
1E
1F
@RW0+RW7
@RW1+RW7
@PC+disp16
addr16
4
4
2
1
2
2
0
0
*: (a) は「D.8 F2MC-16LX 命令一覧表」の~ ( サイクル数 ) , B ( 補正値 ) で使用さ
れています。" ~ " と "B" の意味については「D.7 命令一覧表の読み方」を参照
してください。
547
付録
表 D.5-2 実サイクル数算出用サイクル数の補正値
(b) バイト *1
オペランド
(c) ワード *1
(d) ロング *1
サイクル
数
アクセス
回数
サイクル
数
アクセス
回数
サイクル
数
アクセス
回数
内部レジスタ
+0
1
+0
1
+0
2
内部メモリ
偶数アドレス
+0
1
+0
1
+0
2
内部メモリ
奇数アドレス
+0
1
+2
2
+4
4
外部データバス *2
16 ビット偶数アドレス
+1
1
+1
1
+2
2
外部データバス *2
16 ビット奇数アドレス
+1
1
+4
2
+8
4
外部データバス *2
8 ビット
+1
1
+4
2
+8
4
*1: (b), (c), (d) は「D.8 F2MC-16LX 命令一覧表」の~ ( サイクル数 ) , B ( 補正値 ) で使用さ
れています。
*2: 外部データバスを使用した場合は , レディ入力および自動レディによりウェイトしたサ
イクル数も加算する必要があります。
表 D.5-3 プログラムフェッチサイクル数算出用サイクル数の補正値
命令
バイト境界
ワード境界
内部メモリ
-
+2
外部データバス 16 ビット
-
+3
外部データバス 8 ビット
+3
-
( 注意事項 ) ・ 外部データバスを使用した場合は , レディ入力および自動レディでウェイト
したサイクル数も加算する必要があります。
・ 実際にはすべてのプログラムフェッチで , 命令実行が遅くなるわけではない
ので , この補正値は最悪ケースを算出する場合に使用してください。
548
付録 D 命令
D.6
実効アドレスフィールド
表 D.6-1 に実効アドレスフィールドを示します。
■ 実効アドレスフィールド
表 D.6-1 実効アドレスフィールド (1 / 2)
コード
表記
アドレス形式
00
R0
RW0
RL0
01
R1
RW1
(RL0)
02
R2
RW2
RL1
03
R3
RW3
(RL1)
04
R4
RW4
RL2
05
R5
RW5
(RL2)
06
R6
RW6
RL3
07
R7
RW7
(RL3)
08
@RW0
09
@RW1
0A
@RW2
0B
@RW3
0C
@RW0+
0D
@RW1+
0E
@RW2+
0F
@RW3+
10
@RW0+disp8
11
@RW1+disp8
12
@RW2+disp8
13
@RW3+disp8
14
@RW4+disp8
15
@RW5+disp8
16
@RW6+disp8
17
@RW7+disp8
アドレス拡張部の
バイト数 *
レジスタ直接
ea は左から順に
バイト
ワード
ロングワード
の型に対応する。
-
レジスタ間接
0
ポストインクリメント付
レジスタ間接
0
8 ビットディスプレースメント付
レジスタ間接
1
549
付録
表 D.6-1 実効アドレスフィールド (1 / 2)
コード
*:
550
表記
18
@RW0+disp16
19
@RW1+disp16
1A
@RW2+disp16
IB
@RW3+disp16
1C
アドレス形式
アドレス拡張部の
バイト数 *
16 ビットディスプレースメント付
レジスタ間接
2
@RW0+RW7
インデックス付レジスタ間接
0
1D
@RW1+RW7
インデックス付レジスタ間接
0
1E
@PC+disp16
16 ビットディスプレースメント付 PC 間接
2
1F
addr16
直接アドレス
2
アドレス拡張部のバイト数は , 「D.8 F2MC-16LX 命令一覧表」の # ( バイト数 ) の "+" に当てはまります。
"#" の意味については「D.7 命令一覧表の読み方」を参照してください。
付録 D 命令
D.7
命令一覧表の読み方
「D.8 F2MC-16LX 命令一覧表」で使用している項目の説明を表 D.7-1 に , 記号の説
明を表 D.7-2 に示します。
■ 命令の表示記号の説明
表 D.7-1 命令一覧表の項目の説明
項目
ニーモニック
説明
英大文字 , 記号 : アセンブラ上もそのまま表記します。
英小文字 : アセンブラ上では , 書き替えて記述します。
英小文字の後の数 : 命令中のビット幅を示します。
#
バイト数を示します。
~
サイクル数を示します。
RG
命令実行時のレジスタアクセス回数を示します。
CPU 間欠動作時の補正値を算出するのに使用します。
B
オペレーション
LH
AH
命令実行時の実サイクル数の算出用補正値を示します。
命令実行時の実サイクルは~欄の数値を加算したものとなります。
命令の動作を示します。
アキュムレータの bit15 ~ bit8 に対する特殊動作を示します。
Z: 0 を転送する。
X: 符号を拡張して転送する。
- : 転送しない。
アキュムレータの上位 16 ビットに対する特殊動作を示します。
*: AL から AH へ転送する。
- : 転送しない。
Z: AH へ 00H を転送する。
X: AL の符号拡張で AH へ 00H または FFH を転送する。
I
I ( 割込み許可 ) , S ( スタック ) , T ( ステッキィビット ) ,
S
N ( ネガティブ ) , Z ( ゼロ ) , V ( オーバフロー ) , C ( キャリー )
T
の各フラグの状態を示します。
N
*: 命令の実行で変化する。
Z
- : 変化しない。
V
S: 命令の実行でセットされる。
C
R: 命令の実行でリセットされる。
RMW
リードモディファイライト命令 (1 命令でメモリなどからデータを読
み出し , メモリへ書き込む ) であるかどうか示します。
*: リードモディファイライト命令である。
- : リードモディファイライト命令ではない。
( 注意事項 )
読み書きで意味の異なるアドレスには使用できません。
551
付録
表 D.7-2 命令一覧表の記号の説明 (1 / 2)
表記
A
32 ビットアキュムレータ
命令により , 使用されるビット長が変わります。
バイト : AL の下位 8 ビット
ワード : AL の 16 ビット
ロング : AL: AH の 32 ビット
AH
A の上位 16 ビット
AL
A の下位 16 ビット
SP
スタックポインタ (USP or SSP)
PC
プログラムカウンタ
PCB
プログラムカウンタバンクレジスタ
DTB
データバンクレジスタ
ADB
アディショナルデータバンクレジスタ
SSB
システムスタックバンクレジスタ
USB
ユーザスタックバンクレジスタ
SPB
カレントスタックバンクレジスタ (SSB or USB)
DPR
ダイレクトページレジスタ
brg1
DTB, ADB, SSB, USB, DPR, PCB, SPB
brg2
DTB, ADB, SSB, USB, DPR, SPB
Ri
R0, R1, R2, R3, R4, R5, R6, R7
RWi
RW0, RW1, RW2, RW3, RW4, RW5, RW6, RW7
RWj
RW0, RW1, RW2, RW3
RLi
RL0, RL1, RL2, RL3
dir
短縮直接アドレス指定
addr16
直接アドレス指定
addr24
物理直接アドレス指定
ad24 0 ~ 15
addr24 の bit0 ~ bit15
ad24 16 ~ 23
addr24 の bit16 ~ bit23
io
I/O 領域 (000000H ~ 0000FFH)
#imm4
4 ビット即値データ
#imm8
8 ビット即値データ
#imm16
16 ビット即値データ
#imm32
32 ビット即値データ
ext (imm8)
552
意味
8 ビット即値データを符号拡張した 16 ビットデータ
付録 D 命令
表 D.7-2 命令一覧表の記号の説明 (1 / 2)
表記
意味
disp8
8 ビットディスプレースメント
disp16
16 ビットディスプレースメント
bp
ビットオフセット値
vct4
ベクタ番号 (0 ~ 15)
vct8
ベクタ番号 (0 ~ 255)
()b
ビットアドレス
rel
PC 相対分岐指定
ear
実効アドレス指定 ( コード 00 ~ 07)
eam
実効アドレス指定 ( コード 08 ~ 1F)
rlst
レジスタ並び
553
付録
D.8
F2MC-16LX 命令一覧表
F2MC-16LX で使用している命令の一覧を示します。
■ F2MC-16LX 命令一覧表
表 D.8-1 転送系命令 ( バイト ) 41 命令
#
~
RG
B
LH
AH
I
S
T
N
Z
V
C
MOV
ニーモニック
A,dir
2
3
0
(b)
byte (A) ← (dir)
オペレーション
Z
*
-
-
-
*
*
-
-
-
MOV
A,addr16
3
4
0
(b)
byte (A) ← (addr16)
Z
*
-
-
-
*
*
-
-
-
MOV
A,Ri
1
2
1
0
byte (A) ← (Ri)
Z
*
-
-
-
*
*
-
-
-
MOV
A,ear
2
2
1
0
byte (A) ← (ear)
Z
*
-
-
-
*
*
-
-
-
MOV
A,eam
2+
3 + (a)
0
(b)
byte (A) ← (eam)
Z
*
-
-
-
*
*
-
-
-
MOV
A,io
2
3
0
(b)
byte (A) ← (io)
Z
*
-
-
-
*
*
-
-
-
MOV
A,#imm8
2
2
0
0
byte (A) ← imm8
Z
*
-
-
-
*
*
-
-
-
MOV
A,@A
2
3
0
(b)
byte (A) ← ((A))
Z
-
-
-
-
*
*
-
-
-
MOV
A,@RLi+disp8
3
10
2
(b)
byte (A) ← ((RLi)+disp8)
Z
*
-
-
-
*
*
-
-
-
MOVN
A,#imm4
1
1
0
0
byte (A) ← imm4
Z
*
-
-
-
R
*
-
-
-
MOVX
A,dir
2
3
0
(b)
byte (A) ← (dir)
X
*
-
-
-
*
*
-
-
-
MOVX
A,addr16
3
4
0
(b)
byte (A) ← (addr16)
X
*
-
-
-
*
*
-
-
-
MOVX
A,Ri
2
2
1
0
byte (A) ← (Ri)
X
*
-
-
-
*
*
-
-
-
MOVX
A,ear
2
2
1
0
byte (A) ← (ear)
X
*
-
-
-
*
*
-
-
-
MOVX
A,eam
2+
3 + (a)
0
(b)
byte (A) ← (eam)
X
*
-
-
-
*
*
-
-
-
MOVX
A,io
2
3
0
(b)
byte (A) ← (io)
X
*
-
-
-
*
*
-
-
-
MOVX
A,#imm8
2
2
0
0
byte (A) ← imm8
X
*
-
-
-
*
*
-
-
-
MOVX
A,@A
2
3
0
(b)
byte (A) ← ((A))
X
-
-
-
-
*
*
-
-
-
MOVX
A,@RWi+disp8
2
5
1
(b)
byte (A) ← ((RWi)+disp8)
X
*
-
-
-
*
*
-
-
-
MOVX
A,@RLi+disp8
3
10
2
(b)
byte (A) ← ((RLi)+disp8)
X
*
-
-
-
*
*
-
-
-
MOV
dir,A
2
3
0
(b)
byte (dir) ← (A)
-
-
-
-
-
*
*
-
-
-
MOV
addr16,A
3
4
0
(b)
byte (addr16) ← (A)
-
-
-
-
-
*
*
-
-
-
MOV
Ri,A
1
2
1
0
byte (Ri) ← (A)
-
-
-
-
-
*
*
-
-
-
MOV
ear,A
2
2
1
0
byte (ear) ← (A)
-
-
-
-
-
*
*
-
-
-
MOV
eam,A
2+
3 + (a)
0
(b)
byte (eam) ← (A)
-
-
-
-
-
*
*
-
-
-
RMW
MOV
io,A
2
3
0
(b)
byte (io) ← (A)
-
-
-
-
-
*
*
-
-
-
MOV
@RLi+disp8,A
3
10
2
(b)
byte ((RLi)+disp8) ← (A)
-
-
-
-
-
*
*
-
-
-
MOV
Ri,ear
2
3
2
0
byte (Ri) ← (ear)
-
-
-
-
-
*
*
-
-
-
MOV
Ri,eam
2+
4 + (a)
1
(b)
byte (Ri) ← (eam)
-
-
-
-
-
*
*
-
-
-
MOV
ear,Ri
2
4
2
0
byte (ear) ← (Ri)
-
-
-
-
-
*
*
-
-
-
MOV
eam,Ri
2+
5 + (a)
1
(b)
byte (eam) ← (Ri)
-
-
-
-
-
*
*
-
-
-
MOV
Ri,#imm8
2
2
1
0
byte (Ri) ← imm8
-
-
-
-
-
*
*
-
-
-
MOV
io,#imm8
3
5
0
(b)
byte (io) ← imm8
-
-
-
-
-
-
-
-
-
-
MOV
dir,#imm8
3
5
0
(b)
byte (dir) ← imm8
-
-
-
-
-
-
-
-
-
-
MOV
ear,#imm8
3
2
1
0
byte (ear) ← imm8
-
-
-
-
-
*
*
-
-
-
MOV
eam,#imm8
3+
4 + (a)
0
(b)
byte (eam) ← imm8
-
-
-
-
-
-
-
-
-
-
MOV
@AL,AH
2
3
0
(b)
byte ((A)) ← (AH)
-
-
-
-
-
*
*
-
-
-
XCH
A,ear
2
4
2
0
byte (A) ←→ (ear)
Z
-
-
-
-
-
-
-
-
-
XCH
A,eam
2+
5 + (a)
0
2 × (b) byte (A) ←→ (eam)
Z
-
-
-
-
-
-
-
-
-
XCH
Ri,ear
2
7
4
byte (Ri) ←→ (ear)
-
-
-
-
-
-
-
-
-
-
XCH
Ri,eam
2+
9 + (a)
2
-
-
-
-
-
-
-
-
-
-
0
2 × (b) byte (Ri) ←→ (eam)
( 注意事項 ) 表中の (a), (b) は , 表 D.5-1 および表 D.5-2 を参照してください。
554
付録 D 命令
表 D.8-2 転送系命令 ( ワード・ロングワード ) 38 命令
ニーモニック
#
~
RG
B
オペレーション
LH
AH
I
S
T
N
Z
V
C
RMW
MOVW
A,dir
2
3
0
(c)
word (A) ← (dir)
-
*
-
-
-
*
*
-
-
-
MOVW
A,addr16
3
4
0
(c)
word (A) ← (addr16)
-
*
-
-
-
*
*
-
-
-
MOVW
A,SP
1
1
0
0
word (A) ← (SP)
-
*
-
-
-
*
*
-
-
-
MOVW
A,RWi
1
2
1
0
word (A) ← (RWi)
-
*
-
-
-
*
*
-
-
-
MOVW
A,ear
2
2
1
0
word (A) ← (ear)
-
*
-
-
-
*
*
-
-
-
MOVW
A,eam
2+
3 + (a)
0
(c)
word (A) ← (eam)
-
*
-
-
-
*
*
-
-
-
MOVW
A,io
2
3
0
(c)
word (A) ← (io)
-
*
-
-
-
*
*
-
-
-
MOVW
A,@A
2
3
0
(c)
word (A) ← ((A))
-
-
-
-
-
*
*
-
-
MOVW
A,#imm16
3
2
0
0
word (A) ← imm16
-
*
-
-
-
*
*
-
-
-
MOVW
A,@RWi+disp8
2
5
1
(c)
word (A) ← ((RWi)+disp8)
-
*
-
-
-
*
*
-
-
-
MOVW
A,@RLi+disp8
3
10
2
(c)
word (A) ← ((RLi)+disp8)
-
*
-
-
-
*
*
-
-
-
MOVW
dir,A
2
3
0
(c)
word (dir) ← (A)
-
-
-
-
-
*
*
-
-
-
MOVW
addr16,A
3
4
0
(c)
word (addr16) ← (A)
-
-
-
-
-
*
*
-
-
-
MOVW
SP,A
1
1
0
0
word (SP) ← (A)
-
-
-
-
-
*
*
-
-
-
MOVW
RWi,A
1
2
1
0
word (RWi) ← (A)
-
-
-
-
-
*
*
-
-
-
MOVW
ear,A
2
2
1
0
word (ear) ← (A)
-
-
-
-
-
*
*
-
-
-
MOVW
eam,A
2+
3 + (a)
0
(c)
word (eam) ← (A)
-
-
-
-
-
*
*
-
-
-
MOVW
io,A
2
3
0
(c)
word (io) ← (A)
-
-
-
-
-
*
*
-
-
-
MOVW
@RWi+disp8,A
2
5
1
(c)
word ((RWi)+disp8) ← (A)
-
-
-
-
-
*
*
-
-
-
MOVW
@RLi+disp8,A
3
10
2
(c)
word ((RLi)+disp8) ← (A)
-
-
-
-
-
*
*
-
-
-
MOVW
RWi,ear
2
3
2
0
word (RWi) ← (ear)
-
-
-
-
-
*
*
-
-
-
MOVW
RWi,eam
2+
4 + (a)
1
(c)
word (RWi) ← (eam)
-
-
-
-
-
*
*
-
-
-
MOVW
ear,RWi
2
4
2
0
word (ear) ← (RWi)
-
-
-
-
-
*
*
-
-
-
MOVW
eam,RWi
2+
5 + (a)
1
(c)
word (eam) ← (RWi)
-
-
-
-
-
*
*
-
-
-
MOVW
RWi,#imm16
3
2
1
0
word (RWi) ← imm16
-
-
-
-
-
*
*
-
-
MOVW
io,#imm16
4
5
0
(c)
word (io) ← imm16
-
-
-
-
-
-
-
-
-
-
MOVW
ear,#imm16
4
2
1
0
word (ear) ← imm16
-
-
-
-
-
*
*
-
-
-
MOVW
eam,#imm16
4+
4 + (a)
0
(c)
word (eam) ← imm16
-
-
-
-
-
-
-
-
-
-
MOVW
@AL,AH
2
3
0
(c)
word ((A)) ← (AH)
-
-
-
-
-
*
*
-
-
-
XCHW
A,ear
2
4
2
0
word (A) ←→ (ear)
-
-
-
-
-
-
-
-
-
-
XCHW
A,eam
2+
5 + (a)
0
2 × (c)
word (A) ←→ (eam)
-
-
-
-
-
-
-
-
-
-
XCHW
RWi, ear
2
7
4
0
word (RWi) ←→ (ear)
-
-
-
-
-
-
-
-
-
-
XCHW
RWi, eam
2+
9 + (a)
2
2 × (c)
word (RWi) ←→ (eam)
-
-
-
-
-
-
-
-
-
-
MOVL
A,ear
2
4
2
0
long (A) ← (ear)
-
-
-
-
-
*
*
-
-
-
MOVL
A,eam
2+
5 + (a)
0
(d)
long (A) ← (eam)
-
-
-
-
-
*
*
-
-
-
MOVL
A,#imm32
5
3
0
0
long (A) ← imm32
-
-
-
-
-
*
*
-
-
-
MOVL
ear,A
2
4
2
0
long (ear) ← (A)
-
-
-
-
-
*
*
-
-
-
MOVL
eam,A
2+
5 + (a)
0
(d)
long(eam) ← (A)
-
-
-
-
-
*
*
-
-
-
( 注意事項 ) 表中の (a), (c), (d) は , 表 D.5-1 および表 D.5-2 を参照してください。
555
付録
表 D.8-3 加減算命令 ( バイト・ワード・ロングワード ) 42 命令
ニーモニック
#
~
RG
B
オペレーション
LH
AH
I
S
T
N
Z
V
C RMW
ADD
A,#imm8
2
2
0
0
byte (A) ← (A) + imm8
Z
-
-
-
-
*
*
*
*
-
ADD
A,dir
2
5
0
(b)
byte (A) ← (A) + (dir)
Z
-
-
-
-
*
*
*
*
-
ADD
A,ear
2
3
1
0
byte (A) ← (A) + (ear)
Z
-
-
-
-
*
*
*
*
-
ADD
A,eam
2+
4 + (a)
0
(b)
byte (A) ← (A) + (eam)
Z
-
-
-
-
*
*
*
*
-
ADD
ear,A
2
3
2
0
byte (ear) ← (ear) + (A)
-
-
-
-
-
*
*
*
*
-
ADD
eam,A
2+
5 + (a)
0
2 × (b)
byte (eam) ← (eam) + (A)
Z
-
-
-
-
*
*
*
*
*
ADDC
A
1
2
0
0
byte (A) ← (AH) + (AL) + (C)
Z
-
-
-
-
*
*
*
*
-
ADDC
A,ear
2
3
1
0
byte (A) ← (A) + (ear)+ (C)
Z
-
-
-
-
*
*
*
*
-
ADDC
A,eam
2+
4 + (a)
0
(b)
byte (A) ← (A) + (eam)+ (C)
Z
-
-
-
-
*
*
*
*
-
ADDDC A
1
3
0
0
byte (A) ← (AH) + (AL) + (C) (10 進数 )
Z
-
-
-
-
*
*
*
*
-
SUB
A,#imm8
2
2
0
0
byte (A) ← (A) - imm8
Z
-
-
-
-
*
*
*
*
-
SUB
A,dir
2
5
0
(b)
byte (A) ← (A) - (dir)
Z
-
-
-
-
*
*
*
*
-
SUB
A,ear
2
3
1
0
byte (A) ← (A) - (ear)
Z
-
-
-
-
*
*
*
*
-
SUB
A,eam
2+
4 + (a)
0
(b)
byte (A) ← (A) - (eam)
Z
-
-
-
-
*
*
*
*
-
SUB
ear,A
2
3
2
0
byte (ear) ← (ear) - (A)
-
-
-
-
-
*
*
*
*
-
SUB
eam,A
2+
5 + (a)
0
2 × (b)
byte (eam) ← (eam) - (A)
-
-
-
-
-
*
*
*
*
*
SUBC
A
1
2
0
0
byte (A) ← (AH) - (AL) - (C)
Z
-
-
-
-
*
*
*
*
-
SUBC
A,ear
2
3
1
0
byte (A) ← (A) - (ear) - (C)
Z
-
-
-
-
*
*
*
*
-
SUBC
A,eam
2+
4 + (a)
0
(b)
byte (A) ← (A) - (eam) - (C)
Z
-
-
-
-
*
*
*
*
-
SUBDC
A
1
3
0
0
byte (A) ← (AH) - (AL) - (C) (10 進数 )
Z
-
-
-
-
*
*
*
*
-
ADDW
A
1
2
0
0
word (A) ← (AH) + (AL)
-
-
-
-
-
*
*
*
*
-
ADDW
A,ear
2
3
1
0
word (A) ← (A) + (ear)
-
-
-
-
-
*
*
*
*
-
ADDW
A,eam
2+
4+(a)
0
(c)
word (A) ← (A) + (eam)
-
-
-
-
-
*
*
*
*
-
ADDW
A,#imm16
3
2
0
0
word (A) ← (A) + imm16
-
-
-
-
-
*
*
*
*
-
word (ear) ← (ear) + (A)
-
-
-
-
-
*
*
*
*
-
word (eam) ← (eam) + (A)
-
-
-
-
-
*
*
*
*
*
ADDW
ear,A
2
3
2
0
ADDW
eam,A
2+
5+(a)
0
2 × (c)
ADDCW A,ear
2
3
1
0
word (A) ← (A) + (ear) + (C)
-
-
-
-
-
*
*
*
*
-
ADDCW A,eam
2+
4+(a)
0
(c)
word (A) ← (A) + (eam) + (C)
-
-
-
-
-
*
*
*
*
-
SUBW
A
1
2
0
0
word (A) ← (AH) - (AL)
-
-
-
-
-
*
*
*
*
-
SUBW
A,ear
2
3
1
0
word (A) ← (A) - (ear)
-
-
-
-
-
*
*
*
*
-
SUBW
A,eam
2+
4+(a)
0
(c)
word (A) ← (A) - (eam)
-
-
-
-
-
*
*
*
*
-
SUBW
A,#imm16
3
2
0
0
word (A) ← (A) - imm16
-
-
-
-
-
*
*
*
*
-
word (ear) ← (ear) - (A)
-
-
-
-
-
*
*
*
*
-
word (eam) ← (eam) - (A)
-
-
-
-
-
*
*
*
*
*
SUBW
ear,A
2
3
2
0
SUBW
eam,A
2+
5+(a)
0
2 × (c)
SUBCW A,ear
2
3
1
0
word (A) ← (A) - (ear) - (C)
-
-
-
-
-
*
*
*
*
-
SUBCW A,eam
2+
4+(a)
0
(c)
word (A) ← (A) - (eam) - (C)
-
-
-
-
-
*
*
*
*
-
ADDL
A,ear
2
6
2
0
long (A) ← (A) + (ear)
-
-
-
-
-
*
*
*
*
-
ADDL
A,eam
2+
7+(a)
0
(d)
long (A) ← (A) + (eam)
-
-
-
-
-
*
*
*
*
-
ADDL
A,#imm32
5
4
0
0
long (A) ← (A) + imm32
-
-
-
-
-
*
*
*
*
-
SUBL
A,ear
2
6
2
0
long (A) ← (A) - (ear)
-
-
-
-
-
*
*
*
*
-
SUBL
A,eam
2+
7+(a)
0
(d)
long (A) ← (A) - (eam)
-
-
-
-
-
*
*
*
*
-
SUBL
A,#imm32
5
4
0
0
long (A) ← (A) - imm32
-
-
-
-
-
*
*
*
*
-
( 注意事項 ) 表中の (a) ~ (d) は , 表 D.5-1 および表 D.5-2 を参照してください。
556
付録 D 命令
表 D.8-4 増減算命令 ( バイト・ワード・ロングワード ) 12 命令
ニーモニック
#
~
RG
B
INC
ear
2
3
2
0
INC
eam
2+
5+(a)
0
2 × (b)
DEC
ear
2
3
2
0
DEC
eam
2+
5+(a)
0
2 × (b)
INCW
ear
2
3
2
0
INCW
eam
2+
5+(a)
0
2 × (c)
DECW
ear
2
3
2
0
DECW
eam
2+
5+(a)
0
2 × (c)
INCL
ear
2
7
4
0
INCL
eam
2+
9+(a)
0
2 × (d)
DECL
ear
2
7
4
0
DECL
eam
2+
9+(a)
0
2 × (d)
オペレーション
LH
AH
I
S
T
N
Z
V
C RMW
byte (ear) <-- (ear) + 1
-
-
-
-
-
*
*
*
-
-
byte (eam) ← (eam) + 1
-
-
-
-
-
*
*
*
-
*
byte (ear) ← (ear) - 1
-
-
-
-
-
*
*
*
-
-
byte (eam) ← (eam) - 1
-
-
-
-
-
*
*
*
-
*
word (ear) ← (ear) + 1
-
-
-
-
-
*
*
*
-
-
word (eam) ← (eam) + 1
-
-
-
-
-
*
*
*
-
*
word (ear) ← (ear) - 1
-
-
-
-
-
*
*
*
-
-
word (eam) ← (eam) - 1
-
-
-
-
-
*
*
*
-
*
long (ear) ← (ear) + 1
-
-
-
-
-
*
*
*
-
-
long (eam) ← (eam) + 1
-
-
-
-
-
*
*
*
-
*
long (ear) ← (ear) - 1
-
-
-
-
-
*
*
*
-
-
long (eam) ← (eam) - 1
-
-
-
-
-
*
*
*
-
*
LH
AH
I
S
T
N
Z
V
C RMW
( 注意事項 ) 表中の (a) ~ (d) は , 表 D.5-1 および表 D.5-2 を参照してください。
表 D.8-5 比較命令 ( バイト・ワード・ロングワード ) 11 命令
ニーモニック
#
~
RG
B
オペレーション
CMP
A
1
1
0
0
byte (AH) - (AL)
-
-
-
-
-
*
*
*
*
-
CMP
A,ear
2
2
1
0
byte (A) - (ear)
-
-
-
-
-
*
*
*
*
-
CMP
A,eam
2+
3+(a)
0
(b)
byte (A) - (eam)
-
-
-
-
-
*
*
*
*
-
CMP
A,#imm8
2
2
0
0
byte (A) - imm8
-
-
-
-
-
*
*
*
*
-
CMPW
A
1
1
0
0
word (AH) - (AL)
-
-
-
-
-
*
*
*
*
-
CMPW
A,ear
2
2
1
0
word (A) - (ear)
-
-
-
-
-
*
*
*
*
-
CMPW
A,eam
2+
3+(a)
0
(c)
word (A) - (eam)
-
-
-
-
-
*
*
*
*
-
CMPW
A,#imm16
3
2
0
0
word (A) - imm16
-
-
-
-
-
*
*
*
*
-
CMPL
A,ear
2
6
2
0
long (A) - (ear)
-
-
-
-
-
*
*
*
*
-
CMPL
A,eam
2+
7+(a)
0
(d)
long (A) - (eam)
-
-
-
-
-
*
*
*
*
-
CMPL
A,#imm32
5
3
0
0
long (A) - imm32
-
-
-
-
-
*
*
*
*
-
( 注意事項 ) 表中の (a) ~ (d) は , 表 D.5-1 および表 D.5-2 を参照してください。
557
付録
表 D.8-6 符号なし乗除算命令 ( ワード・ロングワード ) 11 命令
ニーモニック
#
~
RG
B
DIVU
A
1
*1
0
0
DIVU
A,ear
2
*2
1
DIVU
A,eam
2+
*3
DIVUW
A,ear
2
DIVUW
A,eam
MULU
MULU
オペレーション
LH
AH
I
S
T
N
Z
V
C RMW
word (AH) / byte (AL)
商→ byte (AL) 余り→ byte (AH)
-
-
-
-
-
-
-
*
*
-
0
word (A) / byte (ear)
商→ byte (A) 余り→ byte (ear)
-
-
-
-
-
-
-
*
*
-
0
*6
word (A) / byte (eam)
商→ byte (A) 余り→ byte (eam)
-
-
-
-
-
-
-
*
*
-
*4
1
0
long (A) / word (ear)
商→ word (A) 余り→ word (ear)
-
-
-
-
-
-
-
*
*
-
2+
*5
0
*7
long (A) / word (eam)
商→ word (A) 余り→ word (eam)
-
-
-
-
-
-
-
*
*
-
A
1
*8
0
0
byte (AH) * byte (AL) → word (A)
-
-
-
-
-
-
-
-
-
-
A,ear
2
*9
1
0
byte (A) * byte (ear) → word (A)
-
-
-
-
-
-
-
-
-
-
MULU
A,eam
2+
*10
0
(b)
byte (A) * byte (eam) → word (A)
-
-
-
-
-
-
-
-
-
-
MULUW
A
1
*11
0
0
word (AH) * word (AL) → Long (A)
-
-
-
-
-
-
-
-
-
-
MULUW
A,ear
2
*12
1
0
word (A) * word (ear) → Long (A)
-
-
-
-
-
-
-
-
-
-
MULUW
A,eam
2+
*13
0
(c)
word (A) * word (eam) → Long (A)
-
-
-
-
-
-
-
-
-
-
*1:ゼロディバイトの場合 , 3 オーバフローの場合 , 7 正常の場合 , 15
*2:ゼロディバイトの場合 , 4 オーバフローの場合 , 8 正常の場合 , 16
*3:ゼロディバイトの場合 , 6+(a) オーバフローの場合 , 9+(a) 正常の場合 , 19+(a)
*4:ゼロディバイトの場合 , 4 オーバフローの場合 , 7 正常の場合 , 22
*5:ゼロディバイトの場合 , 6+(a) オーバフローの場合 , 8+(a) 正常の場合 , 26+(a)
*6:ゼロディバイト , またはオーバフローの場合 , (b) 正常の場合 , 2 × (b)
*7:ゼロディバイト , またはオーバフローの場合 , (c) 正常の場合 , 2 × (c)
*8:byte(AH) がゼロの場合 , 3 byte(AH) がゼロでない場合 , 7
*9:byte(ear) がゼロの場合 , 4 byte(ear) がゼロでない場合 , 8
*10:byte(eam) がゼロの場合 , 5+(a) byte(eam) がゼロでない場合 , 9+(a)
*11:word(AH) がゼロの場合 , 3 word(AH) がゼロでない場合 , 11
*12:word(ear) がゼロの場合 , 4 word(ear) がゼロでない場合 , 12
*13:word(eam) がゼロの場合 , 5+(a) word(eam) がゼロでない場合 , 13+(a)
( 注意事項 ) 表中の (a),(b),(c) は , 表 D.5-1 および表 D.5-2 を参照してください。
558
付録 D 命令
表 D.8-7 符号付き乗除算命令 ( ワード・ロングワード ) 11 命令
ニーモニック
#
~
RG
B
DIV
A
2
*1
0
0
DIV
A,ear
2
*2
1
DIV
A,eam
2+
*3
DIVW
A,ear
2
DIVW
A,eam
2+
MUL
A
2
*8
MUL
A,ear
2
*9
MUL
A,eam
2+
*10
MULW
A
2
*11
MULW
A,ear
2
MULW
A,eam
2+
オペレーション
LH
AH
I
S
T
N
Z
V
C RMW
word (AH) / byte (AL)
商 --> byte (AL) 余り→ byte (AH)
Z
-
-
-
-
-
-
*
*
-
0
word (A) / byte (ear)
商 --> byte (A) 余り→ byte (ear)
Z
-
-
-
-
-
-
*
*
-
0
*6
word (A) / byte (eam)
商→ byte (A) 余り→ byte (eam)
Z
-
-
-
-
-
-
*
*
-
*4
1
0
long (A) / word (ear)
商 --> word (A) 余り→ word (ear)
-
-
-
-
-
-
-
*
*
-
*5
0
*7
long (A) / word (eam)
商→ word (A) 余り→ word (eam)
-
-
-
-
-
-
-
*
*
-
0
0
byte (AH) * byte (AL) → word (A)
-
-
-
-
-
-
-
-
-
-
1
0
byte (A) * byte (ear) → word (A)
-
-
-
-
-
-
-
-
-
-
0
(b)
byte (A) * byte (eam) → word (A)
-
-
-
-
-
-
-
-
-
-
0
0
word (AH) * word (AL) → Long (A)
-
-
-
-
-
-
-
-
-
-
*12
1
0
word (A) * word (ear) → Long (A)
-
-
-
-
-
-
-
-
-
-
*13
0
(c)
word (A) * word (eam) → Long (A)
-
-
-
-
-
-
-
-
-
-
*1:ゼロディバイトの場合 , 3 オーバフローの場合 , 8 or 18 正常の場合 , 18
*2:ゼロディバイトの場合 , 4 オーバフローの場合 , 11 or 22 正常の場合 , 23
*3:ゼロディバイトの場合 , 5+(a) オーバフローの場合 12+(a) or 23+(a) 正常の場合 , 24+(a)
*4:被除数が正 : ゼロディバイトの場合 , 4 オーバフローの場合 , 12 or 30 正常の場合 , 31
被除数が負 : ゼロディバイトの場合 , 4 オーバフローの場合 , 12 or 31 正常の場合 , 32
*5:被除数が正 : ゼロディバイトの場合 , 5+(a) オーバフローの場合 , 12+(a) or 31+(a) 正常の場合 , 32+(a)
被除数が負 : ゼロディバイトの場合 , 5+(a) オーバフローの場合 , 13+(a) or 32+(a) 正常の場合 , 33+(a)
*6:ゼロディバイト , またはオーバフローの場合 , (b) 正常の場合 , 2 × (b)
*7:ゼロディバイト , またはオーバフローの場合 , (c) 正常の場合 , 2 × (c)
*8:byte(AH) がゼロの場合 , 3 結果が正の場合 , 12 結果が負の場合 , 13
*9:byte(ear) がゼロの場合 , 4 結果が正の場合 , 13 結果が負の場合 , 14
*10:byte(eam) がゼロの場合 , 5+(a) 結果が正の場合 , 14+(a) 結果が負の場合 , 15+(a)
*11:word(AH) がゼロの場合 , 3 結果が正の場合 , 16 結果が負の場合 , 19
*12:word(ear) がゼロの場合 , 4 結果が正の場合 , 17 結果が負の場合 , 20
*13:word(eam) がゼロの場合 , 5+(a) 結果が正の場合 , 18+(a) 結果が負の場合 , 21+(a)
( 注意事項 ) ・ DIV, DIVW 命令でオーバフロー発生時の実行サイクル数に 2 種類ありますが , 演算前と演算後に検出する場合が
あるためです。
DIV, DIVW 命令でオーバフロー発生時には , AL の内容は破壊されます。
・ 表中の (a),(b),(c) は , 表 D.5-1 および表 D.5-2 を参照してください。
559
付録
表 D.8-8 論理 1 命令 ( バイト・ワード ) 39 命令
ニーモニック
#
~
RG
B
オペレーション
LH
AH
I
S
T
N
Z
V
C RMW
AND
A,#imm8
2
2
0
0
byte (A) ← (A) and imm8
-
-
-
-
-
*
*
R
-
-
AND
A,ear
2
3
1
0
byte (A) ← (A) and (ear)
-
-
-
-
-
*
*
R
-
-
AND
A,eam
2+
4+(a)
0
(b)
byte (A) ← (A) and (eam)
-
-
-
-
-
*
*
R
-
-
AND
ear,A
2
3
2
0
byte (ear) ← (ear) and (A)
-
-
-
-
-
*
*
R
-
-
AND
eam,A
2+
5+(a)
0
2 × (b)
byte (eam) ← (eam) and (A)
-
-
-
-
-
*
*
R
-
*
OR
A,#imm8
2
2
0
0
byte (A) ← (A) or imm8
-
-
-
-
-
*
*
R
-
-
OR
A,ear
2
3
1
0
byte (A) ← (A) or (ear)
-
-
-
-
-
*
*
R
-
-
OR
A,eam
2+
4+(a)
0
(b)
byte (A) ← (A) or (eam)
-
-
-
-
-
*
*
R
-
-
OR
ear,A
2
3
2
0
byte (ear) ← (ear) or (A)
-
-
-
-
-
*
*
R
-
-
OR
eam,A
2+
5+(a)
0
2 × (b)
byte (eam) ← (eam) or (A)
-
-
-
-
-
*
*
R
-
*
XOR
A,#imm8
2
2
0
0
byte (A) ← (A) xor imm8
-
-
-
-
-
*
*
R
-
-
XOR
A,ear
2
3
1
0
byte (A) ← (A) xor (ear)
-
-
-
-
-
*
*
R
-
-
XOR
A,eam
2+
4+(a)
0
(b)
byte (A) ← (A) xor (eam)
-
-
-
-
-
*
*
R
-
-
XOR
ear,A
2
3
2
0
byte (ear) ← (ear) xor (A)
-
-
-
-
-
*
*
R
-
-
XOR
eam,A
2+
5+(a)
0
2 × (b)
byte (eam) ← (eam) xor (A)
-
-
-
-
-
*
*
R
-
*
NOT
A
1
2
0
0
byte (A) ← not (A)
-
-
-
-
-
*
*
R
-
-
NOT
ear
2
3
2
0
byte (ear) ← not (ear)
-
-
-
-
-
*
*
R
-
-
NOT
eam
2+
5+(a)
0
2 × (b)
byte (eam) ← not (eam)
-
-
-
-
-
*
*
R
-
*
ANDW
A
1
2
0
0
word (A) ← (AH) and (A)
-
-
-
-
-
*
*
R
-
-
ANDW
A,#imm16
3
2
0
0
word (A) ← (A) and imm16
-
-
-
-
-
*
*
R
-
-
ANDW
A,ear
2
3
1
0
word (A) ← (A) and (ear)
-
-
-
-
-
*
*
R
-
-
ANDW
A,eam
2+
4+(a)
0
(c)
word (A) ← (A) and (eam)
-
-
-
-
-
*
*
R
-
-
ANDW
ear,A
2
3
2
0
word (ear) ← (ear) and (A)
-
-
-
-
-
*
*
R
-
-
ANDW
eam,A
2+
5+(a)
0
2 × (c)
word (eam) ← (eam) and (A)
-
-
-
-
-
*
*
R
-
*
ORW
A
1
2
0
0
word (A) ← (AH) or (A)
-
-
-
-
-
*
*
R
-
-
ORW
A,#imm16
3
2
0
0
word (A) ← (A) or imm16
-
-
-
-
-
*
*
R
-
-
ORW
A,ear
2
3
1
0
word (A) ← (A) or (ear)
-
-
-
-
-
*
*
R
-
-
ORW
A,eam
2+
4+(a)
0
(c)
word (A) ← (A) or (eam)
-
-
-
-
-
*
*
R
-
-
word (ear) ← (ear) or (A)
-
-
-
-
-
*
*
R
-
-
word (eam) ← (eam) or (A)
-
-
-
-
-
*
*
R
-
*
ORW
ear,A
2
3
2
0
ORW
eam,A
2+
5+(a)
0
2 × (c)
XORW
A
1
2
0
0
word (A) ← (AH) xor (A)
-
-
-
-
-
*
*
R
-
-
XORW
A,#imm16
3
2
0
0
word (A) ← (A) xor imm16
-
-
-
-
-
*
*
R
-
-
XORW
A,ear
2
3
1
0
word (A) ← (A) xor (ear)
-
-
-
-
-
*
*
R
-
-
XORW
A,eam
2+
4+(a)
0
(c)
word (A) ← (A) xor (eam)
-
-
-
-
-
*
*
R
-
-
word (ear) ← (ear) xor (A)
-
-
-
-
-
*
*
R
-
-
word (eam) ← (eam) xor (A)
-
-
-
-
-
*
*
R
-
*
-
XORW
ear,A
2
3
2
0
XORW
eam,A
2+
5+(a)
0
2 × (c)
NOTW
A
1
2
0
0
word (A) ← not (A)
-
-
-
-
-
*
*
R
-
NOTW
ear
2
3
2
0
word (ear) ← not (ear)
-
-
-
-
-
*
*
R
-
-
NOTW
eam
2+
5+(a)
0
2 × (c)
word (eam) ← not (eam)
-
-
-
-
-
*
*
R
-
*
( 注意事項 ) 表中の (a), (b), (c) は , 表 D.5-1 および表 D.5-2 を参照してください。
560
付録 D 命令
表 D.8-9 論理 2 演算命令 ( ロングワード ) 6 命令
#
~
RG
B
ANDL
ニーモニック
A,ear
2
6
2
0
オペレーション
ANDL
A,eam
2+
7+(a)
0
(d)
ORL
A,ear
2
6
2
0
long (A) ← (A) or (ear)
-
-
-
-
-
*
*
R
-
-
ORL
A,eam
2+
7+(a)
0
(d)
long (A) ← (A) or (eam)
-
-
-
-
-
*
*
R
-
-
LH
AH
I
S
T
N
Z
V
C RMW
long (A) ← (A) and (ear)
-
-
-
-
-
*
*
R
-
-
long (A) ← (A) and (eam)
-
-
-
-
-
*
*
R
-
-
XORL
A,ear
2
6
2
0
long (A) ← (A) xor (ear)
-
-
-
-
-
*
*
R
-
-
XORL
A,eam
2+
7+(a)
0
(d)
long (A) ← (A) xor (eam)
-
-
-
-
-
*
*
R
-
-
LH
AH
I
S
T
N
Z
V
C RMW
( 注意事項 ) 表中の (a), (d) は , 表 D.5-1 および表 D.5-2 を参照してください。
表 D.8-10 符号反転命令 ( バイト・ワード ) 6 命令
ニーモニック
#
~
RG
B
オペレーション
1
2
0
0
byte (A) ← 0 - (A)
X
-
-
-
-
*
*
*
*
byte (ear) ← 0 - (ear)
-
-
-
-
-
*
*
*
*
-
-
-
-
-
*
*
*
*
*
-
NEG
A
-
NEG
ear
2
3
2
0
NEG
eam
2+
5+(a)
0
2 × (b)
byte (eam) ← 0 - (eam)
-
NEGW
A
1
2
0
0
word (A) ← 0 - (A)
-
-
-
-
-
*
*
*
*
NEGW
ear
2
3
2
0
word (ear) ← 0 - (ear)
-
-
-
-
-
*
*
*
*
-
NEGW
eam
2+
5+(a)
0
2 × (c)
word (eam) ← 0 - (eam)
-
-
-
-
-
*
*
*
*
*
( 注意事項 ) 表中の (a), (b), (c) は , 表 D.5-1 および表 D.5-2 を参照してください。
表 D.8-11 ノーマライズ命令 ( ロングワード ) 1 命令
ニーモニック
NRML
A,R0
#
~
RG
B
オペレーション
LH
AH
I
S
T
N
Z
V
C RMW
2
*1
1
0
long (A) ← 最初に "1" が立っていた所まで左
シフトする
byte (R0) ← その場合のシフト回数
-
-
-
-
-
-
*
-
-
-
*1:アキュムレータがすべて "0" であった場合は , 4 "0" 以外であった場合は , 6+(R0)
561
付録
表 D.8-12 シフト命令 ( バイト・ワード・ロングワード ) 18 命令
ニーモニック
#
~
RG
B
オペレーション
LH
AH
I
S
T
N
Z
V
C RMW
RORC
A
2
2
0
0
byte (A) ← 右ローテートキャリー付
-
-
-
-
-
*
*
-
*
-
ROLC
A
2
2
0
0
byte (A) ← 左ローテートキャリー付
-
-
-
-
-
*
*
-
*
-
RORC
ear
2
3
2
0
byte (ear) ← 右ローテートキャリー付
RORC
eam
2+
5+(a)
0
ROLC
ear
2
3
2
ROLC
eam
2+
5+(a)
0
ASR
A,R0
2
*1
1
LSR
A,R0
2
*1
1
LSL
A,R0
2
*1
ASRW
A
1
LSRW
A/SHRW A
LSLW
A/SHLW A
ASRW
A,R0
2
*1
LSRW
A,R0
2
*1
LSLW
A,R0
2
*1
ASRL
A,R0
2
*2
LSRL
A,R0
2
LSLL
A,R0
2
2 × (b) byte (eam) ← 右ローテートキャリー付
0
byte (ear) ← 左ローテートキャリー付
-
-
-
-
*
*
-
*
-
-
-
-
-
*
*
-
*
*
-
-
-
-
-
*
*
-
*
-
2 × (b) byte (eam) ← 左ローテートキャリー付
-
-
-
-
-
*
*
-
*
*
0
byte (A) ← 算術右バレルシフト (A,R0)
-
-
-
-
*
*
*
-
*
-
0
byte (A) ← ロジカル右バレルシフト (A,R0)
-
-
-
-
*
*
*
-
*
-
1
0
byte (A) ← ロジカル左バレルシフト (A,R0)
-
-
-
-
-
*
*
-
*
-
2
0
0
word (A) ← 算術右シフト (A,1 ビット )
-
-
-
-
*
*
*
-
*
-
1
2
0
0
word (A) ← ロジカル右シフト (A,1 ビット )
-
-
-
-
*
R
*
-
*
-
1
2
0
0
word (A) ← ロジカル左シフト (A,1 ビット )
-
-
-
-
-
*
*
-
*
-
1
0
word (A) ← 算術右バレルシフト (A,R0)
-
-
-
-
*
*
*
-
*
-
1
0
word (A) ← ロジカル右バレルシフト (A,R0)
-
-
-
-
*
*
*
-
*
-
1
0
word (A) ←ロジカル左バレルシフト (A,R0)
-
-
-
-
-
*
*
-
*
-
1
0
long (A) ← 算術右バレルシフト (A,R0)
-
-
-
-
*
*
*
-
*
-
*2
1
0
long (A) ← ロジカル右バレルシフト (A,R0)
-
-
-
-
*
*
*
-
*
-
*2
1
0
long (A) <-- ロジカル左バレルシフト (A,R0)
-
-
-
-
-
*
*
-
*
-
*1:R0 が "0" であった場合 , 6 "0" 以外であった場合は , 5+(R0)
*2:R0 が "0" であった場合 , 6 "0" 以外であった場合は , 6+(R0)
( 注意事項 ) 表中の (a),(b) は , 表 D.5-1 および表 D.5-2 を参照してください。
562
-
付録 D 命令
表 D.8-13 分岐命令 1 31 命令
ニーモニック
#
~
RG
B
オペレーション
LH
AH
I
S
T
N
Z
V
C RMW
BZ/BEQ
rel
2
*1
0
0
(Z) = 1 の場合分岐
-
-
-
-
-
-
-
-
-
-
BNZ/BNE
rel
2
*1
0
0
(Z) = 0 の場合分岐
-
-
-
-
-
-
-
-
-
-
BC/BLO
rel
2
*1
0
0
(C) = 1 の場合分岐
-
-
-
-
-
-
-
-
-
-
BNC/BHS
rel
2
*1
0
0
(C) = 0 の場合分岐
-
-
-
-
-
-
-
-
-
-
BN
rel
2
*1
0
0
(N) = 1 の場合分岐
-
-
-
-
-
-
-
-
-
-
BP
rel
2
*1
0
0
(N) = 0 の場合分岐
-
-
-
-
-
-
-
-
-
-
BV
rel
2
*1
0
0
(V) = 1 の場合分岐
-
-
-
-
-
-
-
-
-
-
BNV
rel
2
*1
0
0
(V) = 0 の場合分岐
-
-
-
-
-
-
-
-
-
-
BT
rel
2
*1
0
0
(T) = 1 の場合分岐
-
-
-
-
-
-
-
-
-
-
BNT
rel
2
*1
0
0
(T) = 0 の場合分岐
-
-
-
-
-
-
-
-
-
-
BLT
rel
2
*1
0
0
(V) xor (N) = 1 の場合分岐
-
-
-
-
-
-
-
-
-
-
BGE
rel
2
*1
0
0
(V) xor (N) = 0 の場合分岐
-
-
-
-
-
-
-
-
-
-
BLE
rel
2
*1
0
0
((V) xor (N)) or (Z) = 1 の場合分岐
-
-
-
-
-
-
-
-
-
-
BGT
rel
2
*1
0
0
((V) xor (N)) or (Z) = 0 の場合分岐
-
-
-
-
-
-
-
-
-
-
BLS
rel
2
*1
0
0
(C) or (Z) = 1 の場合分岐
-
-
-
-
-
-
-
-
-
-
BHI
rel
2
*1
0
0
(C) or (Z) = 0 の場合分岐
-
-
-
-
-
-
-
-
-
-
BRA
rel
2
*1
0
0
無条件分岐
-
-
-
-
-
-
-
-
-
-
JMP
@A
1
2
0
0
word (PC) ← (A)
-
-
-
-
-
-
-
-
-
-
JMP
addr16
3
3
0
0
word (PC) ← addr16
-
-
-
-
-
-
-
-
-
-
JMP
@ear
2
3
1
0
word (PC) ← (ear)
-
-
-
-
-
-
-
-
-
-
JMP
@eam
2+
4+(a)
0
(c)
word (PC) ← (eam)
-
-
-
-
-
-
-
-
-
-
5
2
0
word (PC) ← (ear), (PCB) ← (ear+2)
-
-
-
-
-
-
-
-
-
-
6+(a)
0
(d)
word (PC) ← (eam), (PCB) ← (eam+2)
-
-
-
-
-
-
-
-
-
-
JMPP
@ear
注 1)
2
JMPP
@eam
注 1)
2+
JMPP
addr24
4
4
0
0
CALL
@ear
注 2)
2
6
1
(c)
word (PC) ← ad24 0-15, (PCB) ← ad24 16-23
-
-
-
-
-
-
-
-
-
-
word (PC) ← (ear)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
2 × (c) word (PC) ← (eam)
CALL
@eam
注 2)
2+
7+(a)
0
CALL
addr16 注 3)
3
6
0
CALLV
#vct4
注 3)
1
7
0
2 × (c) ベクタコール命令
CALLP
2 × (c) word (PC) ← (ear)0-15, (PCB) ← (ear)16-23
@ear
注 4)
2
10
2
CALLP
@eam
注 4)
2+
11+(a)
0
CALLP
addr24 注 5)
4
10
0
(c)
*2
word (PC) ← addr16
word (PC) ← (eam)0-15, (PCB) ← (eam)16-23
2 × (c) word (PC) ← addr0-15, (PCB) ← addr16-23
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
*1:分岐が行われる場合 , 4 行われない場合 , 3
*2:3 × (c)+(b)
注 1) 分岐先アドレスの読込み (word)
注 2) W:スタックへの退避 (word), R:分岐先アドレスの読込み (word)
注 3) スタックへの退避 (word)
注 4) W:スタックへの退避 (long), R:分岐先アドレスの読込み (long)
注 5) スタックへの退避 (long)
( 注意事項 ) 表中の (a) ~ (d) は , 表 D.5-1 および表 D.5-2 を参照してください。
563
付録
表 D.8-14 分岐命令 2 19 命令
ニーモニック
#
~
RG
B
オペレーション
CBNE
A,#imm8,rel
3
*1
0
0
byte (A) ≠ imm8 で分岐
-
-
-
-
- * * * *
-
CWBNE
A,#imm16,rel
4
*1
0
0
word (A) ≠ imm16 で分岐
-
-
-
-
- * * * *
-
CBNE
ear,#imm8,rel
4
*2
1
0
byte (ear) ≠ imm8 で分岐
-
-
-
-
- * * * *
-
注 1)
4+
*3
0
(b)
byte (eam) ≠ imm8 で分岐
-
-
-
-
- * * * *
-
DBNZ
ear,rel
3
*5
2
DBNZ
eam,rel
3+
*6
2
DWBNZ
ear,rel
3
*5
2
DWBNZ
eam,rel
3+
*6
2
LH
AH
I S T N Z V C RMW
CBNE
eam,#imm8,rel
CWBNE
ear,#imm16,rel
5
*4
1
0
word (ear) ≠ imm16 で分岐
-
-
-
-
- * * * *
-
CWBNE
eam,#imm16,rel 注 1)
5+
*3
0
(c)
word (eam) ≠ imm16 で分岐
-
-
-
-
- * * * *
-
byte (ear) = (ear) - 1, (ear) ≠ 0 で分岐
-
-
-
-
- * * * -
-
-
-
-
-
- * * * -
*
0
2 × (b) byte (eam) = (eam) - 1, (eam) ≠ 0 で分岐
0
word (ear) = (ear) - 1, (ear) ≠ 0 で分岐
-
-
-
-
- * * * -
-
2 × (c) word (eam) = (eam) - 1, (eam) ≠ 0 で分岐
-
-
-
-
- * * * -
*
INT
#vct8
2
20
0
8 × (c) ソフトウェア割込み
-
-
R S -
-
-
-
-
-
INT
addr16
3
16
0
6 × (c) ソフトウェア割込み
-
-
R S -
-
-
-
-
-
INTP
addr24
4
17
0
6 × (c) ソフトウェア割込み
-
-
R S -
-
-
-
-
-
8 × (c) ソフトウェア割込み
-
-
R S -
-
-
-
-
-
-
* * * * * * *
-
INT9
1
20
0
RETI
1
*8
0
*7
割込みからの復帰
-
2
6
0
(c)
関数の入口で , 旧フレームポインタをスタッ
クに保存し , 新フレームポインタの設定 , お
よびローカルポインタの領域を確保する
-
-
-
-
-
-
-
-
-
-
1
5
0
(c)
関数の出口で , 旧フレームポインタをスタッ
クから復帰させる
-
-
-
-
-
-
-
-
-
-
LINK
#imm8
UNLINK
RET
注 2)
1
4
0
(c)
サブルーチンからの復帰
-
-
-
-
-
-
-
-
-
-
RETP
注 3)
1
6
0
(d)
サブルーチンからの復帰
-
-
-
-
-
-
-
-
-
-
*1:分岐が行われる場合 , 5 行われない場合 , 4
*2:分岐が行われる場合 , 13 行われない場合 , 12
*3:分岐が行われる場合 , 7+(a) 行われない場合 , 6+(a)
*4:分岐が行われる場合 , 8 行われない場合 , 7
*5:分岐が行われる場合 , 7 行われない場合 , 6
*6:分岐が行われる場合 , 8+(a) 行われない場合 , 7+(a) *7:次の割込み要求へ分岐する場合 , 3 × (b)+2 × (c) 今の割込みから復帰の場合 , 6 × (c)
*8:次の割込みへ分岐する場合 , 15 今の割込みから復帰する場合 , 17
注 1) CBNE / CWBNE 命令では , RWj+ のアドレッシングモードは , 使用しないでください。
注 2) スタックからの復帰 (word)
注 3) スタックからの復帰 (long)
( 注意事項 ) 表中の (a) ~ (d) は , 表 D.5-1 および表 D.5-2 を参照してください。
564
付録 D 命令
表 D.8-15 その他制御命令 ( バイト・ワード・ロングワード ) 28 命令
ニーモニック
#
~
RG
B
オペレーション
LH
AH
I
S
T
N
Z
V
C RMW
PUSHW
A
1
4
0
(c)
word (SP) ← (SP) - 2, ((SP)) ← (A)
-
-
-
-
-
-
-
-
-
-
PUSHW
AH
1
4
0
(c)
word (SP) ← (SP) - 2, ((SP)) ← (AH)
-
-
-
-
-
-
-
-
-
-
PUSHW
PS
1
4
0
(c)
word (SP) ← (SP) - 2, ((SP)) ← (PS)
-
-
-
-
-
-
-
-
-
-
PUSHW
rlst
2
*3
*5
*4
(SP) ← (SP) - 2n, ((SP)) ← (rlst)
-
-
-
-
-
-
-
-
-
-
POPW
A
1
3
0
(c)
word (A) ← ((SP)), (SP) ← (SP) + 2
-
*
-
-
-
-
-
-
-
-
POPW
AH
1
3
0
(c)
word (AH) ← ((SP)), (SP) ← (SP) + 2
-
-
-
-
-
-
-
-
-
-
POPW
PS
1
4
0
(c)
word (PS) ← ((SP)), (SP) ← (SP) + 2
-
-
*
*
*
*
*
*
*
-
POPW
rlst
2
*2
*5
*4
(rlst) ← ((SP)), (SP) ← (SP) + 2n
-
-
-
-
-
-
-
-
-
-
JCTX
@A
1
14
0
6 × (c)
コンテキストスイッチ命令
-
-
*
*
*
*
*
*
*
-
AND
CCR,#imm8
2
3
0
0
byte (CCR) ← (CCR) and imm8
-
-
*
*
*
*
*
*
*
-
OR
CCR,#imm8
2
3
0
0
byte (CCR) ← (CCR) or imm8
-
-
*
*
*
*
*
*
*
-
MOV
RP,#imm8
2
2
0
0
byte (RP) ← imm8
-
-
-
-
-
-
-
-
-
-
MOV
ILM,#imm8
2
2
0
0
byte (ILM) ← imm8
-
-
-
-
-
-
-
-
-
-
MOVEA
RWi,ear
2
3
1
0
word (RWi) ← ear
-
-
-
-
-
-
-
-
-
-
MOVEA
RWi,eam
2+
2+(a)
1
0
word (RWi) ← eam
-
-
-
-
-
-
-
-
-
-
MOVEA
A,ear
2
1
0
0
word (A) ← ear
-
*
-
-
-
-
-
-
-
-
MOVEA
A,eam
2+
1+(a)
0
0
word (A) ← eam
-
*
-
-
-
-
-
-
-
-
ADDSP
#imm8
2
3
0
0
word (SP) ← (SP) + ext(imm8)
-
-
-
-
-
-
-
-
-
-
ADDSP
#imm16
3
3
0
0
word (SP) ← (SP) + imm16
-
-
-
-
-
-
-
-
-
-
MOV
A,brg1
2
*1
0
0
byte (A) ← (brg1)
Z
*
-
-
-
*
*
-
-
-
MOV
brg2,A
2
1
0
0
byte (brg2) ← (A)
-
-
-
-
-
*
*
-
-
-
NOP
1
1
0
0
ノーオペレーション
-
-
-
-
-
-
-
-
-
-
ADB
1
1
0
0
AD 空間アクセス用プリフィックス
コード
-
-
-
-
-
-
-
-
-
-
DTB
1
1
0
0
DT 空間アクセス用プリフィックス
コード
-
-
-
-
-
-
-
-
-
-
PCB
1
1
0
0
PC 空間アクセス用プリフィックス
コード
-
-
-
-
-
-
-
-
-
-
SPB
1
1
0
0
SP 空間アクセス用プリフィックス
コード
-
-
-
-
-
-
-
-
-
-
NCC
1
1
0
0
フラグ無変化用プリフィックスコー
ド
-
-
-
-
-
-
-
-
-
-
CMR
1
1
0
0
コモンレジスタバンク用プリフィッ
クス
-
-
-
-
-
-
-
-
-
-
*1:PCB,ADB,SSB,USB・・・・・・1 ステート
DTB,DPR ・・・・・・・・・・2 ステート
*2:7+3 × (POP する回数 )+2 × (POP する最後のレジスタ番号 ), RLST=0( 転送レジスタ無し ) の場合 7
*3:29+3 × (PUSH する回数 )-3 × (PUSH する最後のレジスタ番号 ), RLST=0 ( 転送レジスタ無し ) の場合 8
*4:(POP する回数 ) × (c), または (PUSH する回数 ) × (c)
*5:(POP する回数 ), または (PUSH する回数 )
( 注意事項 ) 表中の (a),(c) は , 表 D.5-1 および表 D.5-2 を参照してください。
565
付録
表 D.8-16 ビット操作命令 21 命令
ニーモニック
#
~
RG
オペレーション
B
LH
AH
I
S
T
N
Z
V
C RMW
MOVB
A,dir:bp
3
5
0
(b)
byte (A) ← (dir:bp)b
Z
*
-
-
-
*
*
-
-
-
MOVB
A,addr16:bp
4
5
0
(b)
byte (A) ← (addr16:bp)b
Z
*
-
-
-
*
*
-
-
-
MOVB
A,io:bp
3
4
0
(b)
byte (A) ← (io:bp)b
Z
*
-
-
-
*
*
-
-
-
MOVB
dir:bp,A
3
7
0
2 × (b) bit (dir:bp)b ← (A)
-
-
-
-
-
*
*
-
-
*
MOVB
addr16:bp,A
4
7
0
2 × (b) bit (addr16:bp)b ← (A)
-
-
-
-
-
*
*
-
-
*
MOVB
io:bp,A
3
6
0
2 × (b) bit (io:bp)b ← (A)
-
-
-
-
-
*
*
-
-
*
SETB
dir:bp
3
7
0
2 × (b) bit (dir:bp)b ← 1
-
-
-
-
-
-
-
-
-
*
SETB
addr16:bp
4
7
0
2 × (b) bit (addr16:bp)b ← 1
-
-
-
-
-
-
-
-
-
*
SETB
io:bp
3
7
0
2 × (b) bit (io:bp)b ← 1
-
-
-
-
-
-
-
-
-
*
CLRB
dir:bp
3
7
0
2 × (b) bit (dir:bp)b ← 0
-
-
-
-
-
-
-
-
-
*
CLRB
addr16:bp
4
7
0
2 × (b) bit (addr16:bp)b ← 0
-
-
-
-
-
-
-
-
-
*
CLRB
io:bp
3
7
0
2 × (b) bit (io:bp)b ← 0
-
-
-
-
-
-
-
-
-
*
BBC
dir:bp,rel
4
*1
0
(b)
(dir:bp) b = 0 の場合分岐
-
-
-
-
-
-
*
-
-
-
BBC
addr16:bp,rel
5
*1
0
(b)
(addr16:bp) b = 0 の場合分岐
-
-
-
-
-
-
*
-
-
-
BBC
io:bp,rel
4
*2
0
(b)
(io:bp) b = 0 の場合分岐
-
-
-
-
-
-
*
-
-
-
BBS
dir:bp,rel
4
*1
0
(b)
(dir:bp) b = 1 の場合分岐
-
-
-
-
-
-
*
-
-
-
BBS
addr16:bp,rel
5
*1
0
(b)
(addr16:bp) b = 1 の場合分岐
-
-
-
-
-
-
*
-
-
-
BBS
io:bp,rel
4
*2
0
(b)
(io:bp) b = 1 の場合分岐
-
-
-
-
-
-
*
-
-
-
SBBS
addr16:bp,rel
5
*3
0
-
-
-
-
-
-
*
-
-
*
2 × (b) (addr16:bp) b = 1 で分岐 ,
bit (addr16:bp) b ← 1
WBTS
io:bp
3
*4
0
*5
(io:bp) b = 1 になるまで待つ
-
-
-
-
-
-
-
-
-
-
WBTC
io:bp
3
*4
0
*5
(io:bp) b = 0 になるまで待つ
-
-
-
-
-
-
-
-
-
-
LH
AH
I
S
T
N
Z
V
C RMW
*1:分岐が行われる場合 , 8 分岐が行われない場合 , 7
*2:分岐が行われる場合 , 7 分岐が行われない場合 , 6
*3:条件成立の場合 , 10 未成立の場合 , 9
*4:不定回数
*5:条件が成立するまで
( 注意事項 ) 表中の (b) は , 表 D.5-1 および表 D.5-2 を参照してください。
表 D.8-17 アキュムレータ操作命令 ( バイト・ワード ) 6 命令
ニーモニック
#
~
RG
B
オペレーション
SWAP
1
3
0
0
byte (A)0-7 ←→ (A)8-15
-
-
-
-
-
-
-
-
-
-
SWAPW
1
2
0
0
word (AH) ←→ (AL)
-
*
-
-
-
-
-
-
-
-
EXT
1
1
0
0
byte 符号拡張
X
-
-
-
-
*
*
-
-
-
EXTW
1
2
0
0
word 符号拡張
-
X
-
-
-
*
*
-
-
-
ZEXT
1
1
0
0
byte ゼロ拡張
Z
-
-
-
-
R
*
-
-
-
ZEXTW
1
1
0
0
word ゼロ拡張
-
Z
-
-
-
R
*
-
-
-
566
付録 D 命令
表 D.8-18 ストリング命令 10 命令
ニーモニック
#
~
RG
B
MOVS / MOVSI
2
*2
*5
*3
MOVSD
2
*2
*5
*3
SCEQ / SCEQI
2
*1
*8
SCEQD
2
*1
*8
FILS / FILSI
2
6m+6
MOVSW / MOVSWI
2
*2
MOVSWD
2
*2
*5
SCWEQ / SCWEQI
2
*1
SCWEQD
2
*1
FILSW / FILSWI
2
6m+6
オペレーション
LH
AH
I
S
T
N
Z
V
C RMW
byte 転送 @AH+ ← @AL+, カウンタ = RW0
-
-
-
-
-
-
-
-
-
-
byte 転送 @AH- ← @AL-, カウンタ = RW0
-
-
-
-
-
-
-
-
-
-
*4
byte 検索 @AH+ ← AL, カウンタ = RW0
-
-
-
-
-
*
*
*
*
-
*4
byte 検索 @AH- ← AL, カウンタ = RW0
-
-
-
-
-
*
*
*
*
-
*8
*3
byte 充填 @AH+ ← AL, カウンタ = RW0
-
-
-
-
-
*
*
-
-
-
*5
*6
word 転送 @AH+ ← @AL+, カウンタ = RW0
-
-
-
-
-
-
-
-
-
-
*6
word 転送 @AH- ← @AL-, カウンタ = RW0
-
-
-
-
-
-
-
-
-
-
*8
*7
word 検索 @AH+ - AL, カウンタ = RW0
-
-
-
-
-
*
*
*
*
-
*8
*7
word 検索 @AH- - AL, カウンタ = RW0
-
-
-
-
-
*
*
*
*
-
*8
*6
word 充填 @AH+ ← AL, カウンタ = RW0
-
-
-
-
-
*
*
-
-
-
*1:RW0 が "0" の場合 , 5 カウントアウトの場合 , 4+7 × (RW0) 一致した場合 , 7n+5
*2:RW0 が "0" の場合 , 5 "0" 以外の場合 , 4+8 × (RW0)
*3:(b) × (RW0)+(b) × (RW0) ソースとデスティネーションで異なる領域をアクセスする場合には , それぞれ別々に (b) の項目
を算出してください。
*4:(b)+n
*5:2 × (b) × (RW0)
*6:(c) × (RW0)+(c) × (RW0) ソースとデスティネーションで異なる領域をアクセスする場合には , それぞれ別々に (c) の項目
を算出してください。
*7:(c) × n
*8:(b) × (RW0)
( 注意事項 ) ・ m:RW0 値 ( カウンタ値 )
n:ループした回数
・ 表中の (b),(c) は , 表 D.5-1 および表 D.5-2 を参照してください。
567
付録
D.9
命令マップ
F2MC-16LX の命令コードは , 1 ~ 2 バイトで構成されていますので , 命令マップは
複数のページで構成されています。
F2MC-16LX の命令マップを示します。
■ 命令マップの構造
図 D.9-1 命令マップの構造
基本ページマップ
ビット操作系命令
文字列操作系命令
2 バイト系命令
:第 1 バイト
ea 系命令× 9
:第 2 バイト
1 バイトで終わる命令 (NOP 命令など ) は基本ページで完結し , 2 バイト必要とする命
令 (MOVS 命令など ) は第 1 バイトを参照した段階で第 2 バイト用のマップの存在がわ
かり , 第 2 バイト用のマップを参照して続く 1 バイトを調べることができます。
実際の命令コードと命令マップの対応を図 D.9-2 に示します。
568
付録 D 命令
図 D.9-2 実際の命令コードと命令マップの対応
命令によっては
ない場合もある
命令によって
長さが異なる
命令コード 第 1 バイト
第 2 バイト
オペランド
オペランド
・・・
[ 基本ページマップ ]
XY
+Z
[ 拡張ページマップ ]*
UV
+W
*:拡張ページマップとはビット操作系命令・文字列操作系命令・2 バイト系命令・ea 系
命令の総称で , 実際は各系列の命令ごとに複数存在します。
命令コードの例を表 D.9-1 に示します。
表 D.9-1 命令コードの例
第 1 バイト
( 基本ページマップより )
第 2 バイト
( 拡張ページマップより )
NOP
00 + 0=00
―
AND A, #8
30 + 4=34
―
MOV A, ADB
60 + F=6F
00 + 0=00
@RW2+d8, #8, rel
70 + 0=70
F0 + 2=F2
命令
569
570
A
SWAP
ADDSP
ADB
SPB
#8
C0
D0
E0
ea 系命令
その 2
#4
rel
BNT
BT
+F
+E
+D
+C
+B
LSRW
ASRW
LSLW
NEGW
A
A
A
A
XORW
ORW
ANDW
ANDW
PUSHW
POPW
A, #16
A
A
A
A
PUSHW
POPW
rlst
rlst
XORW
PUSHW
POPW
A, #16
PS
PS
rel
ビット操 MOV
ea, Ri
作系命令
rel
rel
BLS
文字列操 XCH
Ri, ea
作系命令
2 バイト XCHW
RWi, ea
系命令
BHI
rel
BGT
MOVW
ea, RWi
BLE
rel
BGE
MOVW
RWi, ea
CMPW
MOVL
MOVW
RETI
A, #16
A, #32 addr16, A
ORW
PUSHW
POPW
A
A, #16
AH
AH
A
A
ADDSP
MULUW
NOTW
#16
A
SWAPW
ZEXTW
EXTW
CMPL
CMPW
A, #32
BLT
rel
A
ADDW
MOVW
MOVW
INT
MOVW
MOVW
MOV A,
MOVW
ea 系命令 MOVW
A, #16
A, dir
A, io
#vct8
A, RWi
RWi, A RWi, #16 @RWi+d8 @RWi+d8,A
その 9
BNV
rel
SUBL
SUBW
A, #32
A
MOVW
MOVX
RET
A
SP, A A, addr16
A, #8
rel
rel
ea 系命令
その 8
A
NOT
XOR
BV
rel
MULU
A
MOVW
MOVW
RETP
A, SP
io, #16
ea 系命令
その 7
DIVU
A, #8
rel
OR
OR
CCR, #8
BP
A, #8
BC/BLO
BNZ/BNE
rel
BZ/BEQ
F0
MOV
MOV
CBNE A, CWBNE A, MOVW
MOVW
INTP
MOV
+A
RP, #8
ILM, #8
#8, rel
#16, rel
A, #16 A,addr16
addr24
Ri, ea
+9
UNLINK
B0
MOV
MOV
MOV
MOVX A, MOV
CALL
ea 系命令 MOV
A, Ri
Ri, A
Ri, #8
A, Ri @RWi+d8
A, #4
その 1
A0
BNC/BHS
rel
@A
rel
90
MOVX
MOV
JMPP
ea 系命令
A, #8 addr16, A
addr24
その 4
JMP
BRA
80
MOVX
MOVX
CALLP
ea 系命令
A, dir
A, io
addr24
その 6
A, #8
io, A
A, io
70
rel
CMP
MOV
MOV
60
rel
dir, A
A, dir
50
MOV
JMP
ea 系命令
A, addr16
addr16
その 3
MOV
MOV
MOV
40
BN
A
A
A, #8
A, #8
SUBC
SUB
ADD
30
AND
AND
MOV
MOV
CALL
ea 系命令
CCR, #8
A, #8
dir, #8
io, #8
addr16
その 5
CMP
A
A, dir
A, dir
ADDC
SUB
ADD
20
LINK
ADDL
ADDW
#imm8
A, #32
ZEXT
DTB
@A
EXT
JCTX
PCB
A
SUBDC
ADDDC
NEG
NCC
INT9
A
CMR
NOP
10
SUBW
MOVW
MOVW
INT
MOVEA
A, #16
dir, A
io, A
addr16
RWi, ea
+8
+7
+6
+5
+4
+3
+2
+1
+0
00
付録
表 D.9-2 基本ページマップ
+F
+E
+D
+C
+B
+A
+9
+8
+7
+6
+5
+4
+3
+2
+1
+0
10
MOVB
io:bp, A
20
30
CLRB
io:bp
40
50
SETB
io:bp
60
70
BBC
io;bp, rel
80
90
BBS
io:bp, rel
A0
B0
MOVB
MOVB A, MOVB
MOVB
CLRB
CLRB
SETB
SETB
BBC
BBC
BBS
BBS
A, dir:bp addr16:bp
dir:bp, A addr16:bp,A
dir:bp addr16:bp
dir:bp addr16:bp dir:bp, rel addr16:bp,rel dir:bp, rel addr16:bp,rel
MOVB
A, io:bp
00
WBTS
io:bp
C0
D0
WBTC
io:bp
E0
SBBS
addr16:bp
F0
付録 D 命令
表 D.9-3 ビット操作系命令マップ ( 第 1 バイト =6CH)
571
572
MOVSI
MOVSD
PCB, PCB
PCB, DTB
PCB, ADB
PCB, SPB
DTB, PCB
DTB, DTB
DTB, ADB
DTB, SPB
ADB, PCB
ADB, DTB
ADB, ADB
ADB, SPB
SPB, PCB
SPB, DTB
SPB, ADB
SPB, SPB
+1
+2
+3
+4
+5
+6
+7
+8
+9
+A
+B
+C
+D
+E
+F
10
+0
00
MOVSWI
20
MOVSWD
30
40
50
60
70
90
A0
B0
C0
SPB
ADB
DTB
SPB
ADB
DTB
SPB
ADB
DTB
SPB
ADB
DTB
SPB
ADB
DTB
SCEQI
SCEQD
SCWEQI SCWEQD FILSI
PCB
PCB
PCB
PCB
PCB
80
D0
FILSI
SPB
ADB
DTB
PCB
E0
F0
付録
表 D.9-4 文字列操作系命令マップ ( 第 1 バイト =6EH)
LSLW
LSLL
LSL
MOVW
MOVW
A, R0
A, R0
A, R0 @RL2+d8, A A, @RL2+d8
MOVW
MOVW
NRML
A, @A @AL, AH
A, R0
ASRW
ASRL
ASR
MOVW
MOVW
A, R0
A, R0
A, R0 @RL3+d8, A A, @RL3+d8
LSRW
LSRL
LSR
A, R0
A, R0
A, R0
+D
+E
+F
MOVW
MOVW
@RL1+d8, A A, @RL1+d8
MOVW
MOVW
@RL0+d8, A A, @RL0+d8
+C
+B
+A
+9
+8
A
MOV
MOV
MOVX
MOV
MOV
A, PCB
A, @A A, @RL3+d8 @RL3+d8, A A, @RL3+d8
+6
ROLC
MOV
MOV
A, @A @AL, AH
+5
A
MOV
MOV
MOVX
MOV
MOV
A, DPR
DPR, A A, @RL2+d8 @RL2+d8, A A, @RL2+d8
+4
ROLC
MOV
MOV
A, USB
USB, A
+3
+7
MOV
MOV
MOVX
MOV
MOV
A, SSB
SSB, A A, @RL1+d8 @RL1+d8, A A, @RL1+d8
+2
40
MOV
MOV
A, ADB
ADB, A
30
+1
20
MOV
MOV
MOVX
MOV
MOV
A, DTB
DTB, A A, @RL0+d8 @RL0+d8, A A, @RL0+d8
10
+0
00
50
60
DIVU
MULW
MUL
70
A
A
A
80
90
A0
B0
C0
D0
E0
F0
付録 D 命令
表 D.9-5 2 バイト系命令マップ ( 第 1 バイト =6FH)
573
574
@PC+d16, CMPL
CMPL A, ANDL
ANDL A, ORL
ORL A,
XORL
XORL A,
#16, rel A,@RW2+ @PC+d16 A,@RW2+ @PC+d16 A,@RW2+ @PC+d16 A,@RW2+ @PC+d16
使用禁止
使用禁止
+E A,@RW2+ @PC+d16 A,@RW2+ @PC+d16
ADDL
ADDL A, SUBL
SUBL A,
A,@RW3+
addr16 A,@RW3+
addr16
SUBL
SUBL
SUBL A,
SUBL A,
addr16, CMPL
CMPL A, ANDL
ANDL A, ORL
ORL A,
XORL
XORL A,
#16, rel A,@RW3+
addr16 A,@RW3+
addr16 A,@RW3+
addr16 A,@RW3+
addr16
@RW1+RW7 CMPL
CMPL A,
ANDL
ANDL A,
ORL
ORL A,
XORL
XORL A,
#16, rel A,@RW1+ @RW1+RW7 A,@RW1+ @RW1+RW7 A,@RW1+ @RW1+RW7 A,@RW1+ @RW1+RW7
使用禁止
+D A,@RW1+ @RW1+RW7 A,@RW1+ @RW1+RW7
+F
使用禁止
@RW0+RW7 CMPL
CMPL A,
ANDL
ANDL A,
ORL
ORL A,
XORL
XORL A,
#16, rel A,@RW0+ @RW0+RW7 A,@RW0+ @RW0+RW7 A,@RW0+ @RW0+RW7 A,@RW0+ @RW0+RW7
使用禁止
+C A,@RW0+ @RW0+RW7 A,@RW0+ @RW0+RW7
ADDL A,
@RW3, @RW3+d16 CMPL
CMPL A,
ANDL
ANDL A,
ORL
ORL A,
XORL
XORL A,
#16, rel
#16, rel A,@RW3 @RW3+d16 A,@RW3 @RW3+d16 A,@RW3 @RW3+d16 A,@RW3 @RW3+d16
ADDL
ADDL A,
SUBL
SUBL A,
A,@RW3 @RW3+d16 A,@RW3 @RW3+d16
+B
ADDL
使用禁止
@RW2, @RW2+d16 CMPL
CMPL A,
ANDL
ANDL A,
ORL
ORL A,
XORL
XORL A,
#16, rel
#16, rel A,@RW2 @RW2+d16 A,@RW2 @RW2+d16 A,@RW2 @RW2+d16 A,@RW2 @RW2+d16
ADDL
ADDL A,
SUBL
SUBL A,
A,@RW2 @RW2+d16 A,@RW2 @RW2+d16
+A
ADDL A,
@RW1, @RW1+d16 CMPL
CMPL A,
ANDL
ANDL A,
ORL
ORL A,
XORL
XORL A,
#16, rel
#16, rel A,@RW1 @RW1+d16 A,@RW1 @RW1+d16 A,@RW1 @RW1+d16 A,@RW1 @RW1+d16
ADDL
ADDL A,
SUBL
SUBL A,
A,@RW1 @RW1+d16 A,@RW1 @RW1+d16
+9
ADDL
@RW0+RW7
,#8, rel
使用禁止
@RW0, @RW0+d16 CMPL
CMPL A,
ANDL
ANDL A,
ORL
ORL A,
XORL
XORL A,
#16, rel
#16, rel A,@RW0 @RW0+d16 A,@RW0 @RW0+d16 A,@RW0 @RW0+d16 A,@RW0 @RW0+d16
ADDL
ADDL A,
SUBL
SUBL A,
A,@RW0 @RW0+d16 A,@RW0 @RW0+d16
+8
SUBL A,
RW7, @RW7+d8 CMPL
CMPL A, ANDL
ANDL A, ORL
ORL A,
XORL
XORL A,
#16, rel
#16, rel
A, RL3 @RW7+d8
A, RL3 @RW7+d8
A, RL3 @RW7+d8
A, RL3 @RW7+d8
ADDL
ADDL A, SUBL
SUBL A,
A, RL3 @RW7+d8
A, RL3 @RW7+d8
+7
SUBL
RW6, @RW6+d8 CMPL
CMPL A, ANDL
ANDL A, ORL
ORL A,
XORL
XORL A,
#16, rel
#16, rel
A, RL3 @RW6+d8
A, RL3 @RW6+d8
A, RL3 @RW6+d8
A, RL3 @RW6+d8
ADDL
ADDL A, SUBL
SUBL A,
A, RL3 @RW6+d8
A, RL3 @RW6+d8
+6
ADDL A,
RW5, @RW5+d8 CMPL
CMPL A, ANDL
ANDL A, ORL
ORL A,
XORL
XORL A,
#16, rel
#16, rel
A, RL2 @RW5+d8
A, RL2 @RW5+d8
A, RL2 @RW5+d8
A, RL2 @RW5+d8
ADDL
ADDL A, SUBL
SUBL A,
A, RL2 @RW5+d8
A, RL2 @RW5+d8
+5
ADDL
@RW3, @RW3+d16
#8, rel
,#8, rel
RW4, @RW4+d8 CMPL
CMPL A, ANDL
ANDL A, ORL
ORL A,
XORL
XORL A,
#16, rel
#16, rel
A, RL2 @RW4+d8
A, RL2 @RW4+d8
A, RL2 @RW4+d8
A, RL2 @RW4+d8
使用禁止
addr16,
,#8, rel
@PC+d16,
,#8, rel
@RW1+RW7
,#8, rel
@RW2, @RW2+d16
#8, rel
,#8, rel
@RW1, @RW1+d16
#8, rel
,#8, rel
@RW0, @RW0+d16
#8, rel
,#8, rel
R7, @RW7+d8,
#8, rel
#8, rel
R6, @RW6+d8,
#8, rel
#8, rel
R5, @RW5+d8,
#8, rel
#8, rel
R4, @RW4+d8,
#8, rel
#8, rel
R3, @RW3+d8,
#8, rel
#8, rel
R2, @RW2+d8,
#8, rel
#8, rel
R1, @RW1+d8,
#8, rel
#8, rel
ADDL
ADDL A, SUBL
SUBL A,
A, RL2 @RW4+d8
A, RL2 @RW4+d8
CBNE↓
F0
R0, @RW0+d8,
#8, rel
#8, rel
CBNE↓
E0
+4
D0
RW3, @RW3+d8 CMPL
CMPL A, ANDL
ANDL A, ORL
ORL A,
XORL
XORL A,
#16, rel
#16, rel
A, RL1 @RW3+d8
A, RL1 @RW3+d8
A, RL1 @RW3+d8
A, RL1 @RW3+d8
C0
ADDL
ADDL A, SUBL
SUBL A,
A, RL1 @RW3+d8
A, RL1 @RW3+d8
B0
+3
A0
RW2, @RW2+d8 CMPL
CMPL A, ANDL
ANDL A, ORL
ORL A,
XORL
XORL A,
#16, rel
#16, rel
A, RL1 @RW2+d8
A, RL1 @RW2+d8
A, RL1 @RW2+d8
A, RL1 @RW2+d8
90
ADDL
ADDL A, SUBL
SUBL A,
A, RL1 @RW2+d8
A, RL1 @RW2+d8
80
+2
70
RW1, @RW1+d8 CMPL
CMPL A, ANDL
ANDL A, ORL
ORL A,
XORL
XORL A,
#16, rel
#16, rel
A, RL0 @RW1+d8
A, RL0 @RW1+d8
A, RL0 @RW1+d8
A, RL0 @RW1+d8
CWBNE↓
CWBNE↓
60
ADDL
ADDL A, SUBL
SUBL A,
A, RL0 @RW1+d8
A, RL0 @RW1+d8
50
40
+1
30
+0
20
RW0, @RW0+d8 CMPL
CMPL A, ANDL
ANDL A, ORL
ORL A,
XORL
XORL A,
#16, rel
#16, rel
A, RL0 @RW0+d8
A, RL0 @RW0+d8
A, RL0 @RW0+d8
A, RL0 @RW0+d8
10
ADDL
ADDL A, SUBL
SUBL A,
A, RL0 @RW0+d8
A, RL0 @RW0+d8
00
付録
表 D.9-6 ea 系命令 その 1 ( 第 1 バイト =70H)
+F @@RW3+
JMPP
INCL
INCL
DECL
DECL
MOVL
MOVL A, MOVL
MOVL
MOV
MOV
MOVEA
MOVEA A,
@RW2+ @PC+d16
@RW2+ @PC+d16 A,@RW2+ @PC+d16 @RW2+,A @PC+d16, A @RW2+, #8 @PC+d16, #8 A,@RW2+ @PC+d16
CALLP
CALLP
JMPP
CALLP
CALLP
INCL
INCL
DECL
DECL
MOVL
MOVL A, MOVL
MOVL
MOV
MOV
MOVEA
MOVEA A,
@addr16 @@RW3+ @addr16 @RW3+
addr16 @RW3+
addr16 A,@RW3+
addr16 @RW3+,A
addr16, A @RW3+, #8
addr16, #8 A,@RW3+
addr16
JMPP
JMPP
CALLP @
+E @@RW2+ @@PC+d16 @@RW2+ @@PC+d16
CALLP
INCL
INCL
DECL
DECL
MOVL
MOVL A,
MOVL
MOVL
MOV
MOV
MOVEA
MOVEA A,
@RW1+ @RW1+RW7
@RW1+ @RW1+RW7 A,@RW1+ @RW1+RW7 @RW1+,A @RW1+RW7,A @RW1+, #8 @RW1+RW7,#8 A,@RW1+ @RW1+RW7
JMPP @
+D @@RW1+ @RW1+RW7 @@RW1+ @RW1+RW7
JMPP
INCL
INCL
DECL
DECL
MOVL
MOVL A,
MOVL
MOVL
MOV
MOV
MOVEA
MOVEA A,
@RW0+ @RW0+RW7
@RW0+ @RW0+RW7 A,@RW0+ @RW0+RW7 @RW0+,A @RW0+RW7,A @RW0+, #8 @RW0+RW7,#8 A,@RW0+ @RW0+RW7
CALLP @
JMPP
JMPP @
CALLP
CALLP @
INCL
INCL
DECL
DECL
MOVL
MOVL A,
MOVL
MOVL
MOV
MOV
MOVEA
MOVEA A,
@@RW3 @RW3+d16 @@RW3 @RW3+d16
@RW3 @RW3+d16
@RW3 @RW3+d16 A,@RW3 @RW3+d16 @RW3,A @RW3+d16,A @RW3, #8 @RW3+d16,#8
A,@RW3 @RW3+d16
+B
CALLP
JMPP
JMPP @
CALLP
CALLP @
INCL
INCL
DECL
DECL
MOVL
MOVL A,
MOVL
MOVL
MOV
MOV
MOVEA
MOVEA A,
@@RW2 @RW2+d16 @@RW2 @RW2+d16
@RW2 @RW2+d16
@RW2 @RW2+d16 A,@RW2 @RW2+d16 @RW2,A @RW2+d16,A @RW2, #8 @RW2+d16,#8
A,@RW2 @RW2+d16
+A
JMPP @
JMPP
JMPP @
CALLP
CALLP @
INCL
INCL
DECL
DECL
MOVL
MOVL A,
MOVL
MOVL
MOV
MOV
MOVEA
MOVEA A,
@@RW1 @RW1+d16 @@RW1 @RW1+d16
@RW1 @RW1+d16
@RW1 @RW1+d16 A,@RW1 @RW1+d16 @RW1,A @RW1+d16,A @RW1, #8 @RW1+d16,#8
A,@RW1 @RW1+d16
+9
JMPP
JMPP
JMPP @
CALLP
CALLP @
INCL
INCL
DECL
DECL
MOVL
MOVL A,
MOVL
MOVL
MOV
MOV
MOVEA
MOVEA A,
@@RW0 @RW0+d16 @@RW0 @RW0+d16
@RW0 @RW0+d16
@RW0 @RW0+d16 A,@RW0 @RW0+d16 @RW0,A @RW0+d16,A @RW0, #8 @RW0+d16,#8
A,@RW0 @RW0+d16
+8
+C @@RW0+ @RW0+RW7 @@RW0+ @RW0+RW7
JMPP
JMPP
CALLP
CALLP
INCL
INCL
DECL
DECL
MOVL
MOVL A, MOVL
MOVL
MOV
MOV
MOVEA
MOVEA A,
@RL3 @@RW7+d8
@RL3 @@RW7+d8
RL3 @RW7+d8
RL3 @RW7+d8
A, RL3 @RW7+d8
RL3, A @RW7+d8,A
R7, #8 @RW7+d8,#8
A, RW7 @RW7+d8
F0
+7
E0
JMPP
JMPP
CALLP
CALLP
INCL
INCL
DECL
DECL
MOVL
MOVL A, MOVL
MOVL
MOV
MOV
MOVEA
MOVEA A,
@RL3 @@RW6+d8
@RL3 @@RW6+d8
RL3 @RW6+d8
RL3 @RW6+d8
A, RL3 @RW6+d8
RL3, A @RW6+d8,A
R6, #8 @RW6+d8,#8
A, RW6 @RW6+d8
D0
+6
C0
JMPP
JMPP
CALLP
CALLP
INCL
INCL
DECL
DECL
MOVL
MOVL A, MOVL
MOVL
MOV
MOV
MOVEA
MOVEA A,
@RL2 @@RW5+d8
@RL2 @@RW5+d8
RL2 @RW5+d8
RL2 @RW5+d8
A, RL2 @RW5+d8
RL2, A @RW5+d8,A
R5, #8 @RW5+d8,#8
A, RW5 @RW5+d8
B0
+5
A0
JMPP
JMPP
CALLP
CALLP
INCL
INCL
DECL
DECL
MOVL
MOVL A, MOVL
MOVL
MOV
MOV
MOVEA
MOVEA A,
@RL2 @@RW4+d8
@RL2 @@RW4+d8
RL2 @RW4+d8
RL2 @RW4+d8
A, RL2 @RW4+d8
RL2, A @RW4+d8,A
R4, #8 @RW4+d8,#8
A, RW4 @RW4+d8
90
+4
80
JMPP
JMPP
CALLP
CALLP
INCL
INCL
DECL
DECL
MOVL
MOVL A, MOVL
MOVL
MOV
MOV
MOVEA
MOVEA A,
@RL1 @@RW3+d8
@RL1 @@RW3+d8
RL1 @RW3+d8
RL1 @RW3+d8
A, RL1 @RW3+d8
RL1, A @RW3+d8,A
R3, #8 @RW3+d8,#8
A, RW3 @RW3+d8
70
+3
60
JMPP
JMPP
CALLP
CALLP
INCL
INCL
DECL
DECL
MOVL
MOVL A, MOVL
MOVL
MOV
MOV
MOVEA
MOVEA A,
@RL1 @@RW2+d8
@RL1 @@RW2+d8
RL1 @RW2+d8
RL1 @RW2+d8
A, RL1 @RW2+d8
RL1, A @RW2+d8,A
R2, #8 @RW2+d8,#8
A, RW2 @RW2+d8
50
+2
40
JMPP
JMPP
CALLP