Main Program

Dependencies:   mbed AQM1602 HMC6352 PID

Committer:
lilac0112_1
Date:
Mon Sep 14 06:51:40 2015 +0000
Revision:
0:d8798c19e371
Child:
1:f2633c150301
succeeded in compile

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lilac0112_1 0:d8798c19e371 1 #include "mbed.h"
lilac0112_1 0:d8798c19e371 2 //#include "main.h"
lilac0112_1 0:d8798c19e371 3 //#include "txrx.h"
lilac0112_1 0:d8798c19e371 4 #define DATA_NUM 8+2//2byte→KEYCODE(拝啓)とCHECKCODE(敬具) 8byte→やりとりするデータ
lilac0112_1 0:d8798c19e371 5 #define TX_KEYCODE 0xAA//あちらのKEYCODE
lilac0112_1 0:d8798c19e371 6 #define RX_KEYCODE 0xAA//こちらのKEYCODE
lilac0112_1 0:d8798c19e371 7 #define KEY 0//KEYCODEは配列の最初
lilac0112_1 0:d8798c19e371 8 #define CHECK DATA_NUM-1//CHECKCODEは配列の最後
lilac0112_1 0:d8798c19e371 9
lilac0112_1 0:d8798c19e371 10 extern volatile uint8_t INdata[DATA_NUM], EXdata[DATA_NUM];
lilac0112_1 0:d8798c19e371 11 extern BusOut LED;
lilac0112_1 0:d8798c19e371 12 extern Serial pc;
lilac0112_1 0:d8798c19e371 13 extern Serial Xbee;
lilac0112_1 0:d8798c19e371 14 extern Timer t;
lilac0112_1 0:d8798c19e371 15 extern Ticker Stp;
lilac0112_1 0:d8798c19e371 16
lilac0112_1 0:d8798c19e371 17 void cls() {
lilac0112_1 0:d8798c19e371 18 for(int i=0;i<DATA_NUM;i++) INdata[i]=0;
lilac0112_1 0:d8798c19e371 19 }
lilac0112_1 0:d8798c19e371 20 void TX(void){//送信バッファ空き割り込み用関数
lilac0112_1 0:d8798c19e371 21
lilac0112_1 0:d8798c19e371 22 static uint8_t Tx=DATA_NUM, i;
lilac0112_1 0:d8798c19e371 23 static uint8_t TXdata[DATA_NUM]={TX_KEYCODE};
lilac0112_1 0:d8798c19e371 24 static uint8_t TXcheckcode=0;
lilac0112_1 0:d8798c19e371 25
lilac0112_1 0:d8798c19e371 26 if(Tx >= DATA_NUM){
lilac0112_1 0:d8798c19e371 27
lilac0112_1 0:d8798c19e371 28 TXdata[KEY] = TX_KEYCODE;//Hello.
lilac0112_1 0:d8798c19e371 29
lilac0112_1 0:d8798c19e371 30 TXdata[1] = EXdata[1];
lilac0112_1 0:d8798c19e371 31 TXdata[2] = EXdata[2];
lilac0112_1 0:d8798c19e371 32 TXdata[3] = EXdata[3];
lilac0112_1 0:d8798c19e371 33 TXdata[4] = EXdata[4];
lilac0112_1 0:d8798c19e371 34 TXdata[5] = EXdata[5];
lilac0112_1 0:d8798c19e371 35 TXdata[6] = EXdata[6];
lilac0112_1 0:d8798c19e371 36 TXdata[7] = EXdata[7];
lilac0112_1 0:d8798c19e371 37 TXdata[8] = EXdata[8];
lilac0112_1 0:d8798c19e371 38 //送信するデータ = メインで処理されたデータ
lilac0112_1 0:d8798c19e371 39
lilac0112_1 0:d8798c19e371 40 for(i=KEY+1, TXcheckcode=0; i<CHECK; i++){//CHECKCODEの生成
lilac0112_1 0:d8798c19e371 41 TXcheckcode ^= TXdata[i];
lilac0112_1 0:d8798c19e371 42 }
lilac0112_1 0:d8798c19e371 43
lilac0112_1 0:d8798c19e371 44 TXdata[CHECK] = TXcheckcode;//Good bye.
lilac0112_1 0:d8798c19e371 45 Tx=0;//配列をリセット
lilac0112_1 0:d8798c19e371 46
lilac0112_1 0:d8798c19e371 47 }
lilac0112_1 0:d8798c19e371 48 Xbee.putc(TXdata[Tx]);//データを送信する
lilac0112_1 0:d8798c19e371 49 Tx++;//配列を入れ替える
lilac0112_1 0:d8798c19e371 50
lilac0112_1 0:d8798c19e371 51 }
lilac0112_1 0:d8798c19e371 52 void RX(void){//受信割り込み用関数
lilac0112_1 0:d8798c19e371 53
lilac0112_1 0:d8798c19e371 54 static uint8_t Rx=0, i;
lilac0112_1 0:d8798c19e371 55 static uint8_t RXdata[DATA_NUM]={RX_KEYCODE};
lilac0112_1 0:d8798c19e371 56 static uint8_t RXcheckcode=0;
lilac0112_1 0:d8798c19e371 57
lilac0112_1 0:d8798c19e371 58 RXdata[Rx] = Xbee.getc();//データを受け取る
lilac0112_1 0:d8798c19e371 59
lilac0112_1 0:d8798c19e371 60 if(RXdata[KEY]==RX_KEYCODE){//KEYCODEが一致したら配列を入れ替える
lilac0112_1 0:d8798c19e371 61 Rx++;
lilac0112_1 0:d8798c19e371 62 }
lilac0112_1 0:d8798c19e371 63
lilac0112_1 0:d8798c19e371 64 if(Rx==CHECK){//CHECKCODEの生成
lilac0112_1 0:d8798c19e371 65 for(i=KEY+1, RXcheckcode=0; i<CHECK; i++){
lilac0112_1 0:d8798c19e371 66 RXcheckcode ^= RXdata[i];
lilac0112_1 0:d8798c19e371 67 }
lilac0112_1 0:d8798c19e371 68 }
lilac0112_1 0:d8798c19e371 69
lilac0112_1 0:d8798c19e371 70 if(Rx >= DATA_NUM){
lilac0112_1 0:d8798c19e371 71 if(RXdata[CHECK]==RXcheckcode){//CHECKCODEが合致したらデータを適用する
lilac0112_1 0:d8798c19e371 72
lilac0112_1 0:d8798c19e371 73 Stp.attach(&cls, .5);
lilac0112_1 0:d8798c19e371 74 INdata[1] = RXdata[1];
lilac0112_1 0:d8798c19e371 75 INdata[2] = RXdata[2];
lilac0112_1 0:d8798c19e371 76 INdata[3] = RXdata[3];
lilac0112_1 0:d8798c19e371 77 INdata[4] = RXdata[4];
lilac0112_1 0:d8798c19e371 78 INdata[5] = RXdata[5];
lilac0112_1 0:d8798c19e371 79 INdata[6] = RXdata[6];
lilac0112_1 0:d8798c19e371 80 INdata[7] = RXdata[7];
lilac0112_1 0:d8798c19e371 81 INdata[8] = RXdata[8];
lilac0112_1 0:d8798c19e371 82 //メインで処理されるデータ = 受け取ったデータ
lilac0112_1 0:d8798c19e371 83
lilac0112_1 0:d8798c19e371 84 }
lilac0112_1 0:d8798c19e371 85 Rx=0;//配列をリセット
lilac0112_1 0:d8798c19e371 86 }
lilac0112_1 0:d8798c19e371 87
lilac0112_1 0:d8798c19e371 88 }