Arduinoで遊ぶページ

Arduinoで遊んだ結果を残すページです。
garretlab
シリアル通信関連のレジスタ

シリアル通信関連のレジスタ

概要

シリアル通信関連のレジスタです。

UDRn

UDRnは送受信用のバッファです。送受信で同じアドレスを共用します。

UDRn
ビット 7 6 5 4 3 2 1 0
名称 RXB[7:0]
名称 TXB[7:0]

UCSRnAのUDREnフラグが設定されているときにだけ、送信バッファにデータを書き込むことができます。

UCSRnA

UCSRnA(USART Control and Status Register n A)は、シリアル通信の制御や状態を表すためのレジスタです。

UCSRnA
ビット 7 6 5 4 3 2 1 0
名称 RXCn TXCn UDREn FEn DORn UPEn U2Xn MPCMn

RXCn(USART Receive Complete)は、未読み出しの受信データが受信バッファに存在するときに1になります。

TXCn(USART Transmit Complete)は、送信バッファに未送信のデータがないときに1になります。

UDREn(USART Data Register Empty)は、送信バッファにデータを書き込むことができるとき1になります。

FEn(Frame Error)は、受信バッファ内の次の文字にフレームエラーが発生したときに1になります。

DORn(Data OverRun)は、データオーバーランを検出すると1になります。受信バッファが満杯のときに、新たにスタートビットを検出するとデータオーバーランが発生します。

UPEn(USART Parity Error)は、受信バッファ内の次のフレームにパリティエラーが発生したときに設定されます。

U2Xn(Double the USART Transmission Speed)は、非同期通信のときだけ有効で、1を設定すると、分周比を16から8にします。結果として通信速度が2倍になります。

MPCMn(Multi-processor Communication Mode)に1を設定すると、マルチプロセッサ通信モードが有効になります。アドレス情報を含まない受信データが無視されます。

UCSRnB

UCSRnB(USART Control and Status Register n B)は、シリアル通信の制御や状態を表すためのレジスタです。

UCSRnB
ビット 7 6 5 4 3 2 1 0
名称 RXCIEn TXCIEn UDRIEn RXENn TXENn UCSZn2 RXB8n TXB8n

RXCIEn(RX Complete Interrupt Enable n)を1にすると、RXCnフラグの割り込みを許可します。

TXCIEn(TX Complete Interrupt Enable n)を1にすると、TXCnフラグの割り込みを許可します。

UDRIEn(USART Data Register Empty Interrupt Enable n)を1にすると、UDREnフラグの割り込みを許可します。

RXENn(Receiver Enable n)を1にすると、USARTの受信を許可します。

TXENn(Transmitter Enable n)を1にすると、USARTの送信を許可します。

UCSZn2(Character Size n)とUCSZn1、UCSZn0の3ビットで、データのビット長を表します。

RXB8n(Receive Data Bit 8 n)は、9ビット長のデータを受信したときの9番目のビットです。

TXB8n(Transmit Data Bit 8 n)は、9ビット長のデータを送信するときの9番目のビットです。

UCSRnC

UCSRnC(USART Control and Status Register n C)は、パリティやストップビットの設定を行うためのレジスタです。

UCSRnC
ビット 7 6 5 4 3 2 1 0
名称 UMSELn1 UMSELn0 UPMn1 UPMn0 USBSn UCSZn1 UCSZn0 UCPOLn

UMSELnは、以下に示す動作モードを設定します。デフォルトは非同期USARTです。

UMSELn1 UMSELn0 モード
0 0 非同期USART
0 1 同期USART
1 0 予約
1 1 マスターSPI

UPMnは、パリティ生成と検査の設定を行います。デフォルトは禁止です。

UPMn1 UPMn0 パリティモード
0 0 無効
0 1 予約同期USART
1 0 有効、偶数パリティ
1 1 有効、奇数パリティ

USBSnは、送信時に挿入されるストップビットのビット数を指定します。0のとき1ビット、1のとき2ビットです。デフォルトは1ビットです。

UCSZnは、UCSRnBで定義されているUCSZn2とあわせて、データのビット長を表します。デフォルトは8ビットです。

UCSZn2 UCSZn1 UCSZn0 文字長
0 0 0 5ビット
0 0 1 6ビット
0 1 0 7ビット
0 1 1 8ビット
1 0 0 予約
1 0 1 予約
1 1 0 予約
1 1 1 9ビット

UCPOLnは、クロック極性を設定します。同期モードのときだけ使います。非同期モードのときは0を設定します。

UBRRnL、UBRRnH

UBRRnLとUBRRnH(USART Baud Rate Registers)は、UCSRnAのU2Xnと合わせて通信速度を決めるレジスタです。

UBRRnH、UBRRnL
ビット 7 6 5 4 3 2 1 0
UBRRnH - - - - UBRRn[11:8]
UBRRnL UBRRn[7:0]

UBRRnHとUBRRnLとを合わせた16ビットのうち、12ビットが有効な値です。UBRRnと通信速度(BAUD)の関係は、以下の通りです。F_CPUはシステムクロックです。

  1. U2Xn = 0のとき
    BAUD = F_CPU / (16 (UBRRn + 1))
    UBRRn = (F_CPU / (16 * BAUD)) - 1
  2. U2Xn = 1のとき
    BAUD = F_CPU / 8 (UBRRn + 1)
    UBRRn = (F_CPU / (8 * BAUD)) - 1

バージョン

Arduino 1.8.2



メニューを表示するためにJavaScriptを有効にしてください。

Arduinoで遊ぶページ
Copyright © 2017 garretlab all rights reserved.
inserted by FC2 system