高速PWMではカウンターがオーバーフローすると出力は1にトグルされるが、オーバーフローしてから、このユーザープロセスの割り込みルーチンに来る時間は0ではなく必ず少し遅れる。CPUクロックとのプリスケールが8程度では、8ステップ以内にコンペアレジスターを0にしなければならず、割り込みでうかうかレジスターの退避などしていては間に合わない。このグリッチはクロックを上げてプリスケールを増やせばなくなるのだろうが、何となく対症療法的でしゃくである。データシートを眺めているうち気がついた。意味が良くわからないが「位相基準」PWMというのは、コンペアマッチする場所とオーバーフローするところが違うようだ。PWM周波数は1/2になってしまうが、これならグリッチは出ないのではないか。タイマーのレジスター設定で「位相基準」PWMに替えて動かしてみる。チはなくなり、LEDも完全に消えるところが出来てホタルらしく点滅する。PWMで調整している光の動きがどうもギクシャクしているような気がする。出力ピンに4KΩと、1μF程度のLPFをかませてオシロで見てみた。思ったより綺麗なサインカーブが現れた。おやあ、カーブが最大になったあと、少し欠けて次の下降カーブになっている。LPCMプレーヤーでバッファーアンダーランを見つけたときのようなカーブだ。綺麗なサインカーブが一部欠けているところが見つかったのである。ソースコードを調べる。すると、カウンターの増やし方を間違えているところが発見された。これを直して動かしてみる。完全なサインカーブがオシロの上で観測できた。いやあ、オシロを買っておいて良かった。これはロジアナではなかなか発見できなかっただろう。モーターは完全に静かになった。大成功(5/26/2012)マイクロステッピング制御でモーターを動かせる環境が少しづつ整って、完成の期待が段々高まってきた。1つだけのPWMチャネルを4つに拡張する。ブレッドボード上にあり合わせのLEDを差して、それぞれホタルのように次々に点滅する様子を暫く楽しんでから、いよいよモータードライバーを接続する。さきほどの簡易LPFをさらに3組増やす。ブレッドボードは林のように部品が乱立するがそれにかまっている場合ではない。