ジャパンオープン用のメインプログラム
Dependencies: mbed AQM1602 HMC6352 PID
minilib/txrx.cpp@38:67bc78f3c0ab, 2016-03-27 (annotated)
- Committer:
- lilac0112_1
- Date:
- Sun Mar 27 13:04:39 2016 +0000
- Revision:
- 38:67bc78f3c0ab
- Parent:
- 0:ea35c18c85fc
JapanSoccerOpen2016 CatPot Program(main)
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
lilac0112_1 | 0:ea35c18c85fc | 1 | #include "mbed.h" |
lilac0112_1 | 0:ea35c18c85fc | 2 | #include "txrx.h" |
lilac0112_1 | 0:ea35c18c85fc | 3 | #include "def.h" |
lilac0112_1 | 0:ea35c18c85fc | 4 | |
lilac0112_1 | 0:ea35c18c85fc | 5 | #include "extern.h" |
lilac0112_1 | 0:ea35c18c85fc | 6 | |
lilac0112_1 | 0:ea35c18c85fc | 7 | void cls() { |
lilac0112_1 | 0:ea35c18c85fc | 8 | for(int i=0;i<DATA_NUM;i++) INdata[i]=0; |
lilac0112_1 | 0:ea35c18c85fc | 9 | } |
lilac0112_1 | 0:ea35c18c85fc | 10 | void TX(void){//送信バッファ空き割り込み用関数 |
lilac0112_1 | 0:ea35c18c85fc | 11 | |
lilac0112_1 | 0:ea35c18c85fc | 12 | static uint8_t Tx=DATA_NUM, i; |
lilac0112_1 | 0:ea35c18c85fc | 13 | static uint8_t TXdata[DATA_NUM]={TX_KEYCODE}; |
lilac0112_1 | 0:ea35c18c85fc | 14 | static uint8_t TXcheckcode=0; |
lilac0112_1 | 0:ea35c18c85fc | 15 | |
lilac0112_1 | 0:ea35c18c85fc | 16 | if(Tx >= DATA_NUM){ |
lilac0112_1 | 0:ea35c18c85fc | 17 | |
lilac0112_1 | 0:ea35c18c85fc | 18 | TXdata[KEY] = TX_KEYCODE;//Hello. |
lilac0112_1 | 0:ea35c18c85fc | 19 | |
lilac0112_1 | 0:ea35c18c85fc | 20 | TXdata[1] = EXdata[1]; |
lilac0112_1 | 0:ea35c18c85fc | 21 | TXdata[2] = EXdata[2]; |
lilac0112_1 | 0:ea35c18c85fc | 22 | TXdata[3] = EXdata[3]; |
lilac0112_1 | 0:ea35c18c85fc | 23 | TXdata[4] = EXdata[4]; |
lilac0112_1 | 0:ea35c18c85fc | 24 | TXdata[5] = EXdata[5]; |
lilac0112_1 | 0:ea35c18c85fc | 25 | TXdata[6] = EXdata[6]; |
lilac0112_1 | 0:ea35c18c85fc | 26 | TXdata[7] = EXdata[7]; |
lilac0112_1 | 0:ea35c18c85fc | 27 | TXdata[8] = EXdata[8]; |
lilac0112_1 | 0:ea35c18c85fc | 28 | //送信するデータ = メインで処理されたデータ |
lilac0112_1 | 0:ea35c18c85fc | 29 | |
lilac0112_1 | 0:ea35c18c85fc | 30 | for(i=KEY+1, TXcheckcode=0; i<CHECK; i++){//CHECKCODEの生成 |
lilac0112_1 | 0:ea35c18c85fc | 31 | TXcheckcode ^= TXdata[i]; |
lilac0112_1 | 0:ea35c18c85fc | 32 | } |
lilac0112_1 | 0:ea35c18c85fc | 33 | |
lilac0112_1 | 0:ea35c18c85fc | 34 | TXdata[CHECK] = TXcheckcode;//Good bye. |
lilac0112_1 | 0:ea35c18c85fc | 35 | Tx=0;//配列をリセット |
lilac0112_1 | 0:ea35c18c85fc | 36 | |
lilac0112_1 | 0:ea35c18c85fc | 37 | } |
lilac0112_1 | 0:ea35c18c85fc | 38 | RN42.putc(TXdata[Tx]);//データを送信する |
lilac0112_1 | 0:ea35c18c85fc | 39 | Tx++;//配列を入れ替える |
lilac0112_1 | 0:ea35c18c85fc | 40 | |
lilac0112_1 | 0:ea35c18c85fc | 41 | } |
lilac0112_1 | 0:ea35c18c85fc | 42 | void RX(void){//受信割り込み用関数 |
lilac0112_1 | 0:ea35c18c85fc | 43 | |
lilac0112_1 | 0:ea35c18c85fc | 44 | static uint8_t Rx=0, i; |
lilac0112_1 | 0:ea35c18c85fc | 45 | static uint8_t RXdata[DATA_NUM]={RX_KEYCODE}; |
lilac0112_1 | 0:ea35c18c85fc | 46 | static uint8_t RXcheckcode=0; |
lilac0112_1 | 0:ea35c18c85fc | 47 | |
lilac0112_1 | 0:ea35c18c85fc | 48 | RXdata[Rx] = RN42.getc();//データを受け取る |
lilac0112_1 | 0:ea35c18c85fc | 49 | |
lilac0112_1 | 0:ea35c18c85fc | 50 | if(RXdata[KEY]==RX_KEYCODE){//KEYCODEが一致したら配列を入れ替える |
lilac0112_1 | 0:ea35c18c85fc | 51 | Rx++; |
lilac0112_1 | 0:ea35c18c85fc | 52 | } |
lilac0112_1 | 0:ea35c18c85fc | 53 | |
lilac0112_1 | 0:ea35c18c85fc | 54 | if(Rx==CHECK){//CHECKCODEの生成 |
lilac0112_1 | 0:ea35c18c85fc | 55 | for(i=KEY+1, RXcheckcode=0; i<CHECK; i++){ |
lilac0112_1 | 0:ea35c18c85fc | 56 | RXcheckcode ^= RXdata[i]; |
lilac0112_1 | 0:ea35c18c85fc | 57 | } |
lilac0112_1 | 0:ea35c18c85fc | 58 | } |
lilac0112_1 | 0:ea35c18c85fc | 59 | |
lilac0112_1 | 0:ea35c18c85fc | 60 | if(Rx >= DATA_NUM){ |
lilac0112_1 | 0:ea35c18c85fc | 61 | if(RXdata[CHECK]==RXcheckcode){//CHECKCODEが合致したらデータを適用する |
lilac0112_1 | 0:ea35c18c85fc | 62 | |
lilac0112_1 | 0:ea35c18c85fc | 63 | Stp.attach(&cls, .5); |
lilac0112_1 | 0:ea35c18c85fc | 64 | INdata[1] = RXdata[1]; |
lilac0112_1 | 0:ea35c18c85fc | 65 | INdata[2] = RXdata[2]; |
lilac0112_1 | 0:ea35c18c85fc | 66 | INdata[3] = RXdata[3]; |
lilac0112_1 | 0:ea35c18c85fc | 67 | INdata[4] = RXdata[4]; |
lilac0112_1 | 0:ea35c18c85fc | 68 | INdata[5] = RXdata[5]; |
lilac0112_1 | 0:ea35c18c85fc | 69 | INdata[6] = RXdata[6]; |
lilac0112_1 | 0:ea35c18c85fc | 70 | INdata[7] = RXdata[7]; |
lilac0112_1 | 0:ea35c18c85fc | 71 | INdata[8] = RXdata[8]; |
lilac0112_1 | 0:ea35c18c85fc | 72 | //メインで処理されるデータ = 受け取ったデータ |
lilac0112_1 | 0:ea35c18c85fc | 73 | |
lilac0112_1 | 0:ea35c18c85fc | 74 | } |
lilac0112_1 | 0:ea35c18c85fc | 75 | Rx=0;//配列をリセット |
lilac0112_1 | 0:ea35c18c85fc | 76 | } |
lilac0112_1 | 0:ea35c18c85fc | 77 | |
lilac0112_1 | 0:ea35c18c85fc | 78 | } |