TOPへ戻る

20071014 ATtiny2313 シリアル出力の確認

ATtiny2313 の USART を使用してPCのSIOに文字を送信するプログラムを書いてみました。

確認用回路図


PCとATtiny2313間の接続ケーブルは、RS-232C クロスケーブルを使用する。

シリアルから、38400bps で、"ATtiny2313 通信テスト " を連続に出力する確認を行ってみます。

#include <avr/io.h> #define FOSC 8000000 // 8MHz #define BAUD 38400 #define MYUBRR FOSC/16/BAUD-1 // UART分周率 void sio_init(unsigned int baud){ UBRRH = (unsigned char)(baud>>8); // ボーレート上位 UBRRL = (unsigned char)baud; // ボーレート下位 UCSRB = (1<<RXEN)|(1<<TXEN); // 送受信許可 UCSRC = (1<<USBS)|(3<<UCSZ0); } void sio_puts(char *buf) { while(*buf){ while ( !(UCSRA & (1<<UDRE)) ); // 送信バッファ空き待機 UDR = *buf++; } } int main(void){ sio_init(MYUBRR); // USART設定 for(;;){ sio_puts("ATtiny2313 通信テスト "); } }
ソースファイルのダウンロード


AVRSP-Gのヒューズビットの設定
内蔵クロック8MHz 分周比1/1 の設定です。

コンパイラは WinAVR-20070525 を使いました。

Acknowrich のソフトで送信状態を見てみます。
Acknowrichシリアル通信、解析&デバッグツール





つまらない失敗(^_^;
1)RS−232CコネクタへのTXDとRXDがテレコ(逆)だった。
2)CKSEL と クロック分周比 が良くわからなかった。
3)送信時、送信バッファの空きを監視しないとね。