10/06/10 18:14:33 fug4aldz
>>222
> 誤差がひどいものはUARTでボーレートを上げていくとすぐに
> 文字化けが確認できる。
それ、ブレッドボードで組んでグランドが弱いとか、クロックの周波数誤差とは
別な何かが原因じゃないの?
少なくとも、プリスケーラの分周比がボーレートに対してきっちり割り切れる整数
であれば、原発振クロックの周波数誤差(%)がボーレートクロックに与える誤差(%)
は同じになる。
速いボーレートに比べて、遅いボーレートに対するプリスケーラ分周比(カウント数)
は大きくなるので、原発振クロックの周波数誤差を織り込んで、ソフトで設定する
分周設定値を増減して微調整することもできるけど、実際にはそんなことはやって
ないし、別に基準クロックがなければムリ。
もともとクロック発振が8MHzの場合、発振周波数誤差が0であっても、UARTのサンプ
リングクロック(通信速度x16)は、9600bps, 19200bpsといった通信速度であっても
分周比はきっちり割り切れない。 9,600bps(x16)は52分周(+0.16%), 19.2Kbpsは
26分周(+0.16%), 38,4Kbps(x16)は13分周(+0.16%), 19200bpsは26分周(+0.16%)。
ところが、57.6Kbpsの場合は8.68に一番近い整数の9分周(-3.55%)、同様に115.2Kbps
の場合は4.34に一番近い整数の4分周(+8.5%)がもっとも誤差が少ない分周設定値に
なる。 クロックを8MHzから7.3728MHzにすれば、4分周できっちり115.2Kbps,
普通は、速いボーレートまで少ない誤差(分周比が割り切れる)ようにする必要が
ある場合、9.216MHzや18.432MHzといった「定番」の周波数をクロックに使う。
通信速度が、38.4Kbpsどまりだった時代には、4.9152MHz, 6.144MHz, 12.288MHz
を使うことが多かった。