赤外線カメラが早速ほこりを被りました
そして、盗まれた一代目ロードのTrek君に変わって二代目Corratecのバイクを買いました(*´ω`*)
Trekのより鍵のグレードは上げないといけないですが、鍵なんて所詮無力です...置いておくのが悪いんです...
また間が空いて、今回はUSBを使って通信をします。
USB変換モジュールは、秋月のFT232RLを使います。
COMポートもUSBも同じシリアルなのに、どのあたりが変換なのかよく分かりません。
前回までで、SP3232ECPを用いたシリアル通信はできたので、それをFT232RLに変えるだけです。
回路図は以下の通りです。
FT232RLとAVRの接続はデータの送受信に用いるTXDとRXDの二本だけです。
また、FT232RLはUSBから5V(または、3.3V)電源を出力する事ができますので、AVRへの電源供給に用います。簡単便利!
シリアル通信のソフトによってシリアルポートが開けなかった為、sanahi氏のAcknowrichでキャプチャしてテストを行いました。良さ気ですかね。
とりあえず、ここまででCOMポートの無いmacbook proに戻れそう。
次はJavaでシリアル通信をしたいと思います。
2012年10月18日木曜日
2012年9月7日金曜日
[AVR]AVRを始める(2) - USART通信
少し間が開いて、AVRについて。
I/Oボードという事で、AVRとPC間で通信をさせたいです。
STK600にはUSBポートとRS-232Cが載っていますので、どちらかを使えばPCとの通信のテストが出来ると思っていました。
以下のコードでひたすらデータを吐き出し続けさせ、PCで観測させようと考えましたが全くできないので、諦めました...
STK600での方法をご存知の方が居られたら、是非ご教示下さい。
仕方が無いので、一緒に買ったATMEGA328Pを使ってテストを行います。
STK600からISPのピンを引っ張ってフレッドボード上に組んだチップにプログラムします。
Atmel Studio上からプログラムする方法が判らなかった為、Avrdudeを用いて書き込みました。
AVRからRS-232Cを用いて通信する為のトランシーバにSP3232ECPを使います。
回路図は以下の通り。ISPを用いる事で、チップが基盤に実装されていてもプログラムする事が出来ます。(今回はピンの重複がないので、実際どうなるか分かりませんが...)
今回は電源は、ISPのピンから頂いています。
トランシーバIC周りのキャパシタや接地は省略しています。
上記のコードをプログラムし、PCのシリアルポートと通信させ受信を確認しました。
今日はここまで。
次は、送信とUSB変換について...
久しぶりにスパゲティコード
#回路図の作成にはBSch3を利用させて頂きました。
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を利用させて頂きました。
2012年8月30日木曜日
[AVR]AVRを始める(1)
センサーのデータを取得する為に、I/OボードをAVRで作る事にしました。
PICよりAVRの方が、研究室の中で人気らしいです。
まず、AVRを始めるにあたって評価ボードのAtmel社 STK600を使用することにしました。
チップはひとまず、STK600に付いてきたATMEGA2560を用いることにし、開発環境はAtmel Studio 6を使用します。
Atmel StudioはVisual Studioなんですね。
プロジェクトのプロパティでProgrammer(Tool)はSTK600を、DeviceはATmega2560に設定します。
STK600には、USBポートが載っているので簡単にライトできます。シリアルポート無くても良いんですね!
また、LED・タクトスイッチが8個載ってるので、入門用のプログラムを書いてみます。
まず、Hello World的に、LEDの点滅をさせます。PortBピンにLEDを接続しています。
次に、タクトスイッチを押下した時対応したLEDを点灯させます。
PortAピンにタクトスイッチを、PortBにLEDを接続します。
無事、LEDの点滅・点灯ができました。
今日はここまで。
Syntax Highlighterが使えない...
PICよりAVRの方が、研究室の中で人気らしいです。
まず、AVRを始めるにあたって評価ボードのAtmel社 STK600を使用することにしました。
チップはひとまず、STK600に付いてきたATMEGA2560を用いることにし、開発環境はAtmel Studio 6を使用します。
Atmel StudioはVisual Studioなんですね。
プロジェクトのプロパティでProgrammer(Tool)はSTK600を、DeviceはATmega2560に設定します。
STK600には、USBポートが載っているので簡単にライトできます。シリアルポート無くても良いんですね!
また、LED・タクトスイッチが8個載ってるので、入門用のプログラムを書いてみます。
まず、Hello World的に、LEDの点滅をさせます。PortBピンにLEDを接続しています。
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
unsigned char a = 0b00000001;
DDRB = 0xFF;
PORTB = 0xFF;
while(1){
PORTB = ~a;
_delay_ms(500);
PORTB = 0xFF;
_delay_ms(500);
if(a != 0b10000000){
a = a << 1;
}else{
a = 0x00000001;
}
}
}
次に、タクトスイッチを押下した時対応したLEDを点灯させます。
PortAピンにタクトスイッチを、PortBにLEDを接続します。
#include <avr/io.h>
int main(void)
{
unsigned char a;
unsigned char x;
DDRB = 0xFF;
PORTA = 0xFF;
PORTB = 0xFF;
while(1){
x = PINA;
a = 0xFF & x;
PORTB = a;
}
}
無事、LEDの点滅・点灯ができました。
今日はここまで。
Syntax Highlighterが使えない...
登録:
投稿 (Atom)



