Versão estável sem DMA e FFT. 128 amostras.
Dependencies: EthernetInterface NTPClient mbed-rtos mbed
main.cpp@0:fac116e94d44, 2016-01-05 (annotated)
- Committer:
- rebonatto
- Date:
- Tue Jan 05 11:47:35 2016 +0000
- Revision:
- 0:fac116e94d44
Vers?o est?vel sem DMA e FFT. 128 amostras.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
rebonatto | 0:fac116e94d44 | 1 | /* |
rebonatto | 0:fac116e94d44 | 2 | Projeto teste de Enviar dados coletados sem calcular a FFT. |
rebonatto | 0:fac116e94d44 | 3 | Aquisição das amostras realizada sem DMA |
rebonatto | 0:fac116e94d44 | 4 | |
rebonatto | 0:fac116e94d44 | 5 | */ |
rebonatto | 0:fac116e94d44 | 6 | |
rebonatto | 0:fac116e94d44 | 7 | #define MSGWINDOW "Version 4" |
rebonatto | 0:fac116e94d44 | 8 | |
rebonatto | 0:fac116e94d44 | 9 | #include <stdio.h> |
rebonatto | 0:fac116e94d44 | 10 | |
rebonatto | 0:fac116e94d44 | 11 | #include "mbed.h" |
rebonatto | 0:fac116e94d44 | 12 | #include "rtos.h" |
rebonatto | 0:fac116e94d44 | 13 | #include "cmsis_os.h" |
rebonatto | 0:fac116e94d44 | 14 | #include "EthernetInterface.h" |
rebonatto | 0:fac116e94d44 | 15 | #include "Settings.h" |
rebonatto | 0:fac116e94d44 | 16 | #include "Capture.h" |
rebonatto | 0:fac116e94d44 | 17 | #include "Http_post.h" |
rebonatto | 0:fac116e94d44 | 18 | #include "SignalProcessor.h" |
rebonatto | 0:fac116e94d44 | 19 | #include "EventDetector.h" |
rebonatto | 0:fac116e94d44 | 20 | #include "limites.h" |
rebonatto | 0:fac116e94d44 | 21 | |
rebonatto | 0:fac116e94d44 | 22 | #include "TelnetServer.h" |
rebonatto | 0:fac116e94d44 | 23 | |
rebonatto | 0:fac116e94d44 | 24 | #include "tftpsrv.h" |
rebonatto | 0:fac116e94d44 | 25 | #include "ntpc.h" |
rebonatto | 0:fac116e94d44 | 26 | |
rebonatto | 0:fac116e94d44 | 27 | #include "PmedLog.h" |
rebonatto | 0:fac116e94d44 | 28 | |
rebonatto | 0:fac116e94d44 | 29 | #include "NTPClient.h" |
rebonatto | 0:fac116e94d44 | 30 | |
rebonatto | 0:fac116e94d44 | 31 | #include "whatchdog.h" |
rebonatto | 0:fac116e94d44 | 32 | |
rebonatto | 0:fac116e94d44 | 33 | EthernetInterface eth; |
rebonatto | 0:fac116e94d44 | 34 | Watchdog wdt; |
rebonatto | 0:fac116e94d44 | 35 | |
rebonatto | 0:fac116e94d44 | 36 | Semaphore tranca(1); |
rebonatto | 0:fac116e94d44 | 37 | |
rebonatto | 0:fac116e94d44 | 38 | void InitializeEthernetLink() |
rebonatto | 0:fac116e94d44 | 39 | { |
rebonatto | 0:fac116e94d44 | 40 | if(Settings::get_Dhcp()) |
rebonatto | 0:fac116e94d44 | 41 | //EthernetIf::Initialize(); //Use DHCP |
rebonatto | 0:fac116e94d44 | 42 | eth.init(); //Use DHCP |
rebonatto | 0:fac116e94d44 | 43 | else |
rebonatto | 0:fac116e94d44 | 44 | //EthernetIf::Initialize(Settings::get_IpAddress(),Settings::get_Netmask(),Settings::get_Gateway()); |
rebonatto | 0:fac116e94d44 | 45 | eth.init(Settings::get_IpAddress(),Settings::get_Netmask(),Settings::get_Gateway()); |
rebonatto | 0:fac116e94d44 | 46 | |
rebonatto | 0:fac116e94d44 | 47 | //EthernetIf::Connect(); |
rebonatto | 0:fac116e94d44 | 48 | eth.connect(); |
rebonatto | 0:fac116e94d44 | 49 | //printf("IP Address is %s\n", EthernetIf::get_IpAddress()); |
rebonatto | 0:fac116e94d44 | 50 | printf("IP Address is NEW %s\n", eth.getIPAddress()); |
rebonatto | 0:fac116e94d44 | 51 | } |
rebonatto | 0:fac116e94d44 | 52 | |
rebonatto | 0:fac116e94d44 | 53 | int main() { |
rebonatto | 0:fac116e94d44 | 54 | float inicio, fim, maior, menor, dif; |
rebonatto | 0:fac116e94d44 | 55 | float inicioc, fimc, maiorc, menorc, difc; |
rebonatto | 0:fac116e94d44 | 56 | Timer t,tc; |
rebonatto | 0:fac116e94d44 | 57 | |
rebonatto | 0:fac116e94d44 | 58 | if ((LPC_WDT->WDMOD >> 2) & 1){ |
rebonatto | 0:fac116e94d44 | 59 | //myled4 = 1; |
rebonatto | 0:fac116e94d44 | 60 | PmedLog::WriteEntry(PMEDLOG_INITIALIZINGWDT); |
rebonatto | 0:fac116e94d44 | 61 | } |
rebonatto | 0:fac116e94d44 | 62 | else{ |
rebonatto | 0:fac116e94d44 | 63 | //myled3 = 1; |
rebonatto | 0:fac116e94d44 | 64 | PmedLog::WriteEntry(PMEDLOG_INITIALIZING); |
rebonatto | 0:fac116e94d44 | 65 | } |
rebonatto | 0:fac116e94d44 | 66 | |
rebonatto | 0:fac116e94d44 | 67 | printf("\r\n %s \r\n", MSGWINDOW); |
rebonatto | 0:fac116e94d44 | 68 | FILE *f; |
rebonatto | 0:fac116e94d44 | 69 | |
rebonatto | 0:fac116e94d44 | 70 | Settings::ReadFile(); |
rebonatto | 0:fac116e94d44 | 71 | |
rebonatto | 0:fac116e94d44 | 72 | InitializeEthernetLink(); |
rebonatto | 0:fac116e94d44 | 73 | printf("Inicializou link Ethernet\n"); |
rebonatto | 0:fac116e94d44 | 74 | |
rebonatto | 0:fac116e94d44 | 75 | //Start HTTP POST service |
rebonatto | 0:fac116e94d44 | 76 | Thread http_post(HttpPost::HttpPost_Thread); |
rebonatto | 0:fac116e94d44 | 77 | |
rebonatto | 0:fac116e94d44 | 78 | //Start Telnet Service |
rebonatto | 0:fac116e94d44 | 79 | //Thread telnetserver(TelnetServer::TelnetServer_Thread); |
rebonatto | 0:fac116e94d44 | 80 | |
rebonatto | 0:fac116e94d44 | 81 | //Start TFTP Service |
rebonatto | 0:fac116e94d44 | 82 | //Thread tftpsrv(tftpsrv::tftpsrv_Thread); |
rebonatto | 0:fac116e94d44 | 83 | |
rebonatto | 0:fac116e94d44 | 84 | //Start NTP Client for refresh time |
rebonatto | 0:fac116e94d44 | 85 | //Thread ntpc(ntpc::ntpc_Thread); |
rebonatto | 0:fac116e94d44 | 86 | time_t tempo = time(NULL); |
rebonatto | 0:fac116e94d44 | 87 | if ((tempo+60) < 1420077600) set_time(1420077600); |
rebonatto | 0:fac116e94d44 | 88 | |
rebonatto | 0:fac116e94d44 | 89 | // ntpClient.setTime("192.168.103.101"); |
rebonatto | 0:fac116e94d44 | 90 | |
rebonatto | 0:fac116e94d44 | 91 | DisplayRAMBanks(); |
rebonatto | 0:fac116e94d44 | 92 | |
rebonatto | 0:fac116e94d44 | 93 | printf(PMEDLOG_INITIALIZINGWDT); |
rebonatto | 0:fac116e94d44 | 94 | printf("\n\n"); |
rebonatto | 0:fac116e94d44 | 95 | |
rebonatto | 0:fac116e94d44 | 96 | PmedLog::WriteEntry(PMEDLOG_STARTED); |
rebonatto | 0:fac116e94d44 | 97 | |
rebonatto | 0:fac116e94d44 | 98 | /* start test WahtchDog */ |
rebonatto | 0:fac116e94d44 | 99 | DigitalOut led1(LED1); |
rebonatto | 0:fac116e94d44 | 100 | int i, n = 0; |
rebonatto | 0:fac116e94d44 | 101 | //int tatual, tnovo; |
rebonatto | 0:fac116e94d44 | 102 | float rms[NUMBER_OF_CHANNELS], mv2[NUMBER_OF_CHANNELS]; |
rebonatto | 0:fac116e94d44 | 103 | int under[NUMBER_OF_CHANNELS], over[NUMBER_OF_CHANNELS]; |
rebonatto | 0:fac116e94d44 | 104 | |
rebonatto | 0:fac116e94d44 | 105 | wdt.kick(10.0); |
rebonatto | 0:fac116e94d44 | 106 | |
rebonatto | 0:fac116e94d44 | 107 | //Capture::Initialize(); |
rebonatto | 0:fac116e94d44 | 108 | |
rebonatto | 0:fac116e94d44 | 109 | while(1) |
rebonatto | 0:fac116e94d44 | 110 | { |
rebonatto | 0:fac116e94d44 | 111 | tranca.wait(); |
rebonatto | 0:fac116e94d44 | 112 | t.start(); |
rebonatto | 0:fac116e94d44 | 113 | inicio = t.read(); |
rebonatto | 0:fac116e94d44 | 114 | |
rebonatto | 0:fac116e94d44 | 115 | //get sample values from 6 channels |
rebonatto | 0:fac116e94d44 | 116 | Capture::AcquireValues(); |
rebonatto | 0:fac116e94d44 | 117 | |
rebonatto | 0:fac116e94d44 | 118 | fim = t.read(); |
rebonatto | 0:fac116e94d44 | 119 | dif = fim-inicio; |
rebonatto | 0:fac116e94d44 | 120 | |
rebonatto | 0:fac116e94d44 | 121 | if (n == 0) |
rebonatto | 0:fac116e94d44 | 122 | maior = menor = dif; |
rebonatto | 0:fac116e94d44 | 123 | |
rebonatto | 0:fac116e94d44 | 124 | if (dif > maior) |
rebonatto | 0:fac116e94d44 | 125 | maior = dif; |
rebonatto | 0:fac116e94d44 | 126 | if (dif < menor) |
rebonatto | 0:fac116e94d44 | 127 | menor = dif; |
rebonatto | 0:fac116e94d44 | 128 | t.reset(); |
rebonatto | 0:fac116e94d44 | 129 | t.stop(); |
rebonatto | 0:fac116e94d44 | 130 | tranca.release(); |
rebonatto | 0:fac116e94d44 | 131 | |
rebonatto | 0:fac116e94d44 | 132 | tranca.wait(); |
rebonatto | 0:fac116e94d44 | 133 | tc.start(); |
rebonatto | 0:fac116e94d44 | 134 | inicioc = tc.read(); |
rebonatto | 0:fac116e94d44 | 135 | // Calcula o RMS dos 6 canais |
rebonatto | 0:fac116e94d44 | 136 | SignalProcessor::CalculateRMSBulk(rms, mv2, under, over); |
rebonatto | 0:fac116e94d44 | 137 | fimc = tc.read(); |
rebonatto | 0:fac116e94d44 | 138 | difc = fimc-inicioc; |
rebonatto | 0:fac116e94d44 | 139 | |
rebonatto | 0:fac116e94d44 | 140 | if (n == 0) |
rebonatto | 0:fac116e94d44 | 141 | maiorc = menorc = difc; |
rebonatto | 0:fac116e94d44 | 142 | |
rebonatto | 0:fac116e94d44 | 143 | if (difc > maiorc) |
rebonatto | 0:fac116e94d44 | 144 | maiorc = difc; |
rebonatto | 0:fac116e94d44 | 145 | if (difc < menorc) |
rebonatto | 0:fac116e94d44 | 146 | menorc = difc; |
rebonatto | 0:fac116e94d44 | 147 | |
rebonatto | 0:fac116e94d44 | 148 | for(i=0;i<6;i++){ |
rebonatto | 0:fac116e94d44 | 149 | EventDetector::get_Detector(i).ProcessEvent(rms[i], mv2[i], under[i], over[i]); |
rebonatto | 0:fac116e94d44 | 150 | } |
rebonatto | 0:fac116e94d44 | 151 | |
rebonatto | 0:fac116e94d44 | 152 | n++; |
rebonatto | 0:fac116e94d44 | 153 | if(n % 60 == 0) |
rebonatto | 0:fac116e94d44 | 154 | { |
rebonatto | 0:fac116e94d44 | 155 | printf("%.2f %.0f %.2f %.0f\t%.2f %.0f %.2f %.0f\t%.2f %.0f %.2f %.0f\n",rms[0], mv2[0],rms[1],mv2[1],rms[2],mv2[2],rms[3],mv2[3],rms[4],mv2[4],rms[5],mv2[5]); |
rebonatto | 0:fac116e94d44 | 156 | led1 = !led1; |
rebonatto | 0:fac116e94d44 | 157 | // n=0; |
rebonatto | 0:fac116e94d44 | 158 | |
rebonatto | 0:fac116e94d44 | 159 | PmedLog::Mark(); |
rebonatto | 0:fac116e94d44 | 160 | } |
rebonatto | 0:fac116e94d44 | 161 | |
rebonatto | 0:fac116e94d44 | 162 | if (n % 600 == 0){ |
rebonatto | 0:fac116e94d44 | 163 | printf("Captura: Maior %f Menor %f\tCalculo Maior %f Menor %f\n", maior, menor, maiorc, menorc); |
rebonatto | 0:fac116e94d44 | 164 | } |
rebonatto | 0:fac116e94d44 | 165 | |
rebonatto | 0:fac116e94d44 | 166 | // End of main loop so "kick" to reset watchdog timer and avoid a reset |
rebonatto | 0:fac116e94d44 | 167 | wdt.kick(); |
rebonatto | 0:fac116e94d44 | 168 | tc.reset(); |
rebonatto | 0:fac116e94d44 | 169 | tc.stop(); |
rebonatto | 0:fac116e94d44 | 170 | tranca.release(); |
rebonatto | 0:fac116e94d44 | 171 | } |
rebonatto | 0:fac116e94d44 | 172 | |
rebonatto | 0:fac116e94d44 | 173 | while(1){//never reaches here |
rebonatto | 0:fac116e94d44 | 174 | PmedLog::WriteEntry(PMEDLOG_WRONGCODE); |
rebonatto | 0:fac116e94d44 | 175 | printf("Reset\n"); |
rebonatto | 0:fac116e94d44 | 176 | f = fopen(FILENAMERESET, "a"); |
rebonatto | 0:fac116e94d44 | 177 | if (f == NULL) |
rebonatto | 0:fac116e94d44 | 178 | f = fopen(FILENAMERESET, "w"); |
rebonatto | 0:fac116e94d44 | 179 | fprintf(f, "Laco Errado\n"); |
rebonatto | 0:fac116e94d44 | 180 | fclose(f); |
rebonatto | 0:fac116e94d44 | 181 | Thread::yield(); |
rebonatto | 0:fac116e94d44 | 182 | } |
rebonatto | 0:fac116e94d44 | 183 | } |
rebonatto | 0:fac116e94d44 | 184 |