Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: EthernetNetIf mbed
Fork of Monitor0 by
Diff: main.cpp
- Revision:
- 2:0ea44fca1a81
- Parent:
- 1:be04a186a221
- Child:
- 3:e2e8519a7ce7
--- 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;
