LPC824専用プログラム
Dependencies: Ping SDFileSystem mbed-src
Diff: format.cpp
- Revision:
- 9:7f98d4415425
- Parent:
- 8:a2eadba03040
- Child:
- 10:641da47d4a14
--- a/format.cpp Sun Jan 24 09:09:49 2016 +0000 +++ b/format.cpp Sun Jan 24 15:16:26 2016 +0000 @@ -75,104 +75,57 @@ #ifdef ULTRA_SONIC -//InterruptIn vol(P0_15); -void fx(void){ - uint8_t packet, val, order; - uint8_t front_dis=0, rear_dis=0; - front_dis = 200; - rear_dis = 150; - val = nucleo.receive(); - if(val==1){ - order = nucleo.read(); - if(order == 0xAB){ - packet = 0xAA;nucleo.reply(0xAA); - } - else{ - packet = 0x55;nucleo.reply(0x55); - } - pc.printf("SSSSSSSSSSSSSSSSS%d\r\n", order); - } - else{ - pc.printf("FFFF%d\r\n", 0); - } -} -void fx2(void){ - uint16_t packet, val, order; - uint16_t front_dis=0, rear_dis=0; - front_dis = 200; - rear_dis = 150; + +uint16_t packet, val, order; +uint16_t front_dis=0, rear_dis=0; + +void emergency(void){ + led[1]=1; + //front_dis = 0xAA; + //rear_dis = 0xBB; val = nucleo.receive(); if(val==1){ order = nucleo.read(); if(order == 0xABCD){ - packet = 0xAAAA;nucleo.reply(0xAAAA); + packet = ((front_dis<<8)|(rear_dis))&0xFFFF;nucleo.reply(packet); } else{ - packet = 0x5555;nucleo.reply(0x5555); + packet = 0xFFFF;nucleo.reply(packet); } - nucleo.reply(0x5555); - pc.printf("SSSSSSSSSSSSSSSSS%d\r\n", order); + //pc.printf("SSSSSSSSSSSSSSSSS%d\r\n", order); } else{ - pc.printf("FFFF%d\r\n", 0); + //pc.printf("FFFF\r\n"); } + led[1]=0; } void Usw_System(void){ - int packet, val, order; - uint16_t front_dis=0, rear_dis=0; - nucleo.format(8, 3); - nucleo.frequency(1000000); - nucleo.reply(0x00); - /* nucleo.format(16, 3); nucleo.frequency(1000000); nucleo.reply(0x0000); - */ - vol.fall(&fx); - //vol.fall(&fx2); + + call.fall(&emergency); - led[0]=led[1]=1; + //led[0]=led[1]=1; while(1){ - /* + + led[0]=1; front.Send(); wait_ms(30); front_dis = front.Read_cm(); - if(front_dis>0xFF) front_dis=0xFF; + if(front_dis>0xFE) front_dis=0xFE; + rear.Send(); wait_ms(30); rear_dis = rear.Read_cm(); - if(rear_dis>0xFF) rear_dis=0xFF; - */ - - - front_dis = 200; - rear_dis = 150; + if(rear_dis>0xFE) rear_dis=0xFE; + led[0]=0; - //pc.printf("%d\t%d\t\r\n", front_dis, rear_dis); - //pc.printf("%d\r\n", vol.read()); - //fx(); - //fx2(); - while(0){ - val = nucleo.receive(); - if(val==1){ - order = nucleo.read(); - if(order == 0xAB){ - packet = 0xAA;nucleo.reply(packet); - } - else{ - packet = 0x55;nucleo.reply(packet); - } - - pc.printf("SSSSSSSSSSSSSSSSS%d\r\n", order); - break; - } - else{ - pc.printf("FFFF%d\r\n", 0); - break; - } - } + pc.printf("%d\t%d\t\r\n", front_dis, rear_dis); + + //emergency(); } } #endif /*ULTRA_SONIC*/ @@ -201,69 +154,53 @@ #endif /*COLOR_SENSOR*/ #ifdef IR_SENSOR +uint8_t ir_notice=0;//4bit +uint8_t ir_key=0;//4bit +uint8_t ir_position[2]={0};//4bit*2 + +uint8_t i;//ic +uint8_t j;//ch +uint8_t ch_num[3]={8, 8, 4}; +uint16_t ir_data[IC_NUM][IR_NUM]={0}; +uint16_t order,packet,val; +void emergency(void){ + //ir_key=0xA; + //ir_notice=0xC; + //ir_position[1]=0xE; + //ir_position[0]=0xF; + val = nucleo.receive(); + if(val==1){ + order = nucleo.read(); + if(order == 0xABCD){ + //key/notice/long/short + packet = ((ir_key<<12)|(ir_notice<<8)|(ir_position[1]<<4)|(ir_position[0]<<0))&0xFFFF;nucleo.reply(packet); + } + else{ + packet = 0xFFFF;nucleo.reply(packet); + } + //pc.printf("SSSSSSSSSSSSSSSSS%d\r\n", order); + } + else{ + //pc.f("FFFF\r\n"); + } +} void Ir_System(void){ - int i;//ic - int j;//ch - uint8_t ch_num[3]={8, 8, 4}; - uint16_t ir_data[IC_NUM][IR_NUM]={0}; - - int order,packet,val; - //nucleo...chipselect will be defined interruptpin. - //nucleo...will be high clock and 16bit - //nucleo.format(16, 0); - //nucleo.frequency(5000000); - nucleo.format(8, 0); + nucleo.format(16, 3); nucleo.frequency(1000000); - nucleo.reply(0x00); + nucleo.reply(0x0000); ir.format(8, 3); ir.frequency(1000000); - int mod=1; + + call.fall(&emergency); for(i=0; i<IC_NUM; i++) cs[i]=1; while(1) { - /*cs[1]=1; - - mod = ir.write(mod); - //ir.write(0)&0xFF; - - cs[1]=0; - wait_us(1); - - pc.printf("%Value is "); - pc.printf("%d\t", mod); - pc.printf("\r\n"); - */ for(i=0; i<IC_NUM; i++){//IC for(j=0; j<ch_num[i]; j++){//Ch ir_data[i][j] = read_input(i, j); } } - while(0){ - val = nucleo.receive(); - if(val==1){ - //order = nucleo.read(); - order = nucleo.read(); - //if(order != 0xAA) break; - //packet = ir_data[order/10][order%10] & 0x00FF; - //nucleo.reply(packet); - packet = (ir_data[1][0] & 0x0FF0)>>4;nucleo.reply(packet); - /*packet = (ir_data[1][1] & 0xFF00)>>8;nucleo.reply(packet); - packet = (ir_data[1][2] & 0xFF00)>>8;nucleo.reply(packet); - packet = (ir_data[1][3] & 0xFF00)>>8;nucleo.reply(packet); - packet = (ir_data[1][4] & 0xFF00)>>8;nucleo.reply(packet); - packet = (ir_data[1][5] & 0xFF00)>>8;nucleo.reply(packet); - packet = (ir_data[1][6] & 0xFF00)>>8;nucleo.reply(packet); - packet = (ir_data[1][7] & 0xFF00)>>8;nucleo.reply(packet);wait_us(1);*/ - - pc.printf("SSSSSSSSSSSSSSSSS\r\n"); - break; - } - else{ - pc.printf("FFFFF\r\n"); - break; - } - } pc.printf("%Value is "); pc.printf("%d\t", ir_data[1][0]); pc.printf("%d\t", ir_data[1][1]); @@ -274,6 +211,7 @@ pc.printf("%d\t", ir_data[1][6]); pc.printf("%d\t", ir_data[1][7]); pc.printf("\r\n"); + //emergency(); } } int read_input(int ic, int channel) @@ -294,6 +232,25 @@ return (high_byte << 8) | low_byte;//0x0000...0xFFFF } +void BubbleSort(uint16_t *data, uint8_t n) +{ + bool flag; + uint8_t i;//inclement + uint16_t temp;//temporary + + do{ + flag=0; + for (i=0; i<n-1; i++) { + if (data[i]>data[i+1]) { + /* 左右の並びがおかしければ入れ替える */ + flag=1; + temp=data[i]; + data[i]=data[i+1]; + data[i+1]=temp; + } + } + } while (flag==1); /* 入れ替えがある間,繰り返す.*/ +} #endif /*IR_SENSOR*/