nobcha23の日記

PICマイコンやArduinoを使う電子回路遊びを紹介します

PIC16F1829を使うICSPピン共通8−14−20基板でi2c

PIC16F1829を載せる8-14-20ピンPIC用基板ですが、周波数カウンタが動きました。

今回設計盛り込みはLCD表示用にPWMパルス源の用意です。ニッスイ電池2本駆動(2.5V)でLCD表示をしたいので、負電源が必要でその駆動ソースです。
今までの基板ではCLOCKOUTEN_ONにしてOSCから取ってましたが、もう少し周波数を下げた方が効率上がりマイナス電圧アップになると思い、CCPでクロックを作りました。
空きピン番の関係からCCP4を使いおよそ40kHzぐらいのパルスをPWMで発生させました。

結果はOKです。OSC2の時よりマイナス電圧が伸び、輝度調整範囲が向上。

次に取り組みはi2cです。ジャンクパーツ一個50円で買ったRTC-8583という新規採用のRTCを動かすのですが、一筋縄ではいかないだろうと、まずはi2cアドレススキャンでMCCP2が動いているのかを確かめることにしました。

アドレススキャンから取りかかかったのは正解でした。ところが、MSSP2が動きません。なんでーー。MSSP1なら動くのに。
一応信号配置は入れ替えできたので、計画変更でMSSP1にジャンパ線入れ替えで、アドレススキャンは動きました。RTC-8583さんも0xA0で応答してくれました。


PIC16F1829のMSSP2が動かんと言う情報をフォーラムとかエラッタとか探りましたが、MSSP2でSPIが動かないと言う情報しかありません。(この人はMSSP1でDS2307というチップをi2cで動かそうとして、HELPしてます。シリコンエラッタ資料ではMSSP2のSPIで問題あるようだが、i2cは大丈夫の様子。)

症状的にはMSSP2設定が無視されて、応答なしと言う感じです。
MSSP1とMSSP2に対して全く同じプログラムを用意し切り替えていますので、MSSP1は動くが、MSSP2は動かずという状況は間違いないと思います。・・・・こんなときに怪しいのはCコンパイラのhファイルかも。今のところそれを調べる余裕なく、ジャンパ線で乗り越えます。

はてなはてな

とりあえず、MSSP1に基板パターンカット、ジャンパ線にし、i2cでRTC-8583つないで次ステップに進みます。

一応DSO QUADでクロック波形を観測しておきます。