ここから本文です

PICマイコンSPI通信で苦労してます。 SPI通信でmaster1と複数のslaveで通信させ...

vwg********さん

2016/9/600:04:40

PICマイコンSPI通信で苦労してます。

SPI通信でmaster1と複数のslaveで通信させたいと思います。
ハード的にはできるのですが、ソフト面がうまくいかず苦労しています。

今までmaster←→slaveの1対1通信というより、どちらかというとmaster→slaveの一方通行を下記のURLを参考に作りました。

http://www.geocities.jp/zattouka/GarageHouse/micon/SPI/SPI2.htm

masterのSSPBUFにデータをいれ、slaveはSSPIFにフラグがたったら受信するという方法です。
ですが、SPIは本来masterとslaveでデータ交換をすることで通信を成立させることにあると思います。

次回作ろうと思っているのはは複数のSlaveと通信し、それらのSlaveに情報を送るだけでなく、情報の受信させることを考えています。従来(下記)のプログラムでは無理なのはわかっています。専用のルーチンを作る必要があるのですが、できればライブラリの利用も考えています。XC8で利用可能なライブラリか、専用のルーチンが記載されているWebページなどがあればお教え願えませんか?

masterはPIC16F887、slave3台(PIC16F886)をmasterのRB0~RB2でSlaveを切り替えようと思っています。


master側
for(j=0;str[j]!='\0';j++){
SSPBUF = str[j];
__delay_ms(300);
}


Slave側
while(1) {
if (SSPIF == 1) {
TXREG = SSPBUF;
SSPIF = 0 ;
}
}
※UARTでLCDディスプレイに表示

閲覧数:
819
回答数:
3
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

bla********さん

2016/9/710:40:30

「電子工作のためのPIC16F1ファミリ活用ガイドブック」という書籍にMSSP(SPIモード)の使い方についてわかりやすく解説されています。

さすがに転載はマズイでしょうがから書きませんがサンプルコードも載っています。

XC8コンパイラを対象にした本なので他のモジュールの使い方の参考にもなりお勧めです。

  • 質問者

    vwg********さん

    2016/9/711:23:03

    実は私もその本、持っています。PIC16F1826などをPIC16F886用に改変して使おうと購入したものです。
    SPIのリードライトのルーチンは書かれてありますが、実際にこのルーチンをどう利用して通信するのか使用方法が良くわかりません。しかも今回は複数のデバイスと通信するのでロジックがわかりません。
    その辺をお教え願えれば幸いです。

  • その他の返信(4件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

質問した人からのコメント

2016/9/9 21:49:53

本当に助かりました。初心者に懇切丁寧に答えて頂き本当に助かりました。
ありがとうございます。

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

yam********さん

2016/9/622:36:27

オレはXC8使ってないからわかんないけど、もともとSPIは一対多の通信規格。

ライブラリないの?

別質問でも見たけど、I2Cもライブラリないの?

そんな単純なサンプルコードも公開されてないの?

muj********さん

2016/9/621:02:03

がんばれ!
やる気があるならがんばれ!

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる