これは単純にPICを18F2550から18LF2550に置き換えてあるだけで、電源部分のC2、C3を除けば元の参考回路と何も変わらない。
ただし、元の参考回路図ではPICとLCDユニットとのRA0〜RA3、DB4〜DB7の配線の順番が正しくない様なのでそれだけは直してあります。
さー、とりあえず気圧センサーの初期設定指令とその完了確認、及び、内部のEEPROMチェックサムの良否をチェックする様にアセンブラーで記述して実験してみました・・
・・?・・SENSER INIT 表示のまま先に進まない・・
配線をチェックしても問題は見つからない!?
その後、ハードで信号のプルアップ、プルダウン、通信ラインに直列に100Ω、ソフトでは、タイミングの調整の為の細かなディレイを挿入したり、タイマー2を使って見たりしたが・・だめ・・
購入したばっかりの新兵器
IWATSU製 デジタルオシロスコープ DS-5110A 2ch 250MHz,100MHz,100MHz で波形をチェック!
結論として、PIC側がちゃんとクロックを発生しなかったり、発生できても何と想定の1/1000の250Hzだったり・・いずれにしても、センサーはぴくりとも反応していないのでした。あれまぁ・・
PICや気圧センサーを交換しても変わらない・・しかも、その気圧センサーをパレットソフトさんのハード回路へ乗せてやると、元気に動き出すのです・・
こ、これは面白くなってきた!
さて、どうするか?・・
原因は私のSPI通信の未経験にある!
これをアセンブラーで、しかもPICの内部ユニットを使って、いきなり気圧センサーと通信をやろうとしている所に無理がある・・
もっと単純なものから初めていればまだ何とかなったかもしれない!
16FシリーズでEEPROMとか温度センサーモジュールとか・・
INIT表示をしたままで進まなくなるのは一応解消した。
この18LF2550の内部ユニットを使って8ビット以上を開いてに送りつけるには8ビット送信直後に5msec程度(もっと短くても良いのかもしれないが)の待機をさせれば、処理が進んで行く事が解った・・
SPI用に用意されている内部ユニットのバッファーが8ビットなので、やっぱり無理が有る様な気がしてきました。でも、いずれにせよ気圧センサーは何も吐き出してはこないのでした。
こうなったら、アセンブラーをあきらめてLCD部分をHI-TECH Cで記述し直して、実績のあるパレットソフトさんの気圧センサーコントロールを18LF2550用に移植するのが良いのかもしれません・・
うーむ、C言語は少しは解るんだけど、C言語でPICかぁ・・
初心者なので先ずは、LEDの点滅プログラムから始めなくちゃあ〜と!
大変だこりゃ!
って、HI-TECH C 18Proも、MPLAB C18も、試用期限過ぎてた・・
もうこうなると、アセンブラーしか使えん・・
C言語と縁がないなぁ・・
あ、HI-TECH C 18Liteバージョンが無償だった・・
あーぁ、こりゃ先は長いなあ・・
まー、元々アセンブラーでやろうと思っていたのだからしょうがないか・・
とりあえず、ハード回路を一部設計変更をする事に・・
PICの内部ユニットを使わずにSPIを行う方式を採用するのであれば、SCK、SDO、SDIの専用ビットを気にする必要がないので、バラバラになってしまったLCD用の信号線を参考にしたアセンブラールーチンにあわせてPort_Bにまとめて、気圧センサーはPort_Aに、その他はPort_Cにまとめる事にしました。
そうすれば、LCD制御ルーチンや、気圧センサールーチンの統合もやりやすいだろうと思います。
(May. the 4th 2010)
|