Andrew Kuznetsov / Mbed 2 deprecated Monitor00_copy

Dependencies:   EthernetNetIf mbed

Fork of Monitor0 by Andrew Kuznetsov

Committer:
AndrewK
Date:
Tue Nov 27 10:46:33 2012 +0000
Revision:
5:dacd482b2436
Parent:
4:b04a24076feb
Test Program. ADC + Ethernet

Who changed what in which revision?

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