Autor Tema: Captura trama MNEA por puerto serie erronea (SOLUCIONADO)  (Leído 3263 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado perezriveracarlos

  • PIC10
  • *
  • Mensajes: 15
Captura trama MNEA por puerto serie erronea (SOLUCIONADO)
« en: 16 de Febrero de 2011, 15:44:05 »
Buenas.

Pues estoy haciedo capturas de la trama MNEA de un IC GPS, en este caso el IT500 de Fastrax y tengo un problema que no entiendo.

Antes de nada decir que uso CCS y el 18f4550.

Hago capturas por el puerto serie y me da lecturas que no son las correctas, he llegado a intentarlo de la manera mas básica que es solo leyendo ese puerto y enviandolo por otro hacia el PC.

Lo curioso es que si leo el GPS con el PC directamente los datos son correctos, pero cuando lo hago por el micro (intento hacer un eco) no me da lo mismo.

El protocolo de comunicacion está bien, está igual que el datasheet del GPS

Necesito que sean estos pines, ya que la placa es mas grande y tiene mas cosas y solo me quedan estos pines.

os pongo el codigo que uso por si le quereis echar un vistazo.

Código: [Seleccionar]
#include <18f4550.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
#use delay(clock=20000000)
#use standard_io(b)

#use RS232(BAUD=9600,XMIT=PIN_D6,RCV=PIN_D7,PARITY=N,BITS=8,STREAM=SERIE)
#use RS232(BAUD=9600,XMIT=PIN_C1,RCV=PIN_C2,PARITY=N,BITS=8,STOP=1,STREAM=GPS_PORT)

void main()
{
while (true)
{
      

   fputc ((fgetc(GPS_PORT)),SERIE);

}
 
}


Estos son los datos correctos leidos desde el PC (capturados con Serial Port Monitor 4.0)

Código: [Seleccionar]
24 47 50 47 47 41 2c 30 30 30 30 35 33 2e 30 33     $GPGGA,000053.03
36 2c 2c 2c 2c 2c 30 2c 30 2c 2c 2c 4d 2c 2c 4d     6,,,,,0,0,,,M,,M
2c 2c 2a 34 42 0d 0a 24 47 50 47 53 41 2c 41 2c   ,, *4B..$GPGSA,A,
31 2c 2c 2c 2c 2c 2c 2c 2c 2c 2c 2c 2c 2c 2c 2c      1,,,,,,,,,,,,,,,
2a 31 45 0d 0a 24 47 50 47 53 56 2c 31 2c 31 2c     *1E..$GPGSV,1,1,
30 30 2a 37 39 0d 0a 24 47 50 52 4d 43 2c 30 30   00*79..$GPRMC,00
30 30 35 33 2e 30 33 36 2c 56 2c 2c 2c 2c 2c 30   0053.036,V,,,,,0
2e 30 30 2c 30 2e 30 30 2c 30 36 30 31 38 30 2c   .00,0.00,060180,
2c 2c 4e 2a 34 31 0d 0a                         ,,N*41..

Y estos los que me lee haciendo un eco

Código: [Seleccionar]

47 52 43 30 30 31 2e 33 2c 2c 2c 2c 2e 30 30 30   GRC001.3,,,,.000
2c 36 31 30 2c 4e 34 0d 24 50 47 2c 30 30 33 30     ,610,N4.$PG,0030
36 2c 2c 30 30 2c 4d 2c 2c 2a 46 0a 47 47 41 41   6,,00,M,,*F.GGAA
31 2c 2c 2c 2c 2c 2c 2c 2a 45 0a 47 47 56 31 31   1,,,,,,,*E.GGV11
30 2a 39 0a 47 52 43 30 30 31 2e 33 2c 2c 2c 2c   0*9.GRC001.3,,,,
2e 30 30 30 2c 36 31 30 2c 4e 34 0d 24 50 47 2c   .000,610,N4.$PG,
30 30 34 30 36 2c 2c 30 30 2c 4d 2c 2c 2a 38 0a   00406,,00,M,,*8.
47 47 41 41 31 2c 2c 2c 2c 2c 2c 2c 2a 45 0a 47   GGAA1,,,,,,,*E.G
47 56 31 31 30 2a 39 0a 47 52 43 30 30 31 2e 33 GV110*9.GRC001.3
2c 2c 2c 2c 2e 30 30 30 2c 36 31 30 2c 4e 34 0d   ,,,,.000,610,N4.
24 50 47 2c 30 30 35 30 36 2c 2c 30 30 2c 4d 2c   $PG,00506,,00,M,
2c 2a 39 0a 47 47 41 41 31 2c 2c 2c 2c 2c 2c 2c   ,*9.GGAA1,,,,,,,
2a 45 0a 47 47 56 31 31 30 2a 39 0a 47 52 43 30 *E.GGV110*9.GRC0
30 31 2e 33 2c 2c 2c 2c 2e 30 30 30 2c 36 31 30   01.3,,,,.000,610
2c 4e 34 0d 24 50 47 2c 30 30 36 30 36 2c 2c 30   ,N4.$PG,00606,,0
30 2c 4d 2c 2c 2a 41 0a 47 47 41 41 31 2c 2c 2c   0,M,,*A.GGAA1,,,
2c 2c 2c 2c 2a 45 0a 47 47 56 31 31 30 2a 39 0a       ,,,,*E.GGV110*9.
47 52 43 30 30 31 2e 33 2c 2c 2c 2c 2e 30 30 30   GRC001.3,,,,.000
2c 36 31 30 2c 4e 34 0d 24 50 47 2c 30 30 37 30   ,610,N4.$PG,0070
36 2c 2c 30 30 2c 4d 2c 2c 2a 42 0a 47 47 41 41   6,,00,M,,*B.GGAA
31 2c 2c 2c 2c 2c 2c 2c 2a 45 0a 47 47 56 31 31   1,,,,,,,*E.GGV11
30 2a 39 0a 47 52 43 30 30 31 2e 33 2c 2c 2c 2c   0*9.GRC001.3,,,,
2e 30 30 30 2c 36 31 30 2c 4e 34 0d                     .000,610,N4.


Gracias antes de nada por la ayuda.



« Última modificación: 18 de Febrero de 2011, 05:18:34 por perezriveracarlos »

Desconectado QIQE

  • PIC18
  • ****
  • Mensajes: 335
Re: Captura trama MNEA por puerto serie erronea
« Respuesta #1 en: 16 de Febrero de 2011, 16:01:52 »
Puede ser que al emular el puerto serie, pierdas datos, ya que no te crea una interrupcion por recepción de nuevo caracter, intenta poner el gps en el puerto serie de verdad.
Muchas gracias por vuestro tiempo.

Saludos desde valencia!!!

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Captura trama MNEA por puerto serie erronea
« Respuesta #2 en: 16 de Febrero de 2011, 16:05:48 »
Hola, no uso CCS, pero me parece que el problema es tratar de recibir y enviar al mismo tiempo. No se si las funciones fputc trabajan con colas de transmición e interrupciones. Yo lo que haría seria recibir toda una trama ( en NMEA las tramas terminan con un carácter "\n" ) y recién ahí transmitirlas. Obvio que todo trabjando con interrupciones.

Saludos !

Desconectado perezriveracarlos

  • PIC10
  • *
  • Mensajes: 15
Re: Captura trama MNEA por puerto serie erronea
« Respuesta #3 en: 16 de Febrero de 2011, 16:48:21 »
mmmmmmm......

El problema es que necesito el pueto serie de verdad para otro hardware que es el principal de la aplicacion..

Entiendo que no se pueden hacer interrupciones con 2 kbhit a la vez, verdad?? Bueno lo he probado y no tengo solucion.

Lo curioso es que en la aplicacion real tengo 3 puertos serie con este, 1 de verdad, y 2 emulados, y solo me da problemas el tercero.

Mañana probaré de hacer un array de char y una vez los tenga almacenados enviarlos.

Ya os pondré los resultados

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Captura trama MNEA por puerto serie erronea
« Respuesta #4 en: 16 de Febrero de 2011, 17:36:53 »
Hola, usar serie x hardware era solo una sugerencia, sino te queda mas remedio usalo por software. Para probarlo yo deshabilitaria todo y unicamente atendería el GPS, para ver si existe un problema de hardware.

Suerte !

Desconectado perezriveracarlos

  • PIC10
  • *
  • Mensajes: 15
Re: Captura trama MNEA por puerto serie erronea (TEMA SOLIUCIONADO)
« Respuesta #5 en: 18 de Febrero de 2011, 05:14:12 »
Buenas.   :-/ :-/ :-/ :-/
 
Pues después de probar y probar  :huh: :huh: :huh:, leer y leer se me habia pasado un dato como poco, importante.

Pues resulta que el GPS tiene la salida serie adaptada a CMOS y no a TTL, y el pic tiene el umbral por esa zona y por eso me leia cosas raras.

La solucion la he conseguido usando un MAX232 (que trabaja a niveles CMOS y TTL indiferentemente) pero unieno la salida 232 con la entrada 232, con lo que consigo que la entrada por el RX sea CMOS y la salida por el TX sea TTL (siempre alimentandolo a 5V), así consigo que lo que me llegue al pic sea la señal adaptada de nivel.

Como la transmision del pic al GPS no la suelo usar, tal vez le ponga un divisor con resisitencias para cuando haga la placa "de verdad" y tener la posibilidad si lo necesito mas adelante.

Si alguien tiene otra solucion de como subir el nivel de tensión de CMOS a TTL (que sea mas sencillo) estoy abierto a esas modificaciones.

Gracias por la ayuda