2023.1.17
前へ
次へ
ホームページトップへ戻る


PIC−USBIO using BASIC

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
USBインターフェースを内蔵したPICを使ってWindowsパソコンで外部回路を制御するための各種I/O基板の製作記事です。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

[第158回]



●PICUSBIO−03(107)EUSART(9)同期モード(2)マスター受信モード

前回は同期マスター送信モードについて説明しました。
今回は同期マスター受信モードです。


[出典]Microchip Technology Inc. PIC18F13K50/14K50 Data Sheet

●同期マスター受信モード

データはRX/DT端子で受信します。
RX/DT端子の出力ドライバはEUSARTを同期マスター受信モードに設定したときは対応するTRISビットをセットして(’1’にして)無効にしなければなりません。

同期モードでは受信はシングル受信イネーブルビット(RCSTAレジスタのSREN)か継続受信イネーブルビット(RCSTAレジスタのCREN)をセットすることでイネーブル(有効)になります。

SRENをセットしてCRENをクリアすると1文字ビット分の数のクロックだけが生成されます。
SRENビットは1文字の受信が完了すると自動的にクリアされます。
CRENをセットするとクロックはCRENをクリアするまで継続して生成されます。
文字データを受信している途中でCRENをクリアするとCK端子のクロックは直ちに停止され受信途中の文字データは破棄されます。
SRENとCRENを共にセットすると最初の文字データの受信を完了したときにSRENがクリアされてそれ以後はCRENだけが優先的に継続されます。

受信を開始するにはSRENかCRENをセットします。
RX/DT端子から入力されるデータはTX/CKクロックの下がりエッジでサンプリングされて受信シフトレジスタ(RSR)にシフト入力されます。
受信文字データがRSRに完全にシフト入力されるとRCIFビットがセットされそのデータは2文字分の受信FIFOに送られます。
RCREGを読むと受信FIFOのトップのデータが読み出されます。
RCIFは受信FIFOに未読データが残っている間はセットされたままになります。


[出典]Microchip Technology Inc. PIC18F13K50/14K50 Data Sheet

●スレーブクロック

同期データ通信ではデータラインのほかにデータに同期するクロックラインを使います。
スレーブデバイスはTX/CKラインのクロックを受信します。
TX/CK端子の出力ドライバはEUSARTが同期スレーブ送信またはスレーブ受信モードに設定されているときは対応するTRISビットをセットして(’1’にして)無効にしなければなりません。
シリアルデータビットはクロックの立ち上がりエッジごとに変化します。
データビットはクロックサイクルごとに送出されます。
データビットの数だけのクロックが受信されます。


[出典]Microchip Technology Inc. PIC18F13K50/14K50 Data Sheet

●受信オーバーランエラー

受信FIFOバッファは2文字分のデータを保持できます。
FIFOに2文字分のデータがあって満杯の状態のときにRCREGがアクセスされる前にそこに3番目のデータが来るとオーバーランエラーが発生し、RCSTAレジスタのOERRビットがセットされます。
FIFOにあるデータは上書きされません。
すでにFIFOバッファにある2文字分のデータは読み出せますがエラーが解消されるまでは新しい文字データは受信できません。
OERRビットはオーバラン状態が解消されるまではクリアできません。
SRENビットがセットされていてCRENがクリアされているときにオーバーランエラーが発生したときは、そのエラーはRCREGを読むことでクリアされます。
CRENビットがセットされているときにオーバーランエラーが発生したときは、そのエラー状態はRCSTAレジスタのCRENビットをクリアするか、SPENビットをクリアしてEUSARTをリセットすることで解消されます。


[出典]Microchip Technology Inc. PIC18F13K50/14K50 Data Sheet

●同期マスター受信のセットアップ

1.SPBRGHおよびSPBRGレジスタに値を設定します。
  適切なデバイスボーレートを設定するためにBRGHおよびBRG16ビットをセット、クリアします。
2.SYNC、SPENおよびCSRCの各ビットをセットして同期マスターシリアルポートをイネーブル(有効)にします。
 RX/DTおよびTX/CKの出力ドライバは対応するTRISビットをセットする(’1’にする)ことで無効にします。
3.CRENおよびSRENビットがクリアされていることを確認します。
4.本稿では割込みは扱いませんのでこの項は省略します。
5.本稿では9ビットモードは扱いませんのでこの項は省略します。
6.SRENビットをセットするか、継続受信をするためにCRENビットをセットすることによって受信を開始します。
7.本稿では割込みは扱いませんのでこの項は省略します。
8.RCSTAレジスタを読むことでエラーが発生しているかどうかを確認します。
9.RCREGレジスタを読んで8ビットの受信データを取得します。
10.もしもオーバーランエラーが発生したら、RCSTAレジスタのCRENビットをクリアするか、SPENビットをクリアしてEUSARTをリセットすることでエラーをクリアします。

同期マスター受信モード波形図

[出典]Microchip Technology Inc. PIC18F13K50/14K50 Data Sheet

同期マスター受信に関係するレジスタの一覧表

[出典]Microchip Technology Inc. PIC18F13K50/14K50 Data Sheet

−=未実装。’0’が読み出される。アミのかかったビットは同期マスター受信では使用されない。

PIC−USBIO using BASIC[第158回]
2023.1.17upload

前へ
次へ
ホームページトップへ戻る