USART関連のレジスタは6本ある。
- UDR0は送受データの格納されるレジスタ。DはData。
- UBRR0H、UBRR0Lはボーレートを設定するレジスタ。BRはBaud Rate。
- UCSR0A~Cは制御&ステータスレジスタ。CSはControl & Status。
UDRn (USART Data Rgister n)
送受するデータを格納する。送受共通。
UCSRnAレジスタのUDREnビット(EはEmpytの意)が1であるときにUDRnレジスタに書き込むと、書き込んだデータがシリアルから送信される。
UCSRnA (USART Control and Status Register n A)
- RXCnビット(USART RX Complete n)
受信バッファーに未読データがあるとき(要するに受信したとき)は1。
受信バッファーが空のときは0。 - TXCnビット(USART TX Complete n)
フレーム全体が送り出されて送信バッファーが空のときは1。
送信完了割り込みが実行されたときは0。 - UDREnビット(USART Data Register Empty n)
送受バッファーが空のときは1。
送受バッファーが空でないときは0。 - FEnビット(Frame Error n)
受信バッファー内の次の文字の最初のストップビットが0のとき(フレームエラーのとき)は1。 - DORnビット(Data OverRun n)
受信バッファーが満杯で、かつ新たな文字が受信シフトレジスタに待っていて、かつ新たなスタートビットが検出されたとき(データオーバーランのとき)は1。 - UPEnビット(USART Parity Error n)
パリティエラーがあるときは1。 - U2Xnビット(Double the USART Transmission Speed n)
非同期動作時のみ有効。
1を書き込むと、非同期通信の転送速度が倍になる。 - MPCMnビット(Multi-processor Communication Mode n)
1を書き込むと、マルチプロセッサー通信モードが有効化されるため、アドレス情報を含まない受信フレームは無視される。送信には影響しない。
UCSRnB (USART Control and Status Register B n)
- RXCIEnビット(RX Complete Interupt Enable n)
- TXCIEnビット(TX Complete Interupt Enable n)
- UDRIEnビット(USART Data Register Empy Interrupt Enable n)
- RXENnビット(Receiver Enable n)
1を書き込むと、シリアル受信ができるようになる。 - TXENnビット(Transmitter n)
1を書き込むと、シリアル送信ができるようになる。 - UCSZn2ビット(Character Size n)
UCSRnCレジスタのUCSZn0ビット、UCSZn1ビットと組み合わせて、1フレームのデータビット数を設定する。
- RXB8nビット(Receive Data Bit 8 n)
データビット数を9に設定したときの9番目の受信データビット(ビット[8])。 - TXB8nビット(Transmit Data Bit 8 n)
データビット数を9に設定したときの9番目の送信データビット(ビット[8])。
UCSRnC (USART Control and Status Register n C)
- UMSELn1:0ビット (USART Mode Select)
この2ビットでUSARTの動作モードを選択する。
- UPMn1:0ビット(Parity Mode)
この2ビットで、パリティの有効化・無効化とパリティのタイプとを設定する。
- USBSnビット(Stop Bit Select)
ストップビットの数を設定する。
0を書き込むと1ビット。
1を書き込むと2ビット。 - UCSZn1:0ビット(Character Size n)
UCSRnBレジスタのUCSZn2ビットと組み合わせて、1フレームのデータビット数を設定する。
- UCPOLnビット(Clock Polarity)
同期モード時のみ使う。
非同期モードの使用時は、このビットを0にする。
0のときは、同期クロックの立ち上がりで送信データが変化し、同期クロックの立ち下がりで受信データが取り込まれる。
1のときは、同期クロックの立ち下がりで送信データが変化し、同期クロックの立ち上がりで受信データが取り込まれる。 - UBRRnLビット、UBRRnHビット (USART Baud Rate Registers)
下式で求めた12ビット値でボーレートを設定する。