ぼちぼちと謎の冶具に手をつけていましたが、目処が立ちました。
要はSPI通信。
PICと某ユニット間でSPI通信を行うテストをしていたわけですが、
これが すんなり動かなかった。
SPIを使うこと自体は初めてというわけじゃないのですが、
PICのMSSPを使って、他のユニットとSPI通信させたのが初だったんです。
以前はSXで、SPIの動作をソフトウェアで組みましたけど、
PICの場合はMSSPがハードウェアで処理してくれます。
便利なように聞こえるかもしれませんが、
前提条件としてMSSPをきちんと理解することが必要なわけでして、
はたしてこれが、簡単と言えるのかどうか・・・・・・
もっとも、Cでライブラリーを使っちゃう人には関係無い話なのかもしれませんね。
話を戻しまして、MSSPを設定してデーターを送信するものの、
ターゲットのユニットが きちんと受信してくれない模様。
MSSPの設定を見直しても変なところは見当たらず。
最後の手段としてロジックアナライザーを引っ張り出す。
これで直接データー波形を見てしまいます。
すると・・・・・・
データー文の最初の1バイトが欠けちゃってます。
PICと格闘してみたものの、原因は不明。
どうやら、MSSPを初期設定させた後の最初の1バイトは、正常に送信されないっぽい。
邪道な感じはするものの、ダミーのデーターを1バイト送出してから、
改めて本来のデーターを送信するようにしたら1発で解決。
たかがSPIで こんなに苦労してるんですから、
I2Cなんかになったら、どうなることやら・・・・・・ orz
むしろI2Cくらいになると、アセンブラで動かそうって人は居ないのかな?(笑)
0 件のコメント:
コメントを投稿