OSCTUNEを考察する

Topics PICC Pro lite mode Exam OSCTUNE LCD PICkit2 PIC16F88

はじめに



PIC16F88(16F87)には内部に31.25KHzから8MHzまでの計8段階のクロックをもっており、外付け発振回路がなくとも動作するので大変便利です。内部の誤差も25℃の環境において、±2%という精度が保証されています。(31.25KHzは除く。また-10〜85℃の範囲では±5%)

このマイコンにはそのクロックを更に±12.5%の範囲で調整するOSCTUNEレジスターがありますが、今回はこれを利用して、更に精度の良いクロックにする事や、PICの内蔵発振器の個別ばらつきを抑えたり、通信のボーレートでエラーレートをゼロに調整する応用が可能かどうかを考察してみたいと思います。


調査結果



スペックには±12.5%の調整ができるとありましたが、実際には-11.01%〜+11.76%の調整範囲でした。また直線性は下の部分と上の部分で、やや上向きの傾向となりました。(エクセルのデータ
恐らく個体差によるバラツキを考慮しての±12.5%の調整範囲と思われます。



※室温22度で測定。OSCTUNE=0を周波数変動0%とした。
理論値は、実測より直線性のある部分から傾きを抽出して使用。

考察



通信のボーレートのエラーレート改善
通信のボーレートは8MHzで動作させれば、1200〜38400bpsの一般的なボーレートであれば0.16%の精度で出ますが、
OSCTUNEの調整ステップは約0.35%ステップと荒く、これを使ってそのエラーレートの改善は現実的ではないでしょう。115Kbpsの通信レートですとエラーレートが8%位になるので、この調整が有効になるかもしれませんが、そこまで気を使うくらいなら外付けの水晶の利用など、別の方法を利用した方がよさそうです。


クロックの精度保証
実際の精度は温度に依存するため、これを使っても温度変化に対しては正確なクロックにはなりません。OSCTUNEの使い方としては、特定の使用温度に於いてクロックを微調整したり、変則的なクロック周波数を出力したいとき、または途中でクロックの周波数を変更する時に利用価値があるものと思います。ADコンバータと温度センサーでマイコン自らのクロックを随時校正するといったアイディアは有効と思います。



資料集



以下は、その調査用の回路やプログラムを公開しています。結果として実用的ではありませんでしたが、LCDの動作などのサンプルなどでご活用頂ければと思います。

回路図



回路図は以前作ったLCDシリアルの回路を流用して、U1を16F648から16F88へ交換し、Y1の8MHzを外して使用しています。
通信機能は使用しません。また、16F88の動作範囲はブラウンアウトリセットを使用しない場合でも4Vからの動作になっていますので、5V専用で使用します。LCDのコントラスト回路は一般的な可変抵抗による5Vの分圧でよいでしょう。PICの15番ピンに周波数カウンターを接続してモニターしながら調整します。出力は8MHzの1/4である2MHzが出力されます。

プログラムダウンロード

Date version Build Folder Device note
New!
2009/11/17
1.02 MPLAB8.40,Hitech PICC Pro lite mode v9.70 C:\picsrc\piccpro\osctune PIC16F87/88 Hitech PICC9.70対応
2009/1/12 1.01 MPLAB8.10以上、Hitech PICC Pro lite mode v9.60 PL4build3206以降
(PL3では正常動作しません)
C:\picsrc\piccpro\osctune PIC16F87/88 SC1602B(16桁2行)用
同梱のHEXは16F88用ですが、16F87の場合でも多分使用できると思います。
lcd.cの不具合を修正しました。

※MPLAB8.15以降に付属のPICC Pro v9.60 PL3や公式に公開されているPICC Pro v9.60 PL3を使用してLiteモードでビルドした場合、提供プログラムの一部が正常に動きません。(EEPROM部分のバグなど)。こちらを参考にして最新のPICC Proをダウンロードして使用してください。Folderで指定されているフォルダにmain.c等の全てを解凍すれば、プロジェクトがそのまま使用可能です。いずれもzipで圧縮されておりhexファイルが同梱されています。

使用方法

通電中の状態です。表示上段が実際にプログラムでセットする値となります。初回電源を入れると初期値は0x3Fになります。操作ボタンで変動率を操作します。
下段は目安として変動率をパーセントで表示しています。それですので、表示と実際の値が乖離する場合があります。
最低部の変動率。このPICでは1.762/2=88.1%ですから、およそ-11.9%になります
調整なしの状態は設定値0となります。1.981MHz/2MHzですから、99.05%ということでスペックの±2%に収まっていることになります。
最高部の変動率。このPICでは2.218/2=110.9%ですから、およそ10.9%になります。
調整値を覚えておきたいとき、RB0に接続されているボタンを押すとEEPROMのアドレス0番地にこのデータを記録します。後ほどPICkit2などでその部分を読みます。





2009/11/17 プログラム修正
2009/1/12 プログラム修正
2008/12/13 文章変更
2008/12/12 一部修正
2008/12/10 初版作成

(C)2008-2009 air variable All Rights Reserved..


ホーム