• ベストアンサー

PIC USART 全二重通信

2つのPIC(A, B)間でUSART機能を使用し、全二重通信を行いたいと考えています。 PIC(A)で送信を開始し、同じタイミングでPIC(B)からのデータを受信したい場合、 PIC(B)は送信レジスタにデータを入れておくだけで自動的に送信されるされるのでしょうか?それとも、受信を開始した直後くらいに何か送信設定を行う必要があるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • KEIS050162
  • ベストアンサー率47% (890/1879)
回答No.1

質問の意図がよく見えないですが、要は全二重で送信と受信をしたいということですね? 全二重の場合、それぞれ独立に考えてよいです。 即ち、受信バッファーが空でなければ、受信レジスタを読み出す。 送信バッファーが空ならば送信レジスタに書き込む。 だけです。 シリアルデータを1ビットづつ受信して、受信レジスタに格納して、受信ステータスを変更するまで と 送信レジスタから1ビットづつ送信して、送信ステータスを空にするまで、 の処理はUARTが自動でやってくれます。 ただし、受信の方はダブルバッファーになっており、受信レジスターのデータを読み出す前に次のデータが受信されてもオーバーランにはなりませんが、ダブルバッファーがフルになってもデータを読みにいかないとオーバーランエラーとなりますので、受信する方を優先してプログラムを組んだ方が良いでしょう。(一般的には割り込み処理を使います。)

hondafit
質問者

お礼

ご回答有難うございました。 頭の中でUART通信とSPI通信が混同していました。