Liangzhen Lai / Mbed 2 deprecated DDRO_software_slave

Dependencies:   mbed

Revision:
2:152e0a3ec192
Parent:
1:90a2068dd130
Child:
3:7f4b42e1b3e2
--- a/main.cpp	Tue Oct 02 01:21:39 2012 +0000
+++ b/main.cpp	Tue Oct 02 23:53:42 2012 +0000
@@ -172,180 +172,63 @@
 
 void read_leakage(char* ro_data)
 {
-    double reading1, reading2;
+    double reading1;
     CLK.detach();
     leakage_enable = 1;
-    /*
-    S4 = 1;
-    S5 = 0;
-    ref_clk=0;
-    wait(0.1);
-    for(int i=0; i<100; i++) {
-        ref_clk=0;
-        wait(0.1);
-        ref_clk=1;
-        wait(0.002*i);
-        ref_clk=0;
-        reading1 = leakage1.read();
-        reading1 *= 3.3;
-        reading2 = leakage2.read();
-        reading2 *= 3.3;
-        pc.printf("00%d: %f  %f\n",i, reading1, reading2);
-    }
-    
-    S4 = 1;
-    S5 = 1;
-    ref_clk=0;
-    wait(0.1);
-    for(int i=0; i<100; i++) {
-        ref_clk=0;
-        wait(0.1);
-        ref_clk=1;
-        wait(0.002*i);
-        ref_clk=0;
-        reading1 = leakage1.read();
-        reading1 *= 3.3;
-        reading2 = leakage2.read();
-        reading2 *= 3.3;
-        pc.printf("10%d: %f %f\n",i, reading1, reading2);
-    }
-    */
 
-    //
     S4 = 0;
     S5 = 0;
     ref_clk=0;
-    wait(0.1);
-
-    ref_clk=1;
-    wait_us(2000);
-
-    ref_clk=0;
-    wait_us(100);
-
-    unsigned short RVTP=leakage1.read_u16();
-    reading1 = leakage1.read();
-    reading2 = leakage2.read();
-    reading1 *= 3.3;
-    reading2 *= 3.3;
+    wait(0.01);
 
-    pc.printf("RVTP: %f \t %f\n", reading1, reading2);
-    ref_clk=1;
-    wait_us(10);
-
-    ref_clk=0;
-    wait_us(100);
-
-    reading1 = leakage1.read();
-    reading2 = leakage2.read();
-    reading1 *= 3.3;
-    reading2 *= 3.3;
-    pc.printf("RVTP: %f \t %f\n", reading1, reading2);
-
-    //
-    S4 = 0;
+    int i0;
+    i0=0;
+    ref_clk = 1;
     S5 = 1;
-    ref_clk=0;
-    wait(0.1);
+    do {
+        i0++;
+        if(i0>1000) {
+            break;
+        }
+        wait(0.001);
+        reading1 = leakage1.read();
+        reading1 *= 3.3;
+    } while (reading1 >0.01);
+    ref_clk = 0;
+    S5 = 0;
+    wait(0.01);
 
-    ref_clk=1;
-    wait_us(2000);
-
-    ref_clk=0;
-    wait_us(100);
-
-    unsigned short HVTP=leakage1.read_u16();
+    ro_data[64*5+4] = (i0%0x100);
+    ro_data[64*5+5] = (i0/0x100);
 
-    reading1 = leakage1.read();
-    reading2 = leakage2.read();
-    reading1 *= 3.3;
-    reading2 *= 3.3;
-    pc.printf("HVTP: %f \t %f\n", reading1, reading2);
-    ref_clk=1;
-    wait_us(10);
-
-    ref_clk=0;
-    wait_us(100);
-    reading1 = leakage1.read();
-    reading2 = leakage2.read();
-    reading1 *= 3.3;
-    reading2 *= 3.3;
-    pc.printf("HVTP: %f \t %f\n", reading1, reading2);
-
-    //
     S4 = 1;
+    wait(0.01);
+    i0=0;
+    ref_clk = 1;
+    S5 = 1;
+    do {
+        i0++;
+        if(i0>1000) {
+            break;
+        }
+        wait(0.001);
+        reading1 = leakage2.read();
+        reading1 *= 3.3;
+    } while (reading1 <3.29);
+    ref_clk = 0;
     S5 = 0;
-    ref_clk=0;
     wait(0.1);
-
-    ref_clk=1;
-    wait_us(2000);
-
-    ref_clk=0;
-    wait_us(100);
-
-    unsigned short RVTN=leakage2.read_u16();
-    reading1 = leakage1.read();
-    reading2 = leakage2.read();
-    reading1 *= 3.3;
-    reading2 *= 3.3;
-    pc.printf("RVTN: %f \t %f\n", reading1, reading2);
-    ref_clk=1;
-    wait_us(10);
-
-    ref_clk=0;
-    wait_us(100);
-    reading1 = leakage1.read();
-    reading2 = leakage2.read();
-    reading1 *= 3.3;
-    reading2 *= 3.3;
-    pc.printf("RVTN: %f \t %f\n", reading1, reading2);
-
-    //
-    S4 = 1;
-    S5 = 1;
-    ref_clk=0;
-    wait(0.1);
-
-    ref_clk=1;
-    wait_us(2000);
-
-    ref_clk=0;
-    wait_us(100);
-
-    unsigned short HVTN=leakage2.read_u16();
-    reading1 = leakage1.read();
-    reading2 = leakage2.read();
-    reading1 *= 3.3;
-    reading2 *= 3.3;
-    pc.printf("HVTN: %f \t %f\n", reading1, reading2);
-    ref_clk=1;
-    wait_us(10);
-
-    ref_clk=0;
-    wait_us(100);
-    reading1 = leakage1.read();
-    reading2 = leakage2.read();
-    reading1 *= 3.3;
-    reading2 *= 3.3;
-    pc.printf("HVTN: %f \t %f\n", reading1, reading2);
+    ro_data[64*5+6] = (i0%0x100);
+    ro_data[64*5+7] = (i0/0x100);
+    
     leakage_enable = 0;
-
-    ro_data[64*5+4] = (RVTP%0x100);
-    ro_data[64*5+5] = (RVTP/0x100);
-    ro_data[64*5+6] = (HVTP%0x100);
-    ro_data[64*5+7] = (HVTP/0x100);
-    ro_data[64*5+8] = (RVTN%0x100);
-    ro_data[64*5+9] = (RVTN/0x100);
-    ro_data[64*5+10] = (HVTN%0x100);
-    ro_data[64*5+11] = (HVTN/0x100);
 }
 
 void scan_test()
 {
     slave.address(SLAVEADDR);
     char* ro_data;
-    ro_data = new char[64*5+12];
+    ro_data = new char[64*5+8];
     bool if_ready = false;
     while (1) {
         int i = slave.receive();
@@ -356,7 +239,7 @@
                     pc.printf("Slave is not ready...\n");
                     break;
                 }
-                slave.write(ro_data, 64*5+12);
+                slave.write(ro_data, 64*5+8);
                 pc.printf("Slave is writing..\n");
                 break;
             case I2CSlave::WriteGeneral: