2015_robocon_bteam / Mbed 2 deprecated 2015robot_main_zenkoku

Dependencies:   PID QEI mbed

Committer:
DeguNaoto
Date:
Wed Oct 28 09:03:19 2015 +0000
Revision:
0:b613dc16f27d
Child:
5:0e6dd1ff3ff2
20151028 Ticker??????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
DeguNaoto 0:b613dc16f27d 1 /***RS485 Communication.***/
DeguNaoto 0:b613dc16f27d 2 #define RS485_TX p13
DeguNaoto 0:b613dc16f27d 3 #define RS485_RX p14
DeguNaoto 0:b613dc16f27d 4 Serial RS485(RS485_TX, RS485_RX);
DeguNaoto 0:b613dc16f27d 5 #define EnablePin p7
DeguNaoto 0:b613dc16f27d 6 DigitalOut Enable(EnablePin);
DeguNaoto 0:b613dc16f27d 7 inline void initializeRS485(){
DeguNaoto 0:b613dc16f27d 8 RS485.format(8,Serial::Even);
DeguNaoto 0:b613dc16f27d 9 }
DeguNaoto 0:b613dc16f27d 10
DeguNaoto 0:b613dc16f27d 11 /*
DeguNaoto 0:b613dc16f27d 12 inline void sendData(int address, int data5) {
DeguNaoto 0:b613dc16f27d 13 unsigned int data;
DeguNaoto 0:b613dc16f27d 14 if (data5 <= 31) {
DeguNaoto 0:b613dc16f27d 15 data = ((address << 5) | data5);
DeguNaoto 0:b613dc16f27d 16 RS485.putc(data);
DeguNaoto 0:b613dc16f27d 17 }
DeguNaoto 0:b613dc16f27d 18 }
DeguNaoto 0:b613dc16f27d 19 */
DeguNaoto 0:b613dc16f27d 20
DeguNaoto 0:b613dc16f27d 21 inline void sendData(int address, unsigned int data8) {
DeguNaoto 0:b613dc16f27d 22 unsigned int data;
DeguNaoto 0:b613dc16f27d 23 if (data8 <= 15) {
DeguNaoto 0:b613dc16f27d 24 data = 128 | (address << 4) | (data8 & 15);
DeguNaoto 0:b613dc16f27d 25 RS485.putc(data);
DeguNaoto 0:b613dc16f27d 26 }
DeguNaoto 0:b613dc16f27d 27 else if (data8 <= 255 && data8 >= 16) {
DeguNaoto 0:b613dc16f27d 28 data = (address << 4) | (data8 >> 4);
DeguNaoto 0:b613dc16f27d 29 RS485.putc(data);
DeguNaoto 0:b613dc16f27d 30 wait(0.000001);
DeguNaoto 0:b613dc16f27d 31 data = 128 | (address << 4) | (data8 & 15);
DeguNaoto 0:b613dc16f27d 32 RS485.putc(data);
DeguNaoto 0:b613dc16f27d 33 }
DeguNaoto 0:b613dc16f27d 34 }
DeguNaoto 0:b613dc16f27d 35
DeguNaoto 0:b613dc16f27d 36
DeguNaoto 0:b613dc16f27d 37 #ifdef IM920
DeguNaoto 0:b613dc16f27d 38 /***IM920 Communication.***/
DeguNaoto 0:b613dc16f27d 39 char rcvBUFF_IM920[40], rcvBUFF_SBDBT[40];
DeguNaoto 0:b613dc16f27d 40 int rcvCOUNT_IM920 = 0, rcvCOUNT_SBDBT = 0;
DeguNaoto 0:b613dc16f27d 41 int rcvFLAG = 0;
DeguNaoto 0:b613dc16f27d 42 int sendFLAG = 0;
DeguNaoto 0:b613dc16f27d 43 int deadCOUNT = 0;
DeguNaoto 0:b613dc16f27d 44 int deadflag = 0;
DeguNaoto 0:b613dc16f27d 45 int oldDATA;
DeguNaoto 0:b613dc16f27d 46 unsigned int cm, a2, b, X, Y;
DeguNaoto 0:b613dc16f27d 47 unsigned int sendDATA = 0;
DeguNaoto 0:b613dc16f27d 48 unsigned long outDATA[4];
DeguNaoto 0:b613dc16f27d 49
DeguNaoto 0:b613dc16f27d 50 Serial IM920_USART(p9, p10);
DeguNaoto 0:b613dc16f27d 51 Serial SBDBT_USART(p28, p27);
DeguNaoto 0:b613dc16f27d 52 DigitalIn BUSY(p8);
DeguNaoto 0:b613dc16f27d 53
DeguNaoto 0:b613dc16f27d 54 Ticker DTimer;
DeguNaoto 0:b613dc16f27d 55
DeguNaoto 0:b613dc16f27d 56 void DEVICE_TX(int DATA, int DEVICE = 0) {
DeguNaoto 0:b613dc16f27d 57 char sDATA[2];
DeguNaoto 0:b613dc16f27d 58 if (DATA <= 15)
DeguNaoto 0:b613dc16f27d 59 sprintf(sDATA, "0%X", DATA);
DeguNaoto 0:b613dc16f27d 60 else
DeguNaoto 0:b613dc16f27d 61 sprintf(sDATA, "%X", DATA);
DeguNaoto 0:b613dc16f27d 62
DeguNaoto 0:b613dc16f27d 63 if (DEVICE == 1) {
DeguNaoto 0:b613dc16f27d 64 IM920_USART.printf("TXDA %s\r\n", sDATA);
DeguNaoto 0:b613dc16f27d 65 }
DeguNaoto 0:b613dc16f27d 66 else if (DEVICE == 2) {
DeguNaoto 0:b613dc16f27d 67 SBDBT_USART.printf("00000000000%s\r\n", sDATA);
DeguNaoto 0:b613dc16f27d 68 }
DeguNaoto 0:b613dc16f27d 69 else {
DeguNaoto 0:b613dc16f27d 70 IM920_USART.printf("TXDA %s\r\n", sDATA);
DeguNaoto 0:b613dc16f27d 71 SBDBT_USART.printf("00000000000%s\r\n", sDATA);
DeguNaoto 0:b613dc16f27d 72 }
DeguNaoto 0:b613dc16f27d 73 }
DeguNaoto 0:b613dc16f27d 74
DeguNaoto 0:b613dc16f27d 75 int cvsendDATA(int Buzzer, int LED) {
DeguNaoto 0:b613dc16f27d 76 /*
DeguNaoto 0:b613dc16f27d 77 if (Buzzer > 1)
DeguNaoto 0:b613dc16f27d 78 Buzzer = 1;
DeguNaoto 0:b613dc16f27d 79 else if (Buzzer < 0)
DeguNaoto 0:b613dc16f27d 80 Buzzer = 0;
DeguNaoto 0:b613dc16f27d 81 if (LED < 0)
DeguNaoto 0:b613dc16f27d 82 LED = 0;
DeguNaoto 0:b613dc16f27d 83 else if (LED >= 16)
DeguNaoto 0:b613dc16f27d 84 LED = 15;
DeguNaoto 0:b613dc16f27d 85 */
DeguNaoto 0:b613dc16f27d 86 Buzzer = 0;
DeguNaoto 0:b613dc16f27d 87 LED = 0;
DeguNaoto 0:b613dc16f27d 88 return (Buzzer << 6) | (LED << 2);
DeguNaoto 0:b613dc16f27d 89 }
DeguNaoto 0:b613dc16f27d 90
DeguNaoto 0:b613dc16f27d 91 void cvrecvDATA(char *buffDATA, unsigned long *outputDATA) {
DeguNaoto 0:b613dc16f27d 92 char s1[2], s2[2], s3[2], s4[2];
DeguNaoto 0:b613dc16f27d 93 strncpy(s1, buffDATA+11, 2);
DeguNaoto 0:b613dc16f27d 94 strncpy(s2, buffDATA+14, 2);
DeguNaoto 0:b613dc16f27d 95 strncpy(s3, buffDATA+17, 2);
DeguNaoto 0:b613dc16f27d 96 strncpy(s4, buffDATA+20, 2);
DeguNaoto 0:b613dc16f27d 97 outputDATA[0] = strtoul(s1, (char **) NULL, 16);
DeguNaoto 0:b613dc16f27d 98 outputDATA[1] = strtoul(s2, (char **) NULL, 16);
DeguNaoto 0:b613dc16f27d 99 outputDATA[2] = strtoul(s3, (char **) NULL, 16);
DeguNaoto 0:b613dc16f27d 100 outputDATA[3] = strtoul(s4, (char **) NULL, 16);
DeguNaoto 0:b613dc16f27d 101 }
DeguNaoto 0:b613dc16f27d 102
DeguNaoto 0:b613dc16f27d 103 void cvrecvDATAsbdbt(char *buffDATA, unsigned long *outputDATA) {
DeguNaoto 0:b613dc16f27d 104 char s1[2], s2[2];
DeguNaoto 0:b613dc16f27d 105 strncpy(s1, buffDATA+5, 2);
DeguNaoto 0:b613dc16f27d 106 strncpy(s2, buffDATA+7, 2);
DeguNaoto 0:b613dc16f27d 107 outputDATA[0] = strtoul(s1, (char **) NULL, 16);
DeguNaoto 0:b613dc16f27d 108 outputDATA[1] = strtoul(s2, (char **) NULL, 16);
DeguNaoto 0:b613dc16f27d 109 }
DeguNaoto 0:b613dc16f27d 110
DeguNaoto 0:b613dc16f27d 111 void readDATA(unsigned long* outDATA) {
DeguNaoto 0:b613dc16f27d 112 cm = (outDATA[0] & 128) >> 7;
DeguNaoto 0:b613dc16f27d 113 a2 = (outDATA[0] & 64) >> 6;
DeguNaoto 0:b613dc16f27d 114 X = (outDATA[0] & 56) >> 3;
DeguNaoto 0:b613dc16f27d 115 Y = outDATA[0] & 7;
DeguNaoto 0:b613dc16f27d 116 b = outDATA[1];
DeguNaoto 0:b613dc16f27d 117 }
DeguNaoto 0:b613dc16f27d 118
DeguNaoto 0:b613dc16f27d 119 void SBDBT_RX() {
DeguNaoto 0:b613dc16f27d 120 char rcvDATA;
DeguNaoto 0:b613dc16f27d 121 rcvDATA = SBDBT_USART.getc();
DeguNaoto 0:b613dc16f27d 122 rcvBUFF_SBDBT[rcvCOUNT_SBDBT] = rcvDATA;
DeguNaoto 0:b613dc16f27d 123 rcvCOUNT_SBDBT++;
DeguNaoto 0:b613dc16f27d 124 if (rcvDATA == 0x0A) {
DeguNaoto 0:b613dc16f27d 125 rcvCOUNT_SBDBT = 0;
DeguNaoto 0:b613dc16f27d 126 rcvFLAG = 2;
DeguNaoto 0:b613dc16f27d 127 }
DeguNaoto 0:b613dc16f27d 128 else if (rcvCOUNT_SBDBT >= 40) {
DeguNaoto 0:b613dc16f27d 129 rcvCOUNT_SBDBT = 0;
DeguNaoto 0:b613dc16f27d 130 memset(rcvBUFF_SBDBT, '\0', 40);
DeguNaoto 0:b613dc16f27d 131 }
DeguNaoto 0:b613dc16f27d 132 }
DeguNaoto 0:b613dc16f27d 133
DeguNaoto 0:b613dc16f27d 134 void IM920_RX() {
DeguNaoto 0:b613dc16f27d 135 char rcvDATA;
DeguNaoto 0:b613dc16f27d 136 rcvDATA = IM920_USART.getc();
DeguNaoto 0:b613dc16f27d 137 rcvBUFF_IM920[rcvCOUNT_IM920] = rcvDATA;
DeguNaoto 0:b613dc16f27d 138 rcvCOUNT_IM920++;
DeguNaoto 0:b613dc16f27d 139 if (rcvDATA == 0x0A) {
DeguNaoto 0:b613dc16f27d 140 rcvCOUNT_IM920 = 0;
DeguNaoto 0:b613dc16f27d 141 rcvFLAG = 1;
DeguNaoto 0:b613dc16f27d 142 }
DeguNaoto 0:b613dc16f27d 143 else if (rcvCOUNT_IM920 >= 40) {
DeguNaoto 0:b613dc16f27d 144 rcvCOUNT_IM920 = 0;
DeguNaoto 0:b613dc16f27d 145 memset(rcvBUFF_IM920, '\0', 40);
DeguNaoto 0:b613dc16f27d 146 }
DeguNaoto 0:b613dc16f27d 147 }
DeguNaoto 0:b613dc16f27d 148
DeguNaoto 0:b613dc16f27d 149 void deadCheck() {
DeguNaoto 0:b613dc16f27d 150 if (rcvFLAG == 0 && deadCOUNT >= 5) {
DeguNaoto 0:b613dc16f27d 151 deadflag = 1;
DeguNaoto 0:b613dc16f27d 152 deadCOUNT = 0;
DeguNaoto 0:b613dc16f27d 153 }
DeguNaoto 0:b613dc16f27d 154 else if (rcvFLAG == 0 && deadCOUNT >= 2) {
DeguNaoto 0:b613dc16f27d 155 deadCOUNT++;
DeguNaoto 0:b613dc16f27d 156 DEVICE_TX(sendDATA);
DeguNaoto 0:b613dc16f27d 157 }
DeguNaoto 0:b613dc16f27d 158 else if (rcvFLAG == 0) {
DeguNaoto 0:b613dc16f27d 159 deadCOUNT++;
DeguNaoto 0:b613dc16f27d 160 }
DeguNaoto 0:b613dc16f27d 161 sendDATA = cvsendDATA(0, 0);
DeguNaoto 0:b613dc16f27d 162 }
DeguNaoto 0:b613dc16f27d 163
DeguNaoto 0:b613dc16f27d 164 inline void initializeIM920(){
DeguNaoto 0:b613dc16f27d 165 IM920_USART.baud(9600);
DeguNaoto 0:b613dc16f27d 166 IM920_USART.format(8, Serial::None, 1);
DeguNaoto 0:b613dc16f27d 167 IM920_USART.attach(IM920_RX, Serial::RxIrq);
DeguNaoto 0:b613dc16f27d 168 SBDBT_USART.baud(9600);
DeguNaoto 0:b613dc16f27d 169 SBDBT_USART.format(8, Serial::None, 1);
DeguNaoto 0:b613dc16f27d 170 SBDBT_USART.attach(SBDBT_RX, Serial::RxIrq);
DeguNaoto 0:b613dc16f27d 171 DTimer.attach(deadCheck, 0.3);
DeguNaoto 0:b613dc16f27d 172 sendDATA = cvsendDATA(0, 0);
DeguNaoto 0:b613dc16f27d 173 }
DeguNaoto 0:b613dc16f27d 174
DeguNaoto 0:b613dc16f27d 175 inline void readIM920(){
DeguNaoto 0:b613dc16f27d 176 if (rcvFLAG == 1) {
DeguNaoto 0:b613dc16f27d 177 if (strlen(rcvBUFF_IM920) > 8) {
DeguNaoto 0:b613dc16f27d 178 cvrecvDATA(rcvBUFF_IM920, outDATA);
DeguNaoto 0:b613dc16f27d 179 readDATA(outDATA);
DeguNaoto 0:b613dc16f27d 180 deadCOUNT = 0;
DeguNaoto 0:b613dc16f27d 181 deadflag = 0;
DeguNaoto 0:b613dc16f27d 182 DEVICE_TX(sendDATA, 1);
DeguNaoto 0:b613dc16f27d 183 }
DeguNaoto 0:b613dc16f27d 184 memset(rcvBUFF_IM920, '\0', 40);
DeguNaoto 0:b613dc16f27d 185 rcvFLAG = 0;
DeguNaoto 0:b613dc16f27d 186 }
DeguNaoto 0:b613dc16f27d 187 else if (rcvFLAG == 2) {
DeguNaoto 0:b613dc16f27d 188 if (strlen(rcvBUFF_SBDBT) > 4) {
DeguNaoto 0:b613dc16f27d 189 cvrecvDATAsbdbt(rcvBUFF_SBDBT, outDATA);
DeguNaoto 0:b613dc16f27d 190 readDATA(outDATA);
DeguNaoto 0:b613dc16f27d 191 deadCOUNT = 0;
DeguNaoto 0:b613dc16f27d 192 deadflag = 0;
DeguNaoto 0:b613dc16f27d 193 DEVICE_TX(sendDATA, 2);
DeguNaoto 0:b613dc16f27d 194 }
DeguNaoto 0:b613dc16f27d 195 memset(rcvBUFF_SBDBT, '\0', 40);
DeguNaoto 0:b613dc16f27d 196 rcvFLAG = 0;
DeguNaoto 0:b613dc16f27d 197 }
DeguNaoto 0:b613dc16f27d 198 }
DeguNaoto 0:b613dc16f27d 199 #else
DeguNaoto 0:b613dc16f27d 200 /***Get state ps3con.***/
DeguNaoto 0:b613dc16f27d 201 #define SBDBT_TX p28
DeguNaoto 0:b613dc16f27d 202 #define SBDBT_RX p27
DeguNaoto 0:b613dc16f27d 203 Serial SBDBT(SBDBT_TX, SBDBT_RX);
DeguNaoto 0:b613dc16f27d 204 #define ps3_start 0x80
DeguNaoto 0:b613dc16f27d 205 short toggle = 0;
DeguNaoto 0:b613dc16f27d 206 short edge_circle = 0;
DeguNaoto 0:b613dc16f27d 207 short edge_triangle = 0;
DeguNaoto 0:b613dc16f27d 208 short edge_square = 0;
DeguNaoto 0:b613dc16f27d 209 short edge_r1 = 0;
DeguNaoto 0:b613dc16f27d 210 short edge_l1 = 0;
DeguNaoto 0:b613dc16f27d 211 short edge_r2 = 0;
DeguNaoto 0:b613dc16f27d 212 short edge_l2 = 0;
DeguNaoto 0:b613dc16f27d 213 short edge_l_up = 0;
DeguNaoto 0:b613dc16f27d 214 short edge_l_down = 0;
DeguNaoto 0:b613dc16f27d 215 short edge_r_up = 0;
DeguNaoto 0:b613dc16f27d 216 short edge_r_down = 0;
DeguNaoto 0:b613dc16f27d 217 short edge_right = 0;
DeguNaoto 0:b613dc16f27d 218 short edge_left = 0;
DeguNaoto 0:b613dc16f27d 219 short edge_up = 0;
DeguNaoto 0:b613dc16f27d 220 short edge_down = 0;
DeguNaoto 0:b613dc16f27d 221 short edge_cross = 0;
DeguNaoto 0:b613dc16f27d 222 short square = 0;
DeguNaoto 0:b613dc16f27d 223 short triangle = 0;
DeguNaoto 0:b613dc16f27d 224 short circle = 0;
DeguNaoto 0:b613dc16f27d 225 short cross = 0;
DeguNaoto 0:b613dc16f27d 226 short up = 0;
DeguNaoto 0:b613dc16f27d 227 short down = 0;
DeguNaoto 0:b613dc16f27d 228 short right = 0;
DeguNaoto 0:b613dc16f27d 229 short left = 0;
DeguNaoto 0:b613dc16f27d 230 short l1 = 0;
DeguNaoto 0:b613dc16f27d 231 short l2 = 0;
DeguNaoto 0:b613dc16f27d 232 short r1 = 0;
DeguNaoto 0:b613dc16f27d 233 short r2 = 0;
DeguNaoto 0:b613dc16f27d 234 signed int analog_lx = 0;
DeguNaoto 0:b613dc16f27d 235 signed int analog_ly = 0;
DeguNaoto 0:b613dc16f27d 236 signed int analog_rx = 0;
DeguNaoto 0:b613dc16f27d 237 signed int analog_ry = 0;
DeguNaoto 0:b613dc16f27d 238 int count = 0;
DeguNaoto 0:b613dc16f27d 239 int sample = 0;
DeguNaoto 0:b613dc16f27d 240 int ps3_data[7];
DeguNaoto 0:b613dc16f27d 241 inline void data_clear();
DeguNaoto 0:b613dc16f27d 242 inline void data_check();
DeguNaoto 0:b613dc16f27d 243 inline void SBDBT_interrupt();
DeguNaoto 0:b613dc16f27d 244 inline void initializeSBDBT();
DeguNaoto 0:b613dc16f27d 245
DeguNaoto 0:b613dc16f27d 246 inline void data_clear()
DeguNaoto 0:b613dc16f27d 247 {
DeguNaoto 0:b613dc16f27d 248 for(int i=0; i<7; i++) ps3_data[i]=0;
DeguNaoto 0:b613dc16f27d 249 }
DeguNaoto 0:b613dc16f27d 250 inline void data_check()
DeguNaoto 0:b613dc16f27d 251 {
DeguNaoto 0:b613dc16f27d 252 square=0,triangle=0,circle=0,cross=0,up=0,down=0,right=0,left=0,l1=0,l2=0,r1=0,r2=0;
DeguNaoto 0:b613dc16f27d 253 analog_lx=0,analog_ly=0,analog_rx=0,analog_ry=0;
DeguNaoto 0:b613dc16f27d 254 if((ps3_data[0]==0x00)&&(ps3_data[1]==0x01)) up=1;
DeguNaoto 0:b613dc16f27d 255 else if((ps3_data[0]==0x00)&&(ps3_data[1]==0x02)) down=1;
DeguNaoto 0:b613dc16f27d 256 else if((ps3_data[0]==0x00)&&(ps3_data[1]==0x04)) right=1;
DeguNaoto 0:b613dc16f27d 257 else if((ps3_data[0]==0x00)&&(ps3_data[1]==0x08)) left=1;
DeguNaoto 0:b613dc16f27d 258 else if((ps3_data[0]==0x00)&&(ps3_data[1]==0x10)) triangle=1;
DeguNaoto 0:b613dc16f27d 259 else if((ps3_data[0]==0x00)&&(ps3_data[1]==0x20)) cross=1;
DeguNaoto 0:b613dc16f27d 260 else if((ps3_data[0]==0x00)&&(ps3_data[1]==0x40)) circle=1;
DeguNaoto 0:b613dc16f27d 261 else if((ps3_data[0]==0x01)&&(ps3_data[1]==0x00)) square=1;
DeguNaoto 0:b613dc16f27d 262 else if((ps3_data[0]==0x02)&&(ps3_data[1]==0x00)) l1=1;
DeguNaoto 0:b613dc16f27d 263 else if((ps3_data[0]==0x04)&&(ps3_data[1]==0x00)) l2=1;
DeguNaoto 0:b613dc16f27d 264 else if((ps3_data[0]==0x08)&&(ps3_data[1]==0x00)) r1=1;
DeguNaoto 0:b613dc16f27d 265 else if((ps3_data[0]==0x10)&&(ps3_data[1]==0x00)) r2=1;
DeguNaoto 0:b613dc16f27d 266 analog_lx=64-(signed int)ps3_data[2];
DeguNaoto 0:b613dc16f27d 267 analog_ly=64-(signed int)ps3_data[3];
DeguNaoto 0:b613dc16f27d 268 analog_rx=64-(signed int)ps3_data[4];
DeguNaoto 0:b613dc16f27d 269 analog_ry=64-(signed int)ps3_data[5];
DeguNaoto 0:b613dc16f27d 270 if(!circle) edge_circle=1;
DeguNaoto 0:b613dc16f27d 271 if(!triangle) edge_triangle=1;
DeguNaoto 0:b613dc16f27d 272 if(!r1) edge_r1=1;
DeguNaoto 0:b613dc16f27d 273 if(!l1) edge_l1=1;
DeguNaoto 0:b613dc16f27d 274 if(!r2) edge_r2=1;
DeguNaoto 0:b613dc16f27d 275 if(!l2) edge_l2=1;
DeguNaoto 0:b613dc16f27d 276 if(!right) edge_right=1;
DeguNaoto 0:b613dc16f27d 277 if(!left) edge_left=1;
DeguNaoto 0:b613dc16f27d 278 if(!up) edge_up=1;
DeguNaoto 0:b613dc16f27d 279 if(!square) edge_square=1;
DeguNaoto 0:b613dc16f27d 280 if(!down) edge_down=1;
DeguNaoto 0:b613dc16f27d 281 if(!cross) edge_cross=1;
DeguNaoto 0:b613dc16f27d 282 }
DeguNaoto 0:b613dc16f27d 283 ///interrupt SBDBT RX.
DeguNaoto 0:b613dc16f27d 284 inline void SBDBT_interrupt()
DeguNaoto 0:b613dc16f27d 285 {
DeguNaoto 0:b613dc16f27d 286 sample=SBDBT.getc();
DeguNaoto 0:b613dc16f27d 287 if(count==7) data_clear();
DeguNaoto 0:b613dc16f27d 288 if(sample==ps3_start) count=0;
DeguNaoto 0:b613dc16f27d 289 else {
DeguNaoto 0:b613dc16f27d 290 ps3_data[count]=sample;
DeguNaoto 0:b613dc16f27d 291 count++;
DeguNaoto 0:b613dc16f27d 292 }
DeguNaoto 0:b613dc16f27d 293 if(count==6) data_check();
DeguNaoto 0:b613dc16f27d 294 }
DeguNaoto 0:b613dc16f27d 295 inline void initializeSBDBT()
DeguNaoto 0:b613dc16f27d 296 {
DeguNaoto 0:b613dc16f27d 297 wait(0.1);
DeguNaoto 0:b613dc16f27d 298 while(analog_ly==-64)
DeguNaoto 0:b613dc16f27d 299 for(int i=0; i<7; i++) ps3_data[i]=0;
DeguNaoto 0:b613dc16f27d 300 SBDBT.baud(2400);
DeguNaoto 0:b613dc16f27d 301 SBDBT.format(8, Serial::None, 1);
DeguNaoto 0:b613dc16f27d 302 SBDBT.attach(SBDBT_interrupt, Serial::RxIrq);
DeguNaoto 0:b613dc16f27d 303 }
DeguNaoto 0:b613dc16f27d 304 #endif