4 Replies Latest reply on Apr 18, 2017 12:29 PM by Mariisol

    Segmentation fault

    Mariisol

      Buen día,

       

      Estoy trabajando con una Intel Edison con la cual intento leer el puerto analógico A0 con el siguiente código:

       

      #include<mraa.h>
      #include<iostream>
      
      using namespace std;
      
      mraa_aio_context port0;
      floar Vin = 4.76;
      float Read(int Samples);
      
      int main()
      {
       port0 = mraa_aio_init(0);
       cout<<"Voltaje     Temperatura"<<endl;
       while(true)
       {
        float VoltageAverage = Read(500);
        float Temperature = VoltageAverage*100;
        cout<<"---------------------------"<<endl;
        cout<<VoltageAverage<<"   "<<Temperature<<endl;
        sleep(1);
       }
      
       mraa_aio_close(port0);
       return MRAA_SUCCESS;
      }
      
      float Read (int Samples)
      {
       float Voltage, Average;
       for (int i=0; i<Samples; i++)
       {
        Voltage = mraa_aio_read(port0) * (Vin/1024.0);
        Average = Average + Voltage;
       }
      
       Average = Average/Samples;
       return (Average);
      }
      

       

      Básicamente, mediante la función "Read" hace un muestreo del voltaje leído en el puerto 0, al llamar esta función dentro de la función "main", lo convierte a temperatura. En un principio si funcionaba, ahora solo logro que compile, pero al correrlo me aparece "Segmentation fault". Como se puede observar en la imagen siguiente, el programa corre hasta llegar al punto donde se llama a la función encargada de leer el puerto.

      Captura.PNG

       

      Leí un poco acerca de este problema, y al parecer es algo relacionado con los permisos para entrar a la memoria, sin embargo no se como solucionarlo. Si alguien conoce del tema, o ha tenido un problema similar, sería de mucha ayuda si pudiera orientarme.

       

      Muchas gracias de antemano,

      -Marisol Carmona

        • 1. Re: Segmentation fault
          SpiderKenny

          Ha comprobado el valor de retorno de "mraa_aio_init"?

          • 2. Re: Segmentation fault
            Intel Corporation
            This message was posted on behalf of Intel Corporation

            Hi Marisol,
             
            Thanks for contacting us!
             
            I appreciate all the information provided. I was able to compile and run your code (only change this line from floar Vin = 4.76; to float Vin = 4.76;) and I have not gotten the error “Segmentation fault”. I would like to know which mraa version you are using, you can get it running this command: mraa-gpio version, also you can check the return value as SpiderKenny has mentioned.
             
            Regards,
            -Yermi A.
             

            • 3. Re: Segmentation fault
              Intel Corporation
              This message was posted on behalf of Intel Corporation

              Hi Marisol,
               
              I would like to know if you have any updates in this case, and also if you can provide the information requested.
               
              Regards,
              -Yermi A.
               

              • 4. Re: Segmentation fault
                Mariisol

                Buen día,

                 

                Me disculpo por la demora y agradezco su pronta respuesta. Les comento que al siguiente día de haber tenido la falla en cuestión, realicé las conexiones para tratar de solucionarlo y para mi sorpresa ya funcionaba. No sé a qué se deberá, pero si en algún momento llego a tener el mismo error, sin duda seguiré sus consejos. Muchas gracias a ambos!

                 

                Saludos cordiales,

                -Marisol Carmona