Comments
Transcript
製品に関する情報が記載されております。 - Cypress Semiconductor
本ドキュメントはCypress (サイプレス) 製品に関する情報が記載されております。 AN706-00024-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-00024-2v0-J 注意事項 本資料の記載内容は、予告なしに変更することがありますので、ご用命の際は営業部 門にご確認ください。 本資料に記載された動作概要や応用回路例は、半導体デバイスの標準的な動作や使い 方を示したもので、実際に使用する機器での動作を保証するものではありません。し たがいまして、これらを使用するにあたってはお客様の責任において機器の設計を行 ってください。これらの使用に起因する損害などについては、当社はその責任を負い ません。 本資料に記載された動作概要・回路図を含む技術情報は、当社もしくは第三者の特許 権、著作権等の知的財産権やその他の権利の使用権または実施権の許諾を意味するも のではありません。また、これらの使用について、第三者の知的財産権やその他の権 利の実施ができることの保証を行うものではありません。したがって、これらの使用 に起因する第三者の知的財産権やその他の権利の侵害について、当社はその責任を負 いません。 本資料に記載された製品は、通常の産業用、一般事務用、パーソナル用、家庭用など の一般的用途に使用されることを意図して設計・製造されています。極めて高度な安 全性が要求され、仮に当該安全性が確保されない場合、社会的に重大な影響を与えか つ直接生命・身体に対する重大な危険性を伴う用途(原子力施設における核反応制御、 航空機自動飛行制御、航空交通管制、大量輸送システムにおける運行制御、生命維持 のための医療機器、兵器システムにおけるミサイル発射制御をいう)、ならびに極め て高い信頼性が要求される用途(海底中継器、宇宙衛星をいう)に使用されるよう設 計・製造されたものではありません。したがって、これらの用途にご使用をお考えの お客様は、必ず事前に営業部門までご相談ください。ご相談なく使用されたことによ り発生した損害などについては、責任を負いかねますのでご了承ください。 半導体デバイスはある確率で故障が発生します。当社半導体デバイスが故障しても、 結果的に人身事故、火災事故、社会的な損害を生じさせないよう、お客様は、装置の 冗長設計、延焼対策設計、過電流防止対策設計、誤動作防止設計などの安全設計をお 願いします。 本資料に記載された製品を輸出または提供する場合は、外国為替及び外国貿易法およ び米国輸出管理関連法規等の規制をご確認の上、必要な手続きをおとりください。 本書に記載されている社名および製品名などの固有名詞は、各社の商標または登録商 標です。 Copyright© 2010-2011 FUJITSU SEMICONDUCTOR LIMITED all rights reserved 1 AN706-00024-2v0-J 改版履歴 版数 日付 内容 1.0 版 2010/11/4 新規作成 2.0 版 2011/1/20 MB9A100/MB9B100/MB9B300/MB9B400 Series に対応 2 AN706-00024-2v0-J 目次 注意事項 ...............................................................................................................................1 改版履歴 ...............................................................................................................................2 目次 ...................................................................................................................................... 3 1 はじめに ........................................................................................................................ 4 2 ベースタイマ ................................................................................................................. 5 3 4 2.1 ベースタイマのリロードタイマ ............................................................................. 5 2.2 割込み(NVIC).......................................................................................................... 5 2.3 割込み(IRQ31 一括読出しレジスタ)....................................................................... 7 2.4 レジスタ ................................................................................................................. 7 2.5 APB1 バスクロック................................................................................................ 8 設定例(サンプルプログラム) ......................................................................................... 9 3.1 サンプルプログラムについて................................................................................. 9 3.2 10ms 毎に割込みが発生するカウンタの設定 ......................................................... 9 3.3 設定手順例 ........................................................................................................... 10 3.4 サンプルプログラムの動作 .................................................................................. 12 使用上の注意事項........................................................................................................ 13 3 AN706-00024-2v0-J 1 はじめに ベースタイマは、タイマ制御レジスタのFMD2,1,0ビットの設定により、16ビットPWMタ イマ,16ビットPPGタイマ,16/32ビットリロードタイマ,16/32ビットPWCタイマの中か らタイマ機能を1つだけ選択できます。 このアプリケーションノートでは、ベースタイマのリロードタイマ機能の使用方法につい て説明します。 10ms 毎にベースタイマ割込みを発生させるように設定し、16 ビットモード、ソフトウェ ア起動、連続動作で動作するサンプルプログラムにて設定例を示します。 4 AN706-00024-2v0-J 2 ベースタイマ (※ベースタイマの特徴や動作、ブロックダイヤグラムについては”MB9Axxx/MB9Bxxx Series ペリフェラルマニュアルの CHAPTER14-2:ベースタイマ”をご参照ください) 2.1 ベースタイマのリロードタイマ ベースタイマのリロードタイマは16ビットのダウンカウンタ,16ビットのリロードレジス タ,端子制御部で構成されます。 16ビットのダウンカウンタのカウントクロックは、内部クロック8種類(マシンクロックの 1/4/16/128/256/512/1024/2048分周)と、外部イベント3種類(立上りエッジ,立下りエッジ,両 エッジ検出)から選択できます。 動作モードの選択はアンダフローでカウントを停止するワンショットモードと、再ロード してカウントを繰り返す連続モードが選択できます。 16/32ビットリロードタイマの起動はソフトウェアトリガと外部イベント3種類(立上りエッ ジ,立下りエッジ,両エッジ検出)から選択できます。 2.2 割込み(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)割り込みの現在の許可状態が読み出されます。 5 AN706-00024-2v0-J 割り込みイネーブルセットレジスタは、次の目的に使用します。 割り込みを許可する。 どの割り込みが現在許可されているのかを判別する。 レジスタの各ビットは、32 個の割り込みのうちの 1 つと対応します。 割り込みイネーブルセットレジスタにビットをセットすることで、対応する割り込みが許 可されます。保留中の割り込みのイネーブルビットがセットされると、プロセッサは優先 度に基づいて割り込みをアクティブにします。 イネーブルビットがクリアされている場合、割り込み信号をアサートすると、その割り込 みは保留されます。しかし、優先度にかかわらず、この割り込みをアクティブにすること はできません。 このため、禁止された割り込みは、ラッチされる汎用 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-00024-2v0-J 2.3 割込み(IRQ31 一括読出しレジスタ) (※IRQ31 一括読出しレジスタに関しては”MB9Axxx/MB9Bxxx Series ペリフェラルマニュ アルの CHAPTER6:割込み”をご参照ください) IRQ31 一括読出しレジスタによってベースタイマ割込みが含まれる割込みベクタNo.47 の 割込み要求を一括で読み出せます。これによりどのch.で割込み要求が発生したか確認でき ます。また、ベースタイマの機能ごとに割込み要因が異なります。表 2-3に 16/32 ビット リロードタイマのIRQごとの割込み要因を示します。 表 2-3 リロードタイマの IRQ ごとの割込み要因 割込み要因 IRQ0 割込み要因 IRQ1 アンダフロー検出 2.4 タイマ起動トリガ検出 レジスタ (※レジスタ設定の詳細については”MB9Axxx/MB9Bxxx Series ペリフェラルマニュアルの CHAPTER14-2:ベースタイマ”をご参照ください) 設定レジスタは各モードで異なります。表 2-4にリロードタイマ機能で設定するレジスタ郡 を示します。 表 2-4 レジスタ略称 リロードタイマ機能で使用するレジスタ一覧 レジスタ名 アドレス TMCR タイマ制御レジスタ ベースアドレス+0x00C TMCR2 タイマ制御レジスタ 2 ベースアドレス+0x011 STC ステータス制御レジスタ ベースアドレス+0x010 PCSR 周期設定レジスタ ベースアドレス+0x000 TMR タイマレジスタ ベースアドレス+0x008 7 AN706-00024-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.5 APB1 バスクロック (※APB1 バスクロックの詳細については”MB9Axxx/MB9Bxxx Series ペリフェラルマニュア ルの CHAPTER2-1:クロック”をご参照ください) ベースタイマのバスクロックは PCLK1 となっていて(“FM3 MB9B500 シリーズ データシ ートのブロックダイヤグラム”をご参照ください)、最大内部動作クロック周波数は 40MHz となっています。CPU/AHB バスクロックが 40MHz を越える設定をする場合は APB1 プリ スケーラレジスタ(APBC1_PSR)の設定で分周をしてください。 8 AN706-00024-2v0-J 3 設定例(サンプルプログラム) 3.1 サンプルプログラムについて ベースタイマのリロードタイマ機能を動作させるサンプルプログラムについて説明します。 以下に本サンプルプログラムの設定条件を示します。 クロック設定: マスタクロックを PLL クロック 80MHz(X0,X1 に外部メインクロック 4MHz を入力 して逓倍)に設定 APB1 プリスケーラ 2 分周(APB1 バスクロック 40MHz) 以上の条件でベースタイマを以下のように設定します - ベースタイマ ch.0 を使用 - タイマ機能をリロードタイマ機能に選択 - 16 ビットモード - ソフトウェア起動 - リロードモード - カウンタアンダーフロー割込み許可 - 割込みは 10ms 毎に発生するようにカウンタを設定 サンプルプログラムでは割込み確認用として P20 を汎用出力端子として使用し、割込み処 理内で出力値を反転しています。 3.2 10ms毎に割込みが発生するカウンタの設定 上記設定で 10ms 毎に割込みが発生するカウンタの設定値を以下に示します。 APB0 バスクロック周波数:40MHz→1 周期 0.025us タイマプリスケーラ:128 1 周期 128×0.025us=3.2us 10ms/3.2us=3125 以上の計算よりカウント値(PCSR)は 3,125 9 AN706-00024-2v0-J 3.3 設定手順例 次の手順は、サンプルプログラムのベースタイマの設定方法を示しています。 ベースタイマ設定 START APB1 バスクロック分周設定 マスタクロック PLL クロック設定 動作モード選択 (TMCR:T32=0, FMD2~FMD0=0b011) 割込み設定、アンダーフロー割込みを 許可(STC:UDIE=0b1) カウンタ(周期)設定(PCSR=0X0C35) ソフトウェア起動 (TMCR:CTEN STRG=0b11) NVIC ベースタイマ割込み許可 メインループ(ベースタイマ割込み待 ち) 図 3-1 サンプルプログラムでの設定手順例 10 AN706-00024-2v0-J ベースタイマ割込み処理 START IRQ31MON の bit0 または bit1=1 か? どちらも 0 ch.0 の割込みではない いずれか 1 割込み要因フラグのアンダーフロー 割込み要求ビットクリア (STC:UDIR=0) 割込み発生確認用汎用出力端子反転 (汎用出力端子 P20 反転) END 図 3-2 サンプルプログラムでのベースタイマ割込み処理例 11 AN706-00024-2v0-J 3.4 サンプルプログラムの動作 3,125 ダウンカウンタ 0 TMCR:CTEN TMCR:STRG ベースタイマ起動と同時にカウンタ動作 STC:UDIR 割込み関数内でクリア 10ms P20 10ms 図 3-3 サンプルプログラムのベースタイマの動作 TMCR.CTEN=0b1 のとき(ダウンカウンタの動作許可)に TMCR.STRG に 0b1 を書き込むと ソフトウェアトリガがかかります。TMCR.CTEN と TMCR.STRG を同時に書き込んでもソ フトウェアトリガがかかります。 ダウンカウンタがアンダフローすると PCSR の値がリロードされます。TMCR.MDSE=0b0 (リロードモード)に設定しているためカウンタのリロード後、ダウンカウントを継続します。 12 AN706-00024-2v0-J 4 使用上の注意事項 PCSR レジスタは TMCR レジスタの FMD2, FMD1, FMD0 ビットでリロードタイマ 機能の設定後に設定してください。 割込み要求ビットはリードモディファイライト系命令におけるリード値は、ビット値 にかかわらず"1"になります。(STC:bit2,bit0) 割込み要求フラグセットタイミングとクリアタイミングが重複した場合には、フラグ セットが優先され、クリア動作は無効です。 ダウンカウンタは、ロードとカウントのタイミングが重複した場合には、ロード動作 が優先されます。 ワンショットモードでカウント終了時に再起動を検出した場合は、カウント値をリロ ードして再起動を開始します。 このアプリケーションノートに付属するサンプルプロジェクトは IAR Embedded Workbench for ARM によって作成されています。 13