Measurement of three analogue signals a filtration and transfer of their values through Ethernet (UDP)

Dependencies:   mbed EthernetNetIf

Committer:
AndrewK
Date:
Mon Jul 30 07:31:30 2012 +0000
Revision:
3:e2e8519a7ce7
Parent:
2:0ea44fca1a81
Child:
4:b04a24076feb
Measurement of three analogue signals a filtration and transfer of their values through Ethernet (UDP)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AndrewK 0:72d0d2736b7f 1
AndrewK 3:e2e8519a7ce7 2 #define SAMPLE_RATE 150000
AndrewK 0:72d0d2736b7f 3 #include "mbed.h"
AndrewK 0:72d0d2736b7f 4 #include "adc.h"
AndrewK 0:72d0d2736b7f 5 #include "EthernetNetIf.h"
AndrewK 0:72d0d2736b7f 6 #include "UDPSocket.h"
AndrewK 0:72d0d2736b7f 7
AndrewK 0:72d0d2736b7f 8 EthernetNetIf eth( IpAddr(192,168,1,5), //IP Address
AndrewK 0:72d0d2736b7f 9 IpAddr(255,255,255,0), //Network Mask
AndrewK 0:72d0d2736b7f 10 IpAddr(192,168,1,254), //Gateway
AndrewK 0:72d0d2736b7f 11 IpAddr(192,168,1,254) //DNS
AndrewK 0:72d0d2736b7f 12 );
AndrewK 0:72d0d2736b7f 13 //EthernetNetIf eth;
AndrewK 0:72d0d2736b7f 14 UDPSocket udp;
AndrewK 0:72d0d2736b7f 15
AndrewK 1:be04a186a221 16 DigitalOut int_led1(LED1);
AndrewK 1:be04a186a221 17 DigitalOut int_led2(LED2);
AndrewK 1:be04a186a221 18 DigitalOut int_led3(LED3);
AndrewK 1:be04a186a221 19 DigitalOut int_led4(LED4);
AndrewK 1:be04a186a221 20 DigitalOut P21(p21);
AndrewK 1:be04a186a221 21 DigitalOut P22(p22);
AndrewK 1:be04a186a221 22 DigitalOut P23(p23);
AndrewK 0:72d0d2736b7f 23 Serial pc(USBTX,USBRX);
AndrewK 0:72d0d2736b7f 24 Host multicast(IpAddr(192,168,1,10),27200, NULL); //Target IP and port
AndrewK 3:e2e8519a7ce7 25 ADC adc(SAMPLE_RATE, 1);
AndrewK 0:72d0d2736b7f 26 Ticker flipper;
AndrewK 0:72d0d2736b7f 27 unsigned short s1,s2,s3;
AndrewK 0:72d0d2736b7f 28 unsigned short i1,i2,i3;
AndrewK 0:72d0d2736b7f 29 unsigned short a1,a2,a3;
AndrewK 0:72d0d2736b7f 30 unsigned short sm1, sm2, sm3;
AndrewK 0:72d0d2736b7f 31 unsigned short im1, im2, im3;
AndrewK 2:0ea44fca1a81 32 unsigned short am1, am2, am3;
AndrewK 2:0ea44fca1a81 33 unsigned short smag, imag, amag;
AndrewK 0:72d0d2736b7f 34 float s0;
AndrewK 0:72d0d2736b7f 35 //int k=0;
AndrewK 0:72d0d2736b7f 36 //Timer tmr;
AndrewK 0:72d0d2736b7f 37 Timeout timeout;
AndrewK 0:72d0d2736b7f 38 char str[50];
AndrewK 0:72d0d2736b7f 39 unsigned char buf[10];
AndrewK 0:72d0d2736b7f 40 int count_puls;
AndrewK 1:be04a186a221 41 int device_no;
AndrewK 0:72d0d2736b7f 42 int led1_on = 0;
AndrewK 0:72d0d2736b7f 43 void Timer_Handler()
AndrewK 0:72d0d2736b7f 44 {
AndrewK 0:72d0d2736b7f 45 if(count_puls) {
AndrewK 1:be04a186a221 46 // printf("cp %d\n", count_puls);
AndrewK 0:72d0d2736b7f 47 count_puls--;
AndrewK 0:72d0d2736b7f 48 led1_on = !led1_on;
AndrewK 1:be04a186a221 49 // int_led1 = led1_on;
AndrewK 1:be04a186a221 50 switch(device_no) {
AndrewK 1:be04a186a221 51 case 1:
AndrewK 1:be04a186a221 52 P21 = !led1_on;
AndrewK 1:be04a186a221 53 break;
AndrewK 1:be04a186a221 54 case 2:
AndrewK 1:be04a186a221 55 P22 = !led1_on;
AndrewK 1:be04a186a221 56 break;
AndrewK 1:be04a186a221 57 case 3:
AndrewK 1:be04a186a221 58 P23 = !led1_on;
AndrewK 1:be04a186a221 59 break;
AndrewK 1:be04a186a221 60 default:
AndrewK 1:be04a186a221 61 timeout.detach();
AndrewK 1:be04a186a221 62 return;
AndrewK 1:be04a186a221 63 }
AndrewK 1:be04a186a221 64 timeout.attach_us(Timer_Handler, 1000);
AndrewK 0:72d0d2736b7f 65 } else
AndrewK 0:72d0d2736b7f 66 timeout.detach();
AndrewK 0:72d0d2736b7f 67 }
AndrewK 0:72d0d2736b7f 68
AndrewK 0:72d0d2736b7f 69 void onUDPSocketEvent(UDPSocketEvent e) { //Incoming UDP packet processing
AndrewK 0:72d0d2736b7f 70 switch (e) {
AndrewK 0:72d0d2736b7f 71 case UDPSOCKET_READABLE: //The only event for now
AndrewK 0:72d0d2736b7f 72 char buf[64] = {0};
AndrewK 0:72d0d2736b7f 73 Host host;
AndrewK 0:72d0d2736b7f 74 while ( int len = udp.recvfrom( buf, 63, &host ) ) {
AndrewK 0:72d0d2736b7f 75 if ( len <= 0 )
AndrewK 0:72d0d2736b7f 76 break;
AndrewK 1:be04a186a221 77 // printf("From %d.%d.%d.%d: %s\n", host.getIp()[0], host.getIp()[1], host.getIp()[2], host.getIp()[3], buf);
AndrewK 0:72d0d2736b7f 78 }
AndrewK 0:72d0d2736b7f 79 switch(buf[0]) {
AndrewK 0:72d0d2736b7f 80 case '1':
AndrewK 1:be04a186a221 81 device_no = 1;
AndrewK 1:be04a186a221 82 int_led1 = 1;
AndrewK 0:72d0d2736b7f 83 break;
AndrewK 0:72d0d2736b7f 84 case '2':
AndrewK 1:be04a186a221 85 device_no = 2;
AndrewK 1:be04a186a221 86 // int_led2 = 1;
AndrewK 0:72d0d2736b7f 87 break;
AndrewK 0:72d0d2736b7f 88 case '3':
AndrewK 1:be04a186a221 89 device_no = 3;
AndrewK 1:be04a186a221 90 // int_led3 = 1;
AndrewK 1:be04a186a221 91 break;
AndrewK 1:be04a186a221 92 default:
AndrewK 1:be04a186a221 93 device_no = 0;
AndrewK 1:be04a186a221 94 // int_led4 = 1;
AndrewK 1:be04a186a221 95 count_puls = 0;
AndrewK 1:be04a186a221 96 return;
AndrewK 1:be04a186a221 97 }
AndrewK 1:be04a186a221 98 int_led1 = 0;
AndrewK 1:be04a186a221 99 int_led2 = 0;
AndrewK 1:be04a186a221 100 int_led3 = 0;
AndrewK 1:be04a186a221 101 int_led4 = 0;
AndrewK 1:be04a186a221 102 switch(buf[1]) {
AndrewK 1:be04a186a221 103 case '1':
AndrewK 1:be04a186a221 104 count_puls = 2; //8
AndrewK 1:be04a186a221 105 // int_led1 = 1;
AndrewK 1:be04a186a221 106 break;
AndrewK 1:be04a186a221 107 case '2':
AndrewK 1:be04a186a221 108 count_puls = 8; //4;
AndrewK 1:be04a186a221 109 // int_led2 = 1;
AndrewK 1:be04a186a221 110 break;
AndrewK 1:be04a186a221 111 case '3':
AndrewK 1:be04a186a221 112 count_puls = 4; //6;
AndrewK 1:be04a186a221 113 // int_led3 = 1;
AndrewK 0:72d0d2736b7f 114 break;
AndrewK 0:72d0d2736b7f 115 case '4':
AndrewK 1:be04a186a221 116 count_puls = 6; //2;8
AndrewK 1:be04a186a221 117 // int_led4 = 1;
AndrewK 1:be04a186a221 118 break;
AndrewK 0:72d0d2736b7f 119 case '5':
AndrewK 0:72d0d2736b7f 120 count_puls = 10;
AndrewK 1:be04a186a221 121 // int_led1 = 1;
AndrewK 1:be04a186a221 122 // int_led2 = 1;
AndrewK 1:be04a186a221 123 break;
AndrewK 0:72d0d2736b7f 124 default:
AndrewK 0:72d0d2736b7f 125 count_puls = 0;
AndrewK 1:be04a186a221 126 }
AndrewK 1:be04a186a221 127 timeout.attach_us(Timer_Handler, 1000);
AndrewK 0:72d0d2736b7f 128 break;
AndrewK 0:72d0d2736b7f 129 }
AndrewK 0:72d0d2736b7f 130 }
AndrewK 1:be04a186a221 131
AndrewK 0:72d0d2736b7f 132 unsigned short Major(unsigned short dadc2, unsigned short dadc0, unsigned short dadc1)
AndrewK 0:72d0d2736b7f 133 {
AndrewK 0:72d0d2736b7f 134 //printf("%d %d %d\n", dadc2, dadc0, dadc1);
AndrewK 0:72d0d2736b7f 135 unsigned short rez;
AndrewK 0:72d0d2736b7f 136 int dif01, dif02, dif12;
AndrewK 0:72d0d2736b7f 137 dif01 = dadc0 - dadc1;
AndrewK 0:72d0d2736b7f 138 dif02 = dadc0 - dadc2;
AndrewK 0:72d0d2736b7f 139 dif12 = dadc1 - dadc2;
AndrewK 0:72d0d2736b7f 140 if (dif01 < 0) dif01 = -dif01;
AndrewK 0:72d0d2736b7f 141 if (dif02 < 0) dif02 = -dif02;
AndrewK 0:72d0d2736b7f 142 if (dif12 < 0) dif12 = -dif12;
AndrewK 0:72d0d2736b7f 143 if (dif01 < dif02) {
AndrewK 0:72d0d2736b7f 144 if (dif12 < dif01)
AndrewK 0:72d0d2736b7f 145 dadc0 = dadc2;
AndrewK 0:72d0d2736b7f 146 //else // &#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533; 2
AndrewK 0:72d0d2736b7f 147 } else {
AndrewK 0:72d0d2736b7f 148 if (dif12 < dif02)
AndrewK 0:72d0d2736b7f 149 dadc0 = dadc2; // &#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533; 0
AndrewK 0:72d0d2736b7f 150 else
AndrewK 0:72d0d2736b7f 151 dadc1 = dadc2; // &#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533; 1
AndrewK 0:72d0d2736b7f 152 }
AndrewK 0:72d0d2736b7f 153 rez = dadc0 + dadc1;
AndrewK 0:72d0d2736b7f 154 rez >>= 1;
AndrewK 0:72d0d2736b7f 155 return rez;
AndrewK 0:72d0d2736b7f 156 }
AndrewK 2:0ea44fca1a81 157
AndrewK 2:0ea44fca1a81 158 static int number20 = 0;
AndrewK 2:0ea44fca1a81 159 static int pass20 = 0;
AndrewK 2:0ea44fca1a81 160 int ccc = 0;
AndrewK 2:0ea44fca1a81 161 int number = 0;
AndrewK 2:0ea44fca1a81 162 int complete20 = 1;
AndrewK 2:0ea44fca1a81 163 void adc_comlete20(uint32_t value) {
AndrewK 2:0ea44fca1a81 164 // void adc_comlete() {
AndrewK 2:0ea44fca1a81 165 if(++ccc == 1000)
AndrewK 2:0ea44fca1a81 166 int_led1 = 1;
AndrewK 2:0ea44fca1a81 167 if(ccc == 2000) {
AndrewK 2:0ea44fca1a81 168 int_led1 = 0;
AndrewK 2:0ea44fca1a81 169 ccc = 0;
AndrewK 2:0ea44fca1a81 170 }
AndrewK 2:0ea44fca1a81 171 //printf("%d\n", number);
AndrewK 2:0ea44fca1a81 172 switch(number20) {
AndrewK 2:0ea44fca1a81 173 case 0:
AndrewK 2:0ea44fca1a81 174 s1 = adc.read(p20);
AndrewK 2:0ea44fca1a81 175 // printf("%d\n", s1);
AndrewK 2:0ea44fca1a81 176 number20++;
AndrewK 2:0ea44fca1a81 177 break;
AndrewK 2:0ea44fca1a81 178 case 1:
AndrewK 2:0ea44fca1a81 179 s2 = adc.read(p20);
AndrewK 2:0ea44fca1a81 180 // printf("%d\n", s2);
AndrewK 2:0ea44fca1a81 181 number20++;
AndrewK 2:0ea44fca1a81 182 break;
AndrewK 2:0ea44fca1a81 183 case 2:
AndrewK 2:0ea44fca1a81 184 s3 = adc.read(p20);
AndrewK 2:0ea44fca1a81 185 switch(++pass20) {
AndrewK 2:0ea44fca1a81 186 case 1:
AndrewK 2:0ea44fca1a81 187 sm1 = Major(s1, s2, s3);
AndrewK 2:0ea44fca1a81 188 break;
AndrewK 2:0ea44fca1a81 189 case 2:
AndrewK 2:0ea44fca1a81 190 sm2 = Major(s1, s2, s3);
AndrewK 2:0ea44fca1a81 191 break;
AndrewK 2:0ea44fca1a81 192 case 3:
AndrewK 2:0ea44fca1a81 193 sm3 = Major(s1, s2, s3);
AndrewK 2:0ea44fca1a81 194 smag = Major(sm1, sm2, sm3);
AndrewK 2:0ea44fca1a81 195 adc.interrupt_state(p20, 0);
AndrewK 2:0ea44fca1a81 196 pass20 = 0;
AndrewK 2:0ea44fca1a81 197 complete20 = 1;
AndrewK 2:0ea44fca1a81 198 break;
AndrewK 2:0ea44fca1a81 199 }
AndrewK 2:0ea44fca1a81 200 number20 = 0;
AndrewK 2:0ea44fca1a81 201 }
AndrewK 2:0ea44fca1a81 202 }
AndrewK 2:0ea44fca1a81 203 int ddd = 0;
AndrewK 2:0ea44fca1a81 204 static int number19 = 0;
AndrewK 2:0ea44fca1a81 205 int complete19 = 1;
AndrewK 2:0ea44fca1a81 206 static int pass19 = 0;
AndrewK 2:0ea44fca1a81 207 void adc_comlete19(uint32_t value) {
AndrewK 2:0ea44fca1a81 208 if(++ddd == 1000)
AndrewK 2:0ea44fca1a81 209 int_led2 = 1;
AndrewK 2:0ea44fca1a81 210 if(ddd == 2000) {
AndrewK 2:0ea44fca1a81 211 int_led2 = 0;
AndrewK 2:0ea44fca1a81 212 ddd = 0;
AndrewK 2:0ea44fca1a81 213 }
AndrewK 2:0ea44fca1a81 214 //printf("%d\n", number);
AndrewK 2:0ea44fca1a81 215 switch(number19) {
AndrewK 2:0ea44fca1a81 216 case 0:
AndrewK 2:0ea44fca1a81 217 i1 = adc.read(p19);
AndrewK 2:0ea44fca1a81 218 // printf(" %d\n", i1);
AndrewK 2:0ea44fca1a81 219 number19++;
AndrewK 2:0ea44fca1a81 220 break;
AndrewK 2:0ea44fca1a81 221 case 1:
AndrewK 2:0ea44fca1a81 222 i2 = adc.read(p19);
AndrewK 2:0ea44fca1a81 223 // printf(" %d\n", i2);
AndrewK 2:0ea44fca1a81 224 number19++;
AndrewK 2:0ea44fca1a81 225 break;
AndrewK 2:0ea44fca1a81 226 case 2:
AndrewK 2:0ea44fca1a81 227 i3 = adc.read(p19);
AndrewK 2:0ea44fca1a81 228 switch(++pass19) {
AndrewK 2:0ea44fca1a81 229 case 1:
AndrewK 2:0ea44fca1a81 230 im1 = Major(i1, i2, i3);
AndrewK 2:0ea44fca1a81 231 break;
AndrewK 2:0ea44fca1a81 232 case 2:
AndrewK 2:0ea44fca1a81 233 im2 = Major(i1, i2, i3);
AndrewK 2:0ea44fca1a81 234 break;
AndrewK 2:0ea44fca1a81 235 case 3:
AndrewK 2:0ea44fca1a81 236 im3 = Major(i1, i2, i3);
AndrewK 2:0ea44fca1a81 237 smag = Major(im1, im2, im3);
AndrewK 2:0ea44fca1a81 238 adc.interrupt_state(p19, 0);
AndrewK 2:0ea44fca1a81 239 pass19 = 0;
AndrewK 2:0ea44fca1a81 240 complete19 = 1;
AndrewK 2:0ea44fca1a81 241 break;
AndrewK 2:0ea44fca1a81 242 }
AndrewK 2:0ea44fca1a81 243 number19=0;
AndrewK 2:0ea44fca1a81 244 }
AndrewK 2:0ea44fca1a81 245 }
AndrewK 2:0ea44fca1a81 246
AndrewK 2:0ea44fca1a81 247 int eee = 0;
AndrewK 2:0ea44fca1a81 248 static int number16 = 0;
AndrewK 2:0ea44fca1a81 249 int complete16 = 1;
AndrewK 2:0ea44fca1a81 250 int pass16 = 0;
AndrewK 2:0ea44fca1a81 251 void adc_comlete16(uint32_t value) {
AndrewK 2:0ea44fca1a81 252 if(++eee == 1000)
AndrewK 2:0ea44fca1a81 253 int_led3 = 1;
AndrewK 2:0ea44fca1a81 254 if(eee == 2000) {
AndrewK 2:0ea44fca1a81 255 int_led3 = 0;
AndrewK 2:0ea44fca1a81 256 eee = 0;
AndrewK 2:0ea44fca1a81 257 }
AndrewK 2:0ea44fca1a81 258 //printf("%d\n", number);
AndrewK 2:0ea44fca1a81 259 switch(number16) {
AndrewK 2:0ea44fca1a81 260 case 0:
AndrewK 2:0ea44fca1a81 261 a1 = adc.read(p16);
AndrewK 2:0ea44fca1a81 262 // printf(" %d\n", a1);
AndrewK 2:0ea44fca1a81 263 number16++;
AndrewK 2:0ea44fca1a81 264 break;
AndrewK 2:0ea44fca1a81 265 case 1:
AndrewK 2:0ea44fca1a81 266 a2 = adc.read(p16);
AndrewK 2:0ea44fca1a81 267 // printf(" %d\n", a2);
AndrewK 2:0ea44fca1a81 268 number16++;
AndrewK 2:0ea44fca1a81 269 break;
AndrewK 2:0ea44fca1a81 270 case 2:
AndrewK 2:0ea44fca1a81 271 a3 = adc.read(p16);
AndrewK 2:0ea44fca1a81 272 switch(++pass16) {
AndrewK 2:0ea44fca1a81 273 case 1:
AndrewK 2:0ea44fca1a81 274 am1 = Major(a1, a2, a3);
AndrewK 2:0ea44fca1a81 275 break;
AndrewK 2:0ea44fca1a81 276 case 2:
AndrewK 2:0ea44fca1a81 277 am2 = Major(a1, a2, a3);
AndrewK 2:0ea44fca1a81 278 break;
AndrewK 2:0ea44fca1a81 279 case 3:
AndrewK 2:0ea44fca1a81 280 am3 = Major(a1, a2, a3);
AndrewK 2:0ea44fca1a81 281 amag = Major(am1, am2, am3);
AndrewK 2:0ea44fca1a81 282 adc.interrupt_state(p16, 0);
AndrewK 2:0ea44fca1a81 283 pass16 = 0;
AndrewK 2:0ea44fca1a81 284 complete16 = 1;
AndrewK 2:0ea44fca1a81 285 break;
AndrewK 2:0ea44fca1a81 286 }
AndrewK 2:0ea44fca1a81 287 number16=0;
AndrewK 2:0ea44fca1a81 288 }
AndrewK 2:0ea44fca1a81 289 }
AndrewK 2:0ea44fca1a81 290
AndrewK 0:72d0d2736b7f 291 int delta;
AndrewK 0:72d0d2736b7f 292 float err;
AndrewK 0:72d0d2736b7f 293
AndrewK 2:0ea44fca1a81 294 void flip() {
AndrewK 2:0ea44fca1a81 295 // if(complete20 && complete19 && complete16) {
AndrewK 2:0ea44fca1a81 296 { complete20 = complete19 = complete16 = 0;
AndrewK 2:0ea44fca1a81 297 int_led4 = 0;
AndrewK 2:0ea44fca1a81 298 sprintf(str, "2=%4u %4u %4u\0",sm1, im1, am1);
AndrewK 2:0ea44fca1a81 299 Net::poll(); //Do network stuff
AndrewK 2:0ea44fca1a81 300 udp.sendto( str, strlen(str)+1, &multicast );
AndrewK 2:0ea44fca1a81 301 adc.interrupt_state(p20, 1);
AndrewK 2:0ea44fca1a81 302 adc.interrupt_state(p19, 1);
AndrewK 2:0ea44fca1a81 303 adc.interrupt_state(p16, 1);
AndrewK 2:0ea44fca1a81 304 }
AndrewK 2:0ea44fca1a81 305 // else {
AndrewK 2:0ea44fca1a81 306 // int_led4 = 1;
AndrewK 2:0ea44fca1a81 307 // }
AndrewK 2:0ea44fca1a81 308 }
AndrewK 2:0ea44fca1a81 309 /* switch(number) {
AndrewK 0:72d0d2736b7f 310 case 0:
AndrewK 2:0ea44fca1a81 311 // s1 = adc.read(p20);
AndrewK 0:72d0d2736b7f 312 number++;
AndrewK 0:72d0d2736b7f 313 break;
AndrewK 0:72d0d2736b7f 314 case 3:
AndrewK 2:0ea44fca1a81 315 // s2 = adc.read(p20);
AndrewK 0:72d0d2736b7f 316 number++;
AndrewK 0:72d0d2736b7f 317 break;
AndrewK 0:72d0d2736b7f 318 case 6:
AndrewK 2:0ea44fca1a81 319 // s3 = adc.read(p20);
AndrewK 0:72d0d2736b7f 320 number++;
AndrewK 0:72d0d2736b7f 321 sm1 = Major(s1, s2, s3);
AndrewK 0:72d0d2736b7f 322 // sprintf(str, "1=%4u\0",sm1);
AndrewK 0:72d0d2736b7f 323 // Net::poll(); //Do network stuff
AndrewK 0:72d0d2736b7f 324 // udp.sendto( str, strlen(str)+1, &multicast );
AndrewK 0:72d0d2736b7f 325 break;
AndrewK 0:72d0d2736b7f 326 case 1:
AndrewK 0:72d0d2736b7f 327 number++;
AndrewK 2:0ea44fca1a81 328 // i1 = adc.read(p19);
AndrewK 0:72d0d2736b7f 329 break;
AndrewK 0:72d0d2736b7f 330 case 4:
AndrewK 0:72d0d2736b7f 331 number++;
AndrewK 2:0ea44fca1a81 332 // i2 = adc.read(p19);
AndrewK 0:72d0d2736b7f 333 break;
AndrewK 0:72d0d2736b7f 334 case 7:
AndrewK 0:72d0d2736b7f 335 number++;
AndrewK 2:0ea44fca1a81 336 // i3 = adc.read(p19);
AndrewK 0:72d0d2736b7f 337 im1 = Major(i1, i2, i3);
AndrewK 0:72d0d2736b7f 338 // sprintf(str, "2=%4u %4u\0",sm1, im1);
AndrewK 0:72d0d2736b7f 339 // Net::poll(); //Do network stuff
AndrewK 0:72d0d2736b7f 340 // udp.sendto( str, strlen(str)+1, &multicast );
AndrewK 0:72d0d2736b7f 341 break;
AndrewK 0:72d0d2736b7f 342 case 2:
AndrewK 0:72d0d2736b7f 343 number++;
AndrewK 2:0ea44fca1a81 344 // a1 = adc.read(p16);
AndrewK 0:72d0d2736b7f 345 break;
AndrewK 0:72d0d2736b7f 346 case 5:
AndrewK 0:72d0d2736b7f 347 number++;
AndrewK 2:0ea44fca1a81 348 // a2 = adc.read(p16);
AndrewK 0:72d0d2736b7f 349 break;
AndrewK 0:72d0d2736b7f 350 case 8:
AndrewK 0:72d0d2736b7f 351 number=0;
AndrewK 2:0ea44fca1a81 352 // a3 = adc.read(p16);
AndrewK 0:72d0d2736b7f 353 am1 = Major(a1, a2, a3);
AndrewK 0:72d0d2736b7f 354 sprintf(str, "2=%4u %4u %4u\0",sm1, im1, am1);
AndrewK 0:72d0d2736b7f 355 Net::poll(); //Do network stuff
AndrewK 0:72d0d2736b7f 356 udp.sendto( str, strlen(str)+1, &multicast );
AndrewK 0:72d0d2736b7f 357 break;
AndrewK 0:72d0d2736b7f 358 }
AndrewK 0:72d0d2736b7f 359 }
AndrewK 2:0ea44fca1a81 360 */
AndrewK 0:72d0d2736b7f 361 #define MASK 0xC700000C
AndrewK 0:72d0d2736b7f 362 //#define MASK 0x00000000
AndrewK 0:72d0d2736b7f 363
AndrewK 0:72d0d2736b7f 364 int main() {
AndrewK 0:72d0d2736b7f 365 pc.baud(57600);
AndrewK 0:72d0d2736b7f 366 //Ethernet initializing, Serial Interface - 57600 kbit/s
AndrewK 0:72d0d2736b7f 367 printf("Setting up...\n");
AndrewK 1:be04a186a221 368 P21 = P22 = P23 = 1;
AndrewK 0:72d0d2736b7f 369 EthernetErr ethErr = eth.setup();
AndrewK 0:72d0d2736b7f 370 if (ethErr) {
AndrewK 0:72d0d2736b7f 371 // printf("Error %d in setup.\n", ethErr);
AndrewK 0:72d0d2736b7f 372 return -1;
AndrewK 0:72d0d2736b7f 373 }
AndrewK 0:72d0d2736b7f 374 // printf("Setup OK\n");
AndrewK 0:72d0d2736b7f 375 // Host multicast(IpAddr(239, 192, 1, 100), 50000, NULL); //Join multicast group on port 50000
AndrewK 0:72d0d2736b7f 376 AnalogIn in0(p20);
AndrewK 0:72d0d2736b7f 377 AnalogIn in1(p19);
AndrewK 0:72d0d2736b7f 378 // AnalogIn in2(p18);
AndrewK 2:0ea44fca1a81 379 AnalogIn in3(p16);
AndrewK 0:72d0d2736b7f 380 // AnalogIn in4(p16);
AndrewK 0:72d0d2736b7f 381 // AnalogIn in5(p15);
AndrewK 0:72d0d2736b7f 382 // PortOut(Port0, MASK);
AndrewK 0:72d0d2736b7f 383 // DigitalOut P19(p19);
AndrewK 0:72d0d2736b7f 384 AnalogOut tri(p18);
AndrewK 2:0ea44fca1a81 385 DigitalOut P17(p17);
AndrewK 2:0ea44fca1a81 386 DigitalOut P15(p15);
AndrewK 2:0ea44fca1a81 387 P17 = 0; P15 = 0;// = P19 = 0;
AndrewK 0:72d0d2736b7f 388
AndrewK 0:72d0d2736b7f 389 udp.setOnEvent(&onUDPSocketEvent);
AndrewK 0:72d0d2736b7f 390 udp.bind(multicast);
AndrewK 0:72d0d2736b7f 391
AndrewK 0:72d0d2736b7f 392 Net::poll();
AndrewK 0:72d0d2736b7f 393
AndrewK 0:72d0d2736b7f 394 // tmr.start();
AndrewK 0:72d0d2736b7f 395
AndrewK 0:72d0d2736b7f 396 //Turning ON Burst-mode ADC on pins 17,18,19,20 note: connect not used ADC ping to ground
AndrewK 0:72d0d2736b7f 397 // adc.startmode(0,0);
AndrewK 1:be04a186a221 398 adc.burst(1);
AndrewK 0:72d0d2736b7f 399 adc.setup(p20,1);
AndrewK 0:72d0d2736b7f 400 adc.setup(p19,1);
AndrewK 0:72d0d2736b7f 401 // adc.select(p20);
AndrewK 0:72d0d2736b7f 402 // adc.start();
AndrewK 0:72d0d2736b7f 403 // adc.setup(p18,1);
AndrewK 2:0ea44fca1a81 404 adc.setup(p16,1);
AndrewK 0:72d0d2736b7f 405 // printf("start\n");
AndrewK 0:72d0d2736b7f 406 // printf("%d\n", adc.channel_to_pin_number(0));
AndrewK 0:72d0d2736b7f 407
AndrewK 2:0ea44fca1a81 408 adc.append(p20, adc_comlete20);
AndrewK 2:0ea44fca1a81 409 adc.interrupt_state(p20, 0);
AndrewK 2:0ea44fca1a81 410 adc.append(p19, adc_comlete19);
AndrewK 2:0ea44fca1a81 411 adc.interrupt_state(p19, 0);
AndrewK 2:0ea44fca1a81 412 adc.append(p16, adc_comlete16);
AndrewK 2:0ea44fca1a81 413 adc.interrupt_state(p16, 0);
AndrewK 2:0ea44fca1a81 414 flipper.attach_us(&flip, 500); // Interrupt Turn ON (100 - 10kHz; 1000 - 1 kHz)
AndrewK 0:72d0d2736b7f 415 tri = 0;
AndrewK 0:72d0d2736b7f 416 while(1) {
AndrewK 0:72d0d2736b7f 417 tri = tri + 0.001;
AndrewK 0:72d0d2736b7f 418 wait_us(100);
AndrewK 0:72d0d2736b7f 419 if(tri >= 0.06) {
AndrewK 0:72d0d2736b7f 420 tri = 0;
AndrewK 0:72d0d2736b7f 421 }
AndrewK 0:72d0d2736b7f 422 }
AndrewK 0:72d0d2736b7f 423 }