受け取りのコントローラのプログラム
Dependencies: TextLCD mbed MultiSerial Pswitch_Lib
Diff: ReadMe.txt
- Revision:
- 3:cfd7cd361088
- Parent:
- 2:7820849bf534
--- a/ReadMe.txt Thu Sep 04 22:17:32 2014 +0000 +++ b/ReadMe.txt Mon Sep 08 02:39:40 2014 +0000 @@ -1,45 +1,123 @@ 仕様書 - +●マイコンのピンの使用状況 ピン 接続先 備考 p4 プッシュスイッチ リセットボタン p5 トグルスイッチ -p6 YellowLED +p6 黄色LED p7 右十字キー 予約 -p8 右十字キー Yellow +p8 右十字キー 黄 p9 スライドスイッチ>Xbee 送信 p10 スライドスイッチ>Xbee 受信 -p11 右十字キー Red +p11 右十字キー 赤 p12 右十字キー 予約 p13 スライドスイッチ>Xbee 送信 p14 スライドスイッチ>Xbee 受信 -p15 右十字キー Green -p16 右十字キー Blue -p17 右サイドキー 人差し指 -p18 右サイドキー 中指 -p19 左サイドキー 中指 -p20 左サイドキー 人差し指 +p15 右十字キー 緑 +p16 右十字キー 青 +p17 右サイドキー 赤 +p18 右サイドキー 青 +p19 左サイドキー 青 +p20 左サイドキー 赤 p21 LCD d7 p22 LCD d6 p23 LCD d5 p24 LCD d4 p25 LCD e p26 LCD rs -p27 左十字キー Blue -p28 左十字キー Green -p29 左十字キー Red -p30 左十字キー Yellow -LED1 illumination() -LED2 illumination() -LED3 illumination() -LED4 illumination() +p27 左十字キー 青 +p28 左十字キー 緑 +p29 左十字キー 赤 +p30 左十字キー 黄 + +●LCDの表示 ”Hello World!” -LCDの表示 ”Hello World!” - -2byte通信 -1byte 十字キー -2byte サイドキー - -9600bps -キーコード 0xAA - +●通信 +モジュール Xbee +通信速度 9600bps +データサイズ 2byte +1byte目 十字キー +2byte目 サイドキー +ライブラリ MultiSerial.h +キーコード 0xAA +チェックコード 0x??^0x??^... +※ライブラリでは割り込みを使っています. +ライブラリ作成者が参考にした割り込みの関数とそれに使ったマクロ定義,変数宣言が以下に記されています. +ライブラリを使用しない場合は参考にしてください. +____________________________________________ +#define DATA_NUM 8+2//2byte→KEYCODEとCHECKCODE 8byte→やりとりするデータ +#define TX_KEYCODE 0xBB//あちらのKEYCODE +#define RX_KEYCODE 0xAA//こちらのKEYCODE +#define KEY 0//KEYCODEは配列の最初 +#define CHECK DATA_NUM-1//CHECKCODEは配列の最後 +volatile uint8_t INdata[DATA_NUM]={0}, EXdata[DATA_NUM]={0}; +void TX(void){//送信バッファ空き割り込み用関数 + + static uint8_t Tx=DATA_NUM, i; + static uint8_t TXdata[DATA_NUM]={TX_KEYCODE}; + static uint8_t TXcheckcode=0; + + if(Tx >= DATA_NUM){ + + TXdata[KEY] = TX_KEYCODE;//Hello. + + TXdata[1] = EXdata[1]; + TXdata[2] = EXdata[2]; + TXdata[3] = EXdata[3]; + TXdata[4] = EXdata[4]; + TXdata[5] = EXdata[5]; + TXdata[6] = EXdata[6]; + TXdata[7] = EXdata[7]; + TXdata[8] = EXdata[8]; + //送信するデータ = メインで処理されたデータ + + for(i=KEY+1, TXcheckcode=0; i<CHECK; i++){//CHECKCODEの生成 + TXcheckcode ^= TXdata[i]; + } + + TXdata[CHECK] = TXcheckcode;//Good bye. + Tx=0;//配列をリセット + + } + Xbee.putc(TXdata[Tx]);//データを送信する + Tx++;//配列を入れ替える + +} +void RX(void){//受信割り込み用関数 + + static uint8_t Rx=0, i; + static uint8_t RXdata[DATA_NUM]={RX_KEYCODE}; + static uint8_t RXcheckcode=0; + + RXdata[Rx] = Xbee.getc();//データを受け取る + + if(RXdata[KEY]==RX_KEYCODE){//KEYCODEが一致したら配列を入れ替える + Rx++; + } + + if(Rx==CHECK){//CHECKCODEの生成 + for(i=KEY+1, RXcheckcode=0; i<CHECK; i++){ + RXcheckcode ^= RXdata[i]; + } + } + + if(Rx >= DATA_NUM){ + if(RXdata[CHECK]==RXcheckcode){//CHECKCODEが合致したらデータを適用する + + INdata[1] = RXdata[1]; + INdata[2] = RXdata[2]; + INdata[3] = RXdata[3]; + INdata[4] = RXdata[4]; + INdata[5] = RXdata[5]; + INdata[6] = RXdata[6]; + INdata[7] = RXdata[7]; + INdata[8] = RXdata[8]; + //メインで処理されるデータ = 受け取ったデータ + + } + Rx=0;//配列をリセット + } + +} +________________________________________________________ +●ハード 基板データは共有PCのデスクトップに乗せてあります. \ No newline at end of file