Main Program

Dependencies:   mbed AQM1602 HMC6352 PID

Committer:
lilac0112_1
Date:
Tue Sep 15 01:40:28 2015 +0000
Revision:
1:f2633c150301
Parent:
0:d8798c19e371
Child:
2:97a4070c34d7
some how

Who changed what in which revision?

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