Andrew Kuznetsov / Mbed 2 deprecated 2_7controller2

Dependencies:   EthernetNetIf mbed

Fork of Monitor0 by Andrew Kuznetsov

Revision:
2:0ea44fca1a81
Parent:
1:be04a186a221
Child:
3:e2e8519a7ce7
diff -r be04a186a221 -r 0ea44fca1a81 main.cpp
--- a/main.cpp	Sun Jul 29 15:27:18 2012 +0000
+++ b/main.cpp	Mon Jul 30 07:23:46 2012 +0000
@@ -1,5 +1,5 @@
 
-#define SAMPLE_RATE    150000
+#define SAMPLE_RATE    15000
 #include "mbed.h"
 #include "adc.h"
 #include "EthernetNetIf.h"
@@ -22,15 +22,15 @@
 DigitalOut P23(p23);
 Serial pc(USBTX,USBRX);
 Host multicast(IpAddr(192,168,1,10),27200, NULL);   //Target IP and port
-ADC adc(SAMPLE_RATE, 1);
+ADC adc(SAMPLE_RATE, 16);
 Ticker flipper;
 unsigned short s1,s2,s3;
 unsigned short i1,i2,i3;
 unsigned short a1,a2,a3;
 unsigned short sm1, sm2, sm3;
 unsigned short im1, im2, im3;
-unsigned short am1;
-unsigned short smag, imag;
+unsigned short am1, am2, am3;
+unsigned short smag, imag, amag;
 float s0;
 //int k=0;
 //Timer tmr;
@@ -129,20 +129,6 @@
     }
 }
 
-void adc_comlete(uint32_t value) {
-// void adc_comlete() {
-                int_led1 = 1;
-                int_led2 = 1;
-                int_led3 = 1;
-                int_led4 = 1;
- //  samples1 = adc.read(p20);
- //       Net::poll();                //Do network stuff
- //   sprintf(str, "1=%4u\0", samples1);
- //   printf("%d\n", samples1);
- //   udp.sendto( str, strlen(str)+1, &multicast );
-    
- }
- 
 unsigned short Major(unsigned short dadc2, unsigned short dadc0, unsigned short dadc1)
 {
 //printf("%d %d %d\n", dadc2, dadc0, dadc1);
@@ -168,22 +154,169 @@
     rez >>= 1;
     return rez;
 }
+
+static int number20 = 0;
+static int pass20 = 0;
+int ccc = 0;
+int number = 0;
+int complete20 = 1;
+void adc_comlete20(uint32_t value) {
+// void adc_comlete() {
+    if(++ccc == 1000)
+                int_led1 = 1;
+    if(ccc == 2000) {
+                int_led1 = 0;
+                ccc = 0;
+    }
+//printf("%d\n", number);
+    switch(number20) {
+    case 0:
+        s1 = adc.read(p20);
+//        printf("%d\n", s1);
+        number20++;
+        break;
+    case 1:
+        s2 = adc.read(p20);
+//        printf("%d\n", s2);
+        number20++;
+        break;
+    case 2:
+        s3 = adc.read(p20);
+        switch(++pass20) {
+        case 1:
+            sm1 =  Major(s1, s2, s3);
+            break;
+        case 2:
+            sm2 =  Major(s1, s2, s3);
+            break;
+        case 3:
+            sm3 =  Major(s1, s2, s3);
+            smag = Major(sm1, sm2, sm3);
+            adc.interrupt_state(p20, 0);
+            pass20 = 0;
+            complete20 = 1;
+            break;
+       }
+       number20 = 0;
+    }
+ }
+int ddd = 0;
+static int number19 = 0;
+int complete19 = 1;
+static int pass19 = 0;
+void adc_comlete19(uint32_t value) {
+    if(++ddd == 1000)
+                int_led2 = 1;
+    if(ddd == 2000) {
+                int_led2 = 0;
+                ddd = 0;
+    }
+//printf("%d\n", number);
+    switch(number19) {
+    case 0:
+        i1 = adc.read(p19);
+//        printf("           %d\n", i1);
+        number19++;
+        break;
+    case 1:
+        i2 = adc.read(p19);
+//        printf("           %d\n", i2);
+        number19++;
+        break;
+    case 2:
+        i3 = adc.read(p19);
+         switch(++pass19) {
+        case 1:
+            im1 =  Major(i1, i2, i3);
+            break;
+        case 2:
+            im2 =  Major(i1, i2, i3);
+            break;
+        case 3:
+            im3 =  Major(i1, i2, i3);
+            smag = Major(im1, im2, im3);
+            adc.interrupt_state(p19, 0);
+            pass19 = 0;
+            complete19 = 1;
+            break;
+       }
+        number19=0;
+    }
+ }
+
+int eee = 0;
+static int number16 = 0;
+int complete16 = 1;
+int pass16 = 0;
+void adc_comlete16(uint32_t value) {
+    if(++eee == 1000)
+                int_led3 = 1;
+    if(eee == 2000) {
+                int_led3 = 0;
+                eee = 0;
+    }
+//printf("%d\n", number);
+    switch(number16) {
+    case 0:
+        a1 = adc.read(p16);
+//        printf("                    %d\n", a1);
+        number16++;
+        break;
+    case 1:
+        a2 = adc.read(p16);
+//        printf("                    %d\n", a2);
+        number16++;
+        break;
+    case 2:
+        a3 = adc.read(p16);
+        switch(++pass16) {
+        case 1:
+            am1 =  Major(a1, a2, a3);
+            break;
+        case 2:
+            am2 =  Major(a1, a2, a3);
+            break;
+        case 3:
+            am3 =  Major(a1, a2, a3);
+            amag = Major(am1, am2, am3);
+            adc.interrupt_state(p16, 0);
+            pass16 = 0;
+            complete16 = 1;
+            break;
+       }
+        number16=0;
+    }
+ }
+ 
 int delta;
 float err;
-static int number = 0;
 
-void flip() {                       // interrupt function: measurement and sending a UDP packet
-    switch(number) {
+void flip() {
+//        if(complete20 && complete19 && complete16) {
+    {    complete20 = complete19 = complete16 = 0;
+        int_led4 = 0;
+        sprintf(str, "2=%4u %4u %4u\0",sm1, im1, am1);
+        Net::poll();                //Do network stuff
+        udp.sendto( str, strlen(str)+1, &multicast );
+        adc.interrupt_state(p20, 1);
+        adc.interrupt_state(p19, 1);
+        adc.interrupt_state(p16, 1);
+    } 
+//    else {
+//            int_led4 = 1;
+//    }
+}
+/*    switch(number) {
     case 0:
-        s1 = adc.read(p20);
+//        s1 = adc.read(p20);
         number++;
         break;
     case 3:
-        s2 = adc.read(p20);
+//        s2 = adc.read(p20);
         number++;
         break;
     case 6:
-        s3 = adc.read(p20);
+//        s3 = adc.read(p20);
         number++;
         sm1 =  Major(s1, s2, s3);
 //        sprintf(str, "1=%4u\0",sm1);
@@ -192,15 +325,15 @@
         break;
     case 1:
         number++;
-        i1 = adc.read(p19);
+//        i1 = adc.read(p19);
         break;
     case 4:
         number++;
-        i2 = adc.read(p19);
+//        i2 = adc.read(p19);
         break;
     case 7:
         number++;
-        i3 = adc.read(p19);
+//        i3 = adc.read(p19);
         im1 =  Major(i1, i2, i3);
 //        sprintf(str, "2=%4u %4u\0",sm1, im1);
 //        Net::poll();                //Do network stuff
@@ -208,15 +341,15 @@
         break;
     case 2:
         number++;
-        a1 = adc.read(p17);
+//        a1 = adc.read(p16);
         break;
     case 5:
         number++;
-        a2 = adc.read(p17);
+//        a2 = adc.read(p16);
         break;
     case 8:
         number=0;
-        a3 = adc.read(p17);
+//        a3 = adc.read(p16);
         am1 =  Major(a1, a2, a3);
         sprintf(str, "2=%4u %4u %4u\0",sm1, im1, am1);
         Net::poll();                //Do network stuff
@@ -224,6 +357,7 @@
         break;
     }
 }
+*/
 #define MASK 0xC700000C
 //#define MASK 0x00000000
 
@@ -242,15 +376,15 @@
     AnalogIn in0(p20);
     AnalogIn in1(p19);
 //    AnalogIn in2(p18);
-    AnalogIn in3(p17);
+    AnalogIn in3(p16);
 //    AnalogIn in4(p16);
 //    AnalogIn in5(p15);
 //    PortOut(Port0, MASK);
 //    DigitalOut P19(p19);
     AnalogOut tri(p18);
-//    DigitalOut P17(p17);
-    DigitalOut P16(p16);
-    P16 = 0; // P17 = 0;// = P19 = 0;
+    DigitalOut P17(p17);
+    DigitalOut P15(p15);
+    P17 = 0;  P15 = 0;// = P19 = 0;
 
     udp.setOnEvent(&onUDPSocketEvent);
     udp.bind(multicast);
@@ -267,13 +401,17 @@
 //     adc.select(p20);
 //     adc.start();
 //    adc.setup(p18,1);
-    adc.setup(p17,1);
+    adc.setup(p16,1);
 //    printf("start\n");
 //    printf("%d\n", adc.channel_to_pin_number(0));
 
-    flipper.attach_us(&flip, 83); // Interrupt Turn ON (100 - 10kHz; 1000 - 1 kHz)
-    adc.append(p19, adc_comlete);
-    adc.interrupt_state(p19, 1);
+    adc.append(p20, adc_comlete20);
+    adc.interrupt_state(p20, 0);
+    adc.append(p19, adc_comlete19);
+    adc.interrupt_state(p19, 0);
+    adc.append(p16, adc_comlete16);
+    adc.interrupt_state(p16, 0);
+    flipper.attach_us(&flip, 500); // Interrupt Turn ON (100 - 10kHz; 1000 - 1 kHz)
     tri = 0;
     while(1) {
         tri = tri + 0.001;