TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: fronz_99 en 17 de Octubre de 2016, 23:14:34

Título: Error de lectura de datos GPS
Publicado por: fronz_99 en 17 de Octubre de 2016, 23:14:34
Hola, les quería comentar mi problema.
Estoy tratando de leer los datos de un GPS Ublox neo-6m con un PIC16F877A usando las funciones UART de mikroC, el problema es que cuando intento leer los datos con ese código  cuando quiero mostrar lo de la variable gpsdata, no me muestra nada, cual puede ser el problema?

Probé solo leyendo, sin ninguna condición y lo que me muestra e la primera letra G y luego la P repetida, ejemplo: GPPPPP, y asi con cualquier cosa, el primer caracter solo y luego el segundo repetido varias veces.

void main()
{
UART1_Init(9600);
TRISB=0x00;
Lcd_Init();
delay_ms(100);

      while(1){
             if(UART1_Data_Ready())
    {
    a1 = UART1_Read();
    if(a1 == '$')
      {a2 = UART1_Read();
       if(a2 == 'G')
         {a3 = UART1_Read();
          if(a3 == 'P')
            {a4 = UART1_Read();
             if(a4 == 'G')
               {a5 = UART1_Read();
                if(a5 == 'G')
                   {a6 = UART1_Read();
                    if(a6 == 'A')
                       {for(x=0;x<10;x++)
                        {
                                    gpsdata[ x ]=UART1_Read();
                         }
                       }
                     }
                   }
               }
            }
         }
      }
Lcd_Out(1,1,gpsdata);
    }
}
Título: Re:Error de lectura de datos GPS
Publicado por: KILLERJC en 17 de Octubre de 2016, 23:31:03
Viendo lo que queres hacer... Por que no mejor algo asi ?

Código: C
  1. #include <string.h>
  2.  
  3. char Texto[50];
  4.  
  5. void main(void)
  6. {
  7.  
  8.         //Aca setup modulos
  9.  
  10.  
  11.         while(1)
  12.         {
  13.                 UARTx_Read_Text(Texto,'\n', 48);
  14.                 if(strncmp("$GPGGA",Texto,6))
  15.                 {
  16.                         Lcd_Out(1,1,&Texto[7]);
  17.                 }
  18.         }
  19. }

Tengo dudas en su usar '\n' o '\r' o ambos, ya que no se como termina. Pero por ahi podrias llegar a usar '$', entonces comparas 1 menos luego
Título: Re:Error de lectura de datos GPS
Publicado por: fronz_99 en 18 de Octubre de 2016, 00:28:36
en teoria tendria que funcionar eso que me pasaste pero no, no me mostraba nada, le cambie el if para que me muestre "BIEN" y tampoco lo muestra.