見出し画像

ATMEGAで学習しよう(レッスン8)

「USART 通信」


<目的>
・USART 通信について学ぶ。

<動作概要>
・ボーレートは9600 とする。
・SW1 が押されたらLED1 を反転させ'SW1 ON'を送信する。
(外部割り込み0)
・SW2 が押されたらLED2 を反転させ'SW2 ON'を送信する。
(外部割り込み1)
・1 文字受信したらED3 を反転させ受信した文字を送信する。

<ポイント>
・外部割り込みに関してはレッスン2 を流用する。
・SW1 とSW2 のチャタリング対策をする。
・最大ボーレートはクロックにより制限される。
クロックが低いとボーレートが高くなるほどに誤差が大きくなるが、クロックが高ければ必ず誤差が小さいかというとそうでもなく、クロックの周波数を吟味する必要がある。
誤差が±1.5%以下であれば実用上は問題ないと思われる。

<レジスタ説明>

UBRR0H とUBRR0L レジスタを使ってボーレートを設定します。
ボーレートはマイコンのクロックから生成されます。
低いクロックでは精度が低下してボーレートの最大速も低くなります。
メーカのデータシートによると、誤差±1.5%以内での使用が推奨されており、それによりボーレートの最大速が決まります。
具体的な設定について述べます。
下表はマイコンのクロックから希望のボーレートを得る場合の、UBPR レジスタの設定値です。
例として1MHz のときと8MHz のときのボーレートと設定値を記載します。
(他のクロック周波数については、マイコンのデータシート等を参照下さい)
・Microchip 社 ATMEGA88データシート(174ページ参照)

https://akizukidenshi.com/goodsaffix/ATmega48_88_168.pdf

・Microchip 社 ATMEGA328Pデータシート(182ページ参照)

https://akizukidenshi.com/goodsaffix/atmega328.pdf

例えばU2X =0、クロック1MHz においてボーレート2400 の場合UBPR=25 を設定します。
8MHz においてボーレート2400 の場合UBPR=207 を設定します。なお、誤差が±1.5%を超えるものは通信エラーの可能性が高くなるので使用に適しません。(下表で緑色のものが使用に適します)


<プログラム>

ここから先は

5,617字 / 5画像 / 1ファイル
この記事のみ ¥ 200
期間限定 PayPay支払いすると抽選でお得に!

この記事が気に入ったらサポートをしてみませんか?