音による12F675/12F629のOSCCAL調査プログラム

Topics PICC lite Exam OSCCAL TIMER0 Interrupt PIC12F629 PIC12F675

OSCCALの工場設定値はPickit2があれば、メニューのTools ->OSCCAL -> Regenerateで簡単に再設定する事が可能です。下記プログラムは参考として掲載しております。


概要

このプログラムは、最終番地にあるOSCCAL用のデータを消してしまったとき、それを復活させる為に、音で確認しながら探る手法をとったプログラムです。これならば、周波数カウンターとかが無くてもなんとかなりそうです。
ワンポイントの方でも「OSCCAL値の工場設定値を消してしまったら・・・・」で取り上げましたが、PICから一定の音程を出しながら、正確な音の出る装置(ソフトウエア音源など)をつかって、ギターのチューニングの要領で耳で聞きながら調整する方法を取りました。

このプログラムは暫定的でTIMER0で行っているため、音として数パーセントの誤差はありますがなんとか実用になる範囲で使えるものとして判断し、公開しております。

回路図

押しボタン3個とLED、ピエゾ(圧電素子)という至ってシンプルな構成です。電源は出来れば5Vの安定化電源を使用したいところですが、実用上は3Vの電池でも良いでしょう。

プログラムファイル

実行(Hex)ファイルを含めZIP形式で圧縮してあります。ファイルの中にあるreadme.txtを参照ください。12F629の場合は、Hexファイルをそのまま使えると思います。

使用方法

買ってきたPICにこのプログラムを書き込み、動作させると、EEPROMデータエリアの最終番地にEEPROMプログラムエリアのデータをコピーします。その後、OSCCALを元にした発振音が約440Hz(鍵盤でいう「ラ」の音)が出ます。S2とS4を押すとOSCCALが変動し、それぞれ音が上下します。S3を押せばEEPROMアドレスの先頭に現在のOSCCALを書き込みます。LEDが点灯中はEEPROMに書き込んでいる最中ですので、電源を切らないようにしてください。
音感に自信のある方は「ラ」の音を探り当て、S3を押します。リコーダーやギターの音さなど、身近な物で工夫してみましょう。セットが終わったら、電源を切り、EEPROMデータエリアをライターで覗き、0x00番地に書いてある内容を0x3FFのプログラム最終番地に"34xx"という値で書き込みます。秋月のライターならば「PIC内部のキャリブレーションを使用する」のチェックボックスを外して手動で書き込めると思います。
キャリブレーションデータエリア0x3FFに不正なデータが書き込まれている場合はプログラムが動かないかもしれません。その場合は、ダミーで0x3FFのプログラム最終番地に"3480"と中心の値を入れてから実行して見てください。

その他

プログラムの最終番地(0x3ff)にはOSCCALデータが入っているのですが、この値の下位4ビットはチップの仕様書によると0,4,8,Cと4種類しかありません。しかし、私が持っていたデバイスでは0xBFの値を持った物がありました。ですので、S2,S4を操作せずにS3で書き込んで、後でデバイスを見ると初期値と書き込まれたデータが違うことがあります。


2008/8/22 Pickit2でOSCCALが設定できる説明追加
2007/12/9 暫定解除
2006/10/1 初版

(C)2006 air variable All Rights Reserved..


ホーム