12 Channel Lassen IQ GPS es USART o UART ?

Hola a todos, actualmente me encuentro realizando un proyecto que está relacionado con un PIC18F4550 y un Módulo GPS Lassen IQ. Mi duda es la siguiente que Protocolo de comunicación usa este Gps. Porque estoy usando la libreria USART.H de MPLAB X lo configuro como me dice el manual a 4800 baud 8 bits No Parity, cuando ejecuto el circuito no me muestra la trama en la Pantalla LCD, me muestra puros caracteres extraños, llevo una semana tratando de mostrar el mensaje NMEA en mi LCD y no logro hacerlo. Adjunto foto en donde se muestra los caracteres.

Si me pueden ayudar o explicar que puedo hacer estaria muy agradecido.

Gracias y saludos a todos. ...
 

Adjuntos

  • IMG-20141124-WA0012.jpg
    IMG-20141124-WA0012.jpg
    55 KB · Visitas: 13
Última edición:
Hasta subi la imagen de la trama que me genera y nada y estoy en contra reloj, porque este proyecto lo tengo que entregar la proxima semana mas tardar. Estoy usando xc8 de Mplab y la programación es esta:

putrsXLCD("Coord. ");
retards(10000);
OpenUSART(USART_TX_INT_OFF & USART_RX_INT_OFF & USART_BRGH_LOW & USART_CONT_RX & USART_EIGHT_BIT & USART_ASYNCH_MODE & USART_ADDEN_OFF,64);
baudUSART(BAUD_IDLE_CLK_HIGH & BAUD_8_BIT_RATE & BAUD_AUTO_OFF);

while(1){
datas_=getcUSART();
//Mostramos en Pantalla la trama
itoa(datas_,data,10);
putcXLCD(datas_);
retards(50);
}

La estoy colocando así para ver si el gps me transmite o me manda la trama en ASCII esa que dice el Nmea $GPGGA.... etc.

Por favor ayuda
 
Pregunta: funciona bien la instrucción
putrsXLCD("Coord. ");

es decir, ¿te pone en pantalla "Coord."?
Porque con eso ya descartamos que sea problema del LCD.

Baud rate: como hiciste el cálculo?

itoa: para que?, la función getcusart devuelve un char, y el gps en nmea envia caracteres ASCII legibles, no hay necesidad de conversión

Forma de leer: yo no utilizaría ese retardo en el while(1), lo que haría sería esperar a que llegue un caracter, leo USART, envío a LCD, y listo.

while(1)
{
while( 0 == DataRdyUSART() ); //esperamos a que llegue algo
nmeaChar = getcUSART();
putcXLCD(nmeaChar);
}

nmeaChar es de tipo char.
 
Pregunta: funciona bien la instrucción
putrsXLCD("Coord. ");

Respuesta: Si, me funciona el Lcd esta funcionando perfecto con esa libreria.

Baud rate: como hiciste el cálculo?
FOSC/ (64 * (spbrg+ 1))

Tomando en cuenta que FOSC es un Cristal de 20 Mhz el baud rate debe de ser 4800. Despejando el spbrg, me da 64.

Quitando el itoa hace lo mismo.

Ahora una pregunta el Data RdyUSART() es una funcion que debo de crear o uso el getUSART();

Y gracias por responder... :D
 
DataRdyUSART() viene en la misma librería que ya estás usando (creo), junto con getcUSART openUSART baudUSART...

Quizás te sigue haciendo lo mismo porque estás leyendo caracteres del UART cuando todavía no llegó ninguno, de ahí la necesidad del DataRdyUSART. Usalo y a ver que pasa.

Suerte!!!
 
Ardogan hice lo que me dijiste y no funcionó. Ahora los caracteres son mas extraño y aleatorios. Como lo muestro en la foto. Y he probado diferente metodos.
 

Adjuntos

  • IMG_20141203_103055.jpg
    IMG_20141203_103055.jpg
    75.4 KB · Visitas: 9
Ok, probá con 9600 baudios a ver si hay suerte.
Y si no anda por favor incluí un esquemático del circuito para ver si las conexiones están bien hechas, y el programa del pic para ver si falta algo o hay un error en otra parte.
 
Atrás
Arriba