test

Dependencies:   USBDevice mbed

Revision:
0:92dd9611bf80
Child:
1:16fae309f85e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed May 14 14:51:44 2014 +0000
@@ -0,0 +1,137 @@
+#include "mbed.h"
+
+
+Serial pc(USBTX, USBRX);
+
+DigitalOut led1(LED1);
+DigitalOut led2(LED2);
+DigitalOut led3(LED3);
+DigitalOut led4(LED4);
+AnalogIn adc_hma(p17);
+
+uint16_t  T_hma_u16[2][4096];
+uint16_t index_hma_write=0;
+
+uint16_t index_hma_read=0;
+bool t_write=0;
+char str[256];
+uint8_t start_str=0;
+bool flag_write_USB=0;
+Ticker flipperADC;
+
+void flipADC()
+{
+led4=1;
+    T_hma_u16[t_write][index_hma_write++]=adc_hma.read_u16(); //read ADC
+    //T_hma_u16[t_write][index_hma_write++]=0x00FF;
+  
+    if(index_hma_write>1000) {
+        flag_write_USB=1;
+        t_write=!t_write; //toggel buffer
+        index_hma_read=--index_hma_write;
+        index_hma_write=0;
+    }
+    led4=0;
+}
+
+Ticker flipperUSB;
+void flipUSB()
+{
+
+    flag_write_USB=1;
+
+}
+
+void pc_rx(void)
+{
+
+
+    for(; pc.readable()==true; ++start_str) {
+        str[start_str]=pc.getc();
+    }
+
+    if( strcmp(str,"*IDN?\r")==0 || strcmp(str,"*ID?")==0) {
+        pc.printf("HMA\r");
+        start_str=0;
+        for(int i=0; i<256; ++i) {
+            str[i]='\0';
+
+        }
+        led4=1;
+        led2=0;
+        led3=0;
+    } else if( strcmp(str,"MEASure")==0 || strcmp(str,"MEAS")==0 || strcmp(str,"measure")==0) {
+        for(int i=0; i<256; ++i) {
+            str[i]='\0';
+
+        }
+        flipperADC.attach_us(&flipADC, 1000); //500us
+        led4=0;
+        led2=1;
+        led3=0;
+
+    } else if( strcmp(str,"ABORt")==0 || strcmp(str,"ABOR")==0 || strcmp(str,"ABORT")==0) {
+        for(int i=0; i<256; ++i) {
+            str[i]='\0';
+
+        }
+        flipperADC.detach();
+        t_write=0;
+        index_hma_read=0;
+        index_hma_write=0;
+        led4=0;
+        led2=0;
+        led3=1;
+    }
+    for(int i=0; i<start_str; ++i) {
+        if(str[i]=='\r') {
+            for(int j=0; j<256; ++j) {
+                str[j]='\0';
+
+            }
+             start_str=0;
+            
+        }
+       
+    }
+
+
+}
+
+int main()
+{
+
+    pc.baud(460800);
+    for(int i=0; i<256; ++i) {
+        str[i]='\0';
+
+    }
+    //RUN ADC
+
+//    flipperADC.attach_us(&flipADC, 500); //500us
+//    flipperUSB.attach(&flipUSB,0.5); //500ms
+
+    while(1) {
+    led1=0;
+        if (pc.readable()) {
+            pc_rx();
+        }
+        if(flag_write_USB==1) {
+            flag_write_USB=0;
+            led1=1;
+
+            pc.printf("%04d\0",index_hma_read);
+
+            char* ptr=(char*)&T_hma_u16[!t_write][0];
+
+            for(uint16_t i=0; i<index_hma_read; ++i) {
+                pc.putc(*ptr++);
+                pc.putc(*ptr++);
+            }
+
+        }
+
+
+
+    }
+}