2017年8月2日水曜日

冶具が動いた

ぼちぼちと謎の冶具に手をつけていましたが、目処が立ちました。

要は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 件のコメント:

コメントを投稿