LPC824専用プログラム

Dependencies:   Ping SDFileSystem mbed-src

Committer:
lilac0112_1
Date:
Thu Dec 31 05:16:23 2015 +0000
Revision:
0:2f48b11b154f
Child:
1:7070fb876a2c

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lilac0112_1 0:2f48b11b154f 1 #include "mbed.h"
lilac0112_1 0:2f48b11b154f 2 #include "extern.h"
lilac0112_1 0:2f48b11b154f 3
lilac0112_1 0:2f48b11b154f 4 #ifdef SD_CARD
lilac0112_1 0:2f48b11b154f 5 void Sd_System(void){
lilac0112_1 0:2f48b11b154f 6
lilac0112_1 0:2f48b11b154f 7 char buf[BUFSIZE];
lilac0112_1 0:2f48b11b154f 8 uint16_t FileData[FDATA_NUM]={0}, num, data;
lilac0112_1 0:2f48b11b154f 9 uint8_t spi_num, h_byte, l_byte;
lilac0112_1 0:2f48b11b154f 10 uint16_t spi_data;
lilac0112_1 0:2f48b11b154f 11 int i;
lilac0112_1 0:2f48b11b154f 12 FILE *fp;
lilac0112_1 0:2f48b11b154f 13 pc.printf("Hello World!\n");
lilac0112_1 0:2f48b11b154f 14
lilac0112_1 0:2f48b11b154f 15 mkdir("/sd/mydir", 0777);
lilac0112_1 0:2f48b11b154f 16
lilac0112_1 0:2f48b11b154f 17 while(1){
lilac0112_1 0:2f48b11b154f 18
lilac0112_1 0:2f48b11b154f 19 val = nucleo.receive();
lilac0112_1 0:2f48b11b154f 20 if(!val) return;
lilac0112_1 0:2f48b11b154f 21
lilac0112_1 0:2f48b11b154f 22 spi_num = device.read();
lilac0112_1 0:2f48b11b154f 23 h_byte = device.read();
lilac0112_1 0:2f48b11b154f 24 l_byte = device.read();
lilac0112_1 0:2f48b11b154f 25
lilac0112_1 0:2f48b11b154f 26 if((spi_num&0x80)>>7 == 1){
lilac0112_1 0:2f48b11b154f 27
lilac0112_1 0:2f48b11b154f 28 }
lilac0112_1 0:2f48b11b154f 29 else{
lilac0112_1 0:2f48b11b154f 30
lilac0112_1 0:2f48b11b154f 31 }
lilac0112_1 0:2f48b11b154f 32 if(val) {
lilac0112_1 0:2f48b11b154f 33
lilac0112_1 0:2f48b11b154f 34 packet = (front_dis&0x00FF);
lilac0112_1 0:2f48b11b154f 35 nucleo.reply(packet);
lilac0112_1 0:2f48b11b154f 36 packet = (front_dis&0xFF00)>>8;
lilac0112_1 0:2f48b11b154f 37 nucleo.reply(packet);
lilac0112_1 0:2f48b11b154f 38 packet = (rear_dis&0x00FF);
lilac0112_1 0:2f48b11b154f 39 nucleo.reply(packet);
lilac0112_1 0:2f48b11b154f 40 packet = (rear_dis&0xFF00)>>8;
lilac0112_1 0:2f48b11b154f 41 nucleo.reply(packet);
lilac0112_1 0:2f48b11b154f 42 }
lilac0112_1 0:2f48b11b154f 43 // example writing to SD card, sford
lilac0112_1 0:2f48b11b154f 44
lilac0112_1 0:2f48b11b154f 45 fp = fopen("/sd/mydir/sdtest.txt", "r");
lilac0112_1 0:2f48b11b154f 46 if(fp == NULL) {
lilac0112_1 0:2f48b11b154f 47 error("Could not open file for read\n");
lilac0112_1 0:2f48b11b154f 48 }
lilac0112_1 0:2f48b11b154f 49 while(fgets(buf, sizeof(buf), fp) != NULL){
lilac0112_1 0:2f48b11b154f 50 if(buf[0] == '#') continue;
lilac0112_1 0:2f48b11b154f 51
lilac0112_1 0:2f48b11b154f 52 num = atol(strtok(buf, ","));
lilac0112_1 0:2f48b11b154f 53 data = atol(strtok(NULL, "\r\n\0"));
lilac0112_1 0:2f48b11b154f 54
lilac0112_1 0:2f48b11b154f 55 if((num>=0)&&(num<FDATA_NUM)){
lilac0112_1 0:2f48b11b154f 56 FileData[num] = data;
lilac0112_1 0:2f48b11b154f 57 pc.printf("%d, %ld\n", num, FileData[num]);
lilac0112_1 0:2f48b11b154f 58 }
lilac0112_1 0:2f48b11b154f 59 else{
lilac0112_1 0:2f48b11b154f 60 continue;
lilac0112_1 0:2f48b11b154f 61 }
lilac0112_1 0:2f48b11b154f 62 }
lilac0112_1 0:2f48b11b154f 63 fclose(fp);
lilac0112_1 0:2f48b11b154f 64
lilac0112_1 0:2f48b11b154f 65 FileData[0] = 1;
lilac0112_1 0:2f48b11b154f 66 FileData[1] = 2;
lilac0112_1 0:2f48b11b154f 67 FileData[2] = 5;
lilac0112_1 0:2f48b11b154f 68 FileData[3] = 10;
lilac0112_1 0:2f48b11b154f 69 FileData[4] = 20;
lilac0112_1 0:2f48b11b154f 70 FileData[5] = 50;
lilac0112_1 0:2f48b11b154f 71 FileData[6] = 10;
lilac0112_1 0:2f48b11b154f 72 FileData[7] = 20;
lilac0112_1 0:2f48b11b154f 73 FileData[8] = 50;
lilac0112_1 0:2f48b11b154f 74 FileData[9] = 100;
lilac0112_1 0:2f48b11b154f 75
lilac0112_1 0:2f48b11b154f 76 fp = fopen("/sd/mydir/sdtest.txt", "w");
lilac0112_1 0:2f48b11b154f 77 for(i=0; i<FDATA_NUM; i++) fprintf(fp, "%d, %ld\n", i, FileData[i]);
lilac0112_1 0:2f48b11b154f 78 fclose(fp);
lilac0112_1 0:2f48b11b154f 79
lilac0112_1 0:2f48b11b154f 80 //pc.printf("Goodbye World!\n");
lilac0112_1 0:2f48b11b154f 81 }
lilac0112_1 0:2f48b11b154f 82 }
lilac0112_1 0:2f48b11b154f 83 #endif /*SD_CARD*/
lilac0112_1 0:2f48b11b154f 84
lilac0112_1 0:2f48b11b154f 85 #ifdef ULTRA_SONIC
lilac0112_1 0:2f48b11b154f 86 void Usw_System(void){
lilac0112_1 0:2f48b11b154f 87 uint8_t paket, val, order;
lilac0112_1 0:2f48b11b154f 88 uint16_t front_dis=0, rear_dis=0;
lilac0112_1 0:2f48b11b154f 89
lilac0112_1 0:2f48b11b154f 90 while(1){
lilac0112_1 0:2f48b11b154f 91 front.Send();
lilac0112_1 0:2f48b11b154f 92 wait_ms(30);
lilac0112_1 0:2f48b11b154f 93 front_dis = front.Read_cm();
lilac0112_1 0:2f48b11b154f 94
lilac0112_1 0:2f48b11b154f 95 rear.Send();
lilac0112_1 0:2f48b11b154f 96 wait_ms(30);
lilac0112_1 0:2f48b11b154f 97 rear_dis = rear.Read_cm();
lilac0112_1 0:2f48b11b154f 98
lilac0112_1 0:2f48b11b154f 99 while(1){
lilac0112_1 0:2f48b11b154f 100 val = nucleo.receive();
lilac0112_1 0:2f48b11b154f 101 if(val){
lilac0112_1 0:2f48b11b154f 102 order = nucleo.read();
lilac0112_1 0:2f48b11b154f 103 switch(order){
lilac0112_1 0:2f48b11b154f 104 case 0x01:
lilac0112_1 0:2f48b11b154f 105 packet = (front_dis&0x00FF);break;
lilac0112_1 0:2f48b11b154f 106 case 0x02:
lilac0112_1 0:2f48b11b154f 107 packet = (front_dis&0xFF00)>>8;break;
lilac0112_1 0:2f48b11b154f 108 case 0x03:
lilac0112_1 0:2f48b11b154f 109 packet = (rear_dis&0x00FF);break;
lilac0112_1 0:2f48b11b154f 110 case 0x04:
lilac0112_1 0:2f48b11b154f 111 packet = (rear_dis&0xFF00)>>8;break;
lilac0112_1 0:2f48b11b154f 112 default:
lilac0112_1 0:2f48b11b154f 113 packet = 0x00;break;
lilac0112_1 0:2f48b11b154f 114 }
lilac0112_1 0:2f48b11b154f 115 nucleo.reply(packet);
lilac0112_1 0:2f48b11b154f 116 }
lilac0112_1 0:2f48b11b154f 117 else{
lilac0112_1 0:2f48b11b154f 118 break;
lilac0112_1 0:2f48b11b154f 119 }
lilac0112_1 0:2f48b11b154f 120 }
lilac0112_1 0:2f48b11b154f 121 }
lilac0112_1 0:2f48b11b154f 122 }
lilac0112_1 0:2f48b11b154f 123 #endif /*ULTRA_SONIC*/
lilac0112_1 0:2f48b11b154f 124
lilac0112_1 0:2f48b11b154f 125 #ifdef COLOR_SENSOR
lilac0112_1 0:2f48b11b154f 126 void Color_System(void){
lilac0112_1 0:2f48b11b154f 127
lilac0112_1 0:2f48b11b154f 128 while(1){
lilac0112_1 0:2f48b11b154f 129
lilac0112_1 0:2f48b11b154f 130 ColorSensor[0]
lilac0112_1 0:2f48b11b154f 131 }
lilac0112_1 0:2f48b11b154f 132 }
lilac0112_1 0:2f48b11b154f 133 #endif /*COLOR_SENSOR*/
lilac0112_1 0:2f48b11b154f 134
lilac0112_1 0:2f48b11b154f 135 #ifdef IR_SENSOR
lilac0112_1 0:2f48b11b154f 136 void Ir_System(void){
lilac0112_1 0:2f48b11b154f 137
lilac0112_1 0:2f48b11b154f 138 static uint8_t const START_BIT = 0x04;
lilac0112_1 0:2f48b11b154f 139 static uint8_t const MODE_SINGLE = 0x02; // Single-ended mode
lilac0112_1 0:2f48b11b154f 140 //static uint8_t const MODE_DIFF = 0x00; // Differential mode
lilac0112_1 0:2f48b11b154f 141
lilac0112_1 0:2f48b11b154f 142 static uint8_t const IR_NUM[IC_NUM] = {6, 6, 8};
lilac0112_1 0:2f48b11b154f 143
lilac0112_1 0:2f48b11b154f 144 uint8_t ic, ch;
lilac0112_1 0:2f48b11b154f 145 unsigned int command_high, command_low;
lilac0112_1 0:2f48b11b154f 146 unsigned int high_byte, low_byte;
lilac0112_1 0:2f48b11b154f 147
lilac0112_1 0:2f48b11b154f 148 uint8_t packet, val, order;
lilac0112_1 0:2f48b11b154f 149
lilac0112_1 0:2f48b11b154f 150 uint16_t ir_data[IC_NUM][CH_NUM];
lilac0112_1 0:2f48b11b154f 151
lilac0112_1 0:2f48b11b154f 152 ir.frequency(1000000);
lilac0112_1 0:2f48b11b154f 153
lilac0112_1 0:2f48b11b154f 154 for(ic=0; ic<IC_NUM; ic++) cs[ic]=1;
lilac0112_1 0:2f48b11b154f 155 while(1) {
lilac0112_1 0:2f48b11b154f 156 for(ic=0; ic<IC_NUM; ic++){//IC
lilac0112_1 0:2f48b11b154f 157 for(ch=0; ch<IR_NUM[ic]; ch++){//Ch
lilac0112_1 0:2f48b11b154f 158 command_high = START_BIT | MODE_SINGLE | ((ch & 0x04) >> 2);
lilac0112_1 0:2f48b11b154f 159 command_low = (ch & 0x03) << 6;
lilac0112_1 0:2f48b11b154f 160
lilac0112_1 0:2f48b11b154f 161 cs[ic] = 0;
lilac0112_1 0:2f48b11b154f 162
lilac0112_1 0:2f48b11b154f 163 ir.write(command_high);
lilac0112_1 0:2f48b11b154f 164 high_byte = ir.write(command_low) & 0x0F;
lilac0112_1 0:2f48b11b154f 165 low_byte = ir.write(0);
lilac0112_1 0:2f48b11b154f 166
lilac0112_1 0:2f48b11b154f 167 cs[ic] = 1;
lilac0112_1 0:2f48b11b154f 168 wait_us(1);
lilac0112_1 0:2f48b11b154f 169
lilac0112_1 0:2f48b11b154f 170 //ir_data[ic][ch] = (high_byte << 8) | low_byte;
lilac0112_1 0:2f48b11b154f 171 ir_data[ic][ch] = ((high_byte << 4) | (low_byte >> 4))&0xFF;
lilac0112_1 0:2f48b11b154f 172 }
lilac0112_1 0:2f48b11b154f 173 }
lilac0112_1 0:2f48b11b154f 174 while(1){
lilac0112_1 0:2f48b11b154f 175 val = nucleo.receive();
lilac0112_1 0:2f48b11b154f 176 if(val){
lilac0112_1 0:2f48b11b154f 177 order = nucleo.read();
lilac0112_1 0:2f48b11b154f 178 packet = ir_data[order/10][order%10] & 0x00FF;
lilac0112_1 0:2f48b11b154f 179 nucleo.reply(packet);
lilac0112_1 0:2f48b11b154f 180 //for(ic=0; ic<IC_NUM; ic++){//IC
lilac0112_1 0:2f48b11b154f 181 // for(ch=0; ch<IR_NUM[ic]; ch++){//Ch
lilac0112_1 0:2f48b11b154f 182 // packet = ir_data[ic][ch] & 0x00FF;
lilac0112_1 0:2f48b11b154f 183 // nucleo.reply(packet);
lilac0112_1 0:2f48b11b154f 184 // }
lilac0112_1 0:2f48b11b154f 185 //}
lilac0112_1 0:2f48b11b154f 186 }
lilac0112_1 0:2f48b11b154f 187 else{
lilac0112_1 0:2f48b11b154f 188 break;
lilac0112_1 0:2f48b11b154f 189 }
lilac0112_1 0:2f48b11b154f 190 }
lilac0112_1 0:2f48b11b154f 191
lilac0112_1 0:2f48b11b154f 192 }
lilac0112_1 0:2f48b11b154f 193 }
lilac0112_1 0:2f48b11b154f 194 #endif /*IR_SENSOR*/
lilac0112_1 0:2f48b11b154f 195
lilac0112_1 0:2f48b11b154f 196
lilac0112_1 0:2f48b11b154f 197
lilac0112_1 0:2f48b11b154f 198