LPC824専用プログラム

Dependencies:   Ping SDFileSystem mbed-src

Revision:
1:7070fb876a2c
Parent:
0:2f48b11b154f
Child:
2:9a51bb2694aa
--- a/format.cpp	Thu Dec 31 05:16:23 2015 +0000
+++ b/format.cpp	Thu Dec 31 06:10:30 2015 +0000
@@ -7,42 +7,16 @@
     char buf[BUFSIZE];
     uint16_t FileData[FDATA_NUM]={0}, num, data;
     uint8_t spi_num, h_byte, l_byte;
-    uint16_t spi_data;
     int i;
     FILE *fp;
+    char *fname="/sd/mydir/sdtest.txt";
+    char *dname="/sd/mydir";
+
+    mkdir(dname, 0777);
+
     pc.printf("Hello World!\n");
 
-    mkdir("/sd/mydir", 0777);
-    
-    while(1){
-        
-        val = nucleo.receive();
-        if(!val) return;
-        
-        spi_num = device.read();
-        h_byte = device.read();
-        l_byte = device.read();
-        
-        if((spi_num&0x80)>>7 == 1){
-            
-        }
-        else{
-            
-        }
-        if(val) {
-            
-            packet = (front_dis&0x00FF);
-            nucleo.reply(packet);
-            packet = (front_dis&0xFF00)>>8;
-            nucleo.reply(packet);
-            packet = (rear_dis&0x00FF);
-            nucleo.reply(packet);
-            packet = (rear_dis&0xFF00)>>8;
-            nucleo.reply(packet);
-        }
-        // example writing to SD card, sford
-        
-        fp = fopen("/sd/mydir/sdtest.txt", "r");
+    fp = fopen(fname, "r");
         if(fp == NULL) {
             error("Could not open file for read\n");
         }
@@ -61,7 +35,7 @@
             }
         }
         fclose(fp);
-        
+        /*
         FileData[0] = 1;
         FileData[1] = 2;
         FileData[2] = 5;
@@ -73,10 +47,44 @@
         FileData[8] = 50;
         FileData[9] = 100;
         
-        fp = fopen("/sd/mydir/sdtest.txt", "w");
+        fp = fopen(fname, "w");
         for(i=0; i<FDATA_NUM; i++) fprintf(fp, "%d, %ld\n", i, FileData[i]);
         fclose(fp);
+        */
+
     
+    while(1){
+        
+        val = nucleo.receive();
+        if(!val) continue;
+        
+        spi_num = device.read();
+        h_byte = device.read();
+        l_byte = device.read();
+        
+        if((spi_num&0x80)>>7 == 1){//writing to sd
+            spi_num = spi_num & 0x7F;
+            if((spi_num>=0)&&(spi_num<FDATA_NUM)){
+                FileData[spi_num] = (h_byte<<8) | l_byte;
+                //pc.printf("%d, %ld\n", num, FileData[num]);
+                fp = fopen(fname, "w");
+                for(i=0; i<FDATA_NUM; i++) fprintf(fp, "%d, %ld\n", i, FileData[i]);
+                fclose(fp);
+            }
+        }
+        else{//reading from sd
+            spi_num = spi_num & 0x7F;
+            if((spi_num>=0)&&(spi_num<FDATA_NUM)){
+                h_byte = (FileData[spi_num] & 0xFF00)>>8;
+                l_byte = (FileData[spi_num] & 0x00FF);
+
+                packet = h_byte;
+                nucleo.reply(packet);
+
+                packet = l_byte;
+                nucleo.reply(packet);
+            }
+        }
         //pc.printf("Goodbye World!\n");
     }
 }
@@ -124,10 +132,24 @@
 
 #ifdef COLOR_SENSOR
 void Color_System(void){
-    
+    uint8_t val, order, packet;
+    uint8_t h_byte, l_byte;
+    uint16_t data;
+
     while(1){
-        
-        ColorSensor[0]
+        while(1){
+            val = nucleo.receive();
+            if(val){
+                order = nucleo.read();
+                order %= SENSOR_X_COLOR;
+                data = ColorSensor[order/SENSOR_NUM][order%COLOR_NUM].read_u16();
+                packet = (data & 0xFF00)>>8;
+                nucleo.reply(packet);
+            }
+            else{
+                break;
+            }
+        }
     }
 }
 #endif /*COLOR_SENSOR*/
@@ -157,18 +179,17 @@
             for(ch=0; ch<IR_NUM[ic]; ch++){//Ch
                 command_high = START_BIT | MODE_SINGLE | ((ch & 0x04) >> 2);
                 command_low = (ch & 0x03) << 6;
-                
+
                 cs[ic] = 0;
-                
+
                 ir.write(command_high);
                 high_byte = ir.write(command_low) & 0x0F;
                 low_byte = ir.write(0);
-                
+
                 cs[ic] = 1;
                 wait_us(1);
-                
-                //ir_data[ic][ch] = (high_byte << 8) | low_byte;
-               ir_data[ic][ch] = ((high_byte << 4) | (low_byte >> 4))&0xFF;
+                ir_data[ic][ch] = ((high_byte << 4) | (low_byte >> 4))&0xFF;
+
             }
         }
         while(1){
@@ -177,12 +198,6 @@
                 order = nucleo.read();
                 packet = ir_data[order/10][order%10] & 0x00FF;
                 nucleo.reply(packet);
-                //for(ic=0; ic<IC_NUM; ic++){//IC
-                //    for(ch=0; ch<IR_NUM[ic]; ch++){//Ch
-                //        packet = ir_data[ic][ch] & 0x00FF;
-                //        nucleo.reply(packet);
-                //    }
-                //}
             }
             else{
                 break;