« AVRで作成中 | トップページ | リモコン完成(未装着) »

2013年12月24日 (火)

CR発振で19200は可能?

AVRのATmega48の内蔵CR発信器は8MHz±10%以内に工場出荷時に調整されているそうだ。

DIV8ビットが有効の場合は1MHzに分周される。つまり1MHz±1.3%以内ってわけ。

ATmega48のUSARTの1段目分周は16、つまり19200bitの1bitを1/16単位で同期補正する。
なので0x55や0xAAとかは相当ズレてても大丈夫なわけだ。
問題は0または1が最大に連続した場合の積算誤差が1clockを超えちゃった場合だ。

8bit+1stなので最大9bitは0が連続する可能性がある。めんどいので10bit連続として・・・
1clockの70%以内と考えると、、

(1/19200)*10=(1/X)*10±(1/19200*0.3)  とかやって・・・

18640~19794bpsまでは19200bpsとして通信OKという計算。 これは19200±3.0%誤差までなら通信エラーは起きない、ということだ。

内蔵CR発振時、1MHz/19200=53div、1.3%/53=0.03%以下なので、8MHz±10%の場合でもUSARTで
19200bpsの通信はまったく問題ないと判断できそう。

ただしここではCR発振の温度偏差は抜きで考えている。ま、趣味で使う分には充分な精度ってことだね。

PS:追記 後日CR発振で実際に19200bpsが問題なく行えました。 しかし車載したところ、初夏の灼熱社内温度上昇であっさり通信できなくなりました。 やはりCR発振は温度編差が大きいってことですね。

|

« AVRで作成中 | トップページ | リモコン完成(未装着) »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: CR発振で19200は可能?:

« AVRで作成中 | トップページ | リモコン完成(未装着) »