2つ目の要素開発項目は、16F88自体での周波数カウント方法である
ポイントは内蔵タイマをどの様に使って周波数数カウントし、限界値(最大測定周波数)が要求仕様に入っているかを確認する事である
LCDが動作しているので、周波数をカウント出来れば単体で、テストが出来る様になる
今回は、timer0とtimer1を試して比較してみた
PICではtimerと呼び名が付いているが、オーバフロー時または設定したカウンタ値に到達したら、割り込みが発生するフリーランカウンタである
入力に一定周期のバルスを入力すると当然タイマーとなるのである
入力周波数をカウントするのに、どのTimerが良いか検討した
1.timer0
・16F88のtimer0は入力信号と内部クロックの信号が同期となっている
・入力はシュミットトリガでは無い
・カウントのON/OFFが制御出来無い
従って原理的にCPUクロック(20MHz)以上のカウントは出来ない
2.time1
・16F88のtimer1は入力信号と内部クロックの信号が同期を非同期に設定することが可能
・カウントのON/OFFが制御出来る
・入力はシュミットトリガ
CPUクロックに非同期入力なので、カウンタロジックの限界値までカウントが可能
3.time2
・カウントのON/OFFが制御出来る
・内部クロックのみ入力可能なので、外部信号のカウントには使用出来ない
当然ながら信号の周期数カウントにはTimer1を使用する事にした
次にゲートタイムの測定用timerであるが、timerのon/offが制御出来るので、timer2を使用することなった
この辺りの構成は、結局稲垣氏の周波数カウンタVer7と全く同じであり、稲垣氏の着眼点に敬意を表するのである
ちなみに私の実験ではtimer1のプリスケーラなしで、60MHzのカウントが出来た
timer1のカウント入力は簡単に確認出来、次にtime2を使用して、1秒と0.1秒のゲートタイムタイムにする
この辺りは、基本フローを紙に書き出して、タイミングと処理内容を整理して、ファームウェア実装を行い、周波数の計測が出来ることを確認した
ゲートタイムの評価は、Timer1の入力設定でクロック信号の1/4を利用する
この場合測定周波数が20MHzの1/4である5MHzになる筈である
一旦はこれで、基本機能評価が出来る用になったのである