Measurement of three analogue signals a filtration and transfer of their values through Ethernet (UDP)
Dependencies: mbed EthernetNetIf
main.cpp@3:e2e8519a7ce7, 2012-07-30 (annotated)
- 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?
User | Revision | Line number | New 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 // �������� 2 |
AndrewK | 0:72d0d2736b7f | 147 | } else { |
AndrewK | 0:72d0d2736b7f | 148 | if (dif12 < dif02) |
AndrewK | 0:72d0d2736b7f | 149 | dadc0 = dadc2; // �������� 0 |
AndrewK | 0:72d0d2736b7f | 150 | else |
AndrewK | 0:72d0d2736b7f | 151 | dadc1 = dadc2; // �������� 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 | } |