本文へ移動
サポートシェアリングソリューション
OKWAVE Plus

このQ&Aは役に立ちましたか?

締切済み
※ ChatGPTを利用し、要約された質問です(原文:pic 同士のシリアル通信)

pic同士のシリアル通信について

2023/10/18 07:46

このQ&Aのポイント
  • pic同士のシリアル通信は可能なのか
  • シリアル通信でデータを送信するプログラムはどのようなものか
  • txピンとrxピンを使用した接続でpic同士の通信は可能なのか
※ 以下は、質問の原文です

pic 同士のシリアル通信

2010/03/24 12:31

picから別のpicにシリアル通信でデータを送ることは可能なのでしょうか?
また、出来るとしたらどのようなプログラムになるでしょうか?

上記質問に追記です。
送信側はtxピン、受信側はrxピンという接続で可能でしょうか?

回答 (3件中 1~3件目)

2010/03/24 15:13
回答No.3

シリアル通信ができるかという観点で回答します。

他の方がおっしゃるように、USART機能内蔵のPICなら比較的簡単です。

>送信側はtxピン、受信側はrxピンという接続で可能でしょうか

OKです。

同じ基板内なら電圧変換もいらないので、直結できます。

>出来るとしたらどのようなプログラムになるでしょうか?

何の言語を使ってますか?

アセンブリ?C(種類も)?BASIC(種類も)?パスカル?

私は主にmikroBasicを使ってますが、ライブラリがあるので送受信とも比較的楽にプログラムできます。

USART機能のないPICでも、ソフトUSARTライブラリがあるので同じように使用可能です。

一からアセンブリ言語でプログラムだとしたら、ここの掲示板の範疇を超えます。

なお、シリアルといってもUSART以外に、I2C、SPI、CANもサポートされています。

何がしたいかを具体的に書くと、もっと有効な回答がもらえると思われます。

このQ&Aは役に立ちましたか?

この質問は投稿から一年以上経過しています。
解決しない場合、新しい質問の投稿をおすすめします。

質問する
2010/03/24 14:48
回答No.2

回答1さんへ
多分それではわからない
(それでわかるようなら、質問せず さっさと作ってる)と思う

可能

パラレルのほうが簡単だと思う

ポートは
通信データバスと(8bit分あければいいけど)

RD 読み取りました
WD 書き込みました

を各1BIT ぶん 用意すればいい

送信側は 通信データバス に 送りたい データを 書き込み WDビットを HI にします(RDビットHIのときは 読み込み中なので 送れません)

受信側は WDビットを 見て HIになっていれば 通信バスを読み込み RDビットをHIにします(WDビットHIのときは 読み込み中なので 送れません)

これで1バイト分送れます

これを繰り返す

ハンドシェイクの基本


BUSY(忙しいので読み込めませんor書き込めません)
エラー訂正(エラーが発生したので どうにかしてくれ 
などを必要に応じて 追加してください

プロトコルは
http://e-words.jp/w/E38397E383ADE38388E382B3E383AB.html
勝手に決めていいです

通信時に上記の方法では 受信側はどこまでデータが送られてくるのかわからないので
ヘッダー(一番初めに全データ数を送っておく)

100バイト 送りたいとき
最初に送信側から 100 を 送り
受信側は これから 100バイト 送られて来るんだ と知るしることができます

パソコン→PICですが 
http://www.picfun.com/parallel00.html

シリアルの場合
上記方法のバス幅が1BITになってるだけで 基本 同じだが
ビットズレを防ぐ ためにいろいろやらないといけない

スタートビット と ストップビット を 使う

モールス信号を例に
SOS
・・・ = S
--- = O
・・・ = S

・・・---・・・
の連呼だが

VMS
・・・- = V
--   = M
・・・  = S

でも
・・・---・・・

になり区別がつかない
本当は信号と信号の間に 間を空けるんだけど


一本の線で スタートビット ストップビット も送れるけど
同期 がずれると 半ビットズレとか起こるので

やっぱり ハンドシェイクで送ったほうがいい
(232Cとかの普及のせいで 一般的ではないけどね)

ぐぐってもいいところが出てこない


232Cの例
同期/非同期(調歩) 
http://www.contec.co.jp/product/device/serial/basic.html

2010/03/24 13:55
回答No.1

同じ基板内でしたらポートをパタパタさせるやり方でも
調歩同期でもいろいろ可能です。
プロトコルは自分で勝手に決めてもいいです。

少し離れたところだったら232Cだとか
RS485だと距離も離しても大丈夫です。

プログラムはプロトコルを決めて、それにしたがって組むしかありませんので
できないのであれば依頼するほうがいいかもしれません。

通信エラー時の処理とか、電源ONのタイミング差とかいろいろあります。

送信側はtxピン、受信側はrxピンですね。
相手側からみると逆になります。

お礼をおくりました

さらに、この回答をベストアンサーに選びますか?

ベストアンサーを選ぶと質問が締切られます。
なおベストアンサーを選びなおすことはできません。