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;