このQ&Aは役に立ちましたか?
pic同士のシリアル通信について
2010/03/24 12:31
- pic同士のシリアル通信は可能なのか
- シリアル通信でデータを送信するプログラムはどのようなものか
- txピンとrxピンを使用した接続でpic同士の通信は可能なのか
pic 同士のシリアル通信
picから別のpicにシリアル通信でデータを送ることは可能なのでしょうか?
また、出来るとしたらどのようなプログラムになるでしょうか?
上記質問に追記です。
送信側はtxピン、受信側はrxピンという接続で可能でしょうか?
回答 (3件中 1~3件目)
シリアル通信ができるかという観点で回答します。
他の方がおっしゃるように、USART機能内蔵のPICなら比較的簡単です。
>送信側はtxピン、受信側はrxピンという接続で可能でしょうか
OKです。
同じ基板内なら電圧変換もいらないので、直結できます。
>出来るとしたらどのようなプログラムになるでしょうか?
何の言語を使ってますか?
アセンブリ?C(種類も)?BASIC(種類も)?パスカル?
私は主にmikroBasicを使ってますが、ライブラリがあるので送受信とも比較的楽にプログラムできます。
USART機能のないPICでも、ソフトUSARTライブラリがあるので同じように使用可能です。
一からアセンブリ言語でプログラムだとしたら、ここの掲示板の範疇を超えます。
なお、シリアルといってもUSART以外に、I2C、SPI、CANもサポートされています。
何がしたいかを具体的に書くと、もっと有効な回答がもらえると思われます。
このQ&Aは役に立ちましたか?
この質問は投稿から一年以上経過しています。
解決しない場合、新しい質問の投稿をおすすめします。
回答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
同じ基板内でしたらポートをパタパタさせるやり方でも
調歩同期でもいろいろ可能です。
プロトコルは自分で勝手に決めてもいいです。
少し離れたところだったら232Cだとか
RS485だと距離も離しても大丈夫です。
プログラムはプロトコルを決めて、それにしたがって組むしかありませんので
できないのであれば依頼するほうがいいかもしれません。
通信エラー時の処理とか、電源ONのタイミング差とかいろいろあります。
送信側はtxピン、受信側はrxピンですね。
相手側からみると逆になります。