Versão estável sem DMA e FFT. 128 amostras.

Dependencies:   EthernetInterface NTPClient mbed-rtos mbed

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?

UserRevisionLine numberNew 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