Microchip AVR8 用のライブラリを自作する。(USART)

とりあえず非同期通信のみ実装してみた。送受信とも割込み処理とポーリング処理のどちらかを選択できるようになっているので最大通信速度とコードサイズの兼ね合いによりどちらか適切なほうで動作させることができる。

それと1本の信号線で送受信を行うモード(オープンドレイン&ループバックモード)にも対応してみた。但し、テストしてないので動くかどうかはわからないが...(-_-;)

AVR0/1シリーズでのボードレート周波数誤差補償は出来なくなるがUSART_ASYNC_BAUDRATE()マクロを使って通信速度を指定したほうがコードサイズは小さくなる。もし、通信エラーが出るようならマクロは使わないこと。

割込み処理の有効化はCONFIG_USART_ISRに1を設定する。
[avr8_config.h] #define CONFIG_USART_ISR 1

ポーリング処理の有効化はCONFIG_USART_ISRに0を設定する。但し、Usart::poll()を実行する必要あり。
[avr8_config.h] #define CONFIG_USART_ISR 0

受信バッファリングを有効化するにはCONFIG_USART_RXBUF_SIZEに1以上を設定。
[avr8_config.h] #define CONFIG_USART_RXBUF_SIZE 8

送信バッファリングを有効化するにはCONFIG_USART_TXBUF_SIZEに1以上を設定。
[avr8_config.h] #define CONFIG_USART_TXBUF_SIZE 8

【サンプルコード (Microchip Studio)】

【ライブラリ】

【関連投稿】
Microchip AVR8 用のライブラリを自作する。(GPIO)
Microchip AVR8 用のライブラリを自作する。(FUSE)
Microchip AVR8 用のライブラリを自作する。(CLOCK)
Microchip AVR8 用のライブラリを自作する。(RESET)
Microchip AVR8 用のライブラリを自作する。(PORTMUX)
Microchip AVR8 用のライブラリを自作する。(USART)
Microchip AVR8 用のライブラリを自作する。(RTC)
Microchip AVR8 用のライブラリを自作する。(TCA)
Microchip AVR8 用のライブラリを自作する。(TCB)
Microchip AVR8 用のライブラリを自作する。(VREF)
Microchip AVR8 用のライブラリを自作する。(DAC)
Microchip AVR8 用のライブラリを自作する。(AC)
Microchip AVR8 用のライブラリを自作する。(ADC)
Microchip AVR8 用のライブラリを自作する。(ZCD)
Microchip AVR8 用のライブラリを自作する。(SPI)
Microchip AVR8 用のライブラリを自作する。(TWI)
Microchip AVR8 用のライブラリを自作する。(YIELD)
Microchip AVR8 用のライブラリを自作する。(CONFIG)