Dependencies: mbed
Diff: main.cpp
- Revision:
- 1:649db63e7a69
- Parent:
- 0:a08977d798ae
- Child:
- 2:de5c54621d59
--- a/main.cpp Fri Nov 08 11:41:41 2019 +0000 +++ b/main.cpp Fri Nov 08 12:00:30 2019 +0000 @@ -1,49 +1,49 @@ #include "mbed.h" #define bufferLength 500 #define constante 5.035400390625e-5 -//struct eResultados { -// float Vrms; -// float Vmax; -// float Vmin; -//}; +struct eResult { + float Vrms; + float Vmax; + float Vmin; +}; AnalogIn adc_in(A0); AnalogOut dac_out(A2); -Ticker tMuestrea; -//Ticker tVisualiza; +Ticker tMuestr; + Ticker tVis; -void visualiza(); -void procesarDatos(uint16_t *entrada, uint16_t *salida, int longitud); +void vis(); +void procDat(uint16_t *ent, uint16_t *sal, int longi); int flag=0; int contador=0; struct buffers { - uint16_t A[bufferLength]; - uint16_t B[bufferLength]; + uint16_t A[bufferLeng]; + uint16_t B[bufferLeng]; }; -bool bufferActivo=0; -void muestrea(); +bool bufferAct=0; +void muestr(); -buffers bufferEntrada; -buffers bufferSalida; +buffers bufferEnt; +buffers bufferSal; -//eResultados resultados; +eResult result; int main() { - tMuestrea.attach_us(&muestrea, 100); -// tVisualiza.attach(&visualiza, 5); + tMuestr.attach_us(&muestr, 100); + tVis.attach(&vis, 5); while(1) { if (flag) { flag=0; - if(bufferActivo) { - procesarDatos(bufferSalida.B, bufferEntrada.A,bufferLength); + if(bufferAct) { + procDat(bufferSal.B, bufferEnt.A,bufferLeng); } else { - procesarDatos(bufferSalida.A,bufferEntrada.B,bufferLength); + procDat(bufferSal.A,bufferEnt.B,bufferLeng); } wait_us(1); @@ -51,52 +51,52 @@ } } } -void muestrea() +void muestr() { uint16_t dato=adc_in.read_u16(); - if (bufferActivo) { - bufferEntrada.A[contador]=dato; - dato=bufferSalida.B[contador]; + if (bufferAct) { + bufferEnt.A[contador]=dato; + dato=bufferSal.B[contador]; } else { - bufferEntrada.B[contador]=dato; - dato=bufferSalida.A[contador]; + bufferEnt.B[contador]=dato; + dato=bufferSal.A[contador]; } dac_out.write_u16(dato); contador++; - if (contador==bufferLength) { - bufferActivo=!bufferActivo; + if (contador==bufferLeng) { + bufferAct=!bufferAct; contador=0; flag=1; } } -void procesarDatos(uint16_t *salida, uint16_t *entrada, int longitud) +void procDat(uint16_t *sal, uint16_t *ent, int longi) { -// uint16_t max=0; -// uint16_t min=65535; + uint16_t max=0; + uint16_t min=65535; uint16_t dato; -// uint64_t sumatorio=0; - for(int i=0; i<longitud; i++) { - dato=entrada[i]; -// sumatorio+= dato*dato; - salida[i]=dato; -// if(dato>max) { -// max=dato; -// } -// if(dato<min) { -// min=dato; -// } + uint64_t sumatorio=0; + for(int i=0; i<longi; i++) { + dato=ent[i]; + sumatorio+= dato*dato; + sal[i]=dato; + if(dato>max) { + max=dato; + } + if(dato<min) { + min=dato; + } } -// resultados.Vrms= constante*sqrt(((float)sumatorio)/longitud); -// resultados.Vmax=max*constante; -// resultados.Vmin=min*constante; + result.Vrms= constante*sqrt(((float)sumatorio)/longi); + result.Vmax=max*constante; + result.Vmin=min*constante; } -//void visualiza() -//{ -// printf ("El valor maxima es %f\n",resultados.Vmax); -// printf ("El valor minimo es %f\n",resultados.Vmin); -// printf ("El valor RMS es %f\n\n",resultados.Vrms); + void vis() + { + printf ("El valor maxima es %f\n",result.Vmax); + printf ("El valor minimo es %f\n",result.Vmin); + printf ("El valor RMS es %f\n\n",result.Vrms); -//} + }