PCとの通信実験
AVRにはUSARTの機能があります。これを使うとPCと通信ができるはずです。MCで計測したデータをPCに保存したり、処理したりできるようになります。
電圧の測定などがPCに取り込めると新しい使い方ができると思います。
手始めに、次のようものを考えました。
MCの表示装置には液晶表示器を使います。PCからの受信データはここに表示して、確認できるようにします。
MCが作り出すデータとして、時計機能から時刻データを用意します。PCから送信命令があったときに送信します。
MCはポートに余裕がある手持ちのmega8を使います。90S2313でも十分ですが、TQFPのmega8に挑戦してみようと思います。
クロックは、大事をとって水晶を使うことにしました。以前に2313でUSBに接続したとき(http://www.cesko.host.sk/IgorPlugUSB/IgorPlug-USB%20(AVR)_eng.htm)、
セラロックではクロックがふらついて極めて不安定になり、ときどきしか通信できなかったものが水晶を使うと安定した経験からです。共立電子で特売100円の
水晶発振器(KYORI KCO-3028と書かれています)16.000MHzのものを使いました。このためにヒューズビットの書き換えが必要です。
時計機能はタイマー割込でカウントアップします。時計として使うわけではないので精度は追求していませんし、時刻あわせ機能も付けません。
![]() |
左が USBコンバータ 中央が この通信実験回路 右が シリアル書き込み機 |
void USART_Init(unsigned int baud)
{
UBRRH = (unsigned char)(baud>>8); /* ホ゛ーレート設定(上位ハ゛イト) */
UBRRL = (unsigned char)baud; /* ホ゛ーレート設定(下位ハ゛イト) */
UCSRB = (1<<RXEN)|(1<<TXEN); /* 送受信許可*/
UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0): /* フレーム形式設定(8ヒ゛ット,2ストッフ゜ヒ゛ット) */
}
注: このコート゛例はテ゛ハ゛イス定義ファイルがインクルート゛されることが前提です。
初期化コート゛と併せられます。
void USART_Transmit(unsigned char data)
{
while ( !(UCSRA & (1<<UDRE)) ); /* 送信ハ゛ッファ空き待機*/
UDR = data; /* テ゛ータ送信(送信開始) */
}
unsigned char USART_Receive(void)
{
while ( !(UCSRA & (1<<RXC)) ); /* 受信完了待機*/
return UDR; /* 受信テ゛ータ取得*/
}
注: このコート゛例はテ゛ハ゛イス定義ファイルがインクルート゛されることが前提です。
|

![]() |
![]() 同時には写真が撮れないのでずれています |