Primeira versao
Dependencies: mbed EthernetInterface mbed-rtos
main.cpp
- Committer:
- rebonatto
- Date:
- 2015-03-05
- Revision:
- 1:6c73db131ebc
- Parent:
- 0:6218d050b1b9
File content as of revision 1:6c73db131ebc:
#include <mbed.h> #include <EthernetInterface.h> #include "Definitions.h" #include "calculos.c" EthernetInterface eth; TCPSocketConnection socket; LocalFileSystem local("local"); AnalogIn captura(p20); DigitalOut myled(LED1); void IniciaEthernet(void); int gravaAmostras(float *vet, int amostras); int gravaDFT(float *seno, float *coss, int amostras); int sendMessage(float *vet, int amostras); int main() { float vet[AMOSTRAS]; //float controle[AMOSTRAS]; //float seno[AMOSTRAS]; //float coss[AMOSTRAS]; float vm; int i, flag =0; Timer t; unsigned short int valor, maior=0, menor=0; float espera,rms; float media = 0; IniciaEthernet(); printf("CONVERSAOAD %1.10f\n", CONVERSAOAD); printf("PORTA p16 Diferencial 1\n"); printf("Ciclos (HZ) %d\n", CICLO); printf("Amostras %d\n", AMOSTRAS); printf("Intervalo %1.10f\n", INTERVALO); for(int j =0; j < 5000; j++){ t.start(); for(i=0; i < AMOSTRAS; i++){ //controle[i] = t.read(); valor = captura.read_u16(); vet[i] = (float) valor;//(float) (valor - 33575) / 10830; //acquire the value and convert the analog to digital if(i == 0) maior = menor = vet[i]; if (valor > vet[i]) maior = vet[i]; if (valor < vet[i]) menor = vet[i]; media += vet[i]; espera = (INTERVALO * (i+1)) - t.read(); wait(espera); } rms = RMS(vet, AMOSTRAS); printf("Acabou captura. Tempo %1.10f RMS %1.19f\n", t.read(), rms ); for(i=0; i < AMOSTRAS; i++) printf("%.0f*", vet[i]); printf("\n"); //printf("Tempo de Captura %1.10f\n", t.read()); /* media=0; for(i=0; i < AMOSTRAS; i++){ if(i == 0) maior = menor = valor; if (vet[i] > maior) maior = (unsigned short int) vet[i]; if (vet[i] < menor) menor = (unsigned short int) vet[i]; media += vet[i]; } */ //t.reset(); //vm = DFT(vet, seno, coss); //CalculateFFT(vet, seno, coss, &vm, 1, 0); //gravaDFT(seno, coss, AMOSTRAS); //printf("Calculou DFT em %fs\n", t.read()); /* media /= AMOSTRAS; printf("[%d] Calculado RMS %1.10f VM %1.10f\n", j, rms, media); if (rms > LIMITE){ flag++; /* if (flag > 1){ sendMessage(vet, AMOSTRAS); printf("Calculado RMS Enviado %f\n", rms); break; } } */ //printf("[%d] RMS %1.8f Menor %d Maior %d Media %1.8f VM %1.8f\n", j, RMS(vet, AMOSTRAS), menor, maior, vm, (float) media/AMOSTRAS); //wait(5); /* for(i=0; i < AMOSTRAS; i++){ printf("[%d] Valor %f\tTempo %1.10f\n", i, vet[i], controle[i]); } float maior =-10; float media = 0; for(i=2; i < AMOSTRAS; i++){ espera = (controle[i] - controle[i-1] - INTERVALO); media += espera; if (espera > 0.000001){ //printf("[%d] Diferenca %f\n", i, espera); if (espera > maior) maior = espera; } } printf("[%d] MAior difrenca %1.10f Media %1.10f\n", j, maior, (float) media/AMOSTRAS); */ } printf("FINAL"); while(1) { myled = 1; wait(0.2); myled = 0; wait(0.2); } } void IniciaEthernet(void){ eth.init("192.168.103.2","255.255.255.0","192.168.0.1"); //EthernetIf::Connect(); eth.connect(); //printf("IP Address is %s\n", EthernetIf::get_IpAddress()); printf("IP Address is %s\n", eth.getIPAddress()); } int sendMessage(float *vet, int amostras){ int i, ret; float num; char *msg; char aux[9]; TCPSocketConnection sock; sock.connect("192.168.103.1", 12345); //printf("Nova Malloc4\n"); msg = (char *)malloc((amostras/2*9*sizeof(char)) + 1); if (msg == NULL){ printf("Sem memoria\n"); } msg[0] = '\0'; printf("\n\n\nprimeira parte\n"); for(i=0; i<amostras/2; i++){ num = vet[i]; sprintf(aux, "%08X;", *(unsigned int*)&num ) ; if (i == 0 || i == 100 || i == 500 || i == 1023) printf("%d\t%s\n", i, aux); strcat(msg, aux); } ret = sock.send(msg, strlen(msg)) ; if (ret != -1){ msg[0] = '\0'; printf("\n\n\nsegunda parte\n"); for(i=amostras/2; i<amostras; i++){ num = vet[i]; sprintf(aux, "%08X;", *(unsigned int*)&num ) ; if (i == 1024 || i == 1124 || i == 1524 || i == 2047) printf("%d\t%s\n", i, aux); strcat(msg, aux); } ret = sock.send(msg, strlen(msg)) ; //printf("[%s]\n", msg); //sock.close(); } if (ret != -1) return (1); return (0); } int gravaDFT(float *seno, float *coss, int amostras){ int i; FILE *f = fopen("/local/resultados.txt","w"); if(f == NULL) { printf("Error creating file resultados.txt\r\n"); return 0; } fprintf(f, "Arquivo de Resultados\n"); for(i=0; i < amostras; i++){ fprintf(f,"%1.4f\t%1.4f\n", seno[i], coss[i]); } fprintf(f,"\r\n"); fclose(f); return (1); } int gravaAmostras(float *vet, int amostras){ int i; FILE *f = fopen("/local/amostras.txt","w"); if(f == NULL) { printf("Error creating file amostras.txt\r\n"); return 0; } fprintf(f, "Arquivo de Amostras\n"); for(i=0; i < amostras; i++){ fprintf(f,"%1.4f\n", vet[i]); printf("%1.4f*", vet[i]); } fprintf(f,"\r\n"); fclose(f); return (1); }