Me paso Jesus

Dependencies:   mbed

Committer:
javicas95
Date:
Fri Nov 08 12:34:34 2019 +0000
Revision:
3:b66649792025
Parent:
2:de5c54621d59
last

Who changed what in which revision?

UserRevisionLine numberNew contents of line
javicas95 0:a08977d798ae 1 #include "mbed.h"
javicas95 2:de5c54621d59 2 #define bufferLeng 500
javicas95 0:a08977d798ae 3 #define constante 5.035400390625e-5
javicas95 1:649db63e7a69 4 struct eResult {
javicas95 1:649db63e7a69 5 float Vrms;
javicas95 1:649db63e7a69 6 float Vmax;
javicas95 1:649db63e7a69 7 float Vmin;
javicas95 1:649db63e7a69 8 };
javicas95 0:a08977d798ae 9
javicas95 0:a08977d798ae 10 AnalogIn adc_in(A0);
javicas95 0:a08977d798ae 11 AnalogOut dac_out(A2);
javicas95 1:649db63e7a69 12 Ticker tMuestr;
javicas95 1:649db63e7a69 13 Ticker tVis;
javicas95 0:a08977d798ae 14
javicas95 1:649db63e7a69 15 void vis();
javicas95 1:649db63e7a69 16 void procDat(uint16_t *ent, uint16_t *sal, int longi);
javicas95 0:a08977d798ae 17
javicas95 0:a08977d798ae 18 int flag=0;
javicas95 0:a08977d798ae 19 int contador=0;
javicas95 0:a08977d798ae 20
javicas95 0:a08977d798ae 21 struct buffers {
javicas95 1:649db63e7a69 22 uint16_t A[bufferLeng];
javicas95 1:649db63e7a69 23 uint16_t B[bufferLeng];
javicas95 0:a08977d798ae 24 };
javicas95 0:a08977d798ae 25
javicas95 1:649db63e7a69 26 bool bufferAct=0;
javicas95 1:649db63e7a69 27 void muestr();
javicas95 0:a08977d798ae 28
javicas95 1:649db63e7a69 29 buffers bufferEnt;
javicas95 1:649db63e7a69 30 buffers bufferSal;
javicas95 0:a08977d798ae 31
javicas95 1:649db63e7a69 32 eResult result;
javicas95 0:a08977d798ae 33
javicas95 0:a08977d798ae 34 int main()
javicas95 0:a08977d798ae 35 {
javicas95 0:a08977d798ae 36
javicas95 1:649db63e7a69 37 tMuestr.attach_us(&muestr, 100);
javicas95 1:649db63e7a69 38 tVis.attach(&vis, 5);
javicas95 0:a08977d798ae 39
javicas95 0:a08977d798ae 40 while(1) {
javicas95 0:a08977d798ae 41 if (flag) {
javicas95 0:a08977d798ae 42 flag=0;
javicas95 1:649db63e7a69 43 if(bufferAct) {
javicas95 1:649db63e7a69 44 procDat(bufferSal.B, bufferEnt.A,bufferLeng);
javicas95 0:a08977d798ae 45 } else {
javicas95 1:649db63e7a69 46 procDat(bufferSal.A,bufferEnt.B,bufferLeng);
javicas95 0:a08977d798ae 47 }
javicas95 0:a08977d798ae 48
javicas95 0:a08977d798ae 49 wait_us(1);
javicas95 0:a08977d798ae 50
javicas95 0:a08977d798ae 51 }
javicas95 0:a08977d798ae 52 }
javicas95 0:a08977d798ae 53 }
javicas95 1:649db63e7a69 54 void muestr()
javicas95 0:a08977d798ae 55 {
javicas95 0:a08977d798ae 56 uint16_t dato=adc_in.read_u16();
javicas95 1:649db63e7a69 57 if (bufferAct) {
javicas95 1:649db63e7a69 58 bufferEnt.A[contador]=dato;
javicas95 1:649db63e7a69 59 dato=bufferSal.B[contador];
javicas95 0:a08977d798ae 60 } else {
javicas95 1:649db63e7a69 61 bufferEnt.B[contador]=dato;
javicas95 1:649db63e7a69 62 dato=bufferSal.A[contador];
javicas95 0:a08977d798ae 63 }
javicas95 0:a08977d798ae 64 dac_out.write_u16(dato);
javicas95 0:a08977d798ae 65 contador++;
javicas95 1:649db63e7a69 66 if (contador==bufferLeng) {
javicas95 1:649db63e7a69 67 bufferAct=!bufferAct;
javicas95 0:a08977d798ae 68 contador=0;
javicas95 0:a08977d798ae 69 flag=1;
javicas95 0:a08977d798ae 70 }
javicas95 0:a08977d798ae 71 }
javicas95 0:a08977d798ae 72
javicas95 0:a08977d798ae 73
javicas95 1:649db63e7a69 74 void procDat(uint16_t *sal, uint16_t *ent, int longi)
javicas95 0:a08977d798ae 75 {
javicas95 1:649db63e7a69 76 uint16_t max=0;
javicas95 1:649db63e7a69 77 uint16_t min=65535;
javicas95 0:a08977d798ae 78 uint16_t dato;
javicas95 1:649db63e7a69 79 uint64_t sumatorio=0;
javicas95 1:649db63e7a69 80 for(int i=0; i<longi; i++) {
javicas95 1:649db63e7a69 81 dato=ent[i];
javicas95 3:b66649792025 82 sumatorio= sumatorio + (dato*dato);
javicas95 1:649db63e7a69 83 sal[i]=dato;
javicas95 1:649db63e7a69 84 if(dato>max) {
javicas95 1:649db63e7a69 85 max=dato;
javicas95 1:649db63e7a69 86 }
javicas95 1:649db63e7a69 87 if(dato<min) {
javicas95 1:649db63e7a69 88 min=dato;
javicas95 1:649db63e7a69 89 }
javicas95 0:a08977d798ae 90
javicas95 0:a08977d798ae 91 }
javicas95 1:649db63e7a69 92 result.Vrms= constante*sqrt(((float)sumatorio)/longi);
javicas95 1:649db63e7a69 93 result.Vmax=max*constante;
javicas95 1:649db63e7a69 94 result.Vmin=min*constante;
javicas95 0:a08977d798ae 95 }
javicas95 1:649db63e7a69 96 void vis()
javicas95 1:649db63e7a69 97 {
javicas95 1:649db63e7a69 98 printf ("El valor maxima es %f\n",result.Vmax);
javicas95 1:649db63e7a69 99 printf ("El valor minimo es %f\n",result.Vmin);
javicas95 1:649db63e7a69 100 printf ("El valor RMS es %f\n\n",result.Vrms);
javicas95 0:a08977d798ae 101
javicas95 1:649db63e7a69 102 }