2015_robocon_bteam / Mbed 2 deprecated 2015robot_main

Dependencies:   PID QEI mbed

Fork of 2015robot_main by Naoto Deguchi

Committer:
DeguNaoto
Date:
Sun Sep 20 04:31:34 2015 +0000
Revision:
32:eb7c263cb5cf
Parent:
26:8e6c736b6791
??(Vr,Vl)?????

Who changed what in which revision?

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