Dependencies: mbed
Diff: main.cpp
- Revision:
- 0:a08977d798ae
- Child:
- 1:649db63e7a69
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Fri Nov 08 11:41:41 2019 +0000 @@ -0,0 +1,102 @@ +#include "mbed.h" +#define bufferLength 500 +#define constante 5.035400390625e-5 +//struct eResultados { +// float Vrms; +// float Vmax; +// float Vmin; +//}; + +AnalogIn adc_in(A0); +AnalogOut dac_out(A2); +Ticker tMuestrea; +//Ticker tVisualiza; + +void visualiza(); +void procesarDatos(uint16_t *entrada, uint16_t *salida, int longitud); + +int flag=0; +int contador=0; + +struct buffers { + uint16_t A[bufferLength]; + uint16_t B[bufferLength]; +}; + +bool bufferActivo=0; +void muestrea(); + +buffers bufferEntrada; +buffers bufferSalida; + +//eResultados resultados; + +int main() +{ + + tMuestrea.attach_us(&muestrea, 100); +// tVisualiza.attach(&visualiza, 5); + + while(1) { + if (flag) { + flag=0; + if(bufferActivo) { + procesarDatos(bufferSalida.B, bufferEntrada.A,bufferLength); + } else { + procesarDatos(bufferSalida.A,bufferEntrada.B,bufferLength); + } + + wait_us(1); + + } + } +} +void muestrea() +{ + uint16_t dato=adc_in.read_u16(); + if (bufferActivo) { + bufferEntrada.A[contador]=dato; + dato=bufferSalida.B[contador]; + } else { + bufferEntrada.B[contador]=dato; + dato=bufferSalida.A[contador]; + } + dac_out.write_u16(dato); + contador++; + if (contador==bufferLength) { + bufferActivo=!bufferActivo; + contador=0; + flag=1; + } +} + + +void procesarDatos(uint16_t *salida, uint16_t *entrada, int longitud) +{ +// 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; +// } + + } +// resultados.Vrms= constante*sqrt(((float)sumatorio)/longitud); +// resultados.Vmax=max*constante; +// resultados.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); + +//}