create and send the file to pc

Dependencies:   MCP23017 WattBob_TextLCD mbed

Fork of HelloWorld by Simon Ford

Revision:
5:27b1b41b2366
Parent:
4:b5b159adc261
Child:
6:94ee12962e13
--- a/main.cpp	Wed Feb 26 11:30:18 2014 +0000
+++ b/main.cpp	Thu Feb 27 18:21:27 2014 +0000
@@ -1,11 +1,11 @@
 #include "mbed.h"
 //#include "mon.cpp"
 
-DigitalIn   IP1s(p5);
-DigitalIn   IP1_400ms(p6);
-DigitalIn   IP2_400ms(p7);
-AnalogIn    IP1_800ms(p19);
-AnalogIn    IP2_800ms(p20);
+DigitalIn   Input1s(p5);
+DigitalIn   Input1_400ms(p6);
+DigitalIn   Input2_400ms(p7);
+AnalogIn    Input1_800ms(p19);
+AnalogIn    Input2_800ms(p20);
 
 DigitalOut  bit4(LED1);
 DigitalOut  bit3(LED2);
@@ -13,7 +13,7 @@
 DigitalOut  bit1(LED4);
 
 int IP1s,IP400ms1,IP400ms2 = 0;
-int IP800ms1[4],IP800ms2[4] = 0;
+int IP800ms1[4],IP800ms2[4] = {0,0,0,0};
 int freq = 0;
 int aver_anl1,aver_anl2 = 0;
 int digi_val = 0;
@@ -23,6 +23,7 @@
 int flag4task3 = 0;
 int run_task = 0;
 int led_show = 0;
+timer tmr;
 
 int main() {
     
@@ -33,65 +34,95 @@
 }
 
 // wait(1) -> waiting 10ms
-void task1_check_wava1s()                           // check the square wave per second
+
+
+
+
+void task1()                        //works
 {
-    IP1s = 0;
-    for(int i = 0; i < 1000; i++)                   //the accuracy is 1us
-        if(IP1s == 1)
-            IP1s++;                                 //the lasting time of the impulse of square wave   
-}
+    float tm_val1 = 0;
+    tmr.reset();
+    
+    while(Input1s);
 
-void task2_checkDIP400ms()                          //check the SWes per 400ms
+    while( !Input1s );
+    
+    tmr.start();
+    while(Input1s);
+    tmr.stop();
+    
+    tm_val1 = tmr.read_us();
+    if(tm_val1 != 0.0)
+        freq = 500000/tm_val1;           //the frenquency of the wave
+    else
+        freq = 0;
+        
+    }
+
+
+
+void task2_checkDIP400ms()                          //check the SWes per 400ms,works
 {
-    if( IP1_400ms != 0 )
+    if( Input1_400ms != 0 )
         IP400ms1 = 1;
     else IP400ms1 = 0;
     
-    if( IP2_400ms !=0 )
+    if( Input2_400ms !=0 )
         IP400ms2 = 1;
-    else TP400ms2 = 0;
+    else IP400ms2 = 0;
     
 }
 
-void task3_checkAIP800ms()
+void task3_checkAIP800ms()                          //get analog input, works
 {   
-    IP800ms1[flag4task3] = IP1_800ms;
-    IP800ms2[flag4task3] = IP2_800ms;
+    float para1,para2;
+    IP800ms1[flag4task3] = Input1_800ms.read();
+    IP800ms2[flag4task3] = Input2_800ms.read();
     
     flag4task3++;
     flag4task3 = flag4task3%4;
-}
     
-void task4_display2s()
-{
-    double freq2;
-    freq2 = 1/IP1s;
-    freq2 = freq2*1000000;
-    freq = freq2/1;                                  //frenquency of square wave
-    
-    double aver_anl3,aver_anl4 = 0;
-    aver_anl3 = IP800ms1[0] + IP800ms1[1] + IP800ms1[2] + IP800ms1[3];
-    aver_nal3 = aver_anl3/4;
+    para1 = (IP800ms1[0] + IP800ms1[1] + IP800ms1[2] + IP800ms1[3])*3.3;
+    para2 = (IP800ms2[0] + IP800ms2[1] + IP800ms2[2] + IP800ms2[3])*3.3;
+    aver_anl1 = para1/4;
+    aver_anl2 = para2/4;
+}  
     
-    aver_nal1 = aver_anl3/1;                        //averaging analog input1 
-    
-    aver_anl4 = IP800ms2[0] + IP800ms2[1] + IP800ms2[2] + IP800ms2[3];
-    aver_nal4 = aver_anl4/4;
-    
-    aver_nal2 = aver_anl4/1;                        //averaging analog input2
-       
-    if ( IP400ms2 ==0 && IP400ms1 ==0 )  digi_val = 00;
-    else if ( IP400ms2 ==0 && IP400ms1 ==1 )   digi_val = 01;
-    else if ( IP400ms2 ==1 && IP400ms1 ==0 )   digi_val = 10;
-    else                                       digi_val = 11;
-                                                    // digital value
+void task4_display2s()                            //works
+{
+    int aver,aver1,aver2;
+/*           get frequency from task 1          */
+//      frequency is freq
+
+
+/*           get digital value from task2       */    
+/*      digital number = {IP400ms1,IP400ms2} 
+
 
-    //   show out all the values
-        
+*/
+/*           get average value from task3,show integers       */                                                                        
+//data type of aver_anl1,aver_anl2 are float
+
+    aver1 = aver_anl1;
+    aver2 = aver_anl2;
+    aver = (aver1+aver2)/2;
+
+/*           get error code from task5          */
+    ero_code = 3;
+/*           show them!!                        */
+
+    lcd->cls();
+    lcd->locate(0,0);
+    lcd->printf("F=%d Aval=%d",freq,aver);
+    lcd->locate(1,0);
+    lcd->printf("Dval=%d%d ErC=%d",IP400ms2,IP400ms1,ero_code);    
     
 }
 
-void task5_check_SWes1.8s()
+
+
+
+void task5_check_SWes()                             //1.8s
 {
     if((IP400ms1 == 1) && (aver_anl1 > aver_anl2))   ero_code = 3;
     else ero_code = 0;                              //error code
@@ -103,22 +134,22 @@
     
 }
 
-void run_task1.5s()                                 //blink led
+void led_task()                                 //blink led 1.5s
 {
     led_show = led_show%15;
     
     int num_led = led_show;
     
-    if(num_led > 7) {num_led = num_led - 8; bit4 = 1 }
+    if(num_led > 7) {num_led = num_led - 8; bit4 = 1; }
     else bit4 = 0;
     
-    if(num_led > 3) {num_led = num_led - 4; bit3 = 1}
+    if(num_led > 3) {num_led = num_led - 4; bit3 = 1;}
     else bit3 = 0;
     
-    if(num_led > 1) {num_led = num_led - 2; bit2 = 1}
+    if(num_led > 1) {num_led = num_led - 2; bit2 = 1;}
     else bit2 = 0;
     
-    bit1 = num;
+    bit1 = num_led;
     
     led_show++;
 }
@@ -127,4 +158,4 @@
 {                                                           
                                                             
 
-{
+}