ジャパンオープン用のメインプログラム

Dependencies:   mbed AQM1602 HMC6352 PID

Committer:
lilac0112_1
Date:
Sun Mar 27 13:04:39 2016 +0000
Revision:
38:67bc78f3c0ab
Parent:
33:aa115c30892e
JapanSoccerOpen2016 CatPot Program(main)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lilac0112_1 0:ea35c18c85fc 1 #include "mbed.h"
lilac0112_1 0:ea35c18c85fc 2 #include "extern.h"
lilac0112_1 0:ea35c18c85fc 3
lilac0112_1 0:ea35c18c85fc 4 //line
lilac0112_1 0:ea35c18c85fc 5 void ReadLine(void){
lilac0112_1 0:ea35c18c85fc 6 static uint8_t line_buf[3]={0,0,0};
lilac0112_1 0:ea35c18c85fc 7 wait_us(100);
lilac0112_1 0:ea35c18c85fc 8 if(Line[0].read()==1) line_buf[0] = 100;
lilac0112_1 2:635947de1583 9 if(line_buf[0]==0) data.lnFlag[0]=0;
lilac0112_1 2:635947de1583 10 else data.lnFlag[0]=1;
lilac0112_1 0:ea35c18c85fc 11 if(line_buf[0]>0) line_buf[0]--;
lilac0112_1 0:ea35c18c85fc 12
lilac0112_1 0:ea35c18c85fc 13 if(Line[1].read()==1) line_buf[1] = 100;
lilac0112_1 2:635947de1583 14 if(line_buf[1]==0) data.lnFlag[1]=0;
lilac0112_1 2:635947de1583 15 else data.lnFlag[1]=1;
lilac0112_1 0:ea35c18c85fc 16 if(line_buf[1]>0) line_buf[1]--;
lilac0112_1 0:ea35c18c85fc 17
lilac0112_1 0:ea35c18c85fc 18 if(Line[2].read()==1) line_buf[2] = 100;
lilac0112_1 2:635947de1583 19 if(line_buf[2]==0) data.lnFlag[2]=0;
lilac0112_1 2:635947de1583 20 else data.lnFlag[2]=1;
lilac0112_1 0:ea35c18c85fc 21 if(line_buf[2]>0) line_buf[2]--;
lilac0112_1 0:ea35c18c85fc 22 }
lilac0112_1 16:4fadb7a87497 23 //line_hold
lilac0112_1 16:4fadb7a87497 24 void LineRanking_A(void){
lilac0112_1 16:4fadb7a87497 25 if(data.lnOrder[0]==LINE_EMPTY){
lilac0112_1 16:4fadb7a87497 26 data.lnOrder[0]=A_SPOT;
lilac0112_1 16:4fadb7a87497 27 }
lilac0112_1 16:4fadb7a87497 28 else if(data.lnOrder[1]==LINE_EMPTY){
lilac0112_1 16:4fadb7a87497 29 data.lnOrder[1]=A_SPOT;
lilac0112_1 16:4fadb7a87497 30 }
lilac0112_1 16:4fadb7a87497 31 else if(data.lnOrder[2]==LINE_EMPTY){
lilac0112_1 16:4fadb7a87497 32 data.lnOrder[2]=A_SPOT;
lilac0112_1 16:4fadb7a87497 33 }
lilac0112_1 16:4fadb7a87497 34 }
lilac0112_1 16:4fadb7a87497 35 void LineRanking_B(void){
lilac0112_1 16:4fadb7a87497 36 if(data.lnOrder[0]==LINE_EMPTY){
lilac0112_1 16:4fadb7a87497 37 data.lnOrder[0]=B_SPOT;
lilac0112_1 16:4fadb7a87497 38 }
lilac0112_1 16:4fadb7a87497 39 else if(data.lnOrder[1]==LINE_EMPTY){
lilac0112_1 16:4fadb7a87497 40 data.lnOrder[1]=B_SPOT;
lilac0112_1 16:4fadb7a87497 41 }
lilac0112_1 16:4fadb7a87497 42 else if(data.lnOrder[2]==LINE_EMPTY){
lilac0112_1 16:4fadb7a87497 43 data.lnOrder[2]=B_SPOT;
lilac0112_1 16:4fadb7a87497 44 }
lilac0112_1 16:4fadb7a87497 45 }
lilac0112_1 16:4fadb7a87497 46 void LineRanking_C(void){
lilac0112_1 16:4fadb7a87497 47 if(data.lnOrder[0]==LINE_EMPTY){
lilac0112_1 16:4fadb7a87497 48 data.lnOrder[0]=C_SPOT;
lilac0112_1 16:4fadb7a87497 49 }
lilac0112_1 16:4fadb7a87497 50 else if(data.lnOrder[1]==LINE_EMPTY){
lilac0112_1 16:4fadb7a87497 51 data.lnOrder[1]=C_SPOT;
lilac0112_1 16:4fadb7a87497 52 }
lilac0112_1 16:4fadb7a87497 53 else if(data.lnOrder[2]==LINE_EMPTY){
lilac0112_1 16:4fadb7a87497 54 data.lnOrder[2]=C_SPOT;
lilac0112_1 16:4fadb7a87497 55 }
lilac0112_1 16:4fadb7a87497 56 }
lilac0112_1 16:4fadb7a87497 57 void LineRankClear(void){
lilac0112_1 16:4fadb7a87497 58 data.lnOrder[0]=LINE_EMPTY;
lilac0112_1 16:4fadb7a87497 59 data.lnOrder[1]=LINE_EMPTY;
lilac0112_1 16:4fadb7a87497 60 data.lnOrder[2]=LINE_EMPTY;
lilac0112_1 16:4fadb7a87497 61
lilac0112_1 22:b7720bba2ca6 62 if((0<LineHold)&&(LineHold<7)){
lilac0112_1 22:b7720bba2ca6 63 if((LineHolding[A_SPOT].read()==0)&&(LineHolding[B_SPOT].read()==0)&&(LineHolding[C_SPOT].read()==1)){
lilac0112_1 22:b7720bba2ca6 64 data.lnOrder[0] = C_SPOT;
lilac0112_1 22:b7720bba2ca6 65 data.lnOrder[1] = LINE_EMPTY;
lilac0112_1 16:4fadb7a87497 66 }
lilac0112_1 22:b7720bba2ca6 67 else if((LineHolding[A_SPOT].read()==0)&&(LineHolding[B_SPOT].read()==1)&&(LineHolding[C_SPOT].read()==0)){
lilac0112_1 16:4fadb7a87497 68 data.lnOrder[0] = B_SPOT;
lilac0112_1 22:b7720bba2ca6 69 data.lnOrder[1] = LINE_EMPTY;
lilac0112_1 16:4fadb7a87497 70 }
lilac0112_1 22:b7720bba2ca6 71 else if((LineHolding[A_SPOT].read()==0)&&(LineHolding[B_SPOT].read()==1)&&(LineHolding[C_SPOT].read()==1)){
lilac0112_1 16:4fadb7a87497 72 data.lnOrder[0] = C_SPOT;
lilac0112_1 22:b7720bba2ca6 73 data.lnOrder[1] = B_SPOT;
lilac0112_1 16:4fadb7a87497 74 }
lilac0112_1 22:b7720bba2ca6 75 else if((LineHolding[A_SPOT].read()==1)&&(LineHolding[B_SPOT].read()==0)&&(LineHolding[C_SPOT].read()==0)){
lilac0112_1 22:b7720bba2ca6 76 data.lnOrder[0] = A_SPOT;
lilac0112_1 22:b7720bba2ca6 77 data.lnOrder[1] = LINE_EMPTY;
lilac0112_1 22:b7720bba2ca6 78 }
lilac0112_1 22:b7720bba2ca6 79 else if((LineHolding[A_SPOT].read()==1)&&(LineHolding[B_SPOT].read()==0)&&(LineHolding[C_SPOT].read()==1)){
lilac0112_1 22:b7720bba2ca6 80 data.lnOrder[0] = C_SPOT;
lilac0112_1 22:b7720bba2ca6 81 data.lnOrder[1] = A_SPOT;
lilac0112_1 22:b7720bba2ca6 82 }
lilac0112_1 22:b7720bba2ca6 83 else if((LineHolding[A_SPOT].read()==1)&&(LineHolding[B_SPOT].read()==1)&&(LineHolding[C_SPOT].read()==0)){
lilac0112_1 21:378470320524 84 data.lnOrder[0] = A_SPOT;
lilac0112_1 21:378470320524 85 data.lnOrder[1] = B_SPOT;
lilac0112_1 21:378470320524 86 }
lilac0112_1 16:4fadb7a87497 87 }
lilac0112_1 16:4fadb7a87497 88 }
lilac0112_1 27:825c6835e3db 89 //line raw
lilac0112_1 27:825c6835e3db 90 /*
lilac0112_1 27:825c6835e3db 91 void LineRawCall_A(void){data.lnRawMemory[A_SPOT]=1;Line_timeout[A_SPOT].attach(&LineRawClear_A, LINE_DELAY);}
lilac0112_1 27:825c6835e3db 92 void LineRawCall_B(void){data.lnRawMemory[B_SPOT]=1;Line_timeout[B_SPOT].attach(&LineRawClear_B, LINE_DELAY);}
lilac0112_1 27:825c6835e3db 93 void LineRawCall_C(void){data.lnRawMemory[C_SPOT]=1;Line_timeout[C_SPOT].attach(&LineRawClear_C, LINE_DELAY);}
lilac0112_1 27:825c6835e3db 94 void LineRawClear_A(void){if(Line[A_SPOT].read()==1){LineRawCall_A();}else{data.lnRawMemory[A_SPOT]=0;}}
lilac0112_1 27:825c6835e3db 95 void LineRawClear_B(void){if(Line[B_SPOT].read()==1){LineRawCall_B();}else{data.lnRawMemory[B_SPOT]=0;}}
lilac0112_1 27:825c6835e3db 96 void LineRawClear_C(void){if(Line[C_SPOT].read()==1){LineRawCall_C();}else{data.lnRawMemory[C_SPOT]=0;}}
lilac0112_1 27:825c6835e3db 97 */
lilac0112_1 27:825c6835e3db 98 void LineRawCall_ALL(void){
lilac0112_1 27:825c6835e3db 99 if(data.lnRawReturn==1){
lilac0112_1 27:825c6835e3db 100 if(
lilac0112_1 27:825c6835e3db 101 (data.lnRawOrder[0]==A_SPOT)||
lilac0112_1 27:825c6835e3db 102 (data.lnRawOrder[0]==B_SPOT)||
lilac0112_1 27:825c6835e3db 103 (data.lnRawOrder[0]==C_SPOT)
lilac0112_1 27:825c6835e3db 104 ){
lilac0112_1 27:825c6835e3db 105 if(
lilac0112_1 29:e8bafe48aa90 106 (
lilac0112_1 29:e8bafe48aa90 107 (data.lnRawOrder[0]!=LINE_EMPTY)&&
lilac0112_1 29:e8bafe48aa90 108 (data.lnRawOrder[1]!=LINE_EMPTY)&&
lilac0112_1 29:e8bafe48aa90 109 ((Line[data.lnRawOrder[0]].read()==1)||(data.lnRawOrder[0]==data.lnRawLastRise))
lilac0112_1 29:e8bafe48aa90 110 )||
lilac0112_1 29:e8bafe48aa90 111 (data.lnRawOrder[0]==C_SPOT)
lilac0112_1 27:825c6835e3db 112 ){
lilac0112_1 27:825c6835e3db 113 Line_reset.attach(&LineRawClear_ALL, LINE_DELAY_3);
lilac0112_1 27:825c6835e3db 114 }
lilac0112_1 27:825c6835e3db 115 else{
lilac0112_1 27:825c6835e3db 116 Line_reset.attach(&LineRawClear_ALL, LINE_DELAY_2);
lilac0112_1 27:825c6835e3db 117 }
lilac0112_1 27:825c6835e3db 118 }
lilac0112_1 27:825c6835e3db 119 else{
lilac0112_1 27:825c6835e3db 120 Line_reset.attach(&LineRawClear_ALL, LINE_DELAY_2);
lilac0112_1 27:825c6835e3db 121 }
lilac0112_1 27:825c6835e3db 122 }
lilac0112_1 27:825c6835e3db 123 else{
lilac0112_1 27:825c6835e3db 124 Line_reset.attach(&LineRawClear_ALL, LINE_DELAY_1);
lilac0112_1 27:825c6835e3db 125 }
lilac0112_1 27:825c6835e3db 126 }
lilac0112_1 27:825c6835e3db 127 void LineRawClear_ALL(void){
lilac0112_1 27:825c6835e3db 128 if(LineRaw>0){
lilac0112_1 27:825c6835e3db 129 LineRawCall_ALL();
lilac0112_1 27:825c6835e3db 130 }
lilac0112_1 27:825c6835e3db 131 else if(LineRaw==0){
lilac0112_1 27:825c6835e3db 132 LineRawRankClear();
lilac0112_1 27:825c6835e3db 133 }
lilac0112_1 27:825c6835e3db 134 }
lilac0112_1 27:825c6835e3db 135 void LineRawRankClear(void){
lilac0112_1 27:825c6835e3db 136
lilac0112_1 38:67bc78f3c0ab 137 //JSO2
lilac0112_1 38:67bc78f3c0ab 138 LineLiberate();
lilac0112_1 38:67bc78f3c0ab 139
lilac0112_1 27:825c6835e3db 140 data.lnRawOrderLog2[0]=data.lnRawOrderLog1[0];
lilac0112_1 27:825c6835e3db 141 data.lnRawOrderLog2[1]=data.lnRawOrderLog1[1];
lilac0112_1 27:825c6835e3db 142 data.lnRawOrderLog2[2]=data.lnRawOrderLog1[2];
lilac0112_1 27:825c6835e3db 143
lilac0112_1 27:825c6835e3db 144 data.lnRawOrderLog1[0]=data.lnRawOrder[0];
lilac0112_1 27:825c6835e3db 145 data.lnRawOrderLog1[1]=data.lnRawOrder[1];
lilac0112_1 27:825c6835e3db 146 data.lnRawOrderLog1[2]=data.lnRawOrder[2];
lilac0112_1 27:825c6835e3db 147
lilac0112_1 27:825c6835e3db 148 data.lnRawOrder[0]=LINE_EMPTY;
lilac0112_1 27:825c6835e3db 149 data.lnRawOrder[1]=LINE_EMPTY;
lilac0112_1 27:825c6835e3db 150 data.lnRawOrder[2]=LINE_EMPTY;
lilac0112_1 27:825c6835e3db 151
lilac0112_1 30:5998ba42237e 152 if(
lilac0112_1 30:5998ba42237e 153 (data.lnRawOrderLog2[0]==data.lnRawOrderLog1[0])&&
lilac0112_1 30:5998ba42237e 154 //(data.lnRawOrderLog2[1]==data.lnRawOrderLog1[1])&&
lilac0112_1 30:5998ba42237e 155 //(data.lnRawOrderLog2[2]==data.lnRawOrderLog1[2])
lilac0112_1 30:5998ba42237e 156 (data.lnRawOrderLog2[0]!=LINE_EMPTY)
lilac0112_1 30:5998ba42237e 157 //(data.lnRawOrderLog2[1]!=LINE_EMPTY)
lilac0112_1 30:5998ba42237e 158 ){
lilac0112_1 30:5998ba42237e 159 if(data.lnRepeat>100) data.lnRepeat=100;
lilac0112_1 30:5998ba42237e 160 data.lnRepeat++;
lilac0112_1 30:5998ba42237e 161
lilac0112_1 30:5998ba42237e 162 data.irLastNotice = data.irNotice;
lilac0112_1 30:5998ba42237e 163 data.irLastPosition = data.irPosition;
lilac0112_1 30:5998ba42237e 164 }
lilac0112_1 30:5998ba42237e 165 else{
lilac0112_1 30:5998ba42237e 166 data.lnRepeat=0;
lilac0112_1 30:5998ba42237e 167 }
lilac0112_1 30:5998ba42237e 168
lilac0112_1 30:5998ba42237e 169
lilac0112_1 27:825c6835e3db 170 data.lnRawRise[A_SPOT]=0;
lilac0112_1 27:825c6835e3db 171 data.lnRawRise[B_SPOT]=0;
lilac0112_1 27:825c6835e3db 172 data.lnRawRise[C_SPOT]=0;
lilac0112_1 27:825c6835e3db 173 }
lilac0112_1 27:825c6835e3db 174 void LineRawLogReset(void){
lilac0112_1 30:5998ba42237e 175 /*
lilac0112_1 30:5998ba42237e 176 if(
lilac0112_1 30:5998ba42237e 177 (!(
lilac0112_1 30:5998ba42237e 178 (data.irPosition==data.irLastPosition)||
lilac0112_1 30:5998ba42237e 179 (data.irPosition==(data.irLastPosition+1))||
lilac0112_1 30:5998ba42237e 180 (data.irPosition==(data.irLastPosition-1))||
lilac0112_1 30:5998ba42237e 181 (data.irPosition==(data.irLastPosition+11))||
lilac0112_1 30:5998ba42237e 182 (data.irPosition==(data.irLastPosition-11))
lilac0112_1 30:5998ba42237e 183 ))&&
lilac0112_1 30:5998ba42237e 184 (
lilac0112_1 30:5998ba42237e 185 (data.irNotice==IR_CLOSE)||
lilac0112_1 30:5998ba42237e 186 (data.irNotice==IR_CLOSER)
lilac0112_1 30:5998ba42237e 187 )&&
lilac0112_1 30:5998ba42237e 188 (
lilac0112_1 30:5998ba42237e 189 (data.irLastPosition>7)
lilac0112_1 30:5998ba42237e 190 )
lilac0112_1 30:5998ba42237e 191 ){
lilac0112_1 30:5998ba42237e 192 data.lnRawOrderLog2[0]=LINE_EMPTY;
lilac0112_1 30:5998ba42237e 193 data.lnRawOrderLog2[1]=LINE_EMPTY;
lilac0112_1 30:5998ba42237e 194 data.lnRawOrderLog2[2]=LINE_EMPTY;
lilac0112_1 30:5998ba42237e 195 }
lilac0112_1 30:5998ba42237e 196 else{
lilac0112_1 30:5998ba42237e 197 data.lnRawOrderLog2[0]=LINE_EMPTY;
lilac0112_1 30:5998ba42237e 198 data.lnRawOrderLog2[1]=LINE_EMPTY;
lilac0112_1 30:5998ba42237e 199 data.lnRawOrderLog2[2]=LINE_EMPTY;
lilac0112_1 30:5998ba42237e 200
lilac0112_1 30:5998ba42237e 201 data.lnRawOrderLog1[0]=LINE_EMPTY;
lilac0112_1 30:5998ba42237e 202 data.lnRawOrderLog1[1]=LINE_EMPTY;
lilac0112_1 30:5998ba42237e 203 data.lnRawOrderLog1[2]=LINE_EMPTY;
lilac0112_1 30:5998ba42237e 204 }*/
lilac0112_1 30:5998ba42237e 205 if(data.irNotice==IR_NONE){
lilac0112_1 30:5998ba42237e 206 data.lnRawOrderLog2[0]=LINE_EMPTY;
lilac0112_1 30:5998ba42237e 207 data.lnRawOrderLog2[1]=LINE_EMPTY;
lilac0112_1 30:5998ba42237e 208 data.lnRawOrderLog2[2]=LINE_EMPTY;
lilac0112_1 30:5998ba42237e 209
lilac0112_1 30:5998ba42237e 210 data.lnRawOrderLog1[0]=LINE_EMPTY;
lilac0112_1 30:5998ba42237e 211 data.lnRawOrderLog1[1]=LINE_EMPTY;
lilac0112_1 30:5998ba42237e 212 data.lnRawOrderLog1[2]=LINE_EMPTY;
lilac0112_1 30:5998ba42237e 213 }
lilac0112_1 30:5998ba42237e 214 else{
lilac0112_1 30:5998ba42237e 215 data.lnRawOrderLog2[0]=LINE_EMPTY;
lilac0112_1 30:5998ba42237e 216 data.lnRawOrderLog2[1]=LINE_EMPTY;
lilac0112_1 30:5998ba42237e 217 data.lnRawOrderLog2[2]=LINE_EMPTY;
lilac0112_1 30:5998ba42237e 218 }
lilac0112_1 27:825c6835e3db 219
lilac0112_1 27:825c6835e3db 220 }
lilac0112_1 27:825c6835e3db 221 void LineRawRanking_A(void){
lilac0112_1 27:825c6835e3db 222 data.lnRawLastRise=A_SPOT;
lilac0112_1 27:825c6835e3db 223 LineRawCall_ALL();
lilac0112_1 27:825c6835e3db 224 if(data.lnRawRise[A_SPOT]==1) return;
lilac0112_1 27:825c6835e3db 225
lilac0112_1 27:825c6835e3db 226 if((data.lnRawOrder[0]==LINE_EMPTY)||(data.lnRawOrder[0]==A_SPOT)){
lilac0112_1 27:825c6835e3db 227 data.lnRawOrder[0]=A_SPOT;
lilac0112_1 30:5998ba42237e 228 if((sys.DefenceFlag==1)&&(data.lnRawOrder[1]==LINE_EMPTY)){
lilac0112_1 30:5998ba42237e 229 data.lnRawOrder[1]=C_SPOT;
lilac0112_1 30:5998ba42237e 230 }
lilac0112_1 27:825c6835e3db 231 }
lilac0112_1 27:825c6835e3db 232 else if((data.lnRawOrder[1]==LINE_EMPTY)||(data.lnRawOrder[1]==A_SPOT)){
lilac0112_1 27:825c6835e3db 233 data.lnRawOrder[1]=A_SPOT;
lilac0112_1 27:825c6835e3db 234 }
lilac0112_1 27:825c6835e3db 235 else if((data.lnRawOrder[2]==LINE_EMPTY)||(data.lnRawOrder[2]==A_SPOT)){
lilac0112_1 27:825c6835e3db 236 data.lnRawOrder[2]=A_SPOT;
lilac0112_1 27:825c6835e3db 237 }
lilac0112_1 27:825c6835e3db 238 data.lnRawRise[A_SPOT]=1;
lilac0112_1 27:825c6835e3db 239 }
lilac0112_1 27:825c6835e3db 240 void LineRawRanking_B(void){
lilac0112_1 27:825c6835e3db 241 data.lnRawLastRise=B_SPOT;
lilac0112_1 27:825c6835e3db 242 LineRawCall_ALL();
lilac0112_1 27:825c6835e3db 243 if(data.lnRawRise[B_SPOT]==1) return;
lilac0112_1 27:825c6835e3db 244
lilac0112_1 27:825c6835e3db 245 if((data.lnRawOrder[0]==LINE_EMPTY)||(data.lnRawOrder[0]==B_SPOT)){
lilac0112_1 27:825c6835e3db 246 data.lnRawOrder[0]=B_SPOT;
lilac0112_1 30:5998ba42237e 247 if((sys.DefenceFlag==1)&&(data.lnRawOrder[1]==LINE_EMPTY)){
lilac0112_1 30:5998ba42237e 248 data.lnRawOrder[1]=C_SPOT;
lilac0112_1 30:5998ba42237e 249 }
lilac0112_1 27:825c6835e3db 250 }
lilac0112_1 27:825c6835e3db 251 else if((data.lnRawOrder[1]==LINE_EMPTY)||(data.lnRawOrder[1]==B_SPOT)){
lilac0112_1 27:825c6835e3db 252 data.lnRawOrder[1]=B_SPOT;
lilac0112_1 27:825c6835e3db 253 }
lilac0112_1 27:825c6835e3db 254 else if((data.lnRawOrder[2]==LINE_EMPTY)||(data.lnRawOrder[2]==B_SPOT)){
lilac0112_1 27:825c6835e3db 255 data.lnRawOrder[2]=B_SPOT;
lilac0112_1 27:825c6835e3db 256 }
lilac0112_1 27:825c6835e3db 257 data.lnRawRise[B_SPOT]=1;
lilac0112_1 27:825c6835e3db 258 }
lilac0112_1 27:825c6835e3db 259 void LineRawRanking_C(void){
lilac0112_1 27:825c6835e3db 260 data.lnRawLastRise=C_SPOT;
lilac0112_1 27:825c6835e3db 261 LineRawCall_ALL();
lilac0112_1 27:825c6835e3db 262 if(data.lnRawRise[C_SPOT]==1) return;
lilac0112_1 27:825c6835e3db 263
lilac0112_1 27:825c6835e3db 264 if((data.lnRawOrder[0]==LINE_EMPTY)||(data.lnRawOrder[0]==C_SPOT)){
lilac0112_1 27:825c6835e3db 265 data.lnRawOrder[0]=C_SPOT;
lilac0112_1 27:825c6835e3db 266 }
lilac0112_1 27:825c6835e3db 267 else if((data.lnRawOrder[1]==LINE_EMPTY)||(data.lnRawOrder[1]==C_SPOT)){
lilac0112_1 27:825c6835e3db 268 data.lnRawOrder[1]=C_SPOT;
lilac0112_1 27:825c6835e3db 269 }
lilac0112_1 27:825c6835e3db 270 else if((data.lnRawOrder[2]==LINE_EMPTY)||(data.lnRawOrder[2]==C_SPOT)){
lilac0112_1 27:825c6835e3db 271 data.lnRawOrder[2]=C_SPOT;
lilac0112_1 27:825c6835e3db 272 }
lilac0112_1 27:825c6835e3db 273 data.lnRawRise[C_SPOT]=1;
lilac0112_1 27:825c6835e3db 274 }
lilac0112_1 0:ea35c18c85fc 275 //ball
lilac0112_1 0:ea35c18c85fc 276 uint8_t ReadBall(void){//1or0
lilac0112_1 33:aa115c30892e 277 return (BallChecker.read()==0);
lilac0112_1 33:aa115c30892e 278 //return (BallCheckerA.read_u16()<40000);
lilac0112_1 0:ea35c18c85fc 279 }
lilac0112_1 25:a7460e23e02e 280 void JudgeBallHolding(void){
lilac0112_1 25:a7460e23e02e 281 //ホールド判定
lilac0112_1 25:a7460e23e02e 282 if(sys.DriBlind==0){
lilac0112_1 25:a7460e23e02e 283 if(
lilac0112_1 25:a7460e23e02e 284 ((data.ball==0)&&(sys.BallHoldFlag==0))||
lilac0112_1 25:a7460e23e02e 285 ((data.ball==1)&&(sys.BallHoldFlag==1))
lilac0112_1 25:a7460e23e02e 286 ){
lilac0112_1 25:a7460e23e02e 287 sys.BallHoldJudgeFlag=0;
lilac0112_1 25:a7460e23e02e 288 Ball_judge.detach();
lilac0112_1 25:a7460e23e02e 289 }
lilac0112_1 25:a7460e23e02e 290 if(
lilac0112_1 25:a7460e23e02e 291 ((data.ball==0)&&(sys.BallHoldFlag==1))||
lilac0112_1 25:a7460e23e02e 292 ((data.ball==1)&&(sys.BallHoldFlag==0))
lilac0112_1 25:a7460e23e02e 293 ){
lilac0112_1 25:a7460e23e02e 294 if(sys.BallHoldJudgeFlag==0){
lilac0112_1 25:a7460e23e02e 295 sys.BallHoldJudgeFlag=1;
lilac0112_1 30:5998ba42237e 296 Ball_judge.attach(&JudgeBallHold, .25);
lilac0112_1 25:a7460e23e02e 297 }
lilac0112_1 25:a7460e23e02e 298 }
lilac0112_1 25:a7460e23e02e 299 /*
lilac0112_1 25:a7460e23e02e 300 if(
lilac0112_1 25:a7460e23e02e 301 !(
lilac0112_1 25:a7460e23e02e 302 (data.irNotice==IR_CLOSER)&&
lilac0112_1 25:a7460e23e02e 303 ((data.irPosition==10)||(data.irPosition==11)||(data.irPosition==12))
lilac0112_1 25:a7460e23e02e 304 )
lilac0112_1 25:a7460e23e02e 305 ){
lilac0112_1 25:a7460e23e02e 306 sys.BallHoldJudgeFlag=0;
lilac0112_1 25:a7460e23e02e 307 sys.BallHoldFlag=0;
lilac0112_1 25:a7460e23e02e 308 Ball_judge.detach();
lilac0112_1 25:a7460e23e02e 309 }
lilac0112_1 25:a7460e23e02e 310 */
lilac0112_1 25:a7460e23e02e 311 }
lilac0112_1 25:a7460e23e02e 312 else{
lilac0112_1 25:a7460e23e02e 313 sys.BallHoldFlag=0;
lilac0112_1 25:a7460e23e02e 314 }
lilac0112_1 25:a7460e23e02e 315 }
lilac0112_1 25:a7460e23e02e 316 //readsensor
lilac0112_1 0:ea35c18c85fc 317 void ReadCmps(void){
lilac0112_1 0:ea35c18c85fc 318 cmps_set.cmps = hmc.sample()/10.0;
lilac0112_1 0:ea35c18c85fc 319 }
lilac0112_1 0:ea35c18c85fc 320 void ReadPing(void){
lilac0112_1 0:ea35c18c85fc 321 uint16_t spi_data;
lilac0112_1 0:ea35c18c85fc 322 //Ultra Sonic Wave
lilac0112_1 0:ea35c18c85fc 323 spi_ss[1]=0;
lilac0112_1 0:ea35c18c85fc 324 wait_us(200);
lilac0112_1 0:ea35c18c85fc 325
lilac0112_1 0:ea35c18c85fc 326 spi_data = spi.write(0xABCD);
lilac0112_1 0:ea35c18c85fc 327
lilac0112_1 0:ea35c18c85fc 328 wait_us(200);
lilac0112_1 0:ea35c18c85fc 329 spi_ss[1]=1;
lilac0112_1 0:ea35c18c85fc 330
lilac0112_1 2:635947de1583 331 data.ping[0] = (spi_data&0x00FF)>>0;
lilac0112_1 2:635947de1583 332 data.ping[1] = (spi_data&0xFF00)>>8;
lilac0112_1 0:ea35c18c85fc 333 }
lilac0112_1 10:6df631c39f9b 334 void ReadPing2(void){
lilac0112_1 0:ea35c18c85fc 335 uint16_t spi_data;
lilac0112_1 0:ea35c18c85fc 336 //Ultra Sonic Wave
lilac0112_1 0:ea35c18c85fc 337 spi_ss[0]=0;
lilac0112_1 0:ea35c18c85fc 338 wait_us(200);
lilac0112_1 0:ea35c18c85fc 339
lilac0112_1 0:ea35c18c85fc 340 spi_data = spi.write(0xABCD);
lilac0112_1 0:ea35c18c85fc 341
lilac0112_1 0:ea35c18c85fc 342 wait_us(200);
lilac0112_1 0:ea35c18c85fc 343 spi_ss[0]=1;
lilac0112_1 0:ea35c18c85fc 344
lilac0112_1 2:635947de1583 345 data.ping[2] = (spi_data&0x00FF)>>0;
lilac0112_1 2:635947de1583 346 data.ping[3] = (spi_data&0xFF00)>>8;
lilac0112_1 0:ea35c18c85fc 347 }
lilac0112_1 0:ea35c18c85fc 348 void ReadIr(void){
lilac0112_1 0:ea35c18c85fc 349 uint16_t spi_data;
lilac0112_1 0:ea35c18c85fc 350
lilac0112_1 0:ea35c18c85fc 351 //Ir
lilac0112_1 0:ea35c18c85fc 352 spi_ss[3]=0;
lilac0112_1 0:ea35c18c85fc 353 wait_us(200);
lilac0112_1 0:ea35c18c85fc 354
lilac0112_1 0:ea35c18c85fc 355 spi_data = spi.write(0xABCD);
lilac0112_1 0:ea35c18c85fc 356
lilac0112_1 0:ea35c18c85fc 357 wait_us(200);
lilac0112_1 0:ea35c18c85fc 358 spi_ss[3]=1;
lilac0112_1 2:635947de1583 359 /*
lilac0112_1 1:3e013ae7900d 360 //key/phaseL/phaseS/long/short/
lilac0112_1 1:3e013ae7900d 361 // 2/ 3/ 3/ 4/ 4/
lilac0112_1 2:635947de1583 362 data.irKey = (spi_data&0xC000)>>14;//1100000000000000
lilac0112_1 2:635947de1583 363 data.irValPhase[IR_LONG] = (spi_data&0x3800)>>11;//0011100000000000
lilac0112_1 2:635947de1583 364 data.irValPhase[IR_SHORT] = (spi_data&0x0700)>>8;///0000011100000000
lilac0112_1 2:635947de1583 365 data.irSpot[IR_LONG] = (spi_data&0x00F0)>>4;///0000000011110000
lilac0112_1 2:635947de1583 366 data.irSpot[IR_SHORT] = (spi_data&0x000F)>>0;///0000000000001111
lilac0112_1 2:635947de1583 367 */
lilac0112_1 0:ea35c18c85fc 368
lilac0112_1 2:635947de1583 369 //key/phaseL/phaseS/diffL/position/
lilac0112_1 2:635947de1583 370 // 2/ 3/ 3/ 3/ 5/
lilac0112_1 2:635947de1583 371 data.irKey = (spi_data&0xC000)>>14;//1100000000000000
lilac0112_1 2:635947de1583 372 data.irValPhase[IR_LONG] = (spi_data&0x3800)>>11;//0011100000000000
lilac0112_1 2:635947de1583 373 data.irValPhase[IR_SHORT] = (spi_data&0x0700)>>8;///0000011100000000
lilac0112_1 2:635947de1583 374 data.irDif[IR_LONG] = (spi_data&0x00E0)>>5;///0000000011100000
lilac0112_1 2:635947de1583 375 data.irPosition = (spi_data&0x001F)>>0;///0000000000011111
lilac0112_1 1:3e013ae7900d 376
lilac0112_1 2:635947de1583 377 if(data.irKey!=0x2) data.irNotice=IR_NONE;
lilac0112_1 2:635947de1583 378
lilac0112_1 2:635947de1583 379
lilac0112_1 2:635947de1583 380 if(data.irValPhase[IR_SHORT]>=DIS_7){
lilac0112_1 27:825c6835e3db 381 if(data.irValPhase[IR_LONG]>=DIS_7){
lilac0112_1 2:635947de1583 382 data.irNotice=IR_NONE;
lilac0112_1 1:3e013ae7900d 383 }
lilac0112_1 1:3e013ae7900d 384 else{
lilac0112_1 27:825c6835e3db 385 if(data.irDif[IR_LONG]<=DIS_0){
lilac0112_1 2:635947de1583 386 data.irNotice=IR_NONE;
lilac0112_1 1:3e013ae7900d 387 }
lilac0112_1 1:3e013ae7900d 388 else{
lilac0112_1 2:635947de1583 389 data.irNotice=IR_FAR;
lilac0112_1 1:3e013ae7900d 390 }
lilac0112_1 1:3e013ae7900d 391 }
lilac0112_1 1:3e013ae7900d 392 }
lilac0112_1 2:635947de1583 393 else{
lilac0112_1 29:e8bafe48aa90 394 if(data.irValPhase[IR_SHORT]>=DIS_3){
lilac0112_1 2:635947de1583 395 data.irNotice = IR_CLOSE;
lilac0112_1 2:635947de1583 396 }
lilac0112_1 2:635947de1583 397 else{
lilac0112_1 2:635947de1583 398 data.irNotice = IR_CLOSER;
lilac0112_1 2:635947de1583 399 }
lilac0112_1 2:635947de1583 400 }
lilac0112_1 1:3e013ae7900d 401
lilac0112_1 2:635947de1583 402 /*if(data.irValPhase[IR_LONG]>=DIS_7){
lilac0112_1 2:635947de1583 403 data.irNotice=IR_NONE;
lilac0112_1 2:635947de1583 404 }
lilac0112_1 2:635947de1583 405 else{
lilac0112_1 2:635947de1583 406 if(data.irValPhase[IR_SHORT]>=DIS_7){
lilac0112_1 2:635947de1583 407 data.irNotice=IR_FAR;
lilac0112_1 2:635947de1583 408 }
lilac0112_1 2:635947de1583 409 else{
lilac0112_1 2:635947de1583 410 if(data.irValPhase[IR_LONG]>=DIS_4){
lilac0112_1 2:635947de1583 411 data.irNotice = IR_CLOSE;
lilac0112_1 2:635947de1583 412 }
lilac0112_1 2:635947de1583 413 else{
lilac0112_1 2:635947de1583 414 data.irNotice = IR_CLOSER;
lilac0112_1 2:635947de1583 415 }
lilac0112_1 2:635947de1583 416 }
lilac0112_1 2:635947de1583 417 }*/
lilac0112_1 2:635947de1583 418 /*
lilac0112_1 2:635947de1583 419 if(data.irNotice == IR_NONE) data.irPosition=11;
lilac0112_1 2:635947de1583 420 if(data.irNotice == IR_FAR) data.irPosition=data.irSpot[IR_LONG]-1;
lilac0112_1 2:635947de1583 421 if(data.irNotice == IR_CLOSE) data.irPosition=data.irSpot[IR_SHORT]+7;
lilac0112_1 2:635947de1583 422 if(data.irNotice == IR_CLOSER) data.irPosition=data.irSpot[IR_SHORT]+7;
lilac0112_1 2:635947de1583 423 */
lilac0112_1 5:5ff3a7d5d8c2 424 //LED[1] = LED[0];
lilac0112_1 5:5ff3a7d5d8c2 425 //LED[0] = !LED[0];
lilac0112_1 0:ea35c18c85fc 426 }
lilac0112_1 19:967207de919d 427 //info
lilac0112_1 19:967207de919d 428 void ValidInfo(void){
lilac0112_1 21:378470320524 429 //LED=0xA;
lilac0112_1 19:967207de919d 430 if(sys.InfoFlag==0){
lilac0112_1 19:967207de919d 431 sys.InfoFlag=1;
lilac0112_1 19:967207de919d 432 }
lilac0112_1 19:967207de919d 433 }
lilac0112_1 0:ea35c18c85fc 434 void ReadInfo(void){
lilac0112_1 19:967207de919d 435 ReadIr();
lilac0112_1 19:967207de919d 436 PidUpdate();
lilac0112_1 19:967207de919d 437 ReadPing();
lilac0112_1 19:967207de919d 438 ReadPing2();
lilac0112_1 0:ea35c18c85fc 439 }