アプリ版:「スタンプのみでお礼する」機能のリリースについて

現在PIC勉強中の初心者です。
教えて頂きたいのですが、

現在PIC16F877Aを2台使用して相互間をシリアル通信で結び、
一台のPICからの入力12点を二台目のPICの出力12点に出力するプログラムを作成中です。
現在は通信で1点の入力をうけ1点の出力にだすところまでは何とかできました。

そこで調べても合理的で良いやりかたが見つからなかったのでよく御存じの方に教えて頂きたいのですが、
12点の入力をどのようなやり方でまとめ、シリアル通信で送り、どのようなやり方で展開し12点の出力を出すのか良いやり方がありましたら教えて下さい。
(入力はRA,RE,RC,RDを使い、出力はRB,RC,RDを使用してます)
(自分としては2進数でまとめて2つ送ったらわかりやすいのではないかと思っているのですが..)

A 回答 (2件)

PICも含めて、いかなる組込みマイコンでシリアル通信を行う場合でも、その内蔵のシリアル通信機能を使えば、比較的簡単に「送信」する事は誰でも可能です。



問題は、シリアルデーターの2バイト以上の受信です。
(1)その内蔵のシリアル通信機能で、いつ来るか判らない「受信データー」を絶えず環視している必要が有る。->つまり割込処理とするか、あるいは絶えず受信のプログラムを優先的に動かしている必要があるという事です。

(2)内蔵機能であろうが、プログラムでのシリアル受信であろうが、1バイト以上連続して何バイトもデーターが送られて来る様な場合には、その間髪入れずに送られてくるバイトデーターを、取りこぼす事無く、次々と記憶する領域(バッファー)が必要となります。

PICの内蔵シリアル受信機能には、バイトバッファを2個持っています。つまり、2個までは連続したバイトデーターを取りこぼしする事無く自動で受信できますが、それ以上連続したバイトを受信すると、取りこぼしを起こすという事です。

今回は、2バイトで済むので、特に問題なく受信が可能と思いますが、あまりにも、通信のノイズに対する防御が無くて、今後のためにも、そのままの受信はお薦めできません。

詳しくは、下記サイトにPICでのシリアル通信で、割込型ソフトウエアFIFOバッファについて、やさしく詳しく教えています。

ご参照ください。これを知らないと、2バイト以上の受信が全てのマイコンで出来ません。
「パレットソフト」
http://www.palettesoft.co.jp/index.htm
HOME > 技術談話 > PIC microcontroller > シリアル通信

頑張って下さいね。
    • good
    • 0
この回答へのお礼

回答頂きありがとうございます。

読ませて頂き、いろいろ調べて理解できました。

今後のためにもソフトでバッファをもたせ1バイト以上の通信をするプログラムを作ろうと思います。

丁寧な説明を頂きありがとうございました。

お礼日時:2013/11/19 09:40

結局のところ 12個のデータを送受信するしかないわけだから, ある意味どうにもならないとはいえる. 「送信側では 12個のデータをシリアライズして何らかの方法で送り, 受信側で受け取ったデータをデシリアライズする」しかないよね.



そもそも, データの流れは
何らかのデバイスからのデータを 1台目の PIC が受け取り, それを 2台目の PIC に送る
でいい? もしそうだとすると,
「入力はRA,RE,RC,RDを使い、出力はRB,RC,RDを使用してます」
の「入力」とか「出力」ってなに? 「出力」が「1台目の PIC が 2台目の PIC にデータを送るための信号線」, 「入力」が「2台目の PIC が 1台目の PIC からデータを受け取るための信号線」の意味だとしたら, この 2つの本数が異なるのは明らかに異常でしょ?

あと「2進数でまとめて2つ送る」は何をしているのかさっぱり分からん.

この回答への補足

失礼しました、正確には
「ボタン入力はPIC1の12点を使い、LED出力はPIC2の12点を使用してます」ということです。

質問の説明が悪すぎましたすいません。

あと「2進数でまとめて2つ送る」なんですが、例えば
ボタン入力12点をPIC1でまとめて
data1=0b00000001;data2=0b00000000;
という形でPIC2におくれるかな
みたいになるかなと思ったのですが、素人考えなのですいません。

至らない質問でご迷惑おかけしますが、宜しくお願いします。

補足日時:2013/11/18 14:57
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2013/11/19 09:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!