PLLの罠

dsPICシリーズにはPLLがあります。 PLLとはセラロックや水晶の発振周波数の4倍、8倍、16倍にクロック周波数を上げる機能です。 つまり、10MHzのセラロックを使用して80MHzのクロック周波数でPICを動作させることなどができます。
ただしdsPICの最高クロック周波数は120MHzなのでそれを越えるクロック周波数で動作させることはできません。

しかしここで例によってMicrochipによって仕組まれた罠があります。
10MHzのセラロックを用いて8倍にして80MHzを作れるのなら、20MHzのセラロックを用いて4倍にして80MHzを作れるように思えます。
誰だってそう思います。僕もそう思います。 しかし、現実は無情。20MHzのセラロックにPLLを適用することは規格外です。
しかも規格外にも関わらず、コンパイルエラーにもならず、ほぼ問題なく動作します。

20MHzのセラロックにPLLを適用すると、時々動作が変になったり、非同期通信のみが正常に働かなかったりします。 しかも同じ種類のマイコンでも個体差によって挙動が異なります。 完全に動かないのであれば発見は容易なのですが、ほぼ問題ないのでこのミスを発見することは容易ではありません。 筆者はマイコンによっては正常に動くものがあることから、動かないものはマイコンが壊れているのであろうと思い込み、何個もマイコンを破棄しました(゜Д゜)

Top