Me paso Jesus

Dependencies:   mbed

main.cpp

Committer:
javicas95
Date:
2019-11-08
Revision:
3:b66649792025
Parent:
2:de5c54621d59

File content as of revision 3:b66649792025:

#include "mbed.h"
#define bufferLeng 500
#define constante 5.035400390625e-5
struct eResult {
    float Vrms;
    float Vmax;
    float Vmin;
};

AnalogIn    adc_in(A0);
AnalogOut   dac_out(A2);
Ticker tMuestr;
  Ticker tVis;

void vis();
void procDat(uint16_t *ent, uint16_t *sal, int longi);

int flag=0;
int contador=0;

struct buffers {
    uint16_t A[bufferLeng];
    uint16_t B[bufferLeng];
};

bool bufferAct=0;
void muestr();

buffers bufferEnt;
buffers bufferSal;

eResult result;

int main()
{

    tMuestr.attach_us(&muestr, 100);
      tVis.attach(&vis, 5);

    while(1) {
        if (flag) {
            flag=0;
            if(bufferAct) {
                procDat(bufferSal.B, bufferEnt.A,bufferLeng);
            } else {
                procDat(bufferSal.A,bufferEnt.B,bufferLeng);
            }

            wait_us(1);

        }
    }
}
void muestr()
{
    uint16_t dato=adc_in.read_u16();
    if (bufferAct) {
        bufferEnt.A[contador]=dato;
        dato=bufferSal.B[contador];
    } else {
        bufferEnt.B[contador]=dato;
        dato=bufferSal.A[contador];
    }
    dac_out.write_u16(dato);
    contador++;
    if (contador==bufferLeng) {
        bufferAct=!bufferAct;
        contador=0;
        flag=1;
    }
}


void procDat(uint16_t *sal, uint16_t *ent, int longi)
{
      uint16_t max=0;
      uint16_t min=65535;
    uint16_t dato;
      uint64_t sumatorio=0;
    for(int i=0; i<longi; i++) {
        dato=ent[i];
          sumatorio= sumatorio + (dato*dato);
        sal[i]=dato;
          if(dato>max) {
              max=dato;
          }
          if(dato<min) {
              min=dato;
          }

    }
      result.Vrms= constante*sqrt(((float)sumatorio)/longi);
      result.Vmax=max*constante;
      result.Vmin=min*constante;
}
  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);

  }