- ベストアンサー
PIC USART 全二重通信
2つのPIC(A, B)間でUSART機能を使用し、全二重通信を行いたいと考えています。 PIC(A)で送信を開始し、同じタイミングでPIC(B)からのデータを受信したい場合、 PIC(B)は送信レジスタにデータを入れておくだけで自動的に送信されるされるのでしょうか?それとも、受信を開始した直後くらいに何か送信設定を行う必要があるのでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
質問の意図がよく見えないですが、要は全二重で送信と受信をしたいということですね? 全二重の場合、それぞれ独立に考えてよいです。 即ち、受信バッファーが空でなければ、受信レジスタを読み出す。 送信バッファーが空ならば送信レジスタに書き込む。 だけです。 シリアルデータを1ビットづつ受信して、受信レジスタに格納して、受信ステータスを変更するまで と 送信レジスタから1ビットづつ送信して、送信ステータスを空にするまで、 の処理はUARTが自動でやってくれます。 ただし、受信の方はダブルバッファーになっており、受信レジスターのデータを読み出す前に次のデータが受信されてもオーバーランにはなりませんが、ダブルバッファーがフルになってもデータを読みにいかないとオーバーランエラーとなりますので、受信する方を優先してプログラムを組んだ方が良いでしょう。(一般的には割り込み処理を使います。)
お礼
ご回答有難うございました。 頭の中でUART通信とSPI通信が混同していました。