シリアル通信関連のレジスタ
概要
シリアル通信関連のレジスタです。
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 | ||||||||
---|---|---|---|---|---|---|---|---|
ビット | 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 | 予約 |
1 | 0 | 有効、偶数パリティ |
1 | 1 | 有効、奇数パリティ |
- USBSn
- 送信時に挿入されるストップビットのビット数を指定します。0のとき1ビット、1のとき2ビットです。デフォルトは1ビットです。
- UCSZn2、UCSZn1、UCSZn0
- データのビット長を表します。デフォルトは8ビットです。
UCSZn2 | UCSXn1 | 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と合わせて通信速度を決めるレジスタです。
UBRRnL、UBRRnH | |||||||||
---|---|---|---|---|---|---|---|---|---|
ビット | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
UBRRnH | - | - | - | - | UBRRn[11:8] | ||||
UBRRnL | UBRRn[7:0: | ||||||||
UBRRnHとUBRRnLとを合わせた16ビットのうち、12ビットが有効な値です。UBRRnと通信速度(BAUD)の関係は、以下の通りです。F_CPUはシステムクロックです。
- U2Xn = 0のとき
- BAUD = F_CPU / (16 (UBRRn + 1))
- UBRRn = (F_CPU / (16 * BAUD)) - 1
- U2Xn = 1のとき
- BAUD = F_CPU / 8 (UBRRn + 1)
- UBRRn = (F_CPU / (8 * BAUD)) - 1
バージョン
Arduino AVR Boards 1.8.6
最終更新日
March 21, 2023