順列から、合計11種類のモードを使えます。ここでは、それぞれのモードについて確認し、
使い方を説明します。
周期 / デューティ サイクル計測モード
このモードでは、SMTは入力信号と参照クロックのみを使って、入力信号周期とデュー ティ サイクル(Ton)をサイクルごとに計測します。ダブルバッファ方式により、連続2周期 の計測値が出力レジスタに格納されます。
従来型のタイマと割り込みリソースを使っても同様の計測が可能ですが(アプリケーション
ノートAN1473参照)、多くのCPUサイクルが必要である、ステートマシンの作成にRAM
とフラッシュメモリを使う、計測精度または信号入力特性が大きく制限される、といった問 題があります。
SMTはコアからの独立という考え方に従ってこれらの制限とCPUのタイミング制約を全て 解消し、便利な方法で正確に入力信号を計測します。
このようなアプリケーションにはサイクルごとのPWM入力信号のデコードがあります。これ は車載アプリケーション、煙検出器、ファン制御アプリケーションで一般的です。
High および Low 時間計測モード
これは上記のモードと基本的に同じですが、このモードでは立ち下がりエッジでカウントが リセットされます。その結果、Ton時間とToff時間が別々に計測されます。上記の周期/
デューティ サイクル計測モードの留意事項とアプリケーションの全てが、このモードにもあ てはまります。
ゲートおよびウィンドウ付きモード - 平均 DC 計測
このモードでは、window信号入力によって制御される間隔に対して入力信号のON時 間を計測します(クロックのゲート制御)。ウィンドウ周期ごとに、2つの出力レジスタのどち らかに新たな積算ON時間をキャプチャします。
その結果、入力信号のTon(ウィンドウ周期の平均)が計測されます。言い換えると、入力 の平均デューティ サイクル計測値が得られます。これは、入力信号に大量のノイズ (またはジッタ)が含まれ、デューティ サイクルの瞬時値よりも平均計測値が適当 なアプリケーションで便利です。
Time of Flight モード
このモードでは、signalとwindowという2つの信号入力を使ってそれぞれ参照クロックの カウントを開始および停止します。これは、2つのイベントの間隔を正確に計測する 必要のあるアプリケーションで便利です。このモードを使い慣れると、どうして これまで使わなかったのか不思議に思う事でしょう。SMTを使わない場合、状態 変化割り込み機能とステートマシンを使い、さらに多くのCPUサイクルを浪費し ていたはずです。SMTのこのモードを使えば簡単です。
タイマモード
タイマモードは最も基本的なモードの1つです。このモードではSMTクロック入 力のみ使いますが、大きい周期レジスタをと一致イベントを使って長いタイム ベースを生成します。本質的にこの挙動は8/16ビットタイマと似ていますが、24 ビットのダイナミック レンジにより、より長い周期またはより高い分解能を達成 できる点で異なっています。
ウィンドウ計測 - 大型の HLT
ウィンドウ計測モードでは、window信号入力を使って各立ち上がりエッジのカウントを キャプチャし(極性反転可能)、即座にカウントをリセットします。これにより、window信 号入力の周期をサイクルごとに計測できます。しかし、この場合も周期レジスタ とランニング カウントが常時比較されているため、ウィンドウ入力信号の周期が 長くなり過ぎた場合はもう1つの出力イベント (タイムアウト)も取得できます。
別の方法として、ハードウェア リミットタイマ モジュールの挙動と比較する方 法があります。window信号入力は基本的にHLTのリセットイベントであり、周 期レジスタはタイムアウト周期になります。ウィンドウ計測の大きな利点として、
24ビットのダイナミックレンジによりタイムアウトを長くするか、分解能を高く する事ができます。
ゲート付きタイマモード
このモードは16ビットタイマのゲート付きモードと同じです。参照クロックの ゲート制御に入力信号を使いますが、このモードでは分解能が24ビットです。
キャプチャモード
このモードは、16ビットタイマモジュールをキャプチャモードのCCPモジュール と組み合わせて使った場合と同じです。このモードでも分解能が高くなり、計測 はダブルバッファ構成です。
非同期カウンタモード
非同期カウンタモードにはカウンタ、ゲート付きカウンタ、ウィンドウ付きカウンタの3種類 があります。これらは参照(クロック)入力を使わず、単純にsignal信号入力を使ってパル スをカウントし、最終的にwindow信号入力を使ってゲート制御を実施します。16ビットタ イマの場合と同様ですが、このモードではダイナミック レンジが大きいか、分解能が高くな ります。
MCC が生成する API
MCCはSMTをCCPモジュールと同様に扱い、3つ(キャプチャ、カウンタ、タイマ)にモー ドを分類します。各カテゴリが別々のダイアログ ウィンドウに対応しており、これを使って 11モード全てを設定できます。
ピン配置
ペリフェラル ピンセレクトを備えた最近のデバイスはほぼ例外なくHLTを実装しているた め、任意のデジタルピンにウィンドウ入力、信号入力、クロック入力を割り当てられます。唯 一の例外として、PIC12F1612 (8ピン)およびPIC16F1613 (14ピン)モデルはHLTを実装 していません。
ホームワーク
• 8または16ビットの分解能しか必要ではない場合、どのようにSMTを使うべきか 考えてみましょう。
• 従来型のタイマ構造を(場合によってはCLCも)使ってSMTのTime of Flight モードと同じ機能を実装するにはどうしたら良いか考えてみましょう。
オンライン リソース
『AN1473 - パルスおよびデューティ サイクル計算の各種ソリューション』
『AN1779 - PIC16F1613を使ったセンサ付き単相BLDCモータドライバ』