I/Oボードという事で、AVRとPC間で通信をさせたいです。
STK600にはUSBポートとRS-232Cが載っていますので、どちらかを使えばPCとの通信のテストが出来ると思っていました。
以下のコードでひたすらデータを吐き出し続けさせ、PCで観測させようと考えましたが全くできないので、諦めました...
STK600での方法をご存知の方が居られたら、是非ご教示下さい。
#define F_CPU 1000000UL // Clock Speed
#define BAUD 9600
#define MYUBRR ((F_CPU/16/BAUD)-1) //Asynchronous Normal mode
#include <avr/io.h>
#include <util/delay.h>
int main(void){
unsigned char data = 0x01;
UBRR0H = (unsigned char)(MYUBRR >> 8);
UBRR0L = (unsigned char)MYUBRR;
UCSR0B = (1 << RXEN0)|(1 << TXEN0);
/* Stop bit:1, Parity: None, Data bits:8*/
UCSR0C = (1 << UCSZ01)|(1 << UCSZ00);
while(1){
while(!(UCSR0A & (1 << UDRE0))){}
//put data into buffer, send the data
UDR0 = data;
delay_ms(50);
data = data + 0x01;
}
}
仕方が無いので、一緒に買ったATMEGA328Pを使ってテストを行います。
STK600からISPのピンを引っ張ってフレッドボード上に組んだチップにプログラムします。
Atmel Studio上からプログラムする方法が判らなかった為、Avrdudeを用いて書き込みました。
AVRからRS-232Cを用いて通信する為のトランシーバにSP3232ECPを使います。
回路図は以下の通り。ISPを用いる事で、チップが基盤に実装されていてもプログラムする事が出来ます。(今回はピンの重複がないので、実際どうなるか分かりませんが...)
今回は電源は、ISPのピンから頂いています。
トランシーバIC周りのキャパシタや接地は省略しています。
上記のコードをプログラムし、PCのシリアルポートと通信させ受信を確認しました。
今日はここまで。
次は、送信とUSB変換について...
久しぶりにスパゲティコード
#回路図の作成にはBSch3を利用させて頂きました。



0 件のコメント:
コメントを投稿