10kHz ADC which reads from 17,18,19,20 pins and send the result to remote server (multicast now) via UDP
Dependencies: EthernetNetIf mbed
main.cpp@0:7744cef9f8af, 2012-03-13 (annotated)
- Committer:
- mrcandy
- Date:
- Tue Mar 13 14:57:54 2012 +0000
- Revision:
- 0:7744cef9f8af
- Child:
- 1:beae6624e569
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mrcandy | 0:7744cef9f8af | 1 | |
mrcandy | 0:7744cef9f8af | 2 | #define SAMPLE_RATE 1500000 |
mrcandy | 0:7744cef9f8af | 3 | #include "mbed.h" |
mrcandy | 0:7744cef9f8af | 4 | #include "adc.h" |
mrcandy | 0:7744cef9f8af | 5 | #include "EthernetNetIf.h" |
mrcandy | 0:7744cef9f8af | 6 | #include "UDPSocket.h" |
mrcandy | 0:7744cef9f8af | 7 | |
mrcandy | 0:7744cef9f8af | 8 | EthernetNetIf eth; |
mrcandy | 0:7744cef9f8af | 9 | UDPSocket udp; |
mrcandy | 0:7744cef9f8af | 10 | |
mrcandy | 0:7744cef9f8af | 11 | DigitalOut int_led(LED1); |
mrcandy | 0:7744cef9f8af | 12 | Serial pc(USBTX,USBRX); |
mrcandy | 0:7744cef9f8af | 13 | Host multicast(IpAddr(239, 192, 1, 100), 50000, NULL); |
mrcandy | 0:7744cef9f8af | 14 | ADC adc(SAMPLE_RATE, 1); |
mrcandy | 0:7744cef9f8af | 15 | Ticker flipper; |
mrcandy | 0:7744cef9f8af | 16 | unsigned short samples1,samples2,samples3,samples4; |
mrcandy | 0:7744cef9f8af | 17 | int k=0; |
mrcandy | 0:7744cef9f8af | 18 | Timer tmr; |
mrcandy | 0:7744cef9f8af | 19 | char str[50]; |
mrcandy | 0:7744cef9f8af | 20 | |
mrcandy | 0:7744cef9f8af | 21 | |
mrcandy | 0:7744cef9f8af | 22 | void onUDPSocketEvent(UDPSocketEvent e) { //îáðàáîòêà ïðèõîäÿùåãî ïàêåòà UDP |
mrcandy | 0:7744cef9f8af | 23 | switch (e) { |
mrcandy | 0:7744cef9f8af | 24 | case UDPSOCKET_READABLE: //The only event for now |
mrcandy | 0:7744cef9f8af | 25 | char buf[64] = {0}; |
mrcandy | 0:7744cef9f8af | 26 | Host host; |
mrcandy | 0:7744cef9f8af | 27 | while ( int len = udp.recvfrom( buf, 63, &host ) ) { |
mrcandy | 0:7744cef9f8af | 28 | if ( len <= 0 ) |
mrcandy | 0:7744cef9f8af | 29 | break; |
mrcandy | 0:7744cef9f8af | 30 | printf("From %d.%d.%d.%d: %s\n", host.getIp()[0], host.getIp()[1], host.getIp()[2], host.getIp()[3], buf); |
mrcandy | 0:7744cef9f8af | 31 | } |
mrcandy | 0:7744cef9f8af | 32 | break; |
mrcandy | 0:7744cef9f8af | 33 | } |
mrcandy | 0:7744cef9f8af | 34 | } |
mrcandy | 0:7744cef9f8af | 35 | |
mrcandy | 0:7744cef9f8af | 36 | void flip() { // èçìåðåíèå ïî ïðåðûâàíèþ è îòïðàâêà â UDP |
mrcandy | 0:7744cef9f8af | 37 | int_led = !int_led; |
mrcandy | 0:7744cef9f8af | 38 | /* samples1=adc.read(p20); |
mrcandy | 0:7744cef9f8af | 39 | samples2=adc.read(p19); |
mrcandy | 0:7744cef9f8af | 40 | samples3=adc.read(p18); |
mrcandy | 0:7744cef9f8af | 41 | samples4=adc.read(p17);*/ |
mrcandy | 0:7744cef9f8af | 42 | k++; //ñ÷åò÷èê êîëè÷åñòâà öèêëîâ |
mrcandy | 0:7744cef9f8af | 43 | sprintf(str, "1=%04u 2=%04u 3=%04u 4=%04u",adc.read(p17),adc.read(p18),adc.read(p19),adc.read(p20)); |
mrcandy | 0:7744cef9f8af | 44 | udp.sendto( str, strlen(str), &multicast ); |
mrcandy | 0:7744cef9f8af | 45 | } |
mrcandy | 0:7744cef9f8af | 46 | |
mrcandy | 0:7744cef9f8af | 47 | |
mrcandy | 0:7744cef9f8af | 48 | int main() { |
mrcandy | 0:7744cef9f8af | 49 | pc.baud(57600); |
mrcandy | 0:7744cef9f8af | 50 | //óñòàíîâêà Ethernet |
mrcandy | 0:7744cef9f8af | 51 | printf("Setting up...\n"); |
mrcandy | 0:7744cef9f8af | 52 | EthernetErr ethErr = eth.setup(); |
mrcandy | 0:7744cef9f8af | 53 | if (ethErr) { |
mrcandy | 0:7744cef9f8af | 54 | printf("Error %d in setup.\n", ethErr); |
mrcandy | 0:7744cef9f8af | 55 | return -1; |
mrcandy | 0:7744cef9f8af | 56 | } |
mrcandy | 0:7744cef9f8af | 57 | printf("Setup OK\n"); |
mrcandy | 0:7744cef9f8af | 58 | // Host multicast(IpAddr(239, 192, 1, 100), 50000, NULL); //Join multicast group on port 50000 |
mrcandy | 0:7744cef9f8af | 59 | udp.setOnEvent(&onUDPSocketEvent); |
mrcandy | 0:7744cef9f8af | 60 | udp.bind(multicast); |
mrcandy | 0:7744cef9f8af | 61 | |
mrcandy | 0:7744cef9f8af | 62 | Net::poll(); |
mrcandy | 0:7744cef9f8af | 63 | |
mrcandy | 0:7744cef9f8af | 64 | tmr.start(); |
mrcandy | 0:7744cef9f8af | 65 | |
mrcandy | 0:7744cef9f8af | 66 | //âêëþ÷àåì ADC íà ïèíàõ 17,18,19,20 |
mrcandy | 0:7744cef9f8af | 67 | adc.startmode(0,0); |
mrcandy | 0:7744cef9f8af | 68 | adc.burst(1); |
mrcandy | 0:7744cef9f8af | 69 | adc.setup(p20,1); |
mrcandy | 0:7744cef9f8af | 70 | adc.setup(p19,1); |
mrcandy | 0:7744cef9f8af | 71 | adc.setup(p18,1); |
mrcandy | 0:7744cef9f8af | 72 | adc.setup(p17,1); |
mrcandy | 0:7744cef9f8af | 73 | |
mrcandy | 0:7744cef9f8af | 74 | printf("start\n"); |
mrcandy | 0:7744cef9f8af | 75 | |
mrcandy | 0:7744cef9f8af | 76 | flipper.attach_us(&flip, 100); // âêëþ÷àåì ïðåðûâàíèå |
mrcandy | 0:7744cef9f8af | 77 | wait(10); // ìåðÿåì 10 ñåêóíä |
mrcandy | 0:7744cef9f8af | 78 | flipper.detach(); |
mrcandy | 0:7744cef9f8af | 79 | |
mrcandy | 0:7744cef9f8af | 80 | adc.burst(0); //âûêëþ÷àåì ADC |
mrcandy | 0:7744cef9f8af | 81 | adc.setup(p20,0); |
mrcandy | 0:7744cef9f8af | 82 | adc.setup(p19,0); |
mrcandy | 0:7744cef9f8af | 83 | adc.setup(p18,0); |
mrcandy | 0:7744cef9f8af | 84 | adc.setup(p17,0); |
mrcandy | 0:7744cef9f8af | 85 | |
mrcandy | 0:7744cef9f8af | 86 | |
mrcandy | 0:7744cef9f8af | 87 | printf("number of cycles= %d\n",k); |
mrcandy | 0:7744cef9f8af | 88 | printf("End: %f\n",tmr.read()); |
mrcandy | 0:7744cef9f8af | 89 | |
mrcandy | 0:7744cef9f8af | 90 | } |