本ドキュメントはCypress (サイプレス) 製品に関する情報が記載されております。 AN706-00010-2v0-J FM3 Family 32-BIT MICROCONTROLLER MB9A100/MB9B100/MB9B300/MB9B400/MB9B500 series デュアルタイマ ワンショットモードの設定/利用方法 TM ARM and Cortex-M3 are the trademarks of ARM Limited in the EU and other countries. AN706-00010-2v0-J 注意事項 本資料の記載内容は、予告なしに変更することがありますので、ご用命の際は営業部 門にご確認ください。 本資料に記載された動作概要や応用回路例は、半導体デバイスの標準的な動作や使い 方を示したもので、実際に使用する機器での動作を保証するものではありません。し たがいまして、これらを使用するにあたってはお客様の責任において機器の設計を行 ってください。これらの使用に起因する損害などについては、当社はその責任を負い ません。 本資料に記載された動作概要・回路図を含む技術情報は、当社もしくは第三者の特許 権、著作権等の知的財産権やその他の権利の使用権または実施権の許諾を意味するも のではありません。また、これらの使用について、第三者の知的財産権やその他の権 利の実施ができることの保証を行うものではありません。したがって、これらの使用 に起因する第三者の知的財産権やその他の権利の侵害について、当社はその責任を負 いません。 本資料に記載された製品は、通常の産業用、一般事務用、パーソナル用、家庭用など の一般的用途に使用されることを意図して設計・製造されています。極めて高度な安 全性が要求され、仮に当該安全性が確保されない場合、社会的に重大な影響を与えか つ直接生命・身体に対する重大な危険性を伴う用途(原子力施設における核反応制御、 航空機自動飛行制御、航空交通管制、大量輸送システムにおける運行制御、生命維持 のための医療機器、兵器システムにおけるミサイル発射制御をいう)、ならびに極め て高い信頼性が要求される用途(海底中継器、宇宙衛星をいう)に使用されるよう設 計・製造されたものではありません。したがって、これらの用途にご使用をお考えの お客様は、必ず事前に営業部門までご相談ください。ご相談なく使用されたことによ り発生した損害などについては、責任を負いかねますのでご了承ください。 半導体デバイスはある確率で故障が発生します。当社半導体デバイスが故障しても、 結果的に人身事故、火災事故、社会的な損害を生じさせないよう、お客様は、装置の 冗長設計、延焼対策設計、過電流防止対策設計、誤動作防止設計などの安全設計をお 願いします。 本資料に記載された製品を輸出または提供する場合は、外国為替及び外国貿易法およ び米国輸出管理関連法規等の規制をご確認の上、必要な手続きをおとりください。 本書に記載されている社名および製品名などの固有名詞は、各社の商標または登録商 標です。 Copyright© 2010-2011 FUJITSU SEMICONDUCTOR LIMITED all rights reserved 1 AN706-00010-2v0-J 改版履歴 版数 日付 内容 1.0 版 2010/11/4 新規作成 2.0 版 2011/1/20 MB9A100/MB9B100/MB9B300/MB9B400 Series に対応 2 AN706-00010-2v0-J 目次 注意事項 ...............................................................................................................................1 改版履歴 ...............................................................................................................................2 目次 ...................................................................................................................................... 3 1 はじめに ........................................................................................................................ 4 2 デュアルタイマ ............................................................................................................. 5 3 4 2.1 割込み(NVIC).......................................................................................................... 5 2.2 割込み(IRQ06 一括読出しレジスタ)....................................................................... 6 2.3 APB0 バスクロック................................................................................................ 7 設定例(サンプルプログラム) ......................................................................................... 8 3.1 サンプルプログラムについて................................................................................. 8 3.2 20ms 毎にデュアルタイマ割込みを発生させるカウンタ設定 ................................ 8 3.3 設定手順例 ............................................................................................................. 9 使用上の注意事項........................................................................................................ 12 3 AN706-00010-2v0-J 1 はじめに デュアルタイマは、2 つのプログラム可能なフリーランカウンタで構成されています。それ ぞれのタイマ部の動作は同一です。フリーランカウンタは、制御レジスタにより 32 ビット か 16 ビットかのどちらかのカウンタサイズに構成できます。また次の 3 つのタイマモード のうちの一つに構成できます。 ・フリーランモード カウンタがゼロになると、カウンタは最大値へ巡回して継続動作します。 ・周期モード カウンタがゼロになると、カウンタはロードレジスタからタイマカウント値をリロードし て継続動作します。 ・ワンショットモード ロードレジスタにタイマカウント値を書き込むと、カウンタは新しい値をロードします。 カウンタがゼロになると、カウンタは再度プログラムするまで停止します。 2 つのフリーランカウンタは、共通のタイマクロック(TIMCLK)で動作します。タイマクロ ックは APB バスクロック(PCLK)を使用します。また、それぞれのフリーランカウンタは 1,16,256 に分周できるプリスケーラを持っています。よって、個々のプリスケーラを使っ て、それぞれのフリーランカウンタのカウント速度を制御できます。 このアプリケーションノートでは、デュアルタイマの設定方法について説明します。 デュアルタイマをワンショットモードで動作させるサンプルプログラムにて設定例を示し ます。 4 AN706-00010-2v0-J 2 デュアルタイマ (※デュアルタイマの特徴や動作、ブロックダイヤグラムについては”MB9Axxx/MB9Bxxx Series ペリフェラルマニュアルの CHAPTER12:デュアルタイマ”をご参照ください) 2.1 割込み(NVIC) (※NVIC に関しては”Cortex-M3 テクニカルリファレンス マニュアルの 8 章ネスト型ベク タ割り込みコントローラ”をご参照ください) 表 2-1にNVICに入力される例外と割込みの要因ベクタ表を示します。 表 2-1 デュアルタイマ割込みベクタ 例外と割込み要因 デュアルタイマ/クアッドカウ ベクタ No. 22 IRQ No. 6 ベクタ Offset 0x58 ンタ(QPRC)ch.0,ch.1 (※すべての割込み内容と割込み番号については”MB9Axxx/MB9Bxxx Series ペリフェラル マニュアルの CHAPTER6:割込み.3.例外と割込み要因ベクタ”をご参照ください) CPU コアの例外を含むすべての割込みは NVIC で管理されます。 “Cortex-M3 テクニカルリファレンスマニュアル”では例外タイプ:IRQ をすべて外部割込み 入力と定義しています。 本書では、例外タイプ:IRQ を周辺割込みと表現します。周辺割込みには、外部端子による 割込み「外部割込み・NMI 制御部」と LSI 内部の周辺リソースからの割込みがあります。 NVIC 割り込みは、対応する割り込みイネーブルセットレジスタ、または割り込みイネーブ ルクリアレジスタのビットフィールドに書き込むことで、許可および禁止できます。この レジスタは、1 を書き込んで許可と 1 を書き込んでクリアのポリシーを使用しており、どち らのレジスタからも、対応する(32)割り込みの現在の許可状態が読み出されます。 割り込みイネーブルセットレジスタは、次の目的に使用します。 割り込みを許可する。 どの割り込みが現在許可されているのかを判別する。 レジスタの各ビットは、32 個の割り込みのうちの 1 つと対応します。 割り込みイネーブルセットレジスタにビットをセットすることで、対応する割り込みが許 可されます。保留中の割り込みのイネーブルビットがセットされると、プロセッサは優先 度に基づいて割り込みをアクティブにします。 イネーブルビットがクリアされている場合、割り込み信号をアサートすると、その割り込 みは保留されます。しかし、優先度にかかわらず、この割り込みをアクティブにすること 5 AN706-00010-2v0-J はできません。 デュアルタイマの割込みを使用する場合、割り込みイネーブルセットレジスタのIRQ No.6 に相当するビットを 1 にします。表 2-2に割り込みイネーブルセットレジスタの設定を示 します。 表 2-2 割り込みイネーブルセットレジスタの設定 アドレス:0xE000E100=0bXXXXXXXXXXXXXXXXXXXXXXXXX1XXXXXX 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 値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 1 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.6 なのでアドレス:0xE000E406 がデ ュアルタイマの割り込み優先度レジスタになります。リセット時は 0x00 になるので最も高 い優先度です。 ベクタ offset が 0x58 なので割込みアドレスは 0x00000058 に格納します。 2.2 割込み(IRQ06 一括読出しレジスタ) (※IRQ06 一括読出しレジスタに関しては”MB9Axxx/MB9Bxxx Series ペリフェラルマニュ アルの CHAPTER6:割込み”をご参照ください) デュアルタイマとクアッドカウンタ(QPRC)ch.0,ch.1 は割込みベクタが共用になっていま す。割込み発生により、ベクタアドレスに遷移したとき、IRQ06 一括読出しレジスタによ りどの割込み要求が発生したか判断できます。 6 AN706-00010-2v0-J 2.3 APB0 バスクロック (※APB0 バスクロックの詳細については”MB9Axxx/MB9Bxxx Series ペリフェラルマニュア ルの CHAPTER2-1:クロック”をご参照ください) デュアルタイマのバスクロック、タイマクロック(TIMCLK)は PCLK0 となっていて(FM3 MB9B500 シリーズ データシートのブロックダイヤグラムをご参照ください)、最大内部 動作クロック周波数は 40MHz となっています。CPU/AHB バスクロックが 40MHz を越え る設定をする場合は APB0 プリスケーラレジスタ(APBC0_PSR)の設定で分周をしてくださ い。 7 AN706-00010-2v0-J 3 設定例(サンプルプログラム) 3.1 サンプルプログラムについて デュアルタイマを動作させるサンプルプログラムについて説明します。 以下に本サンプルプログラムの設定条件を示します。 クロック設定条件: マスタクロックを PLL クロック 80MHz(X0,X1 に外部メインクロック 4MHz を入力 して逓倍)に設定 APB0 プリスケーラ 2 分周(APB0 バスクロック 40MHz) 以上の条件によりデュアルタイマを以下のように設定します。 - デュアルタイマ 1 を使用 - タイマモード:ワンショットモード - 32 ビット動作 - メインループ 1 ループ後にデュアルタイマカウンタアンダーフロー割込みを 20ms 毎に発生させる。割込みが発生した後、次のメイン処理が実行できる 3.2 20ms毎にデュアルタイマ割込みを発生させるカウンタ設定 デュアルタイマの割込みはカウントがゼロ(0x0000(16 ビット動作)/0x00000000(32 ビット 動作))になると発生します。サンプルプログラムでは以下の設定で 20ms 毎に割込みが発生 します。 PCLK0=40MHz=周期 25ns TimerPre ビット=0b00:クロック 1 分周 クロックが 1 分周されるので(周期は 1 分周される) デュアルタイマカウントダウン周期=25ns×1=25ns TimerSize ビット=0b1:32 ビットカウンタ 以上の設定によりデュアルタイマの割込みが発生するまでの時間が 20ms となるロードレ ジスタ(Timer1Load)の値は以下の通り計算されます。 20ms = (TimerPre/TIMCLK)×Timer1Load 20ms = 1×25ns×Timer1Load Timer1Load = 800,000=0x000C3500 8 AN706-00010-2v0-J 3.3 設定手順例 次の手順は、サンプルプログラムでおこなっているデュアルタイマ1の設定方法を示してい ます。 デュアルタイマ 1 設定 START マスタクロック PLL クロック設定 APB0 クロック分周設定 デュアルタイマ 1 割込みクリア (Timer1IntClr=0xFFFFFFFF) 書込む値は任意の値 割込み許可、プリスケーラ、カウンタ サイズ 32 ビット設定、ワンショット タイマモード設定 (Timer1Control:IntEnable=0b1, TimerPre=0b00,TimerSize=0b1, OneShot=0b1) ロードカウンタ設定 (Timer1Load=0x000C3500) デュアルタイマ 1 動作許可 ( Timer1Control:TimerEn=0b1) NVIC デュアルタイマ割込み許可 メインループ 発生してない デュアルタイマ 1 の 割込みが発生したか? 発生した ロードレジスタに値を格納 (Timer1Load=0x000C3500) 図 3-1 サンプルプログラムでの設定手順例 9 AN706-00010-2v0-J デュアルタイマ 1 割込み処理 START bit0=0b0 IRQ06MON bit0=0b1? bit0=0b1 デュアルタイマ 1 の割込みでない デュアルタイマ 1 割込み発生 デュアルタイマ 1 割込み要因クリア (Timer1IntClr=0xFFFFFFFF) デュアルタイマ割込み発生フラグを 立てる END 図 3-2 デュアルタイマ 1 割込み処理例 10 AN706-00010-2v0-J カウント値 0xFFFFFFFF 0x000c3500 TIME Timer1Control :TimerEn Timer1Load 0x000C3500 0x00000000 0x000C3500 ロードレジスタ書込み によってカウント開始 20ms Timer1RIS :Timer1RIS 割込み発生 20ms 割込み発生 Timer1IntClr に任意の値 書込み 図 3-3 サンプルプログラムの動作 4 11 AN706-00010-2v0-J 使用上の注意事項 このアプリケーションノートに付属するサンプルプロジェクトは IAR Embedded Workbench for ARM によって作成されています。 12