- 締切済み
PIC SPI通信
PIC16F1823で温度センサーからSPI通信でデータを取得しています。 正常時は問題なくデータを取得できますが、温度センサー側の電源が投入されていない状態か接続されていない状態で通信を行うと、PICの受信完了フラグ(SSP1STAbits.BF)バッファーフルステータスビットがフルになりません。 たとえ、センサー側の電源がOFFだとしても、SPIでデータを取得する場合、信号ラインは、HiかLowの電位であれば、データが00かFF等で間違ったデータを受信して、BFフラグがオンするのではないかと考えますがなりません。 なぜだか、ご存じの方いましたら、教えてください。 Arduinoでは、センサー側が未接続でも、関数は抜けてきます。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- kaba__san
- ベストアンサー率45% (27/59)
説明不足でした。 プルアップじゃありません。クロック信号がセンサ側の回路によりLowレベルへ固定されないように『直列』に抵抗を挿入してみてください。
- kuro804
- ベストアンサー率29% (523/1762)
こんにちは 本体側がセンサーの接続の有無と電源のオフ時を考慮した基本的なハードウエアの設計が成されていないのでしょう。 すでに回答があるように、センサー側との接続が行われる信号ラインの状況を考察して適切な処理が必要です。 ”抵抗を入れる”とは必ずしもプルアップを意味するものではないです。 直列に適切な箇所に挿入するという意味合いもあります。 Good luck!
- kaba__san
- ベストアンサー率45% (27/59)
SPIは自身のクロックピンの信号で8カウントしているので、クロック信号が無電源のセンサーに吸い込まれてHiレベルまで上げきれてないのではないでしょうか。 クロック信号に1kΩ程度の抵抗を挿入して試してみてはどうでしょう。
お礼
ありがとうございます。プルアップしても動作に変化はありません。 処理的には、カウンタで抜けるからいいのですが、理由が不明なのが気持ち悪くて。
お礼
ありがとうございます。確認してみます。