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
main.cpp@6:926b094680d1, 2012-11-27 (annotated)
- 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?
User | Revision | Line number | New 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 | } |