MPLAB IDE付属のシミュレータMPSIMでの注意事項(時間計測)
2011-10-08


最近BBSでちょっとした騒動が起きた。これは、PICを使う人に有益になると思うので、ブログでも紹介しておくとしよう。

twitteで、正確なPICによるタイマーの事があったので、以前私が使ったタイマー1とCCP1を使用して、正確なインターバルタイマーのソースコードの一部をBBS上に公開した。

その後、PICの事で以前からお世話になっているnatuさんより設定に違いがあるご指摘を受けることになる。

     設定値はマイナス1してCCP1に設定

これが今回の焦点となった。

禺画像]

何度かBBSにてやり取りを行い、私も簡単ながら途中で検証も行った。MPLABにはソフトウェアシミュレータMPSIMが搭載されていて、ステップ実行やステップ時間をブレークをかけて検証ができる便利な機能がある。

まずこの機能での表示をが正しいと思い込んだのが、今回の真偽を惑わされてしまった原因になってしまった。上記は、計算値をそのままCCPレジスタにセットしてインターバルタイマーとした時のMPSIMの結果である。計算通りの割り込みで、一切の疑いも掛けていなかった。ところが、それをマイナス1すると、当然この結果が変わってくる。


禺画像]

チップでも試してみた。このチップは「ES」(エンジニアリングサンプル)で、知人が何か不完全な機能があるから注意してといって貰った物。そしてこのチップのDIP版があったので、会社の空いた時間にササッと確認。このES品の内蔵クロックが±5%の範囲にはいっておらず、更に現象を不確定にすることに。



禺画像]

とにかく、natuさんは古くからBBSなどに来る方の質問に答えて頂いたりしている御方である。
適当にアドバイスする事など考えられない。ひとつひとつ事実を知る事が大事である。

まずは、実機作成だ。といってもブレッドボードであるが、不確定要素を排除するために、高精度の水晶発信器KTXO12.8MHz(秋月の絶品)を使用。デバイスは16F877Aを使用し、PICkit2でオンラインでバッグ出来るようにする。もちろん、電源周りにも配慮し、最短距離配線とパスコンは欠かさない。1時間程度で組み上げる。


禺画像]

出来上がり。これにRC0出力で割り込みが入る毎にポートを反転させるようにした。


続きを読む

[オシロスコープ]
[電子]
[PIC]

コメント(全0件)
コメントをする


記事を書く
powered by ASAHIネット