Quantcast
Channel: JH7UBCブログ
Viewing all articles
Browse latest Browse all 440

PIC12F675 内蔵クロック周波数のキャリブレーション

$
0
0
 MPLABX XC8 PICkit3の環境で、PIC12F675にプログラムが書けて、ほっとしたとこです。

 Lチカ、割り込みを使ったLチカと進んできて、次の課題は、PIC12F675が持っていない機能であるシリアル通信とI2C通信の実験をやろうと思っています。

 それらのタイミングをとるのに、内臓クロック周波数の精度を調べてみようと思います。

 CONFIGで、FOSC = INTRCCLK とすれば、クロックの1/4の周波数(1MHz)が、GP4に出力されます。

 これを利用して、クロック周波数を周波数カウンタ(自作です)測定してみると

イメージ 1

 なんと、30%以上ござがあります。キャリブレーション値がOSCCALレジスタに書き込まれていないようです。

 さて、この環境で、どうしたらキャリブレーション値をPICに書き込むことができるのでしょうか。

 Web上で方法を探してみると、MPLABXのProject propatiesのXC8 Linkerを開いて設定するようです。

 さっそく、Calibration oscillator にチェックを入れ、Alternate oscillator calibratiom value に記録しておいたメーカー設定値「341C」を入れてみました。

イメージ 2

 赤い文字のエラーメッセージがでました。±00~99までの数値でないとだめなようです。

 1C=28なので、「3428」をキャリブレーション値にセットして(これでいいのか、疑問)、プログラムを書き込んで、周波数をチェックすると

イメージ 3

 誤差約3%になりました。この後、3420~3480の間で、周波数を測定してみましたが、最初の値が一番誤差が小さいようでした。

 クロック周波数ですが観察してみると、RC発振回路なので、100Hz台まで、ちょこちょこと周波数が変化します。

 でも、通信関係程度ならこの精度でもなんとかなるかな、と考えています。

 メーカーキャリブレーション値を消してしまった場合の対策につ紹介してるサイトは、いくつか見つかりました。

 今回は、メーカーキャリブレーション値を記録しておいたので、助かりました。
 

Viewing all articles
Browse latest Browse all 440

Trending Articles