本ドキュメントはCypress (サイプレス) 製品に関する情報が記載されております。 AN706-00025-2v0-J FM3 Family 32-BIT MICROCONTROLLER MB9A100/MB9B100/MB9B300/MB9B400/MB9B500 series ベースタイマ PWC タイマ機能の設定/利用方法 TM ARM and Cortex-M3 are the trademarks of ARM Limited in the EU and other countries. AN706-00025-2v0-J 注意事項 本資料の記載内容は、予告なしに変更することがありますので、ご用命の際は営業部 門にご確認ください。 本資料に記載された動作概要や応用回路例は、半導体デバイスの標準的な動作や使い 方を示したもので、実際に使用する機器での動作を保証するものではありません。し たがいまして、これらを使用するにあたってはお客様の責任において機器の設計を行 ってください。これらの使用に起因する損害などについては、当社はその責任を負い ません。 本資料に記載された動作概要・回路図を含む技術情報は、当社もしくは第三者の特許 権、著作権等の知的財産権やその他の権利の使用権または実施権の許諾を意味するも のではありません。また、これらの使用について、第三者の知的財産権やその他の権 利の実施ができることの保証を行うものではありません。したがって、これらの使用 に起因する第三者の知的財産権やその他の権利の侵害について、当社はその責任を負 いません。 本資料に記載された製品は、通常の産業用、一般事務用、パーソナル用、家庭用など の一般的用途に使用されることを意図して設計・製造されています。極めて高度な安 全性が要求され、仮に当該安全性が確保されない場合、社会的に重大な影響を与えか つ直接生命・身体に対する重大な危険性を伴う用途(原子力施設における核反応制御、 航空機自動飛行制御、航空交通管制、大量輸送システムにおける運行制御、生命維持 のための医療機器、兵器システムにおけるミサイル発射制御をいう)、ならびに極め て高い信頼性が要求される用途(海底中継器、宇宙衛星をいう)に使用されるよう設 計・製造されたものではありません。したがって、これらの用途にご使用をお考えの お客様は、必ず事前に営業部門までご相談ください。ご相談なく使用されたことによ り発生した損害などについては、責任を負いかねますのでご了承ください。 半導体デバイスはある確率で故障が発生します。当社半導体デバイスが故障しても、 結果的に人身事故、火災事故、社会的な損害を生じさせないよう、お客様は、装置の 冗長設計、延焼対策設計、過電流防止対策設計、誤動作防止設計などの安全設計をお 願いします。 本資料に記載された製品を輸出または提供する場合は、外国為替及び外国貿易法およ び米国輸出管理関連法規等の規制をご確認の上、必要な手続きをおとりください。 本書に記載されている社名および製品名などの固有名詞は、各社の商標または登録商 標です。 Copyright© 2010-2011 FUJITSU SEMICONDUCTOR LIMITED all rights reserved 1 AN706-00025-2v0-J 改版履歴 版数 日付 内容 1.0 版 2010/11/4 新規作成 2.0 版 2011/1/20 MB9A100/MB9B100/MB9B300/MB9B400 Series に対応 2 AN706-00025-2v0-J 目次 注意事項 ...............................................................................................................................1 改版履歴 ...............................................................................................................................2 目次 ...................................................................................................................................... 3 1 はじめに ........................................................................................................................ 4 2 ベースタイマ ................................................................................................................. 5 3 4 2.1 割込み(NVIC).......................................................................................................... 5 2.2 割込み(IRQ31 一括読出しレジスタ)....................................................................... 7 2.3 レジスタ ................................................................................................................. 7 2.4 I/O ポート設定レジスタ ......................................................................................... 8 2.5 APB1 バスクロック................................................................................................ 8 設定例(サンプルプログラム) ......................................................................................... 9 3.1 サンプルプログラムについて................................................................................. 9 3.2 カウント開始からアップカウンタオーバーフローまでの時間計算........................ 9 3.3 設定手順例 ........................................................................................................... 10 使用上の注意事項........................................................................................................ 12 3 AN706-00025-2v0-J 1 はじめに ベースタイマは、タイマ制御レジスタのFMD2,1,0ビットの設定により、16ビットPWMタ イマ,16ビットPPGタイマ,16/32ビットリロードタイマ,16/32ビットPWCタイマの中か らタイマ機能を1つだけ選択できます。 ベースタイマのPWC機能の特徴を以下に示します。 16ビットのアップカウンタ,測定入力端子,制御レジスタで構成されます。 外部からのパルス入力で、任意イベント間の時間を測定します。 基準となるカウントクロックは、内部クロック8種類(1/4/16/128/256/512/1024/2048分周) から選択できます。 各種測定モード Hパルス幅(↑~↓)/Lパルス幅(↓~↑) 立上り周期(↑~↑)/立下り周期(↓~↓) エッジ間測定(↑または↓~↓または↑) 測定終了時に割込み要求を発生できます。 1回のみの測定か、連続測定かを選択できます。 このアプリケーションノートでは、ベースタイマのPWCタイマ機能の使用方法について説 明します。 ベースタイマをPWCタイマ機能で動作させパルス測定をおこなうサンプルプログラムにて 設定例を示します。 4 AN706-00025-2v0-J 2 ベースタイマ (※ベースタイマの特徴や動作、ブロックダイヤグラムについては”MB9Axxx/MB9Bxxx Series ペリフェラルマニュアルの CHAPTER14-2:ベースタイマ”をご参照ください) 2.1 割込み(NVIC) (※NVIC に関しては”Cortex-M3 テクニカルリファレンス マニュアルの 8 章ネスト型ベク タ割り込みコントローラ”をご参照ください) 表 2-1にNVIC に入力される例外と割込みの要因ベクタ表を示します。 表 2-1 例外と割込み要因 ベースタイマ ch.0~ch.7 ベースタイマの割込みベクタ ベクタ No. 47 IRQ No. 31 ベクタ Offset 0xBC (※すべての割込み内容と割込み番号については”MB9Axxx/MB9Bxxx Series ペリフェラル マニュアルの CHAPTER6:割込み.3.例外と割込み要因ベクタ”をご参照ください) CPU コアの例外を含むすべての割込みは NVIC で管理されます。 “Cortex-M3 テクニカルリファレンスマニュアル”では例外タイプ:IRQ をすべて外部割込み 入力と定義しています。 本書では、例外タイプ:IRQ を周辺割込みと表現します。周辺割込みには、外部端子による 割込み「外部割込み・NMI 制御部」と LSI 内部の周辺リソースからの割込みがあります。 NVIC 割り込みは、対応する割り込みイネーブルセットレジスタ、または割り込みイネーブ ルクリアレジスタのビットフィールドに書き込むことで、許可および禁止できます。この レジスタは、1 を書き込んで許可と 1 を書き込んでクリアのポリシーを使用しており、どち らのレジスタからも、対応する(32)割り込みの現在の許可状態が読み出されます。 割り込みイネーブルセットレジスタは、次の目的に使用します。 割り込みを許可する。 どの割り込みが現在許可されているのかを判別する。 レジスタの各ビットは、32 個の割り込みのうちの 1 つと対応します。 割り込みイネーブルセットレジスタにビットをセットすることで、対応する割り込みが許 可されます。保留中の割り込みのイネーブルビットがセットされると、プロセッサは優先 度に基づいて割り込みをアクティブにします。 イネーブルビットがクリアされている場合、割り込み信号をアサートすると、その割り込 みは保留されます。しかし、優先度にかかわらず、この割り込みをアクティブにすること はできません。 5 AN706-00025-2v0-J このため、禁止された割り込みは、ラッチされる汎用 I/O ビットとして使用することができ ます。また、割り込みを呼び出すことなくこのビットを読み込んでクリアできます。 ベースタイマの割込みを使用する場合、割り込みイネーブルセットレジスタのIRQ No.31 に相当するビットを 1 にします。表 2-2に割り込みイネーブルセットレジスタの設定を示 します。 表 2-2 割り込みイネーブルセットレジスタの設定 アドレス:0xE000E100=0b1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 値 1 X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X ※x は任意の値 アドレス:0xE000E104=0b0000000000000000XXXXXXXXXXXXXXXX bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 値 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 X X X X X X X X X X X X X X X X ※x は任意の値 ベクタ No.16 以降の周辺割込みの優先度は、割込み優先度レジスタで設定可能です。割り 込み優先度レジスタは各割込みに対して 4 ビットずつ割り振られています。 ベースタイマの割り込み優先度レジスタは IRQ No.31 なのでアドレス:0xE000E41F がベ ースタイマの割り込み優先度レジスタになります。リセット時は 0x00 になるので最も高い 優先度です。 また、ベクタ offset が 0xBC なので割込みアドレスは 0x000000BC に格納します。 6 AN706-00025-2v0-J 2.2 割込み(IRQ31 一括読出しレジスタ) (※IRQ31 一括読出しレジスタに関しては”MB9Axxx/MB9Bxxx Series ペリフェラルマニュ アルの CHAPTER6:割込み”をご参照ください) IRQ31 一括読出しレジスタによってベースタイマ割込みが含まれる割込みベクタNo.47 の 割込み要求を一括で読み出せます。これによりどのch.で割込み要求が発生したか確認でき ます。また、ベースタイマの機能ごとに割込み要因が異なります。表 2-3に 16/32 ビット PWCタイマのIRQごとの割込み要因を示します。 表 2-3 PWC タイマの IRQ ごとの割込み要因 割込み要因 IRQ0 割込み要因 IRQ1 オーバフロー検出 2.3 測定終了検出 レジスタ (※レジスタ設定の詳細については”MB9Axxx/MB9Bxxx Series ペリフェラルマニュアルの CHAPTER14-2”をご参照ください) 設定レジスタは各モードで異なります。表 2-4にPWCタイマ機能で設定するレジスタ郡を 示します。 表 2-4 レジスタ略称 PWC タイマ機能で使用するレジスタ一覧 レジスタ名 アドレス TMCR タイマ制御レジスタ ベースアドレス+0x00C TMCR2 タイマ制御レジスタ 2 ベースアドレス+0x011 STC ステータス制御レジスタ ベースアドレス+0x010 DTBF データバッファレジスタ ベースアドレス+0x004 7 AN706-00025-2v0-J ベースタイマは ch.0~ch.7 まであり、設定レジスタの配置は各チャネルのベースアドレス からのオフセットとなっています。 ベースタイマ ch.0 ベースアドレス : 0x40025000 ベースタイマ ch.1 ベースアドレス : 0x40025040 ベースタイマ ch.2 ベースアドレス : 0x40025080 ベースタイマ ch.3 ベースアドレス : 0x400250C0 ベースタイマ ch.4 ベースアドレス : 0x40025200 ベースタイマ ch.5 ベースアドレス : 0x40025240 ベースタイマ ch.6 ベースアドレス : 0x40025280 ベースタイマ ch.7 ベースアドレス : 0x400252C0 2.4 I/Oポート設定レジスタ (※I/O ポートの詳細については”MB9Axxx/MB9Bxxx Series ペリフェラルマニュアルの CHAPTER9:I/O ポート”をご参照ください) ベースタイマの端子出力は I/O ポートの機能のひとつであり、周辺機能の入力ポートとなり ます。ch.によって、その他の周辺機能の入出力ポート、GPIO、アナログ入力ポートと共用 となっています。また、 同一 ch.が複数の I/O ポートに割り振られています(リロケート機能)。 設定は EPFR レジスタでおこないます。EPFR レジスタの設定により、以下の決定ができ ます。 - ベースタイマの出力端子の使用/未使用、または入力端子の決定 - リロケートされた端子の決定 2.5 APB1 バスクロック (※APB1 バスクロックの詳細については”MB9Axxx/MB9Bxxx Series ペリフェラルマニュア ルの CHAPTER2-1:クロック”をご参照ください) ベースタイマのバスクロックは PCLK1 となっていて(“FM3 MB9B500 シリーズ データシ ートのブロックダイヤグラム”をご参照ください)、最大内部動作クロック周波数は 40MHz となっています。CPU/AHB バスクロックが 40MHz を越える設定をする場合は APB1 プリ スケーラレジスタ(APBC1_PSR)の設定で分周をしてください。 8 AN706-00025-2v0-J 3 設定例(サンプルプログラム) 3.1 サンプルプログラムについて ベースタイマの PWC タイマ機能を動作させるサンプルプログラムについて説明します。 以下に、本サンプルプログラムの設定条件を示します。 クロック設定条件: マスタクロックを PLL クロック 80MHz(X0,X1 に外部メインクロック 4MHz を入力 して逓倍)に設定 APB1 プリスケーラ 2 分周(APB1 バスクロック 40MHz) 上記の条件でベースタイマを以下のように設定します。 - ベースタイマ ch.0 使用 - タイマ機能:PWC 機能を選択 - タイマ選択ビット:16 ビットモード - モード選択:連続測定モード - 測定エッジ選択:H パルス幅測定 - ベースタイマ入力端子:TIOB0_0 端子で測定するよう設定 - カウントクロックの分周比:APB1 バスクロックの 4 分周 - 測定終了、オーバーフロー割込み許可 割込み処理内では、割込みフラグを確認し、測定終了または、オーバーフローかの検出を おこないます。 3.2 カウント開始からアップカウンタオーバーフローまでの時間計算 APB1 バスクロック 40MHz に対してカウントクロックの分周比は 4 分周なのでカウントク ロックの周波数は 10MHz。よって、1 クロックあたりの時間は 100ns となります。 0x0000~0xFFFF までのカウントになるので、100ns×65535=6553500ns=6553.6μs 経過 でカウンタオーバーフローが発生します。 9 AN706-00025-2v0-J 3.3 設定手順例 次の手順は、サンプルプログラムのベースタイマの設定方法を示しています。 ベースタイマ(PWC)設定 START APB1 バスクロック分周設定 マスタクロック PLL クロック設定 TIOB0_0 タイマ入力端子設定 (PFR4=0x0200, EPFR04=0x000000000) 動作モード選択、連続測定モードに設 定(TMCR:FMD2~0=0b100, MDSE=0b0) カウントクロック、測定エッジ設定 (TMCR:CKS2~0=0b001, EGS2~0=0B000, TMCR2:CKS3=0b0) 測定終了、オーバーフロー割込み許可 (STC:EDIE=0b1,OVIE=0b1) タイマ許可で測定開始 (TMCR:CTEN=0b1) NVIC ベースタイマ割込み許可 メインループ(サンプルでは空処理) 図 3-1 サンプルプログラムでの設定例 10 AN706-00025-2v0-J ベースタイマ割込み処理 START どちらも 0b0 ch.0 の割込みではない IRQ31MON の bit0 または bit1=0b1 か? いずれか 0b1 OVIE=0b0 割込み要因判断 STC:OVIR=0b1 か? OVIE=0b1 オーバーフロー 割込み発生 オーバーフロー割込みフラグクリア (STC:OVIR=0b0) EDIR=0b0 割込み要因判断 STC:EDIR=0b1 か? EDIR=0b1 測定終了割込み発生 測定終了割込み処理 測定値取得 (BufDTBF0=DTBF) END 図 3-2 サンプルプログラムでのベースタイマ割込み処理例 11 AN706-00025-2v0-J 4 使用上の注意事項 割込み要求ビットはリードモディファイライト系命令におけるリード値は、ビット値 にかかわらず"1"になります。(STC:bit2,bit0) 割込み要求フラグセットタイミングとクリアタイミングが重複した場合には、フラグ セットが優先され、クリア動作は無効です。 割込み処理から抜ける場合には、必ずその割込み要求ビットをクリアしてください。 このアプリケーションノートに付属するサンプルプロジェクトは IAR Embedded Workbench for ARM によって作成されています。 12