Andrew Kuznetsov / Mbed 2 deprecated 2_7controller2

Dependencies:   EthernetNetIf mbed

Fork of Monitor0 by Andrew Kuznetsov

Committer:
AndrewK
Date:
Tue Nov 27 10:44:23 2012 +0000
Revision:
6:926b094680d1
Parent:
4:b04a24076feb
Test program. ADC + Ethernet

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AndrewK 6:926b094680d1 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 6:926b094680d1 6 #include "MedianFilter.h"
AndrewK 6:926b094680d1 7 struct {
AndrewK 6:926b094680d1 8 char key;
AndrewK 6:926b094680d1 9 unsigned short v1;
AndrewK 6:926b094680d1 10 unsigned short v2;
AndrewK 6:926b094680d1 11 unsigned short v3;
AndrewK 6:926b094680d1 12 unsigned short v4;
AndrewK 6:926b094680d1 13 } buff;
AndrewK 0:72d0d2736b7f 14
AndrewK 6:926b094680d1 15
AndrewK 6:926b094680d1 16 EthernetNetIf eth( IpAddr(192,168,1,155), //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 6:926b094680d1 28 //DigitalOut P21(p21);
AndrewK 6:926b094680d1 29 //DigitalOut P22(p22);
AndrewK 6:926b094680d1 30 //DigitalOut P23(p23);
AndrewK 6:926b094680d1 31 //DigitalOut P24(p24);
AndrewK 6:926b094680d1 32 //Serial pc(USBTX,USBRX);
AndrewK 6:926b094680d1 33 Host multicast(IpAddr(192,168,1,51),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 6:926b094680d1 39 unsigned short b1,b2,b3;
AndrewK 6:926b094680d1 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 6:926b094680d1 46
AndrewK 6:926b094680d1 47 MedianFilter mf16(9);
AndrewK 6:926b094680d1 48 MedianFilter mf17(9);
AndrewK 6:926b094680d1 49 MedianFilter mf19(9);
AndrewK 6:926b094680d1 50 MedianFilter mf20(9);
AndrewK 6:926b094680d1 51 void flip();
AndrewK 6:926b094680d1 52 /////////////////////////////////////////
AndrewK 6:926b094680d1 53 DigitalInOut port_in_out[4] = {DigitalInOut(p21),DigitalInOut(p22),DigitalInOut(p23),DigitalInOut(p24)};
AndrewK 6:926b094680d1 54 //DigitalInOut P21(p21);
AndrewK 6:926b094680d1 55 //DigitalInOut P22(p22);
AndrewK 6:926b094680d1 56 //DigitalInOut P23(p23);
AndrewK 6:926b094680d1 57 //DigitalInOut P24(p24);
AndrewK 6:926b094680d1 58 int count_puls;
AndrewK 6:926b094680d1 59 int mode_read;
AndrewK 6:926b094680d1 60 int device_no;
AndrewK 0:72d0d2736b7f 61 Timeout timeout;
AndrewK 6:926b094680d1 62 Timeout timeout2;
AndrewK 6:926b094680d1 63 InterruptIn port_interrupt[4] = {InterruptIn(p21),InterruptIn(p22),InterruptIn(p23),InterruptIn(p24)};
AndrewK 6:926b094680d1 64 //InterruptIn impuls21(p21);
AndrewK 6:926b094680d1 65 //InterruptIn impuls22(p22);
AndrewK 6:926b094680d1 66 //InterruptIn impuls23(p23);
AndrewK 6:926b094680d1 67 //InterruptIn impuls24(p24);
AndrewK 6:926b094680d1 68 int count_imp = 0;
AndrewK 6:926b094680d1 69 void impuls_fall() {count_imp++;}
AndrewK 6:926b094680d1 70 /////////////////////////////////////////
AndrewK 6:926b094680d1 71 unsigned char send_buf[16];
AndrewK 6:926b094680d1 72
AndrewK 6:926b094680d1 73 void Handler21() {
AndrewK 6:926b094680d1 74 }
AndrewK 6:926b094680d1 75
AndrewK 6:926b094680d1 76 void Timer_Handler21() {
AndrewK 6:926b094680d1 77 send_buf[0] = '5';
AndrewK 6:926b094680d1 78 send_buf[2] = device_no - 1;
AndrewK 6:926b094680d1 79 switch(count_imp) {
AndrewK 6:926b094680d1 80 case 0:
AndrewK 6:926b094680d1 81 send_buf[1] = 0;
AndrewK 6:926b094680d1 82 break;
AndrewK 6:926b094680d1 83 case 1:
AndrewK 6:926b094680d1 84 send_buf[1] = 1;
AndrewK 6:926b094680d1 85 break;
AndrewK 6:926b094680d1 86 case 2:
AndrewK 6:926b094680d1 87 send_buf[1] = 3;
AndrewK 6:926b094680d1 88 break;
AndrewK 6:926b094680d1 89 case 3:
AndrewK 6:926b094680d1 90 send_buf[1] = 4;
AndrewK 6:926b094680d1 91 break;
AndrewK 6:926b094680d1 92 case 4:
AndrewK 6:926b094680d1 93 send_buf[1] = 2;
AndrewK 6:926b094680d1 94 break;
AndrewK 6:926b094680d1 95 case 5:
AndrewK 6:926b094680d1 96 send_buf[1] = 5;
AndrewK 6:926b094680d1 97 break;
AndrewK 6:926b094680d1 98 }
AndrewK 6:926b094680d1 99 Net::poll(); //Do network stuff
AndrewK 6:926b094680d1 100 udp.sendto((char*)&send_buf, 3, &multicast );
AndrewK 6:926b094680d1 101 timeout2.detach();
AndrewK 6:926b094680d1 102 // pc.printf("%d %s\n", count_imp, (char*)&send_buf);
AndrewK 6:926b094680d1 103 }
AndrewK 6:926b094680d1 104
AndrewK 6:926b094680d1 105
AndrewK 0:72d0d2736b7f 106 void Timer_Handler()
AndrewK 0:72d0d2736b7f 107 {
AndrewK 0:72d0d2736b7f 108 if(count_puls) {
AndrewK 6:926b094680d1 109 unsigned char v = count_puls % 2;
AndrewK 0:72d0d2736b7f 110 count_puls--;
AndrewK 6:926b094680d1 111 // led1_on = !led1_on;
AndrewK 6:926b094680d1 112 // int_led1 = led1_on;
AndrewK 6:926b094680d1 113 port_in_out[device_no-1] = v;
AndrewK 6:926b094680d1 114 /* switch(device_no) {
AndrewK 1:be04a186a221 115 case 1:
AndrewK 6:926b094680d1 116 P21 = v;
AndrewK 1:be04a186a221 117 break;
AndrewK 1:be04a186a221 118 case 2:
AndrewK 6:926b094680d1 119 P22 = v;
AndrewK 1:be04a186a221 120 break;
AndrewK 1:be04a186a221 121 case 3:
AndrewK 6:926b094680d1 122 P23 = v;
AndrewK 6:926b094680d1 123 break;
AndrewK 6:926b094680d1 124 case 4:
AndrewK 6:926b094680d1 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 6:926b094680d1 131 */
AndrewK 6:926b094680d1 132 if(mode_read) {
AndrewK 6:926b094680d1 133 timeout.attach_us(Timer_Handler, 30000);
AndrewK 6:926b094680d1 134 mode_read = 0;
AndrewK 6:926b094680d1 135 int_led1 = 1;
AndrewK 6:926b094680d1 136
AndrewK 6:926b094680d1 137 } else {
AndrewK 6:926b094680d1 138 timeout.attach_us(Timer_Handler, 1000);
AndrewK 6:926b094680d1 139 int_led1 = 0;
AndrewK 6:926b094680d1 140 }
AndrewK 6:926b094680d1 141 } else {
AndrewK 0:72d0d2736b7f 142 timeout.detach();
AndrewK 6:926b094680d1 143 port_in_out[device_no-1].input();
AndrewK 6:926b094680d1 144 timeout2.attach_us(Timer_Handler21, 200000);
AndrewK 6:926b094680d1 145 count_imp = 0;
AndrewK 6:926b094680d1 146
AndrewK 6:926b094680d1 147 }
AndrewK 6:926b094680d1 148 }
AndrewK 6:926b094680d1 149 bool transmit_enable = false;
AndrewK 6:926b094680d1 150 void StartTransmit(bool start) {
AndrewK 6:926b094680d1 151 if(start) {
AndrewK 6:926b094680d1 152 transmit_enable = true;
AndrewK 6:926b094680d1 153 // flipper.attach_us(&flip, 200); // Interrupt Turn ON (100 - 10kHz; 1000 - 1 kHz)
AndrewK 6:926b094680d1 154 } else {
AndrewK 6:926b094680d1 155 transmit_enable = false;
AndrewK 6:926b094680d1 156 // flipper.detach();
AndrewK 6:926b094680d1 157 // flipper.attach_us(&flip, 200000); // Interrupt Turn ON (100 - 10kHz; 1000 - 1 kHz)
AndrewK 6:926b094680d1 158 }
AndrewK 0:72d0d2736b7f 159 }
AndrewK 0:72d0d2736b7f 160
AndrewK 0:72d0d2736b7f 161 void onUDPSocketEvent(UDPSocketEvent e) { //Incoming UDP packet processing
AndrewK 6:926b094680d1 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 6:926b094680d1 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 6:926b094680d1 173 case 'S':
AndrewK 6:926b094680d1 174 StartTransmit(true);
AndrewK 6:926b094680d1 175 return;
AndrewK 6:926b094680d1 176 case 's':
AndrewK 6:926b094680d1 177 StartTransmit(false);
AndrewK 6:926b094680d1 178 return;
AndrewK 0:72d0d2736b7f 179 case '1':
AndrewK 1:be04a186a221 180 device_no = 1;
AndrewK 6:926b094680d1 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 6:926b094680d1 191 case '4':
AndrewK 6:926b094680d1 192 device_no = 4;
AndrewK 6:926b094680d1 193 // int_led3 = 1;
AndrewK 6:926b094680d1 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 6:926b094680d1 205 if(buf[2] == 0) {
AndrewK 6:926b094680d1 206 mode_read = 0;
AndrewK 6:926b094680d1 207 switch(buf[1]) {
AndrewK 6:926b094680d1 208 case '1':
AndrewK 6:926b094680d1 209 count_puls = 2; //8
AndrewK 6:926b094680d1 210 // int_led1 = 1;
AndrewK 6:926b094680d1 211 break;
AndrewK 6:926b094680d1 212 case '2':
AndrewK 6:926b094680d1 213 count_puls = 8; //4;
AndrewK 6:926b094680d1 214 // int_led2 = 1;
AndrewK 6:926b094680d1 215 break;
AndrewK 6:926b094680d1 216 case '3':
AndrewK 6:926b094680d1 217 count_puls = 4; //6;
AndrewK 6:926b094680d1 218 // int_led3 = 1;
AndrewK 6:926b094680d1 219 break;
AndrewK 6:926b094680d1 220 case '4':
AndrewK 6:926b094680d1 221 count_puls = 6; //2;8
AndrewK 6:926b094680d1 222 // int_led4 = 1;
AndrewK 6:926b094680d1 223 break;
AndrewK 6:926b094680d1 224 case '5':
AndrewK 6:926b094680d1 225 count_puls = 10;
AndrewK 6:926b094680d1 226 // int_led1 = 1;
AndrewK 6:926b094680d1 227 // int_led2 = 1;
AndrewK 6:926b094680d1 228 break;
AndrewK 6:926b094680d1 229 default:
AndrewK 6:926b094680d1 230 count_puls = 0;
AndrewK 6:926b094680d1 231 }
AndrewK 6:926b094680d1 232 } else {
AndrewK 6:926b094680d1 233 count_puls = 2;
AndrewK 6:926b094680d1 234 mode_read = 1;
AndrewK 6:926b094680d1 235
AndrewK 6:926b094680d1 236 // led1_on = 1;
AndrewK 6:926b094680d1 237 }
AndrewK 6:926b094680d1 238 port_in_out[device_no-1].output();
AndrewK 6:926b094680d1 239 timeout.attach_us(Timer_Handler, 1000);
AndrewK 6:926b094680d1 240 break;
AndrewK 0:72d0d2736b7f 241 }
AndrewK 0:72d0d2736b7f 242 }
AndrewK 1:be04a186a221 243
AndrewK 6:926b094680d1 244
AndrewK 2:0ea44fca1a81 245
AndrewK 6:926b094680d1 246 //static int number20 = 0;
AndrewK 6:926b094680d1 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 6:926b094680d1 251 int d20 = 0;
AndrewK 2:0ea44fca1a81 252 void adc_comlete20(uint32_t value) {
AndrewK 6:926b094680d1 253 // if(++d20 == 10000)
AndrewK 6:926b094680d1 254 // int_led1 = 1;
AndrewK 6:926b094680d1 255 // if(d20 == 20000) {
AndrewK 6:926b094680d1 256 // int_led1 = 0;
AndrewK 6:926b094680d1 257 // d20 = 0;
AndrewK 6:926b094680d1 258 // }
AndrewK 6:926b094680d1 259 s1 = adc.read(p20);
AndrewK 6:926b094680d1 260 sm1 = mf20.GetMedian(s1);
AndrewK 6:926b094680d1 261 // adc.interrupt_state(p20, 0);
AndrewK 6:926b094680d1 262 complete20 = 1;
AndrewK 6:926b094680d1 263 adc.interrupt_state(p20, 0);
AndrewK 6:926b094680d1 264 // adc.select(p16);
AndrewK 6:926b094680d1 265 adc.interrupt_state(p16, 1);
AndrewK 2:0ea44fca1a81 266 }
AndrewK 2:0ea44fca1a81 267
AndrewK 6:926b094680d1 268
AndrewK 6:926b094680d1 269 int d19 = 0;
AndrewK 6:926b094680d1 270 //static int number19 = 0;
AndrewK 6:926b094680d1 271 int complete19 = 1;
AndrewK 6:926b094680d1 272 //static int pass19 = 0;
AndrewK 6:926b094680d1 273 void adc_comlete19(uint32_t value) {
AndrewK 6:926b094680d1 274 // if(++d19 == 10000)
AndrewK 6:926b094680d1 275 // int_led2 = 1;
AndrewK 6:926b094680d1 276 // if(d19 == 20000) {
AndrewK 6:926b094680d1 277 // int_led2 = 0;
AndrewK 6:926b094680d1 278 // d19 = 0;
AndrewK 6:926b094680d1 279 // }
AndrewK 6:926b094680d1 280 i1 = adc.read(p19);
AndrewK 6:926b094680d1 281 im1 = mf19.GetMedian(i1);
AndrewK 6:926b094680d1 282 complete19 = 1;
AndrewK 6:926b094680d1 283 adc.interrupt_state(p19, 0);
AndrewK 6:926b094680d1 284 // adc.select(p20);
AndrewK 6:926b094680d1 285 adc.interrupt_state(p20, 1);
AndrewK 6:926b094680d1 286 }
AndrewK 6:926b094680d1 287
AndrewK 6:926b094680d1 288 int complete17 = 1;
AndrewK 6:926b094680d1 289 int d17 = 0;
AndrewK 6:926b094680d1 290 void adc_comlete17(uint32_t value) {
AndrewK 6:926b094680d1 291 // if(++d17 == 10000)
AndrewK 6:926b094680d1 292 // int_led3 = 1;
AndrewK 6:926b094680d1 293 // if(d17 == 20000) {
AndrewK 6:926b094680d1 294 // int_led3 = 0;
AndrewK 6:926b094680d1 295 // d17 = 0;
AndrewK 6:926b094680d1 296 // }
AndrewK 6:926b094680d1 297 b1 = adc.read(p17);
AndrewK 6:926b094680d1 298 bm1 = mf17.GetMedian(b1);
AndrewK 6:926b094680d1 299 complete17 = 1;
AndrewK 6:926b094680d1 300 adc.interrupt_state(p17, 0);
AndrewK 6:926b094680d1 301 // adc.select(p19);
AndrewK 6:926b094680d1 302 adc.interrupt_state(p19, 1);
AndrewK 6:926b094680d1 303 }
AndrewK 6:926b094680d1 304
AndrewK 6:926b094680d1 305 int d16 = 0;
AndrewK 6:926b094680d1 306 //static int number16 = 0;
AndrewK 2:0ea44fca1a81 307 int complete16 = 1;
AndrewK 6:926b094680d1 308 //int pass16 = 0;
AndrewK 2:0ea44fca1a81 309 void adc_comlete16(uint32_t value) {
AndrewK 6:926b094680d1 310 // if(++d16 == 10000)
AndrewK 6:926b094680d1 311 // int_led4 = 1;
AndrewK 6:926b094680d1 312 // if(d16 == 20000) {
AndrewK 6:926b094680d1 313 // int_led4 = 0;
AndrewK 6:926b094680d1 314 // d16 = 0;
AndrewK 6:926b094680d1 315 // }
AndrewK 2:0ea44fca1a81 316 a1 = adc.read(p16);
AndrewK 6:926b094680d1 317 am1 = mf16.GetMedian(a1);
AndrewK 6:926b094680d1 318 complete16 = 1;
AndrewK 6:926b094680d1 319 adc.interrupt_state(p16, 0);
AndrewK 6:926b094680d1 320 // adc.select(p17);
AndrewK 6:926b094680d1 321 adc.interrupt_state(p17, 1);
AndrewK 6:926b094680d1 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 6:926b094680d1 328 //if(!complete20)
AndrewK 6:926b094680d1 329 // int_led4 = 1;
AndrewK 4:b04a24076feb 330 // if(complete20 && complete19 && complete16) {
AndrewK 6:926b094680d1 331 { //complete20 = complete19 =
AndrewK 6:926b094680d1 332 complete16 = 0;
AndrewK 6:926b094680d1 333 // int_led4 = 1;
AndrewK 6:926b094680d1 334 // sprintf(str, "2=%4u %4u %4u\0",a1, im1, a1);
AndrewK 6:926b094680d1 335 // printf(str);
AndrewK 6:926b094680d1 336 buff.key = '2';
AndrewK 6:926b094680d1 337 buff.v1 = sm1;
AndrewK 6:926b094680d1 338 buff.v2 = im1;
AndrewK 6:926b094680d1 339 buff.v3 = am1;
AndrewK 6:926b094680d1 340 buff.v4 = bm1;
AndrewK 2:0ea44fca1a81 341 Net::poll(); //Do network stuff
AndrewK 6:926b094680d1 342 if(transmit_enable)
AndrewK 6:926b094680d1 343 udp.sendto((char*)&buff, sizeof(buff), &multicast );
AndrewK 6:926b094680d1 344 // udp.sendto( str, strlen(str)+1, &multicast );
AndrewK 4:b04a24076feb 345 // LPC_ADC->ADINTEN = 0;
AndrewK 6:926b094680d1 346 // adc.interrupt_state(p20, 1);
AndrewK 6:926b094680d1 347 // adc.interrupt_state(p19, 1);
AndrewK 2:0ea44fca1a81 348 adc.interrupt_state(p16, 1);
AndrewK 6:926b094680d1 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 6:926b094680d1 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 6:926b094680d1 365 // pc.baud(57600);
AndrewK 0:72d0d2736b7f 366 //Ethernet initializing, Serial Interface - 57600 kbit/s
AndrewK 6:926b094680d1 367 // printf("Setting up...\n");
AndrewK 6:926b094680d1 368 port_in_out[0].output();
AndrewK 6:926b094680d1 369 port_in_out[1].output();
AndrewK 6:926b094680d1 370 port_in_out[2].output();
AndrewK 6:926b094680d1 371 port_in_out[3].output();
AndrewK 6:926b094680d1 372 port_in_out[0]=1;
AndrewK 6:926b094680d1 373 port_in_out[1]=1;
AndrewK 6:926b094680d1 374 port_in_out[2]=1;
AndrewK 6:926b094680d1 375 port_in_out[3]=1;
AndrewK 0:72d0d2736b7f 376 EthernetErr ethErr = eth.setup();
AndrewK 6:926b094680d1 377 // if (ethErr) {
AndrewK 0:72d0d2736b7f 378 // printf("Error %d in setup.\n", ethErr);
AndrewK 6:926b094680d1 379 // return -1;
AndrewK 6:926b094680d1 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 6:926b094680d1 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 6:926b094680d1 390 // DigitalOut P17(p17);
AndrewK 2:0ea44fca1a81 391 DigitalOut P15(p15);
AndrewK 6:926b094680d1 392 // P17 = 0;
AndrewK 6:926b094680d1 393 P15 = 0;// = P19 = 0;
AndrewK 6:926b094680d1 394 port_interrupt[0].fall(&impuls_fall);
AndrewK 6:926b094680d1 395 port_interrupt[1].fall(&impuls_fall);
AndrewK 6:926b094680d1 396 port_interrupt[2].fall(&impuls_fall);
AndrewK 6:926b094680d1 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 6:926b094680d1 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 6:926b094680d1 417 //complete20 = complete19 =
AndrewK 6:926b094680d1 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 6:926b094680d1 423 adc.append(p17, adc_comlete17);
AndrewK 6:926b094680d1 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 6:926b094680d1 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 }