なんだプリスケーラーってカウンターICのことなんだ。ビットのバイナリカウンターのICひとつで最大256分周できる。4Mクロックで2Mまで測れるとして128Mhzまで測れる(分解能は64hzになるけれど)。何もCPLD、ましてやFPGAを持ち出す必要はない。理屈がわかれば話は早い。昨日、家内の買物につきあったついでに、このあいだ行ったばかりの秋葉原に寄って、バイナリカウンターの74HC393とシュミットトリガーインバータの74HC14を買ってきた。言えば昔、Z80のワンボードコンピューターを自作しようとこのあたりを色々勉強した記憶がよみがえる。帰って早速、ブレッドボードに二つのICを差し、抵抗で中位電位をつくり、FGからのAC信号をコンデンサーで入れてオシロで波形を見る。うーむ、オシロのおかげで考えたことがすぐ実験できる。シュミットトリガーは、Webのサイトの回路図に入っているのがあるし、アナログ入力をいきなりカウンターに入れるのに抵抗があったこと、それにアナログからデジタルへの変換は「整形にシュミットトリガー」、という教科書的知識で何の疑いもなく買ってきた。結論から言えば、全く必要がなかった、というより74HC14では遅くて使えないことがわかった。考えてみれば、殆どノイズのないFGの信号(2VP-P)入力なので整形の必要もないのだが、始めは、全くカウンターが動かず頭を抱えた。分圧抵抗を可変抵抗器に変えてやっと出力されるところを見つけた。要するに中間電位がとてもクリティカルで、20Mhzを超えるとどれだけ調整しても出力されない。思いあぐねて、次の日、思い切ってシュミットトリガーなしに、カウンターの入力に直接入れてみたら、何のことはない。問題なくカウンターが動いたのである。やれやれ、始めからこうしておけば良かった。しつこい性格なので、何故シュミットトリガーで動かなかったのか調べてみた。74HC14のデータシートをWebから落として調べる。ヒステリシス機能があるので普通のインバータより出力が遅れるのはわかるが、全体に遅れるだけで同期をとる必要がないのだから問題ないと思っていた。Vccが4.5Vで、遅延時間9ns(typ)、最大で17ns。早そうだが、チャートを良く調べるとトリガーがかかってから出力が変わるまではこの1.5倍、15ns程度かかる。メーカーの最大保証値なら17ns×1.5で25.5nsとなる。20Mhzの半サイクルは25nsなので、中間点からはずれると出力が変わらないうちに次のトリガーがかかってしまうことになる。20Mhzを超えたところで調整不能になって当たり前なのだ。74VHC14ならこの3倍くらい早いので、必要ならこれを使えばよい。いや、データシートは穴のあくまでよく読めといわれているがそのとおりだった。調べておけば、昨夜の数時間は無駄にせずすんだというものである。ISPは配線を間違えても動く(10/25/08)周波数カウンターのハードの目処が立ったので、本格的な設計開発に入る前に、この前のプロジェクトで気になっているUARTの不調を直しておこうと調べ始めた。リズムキャプチャーのWebに上げたソースコードは、これを全く使っていないので問題はないのだが、このまま放っておくのは、何となく気持ちが落ち着かない。症状は、AVRspで全く問題なく、プログラムが正常に書き込めるのに、デバッグ用に愛用しているISPを通したUARTだけが動かないのである。このコードは初期に割込み付きのUARTとしてWebにも公開して以来、がた老AVR研の殆どのプログラムに入っている。PCを通じてマイコンの動きが逐一把握できるので、デバッグが早い。昔の大型機のプログラマーをしていたときから、私はデバッガーやシミュレーターというのを殆ど使ったことがない。大体、デバッガーもソフトなので系に不確定要素をさらに加えることになるし、そもそも自分の開発したソフトをデバッガーがないと解析できないというのは、コーディング以前の構造的な設計に問題があるからだと思っている。余談はさておき、リズムキャプチャーのUARTである。ソフトは試作版と全く変えていないので、問題はソフトではなくハードであることは間違いない。電源は電池になっているが5Vと4.5Vでは全く関係ないだろう。低電圧版のAVRは3V以下でも動くのだ。すると、実装基板の配線ということになるが、ファームの書き込みは正常だし、AVRspのコマンドレスポンスも正常だ。配線間違いならそもそもこれが動かないはすだ。それでUARTだけが動かない。そんな馬鹿なと、基板の配線を眺めながら独り言を言っていたとき、ふとISPピンの最後のピンに目が止まった。縦一列のISPの最後がリセットピンにつながっている。アートワークもそうなっている。このへんは何十回と配線していて間違えるはずがないと豪語していたところだ。ISPピンの最後はGNDじゃなかったっけ。GNDの印を白のサインペンでよくピンヘッダーに印をつけていた。急いで資料を確かめる。そのとおり最終ピンがグランドだ。リセットとグランドを間違えて配線している。