2012年4月2日月曜日

SWの環境改善(6)

久しぶりの長期シリーズとなってしまったこのネタ。
今日はFreedomとの通信の動作確認まで。

制御関連をArduinoにまかせるとすると、シリアル通信は
・XBee
・Freedom
を最低必要とするので、Mega2560をおごることにしました。XBeeにSerial1を、FreedomにSerial2をアサイン。

XBeeでの通信に必要なハードウェアは、XBee(シリーズ1を使用、シリーズ2とかでも動作OK???)、5V変換モジュール(Sparkfun)。5V変換モジュールにさらに3.3Vレベルへの変換が必要になるか心配でしたが、問題なく通信できました。解決。

次にFreedom。
Freedomの通信設定って、9600bps、7データビット、イーブンパリティ、1ストップビット、と今の基準からすると変態セッティングなので、Arduinoの方の再設定が必要になります。

本家のForumを覗いてみて、UCSR?C (?=0,1,2,3; Serialの番号) をいじればよいことがわかったので、


Serial2.begin(9600);  // for Freedom
UCSR2C = UCSR2C & B11000001; // setting clear
UCSR2C = UCSR2C | B00100000; // even-parity
UCSR2C = UCSR2C | B00000100; // 7-Databits
UCSR2C = UCSR2C | B00000100; // 1-stopbit って7-Databitsのレジスタ設定と同じじゃん

Serial2.write((unsigned char *)"?DAT\r", 5);


if(Serial2.available()>0){
    int inByte=Serial2.read();
    ...
}


とプログラミングして動作確認。解決。

動作確認のとき、電源まわりをはじめてSWに取り付けてみたのですが、なんかボデーアースに静電気が溜まりまくってる><
ドアロックするために鍵穴にキーをさそうとすると、バチバチッっと火花が飛びます><これでいいの???

0 件のコメント:

コメントを投稿