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

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

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

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

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

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

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

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

【サンプルコード】

【ライブラリ】

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください