LPC824専用プログラム

Dependencies:   Ping SDFileSystem mbed-src

Committer:
lilac0112_1
Date:
Thu Dec 31 06:10:30 2015 +0000
Revision:
1:7070fb876a2c
Parent:
0:2f48b11b154f
Child:
2:9a51bb2694aa
soso

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