受け取りのコントローラのプログラム

Dependencies:   TextLCD mbed MultiSerial Pswitch_Lib

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