外部から入力された信号の立ち上がりと立ち下がり、またはそのいずれかを検知した時にカウンターの値を取り込む機能をインプットキャプチャ(Input capture)機能と呼びます。カウントアップまたはカウントダウンをさせつつ、連続する立ち上がりや立ち下がりを検知すると、その際に取り込んだカウンターの値の差から外部信号の周期を求められます。また、1クロックのうちで最初に立ち上がり、次に立ち下がりを検知すると外部信号の“ハイレベル”の長さを、最初に立ち下がり、次に立ち上がりを検知すると“ローレベル”の長さをそれぞれ求められます。
・参考URL:マイコン入門!! 必携用語集(12):「クロック」数えて「パルス」を操る――タイマーの基本機能
図2に周波数測定の具体例を示します。この図を使って実際の周波数を測定してみましょう。
カウンターをカウントアップするクロックは1MHzにします。したがって周期は1マイクロ秒です。
最初の立ち上がりの時、カウンターの値は4ですので、4が取り込まれ(キャプチャされ)ます。すかさず、ソフトウェアでこの値をRAMなどのメモリに格納しておきます。次の立ち上がりの時、カウンターの値は11です。この値もソフトウェアでメモリに格納します。次に、ソフトウェアで11−4=7の計算を行うことによって、入力された信号の1周期がカウントクロックの7周期分に相当することが分ります。クロックの周波数は1MHz、周期は1マイクロ秒なので、外部クロックの周期は1マイクロ秒×7=7マイクロ秒になり、周波数は1/7MHz=142.86kHzになります。
次に測定時に発生する最大誤差について考えてみましょう。
図3では、入力信号Aと入力信号Bの実際の周期は異なっているにもかかわらず、取り込まれるカウンターの値は同じです。入力信号Aの周期はカウントクロックの約7クロック分ですが、入力信号Bは約5クロック分です。この2クロック分が測定誤差になります。
したがって、最大誤差率は次の式で求められます。
最大誤差率(%)=([カウントクロックの周期]/[入力信号の周期])×2×100 …式1
または、
最大誤差率(%)=([入力信号の周波数]/[カウントクロックの周波数])×2×100 …式2
周期で計算する場合には、カウントクロックの周期を入力信号の周期よりも小さくすればするほど、精度は上がります。周波数で計算する場合には、カウントクロックの周波数を入力信号の周波数よりも高くすればするほど、精度は上がります。
例えば、図2におけるカウントクロックの周期1マイクロ秒(周波数は1MHz)と、測定された外部クロックの周期7マイクロ秒を上記式1に代入すると、次のように誤差率を求めることができます。
最大誤差率(%)=(1マイクロ秒/7マイクロ秒)×2×100=28.57
したがって、測定された142.86kHzは最小周波数値で、最大28.57%の誤差が含まれていることになり、実際の周波数は142.86kHz〜200kHz(1/5マイクロ秒=200.00kHz)の間であることが分かります。
測定誤差を測定する場合、インプットキャプチャのカウンタのビット数や、カウント周波数にめどを付けるため、ある程度入力信号の周波数を把握しておく必要があります。
Copyright © ITmedia, Inc. All Rights Reserved.