PICのRTCC水晶発振子について

PIC32

PICでLCDに時計を表示させたいと思い、RTCCを設定してみました。

動きません。。。

マニュアルのCLOCK DIAGRAMを見ると、内部LPRCを使えないPICでした。

0fb16472fa33ac6fdb60e24d890f8a4d

PIC32では繋がってないじゃん。水晶発振子を付ける必要があります。マニュアルにはLPRCを選択する設定がありますが、PICシリーズは大抵同じレジスタ構造なので、設定があるだけなんでしょう。

うるう年や月の日数を計算してBCDでプログラムを書くのは面倒すぎるし、電源を入れるたびに設定するのはあり得ないのでRTCを付ける予定はありあますが、1秒毎に読み出していたのでは話になりません。

秒のずれを補正するために1日に1回くらいはRTCで更新しようかな位です。LPRCで適当に動いてくれればいいだけなのですが、仕方がないので水晶発振子を付けてみました。

ec1a4dc0118a399cdc637dcb16fb88e3

動きませんorz

リセットするたびに固定値より3秒ほど進んでいます。なので多分発振していないんだろうなと思いましたが、調べるとやはりダンピング抵抗が必要のようです。

PICで気圧、温度、湿度計 by 24FJ64GA002 その2内蔵リアルタイム・クロック・カレンダも使う?

よく頑張りました。尊敬です。とりあえず京セラではざっくり330kΩ程度は推奨しているようです。PIC32のフォーラムでも100kを使った回路図になっていました。低い周波数の水晶発振子は特にちゃんとした回路を組まないと発振不良するみたいです。

フォーラムの通り100kを付けてみたところついに動きました!

601103f3ff40d7c2ca50f215b24f5593

ダンピング抵抗は必ず SOSCOに繋ぎます。330kがいいような気もしますが、製品として売る場合には水晶の作っている会社に送ってマッチングを依頼するのですが、流石にそれはないので100kで動いたぞ的な報告ですね。回路を指で触っても動き続けると最高です。

LPRCは選択できるけど内部回路では繋がっていないとか、水晶は発振しないわで、ひどく時間がかかりましたが、この抵抗を付けていない回路図を多数見かけたました。かなり良くないと思います。リンクの説明ではそのうち水晶発振子が壊れるかもと書いてありますね。「そのうち」が厄介です。

LPRCを使えたらRTCの通信プログラムを書くだけだったのですが大変な遠回りをしました。

ん?RTCには32.768kHzで出力するPinがあったじゃないですか。最初からそこに繋げばいいだけでした。orz


無理やりLPRCを使う方法を考えました。

c2c782e567b34cfd631e713e3e4cc997

LPRCを使ってN=2,M=0で、REFCLKOからSOSICに繋ぎます。精度の問題ですが、セクション29 リアルタイムクロック カレンダ(RTCC)に調整方法が書いてあります。

5d68ff6b7e2c3a3064c2d2dcbc7b3047

11aa4a523baa31ac642b8b6786847e2f

多分実用に耐えると思います。あとはPICをバッテリーバックアップできる回路がちゃんとしていればおkです。

PIC32


PAGE TOP
Top