Autor Tema: Problemas Leyendo desde GPS 16f628  (Leído 1605 veces)

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

Desconectado luisko01

  • PIC10
  • *
  • Mensajes: 16
Problemas Leyendo desde GPS 16f628
« en: 01 de Septiembre de 2010, 19:39:44 »
Hola a todos..

Tengo un problema que no he podido identificar.

Tengo un GPS Star III

quiero adaptarlo a un pic, estoy probando todo acerca de la comunicacion seríal y todo ok, incluso el programa me funciona bien en el simulador (pic Simulator ide), pero cuando lo corro en el pic, funciona perfecto para la primera cadena de texto del GPS, pero luego se bloquea y no me bota nada más..

Adjunto el código y la cadena que el envio.

Codigo
inicio:
StartFromZero


Dim vh(6) As Byte
Dim vn(10) As Byte
Dim vw(10) As Byte
Dim va(6) As Byte

Hseropen 9600
WaitMs 1000

Dim h As Byte
Dim i As Byte
Dim tmp As Byte
Dim comas As Byte
Dim vp(6) As Byte
Hserout "Entro a Inicio: ", CrLf
WaitMs 200

For i = 0 To 5


vp(i) = 0
vh(i) = 0
va(i) = 0

Next i

For i = 0 To 9

vn(i) = 0
vw(i) = 0

Next i

i = 0
tmp = 0
comas = 0
h = 0

PCLATH = 0

loop:

Hserin tmp

vp(i) = tmp
If vp(0) = "$" Then
i = i + 1
If i = 6 Then i = 0
If vp(0) = "$" And vp(1) = "G" And vp(2) = "P" And vp(3) = "G" And vp(4) = "G" And vp(5) = "A" Then
Goto guardar
Endif
Else
'i = 0
Goto loop
Endif
Goto loop

End                                               

guardar:
loop2:
Hserin tmp
If tmp = "," Then comas = comas + 1
Select Case comas

Case 1
Goto guardarh

Case 2
Goto guardarn

Case 3

Case 4
Goto guardarw

Case 5

Case 6

Case 7

Case 8

Case 9
Goto guardara

Case 14
i = 0
Goto mostrar
Goto inicio

EndSelect

Goto loop2

Return                                           
mostrar:


Hserout "HH:MM:SS ", vh(0), vh(1), ":", vh(2), vh(3), ":", vh(4), vh(5), CrLf
WaitMs 50
Hserout "NORTE: "
WaitMs 50
For h = 0 To 9
Hserout vn(h)
WaitMs 50
Next h
Hserout CrLf

Hserout "OESTE: "
WaitMs 50

For h = 0 To 9
Hserout vw(h)
WaitMs 50

Next h
Hserout CrLf
WaitMs 50

Hserout "ALTURA(MSNM): "
WaitMs 50

For h = 0 To 5
Hserout va(h)
WaitMs 50

Next h
Hserout CrLf
WaitMs 50

Goto inicio

Return                                           

guardarh:
'While
Hserin tmp
If tmp <> "," Then
vh(i) = tmp
i = i + 1
'If i = 6 Then Goto guardar
Else
comas = comas + 1
i = 0
Goto guardarn
Endif
Goto guardarh
Return                                           

guardarn:
'While
Hserin tmp
If tmp <> "," Then
vn(i) = tmp
i = i + 1
'If i = 6 Then Goto guardar
Else
comas = comas + 1
i = 0
Goto guardar
Endif
Goto guardarn
Return                                           

guardarw:
'While
Hserin tmp
If tmp <> "," Then
vw(i) = tmp
i = i + 1
'If i = 6 Then Goto guardar
Else
comas = comas + 1
i = 0
Goto guardar
Endif
Goto guardarw
Return                                           

guardara:
'While
Hserin tmp
If tmp <> "," Then
va(i) = tmp
i = i + 1
'If i = 6 Then Goto guardar
Else
comas = comas + 1
i = 0
Goto guardar
Endif
Goto guardara
Return                                           

Cadena:
$GPGGA,123456,1234.56789,N,08913.7086,W,2,06,3.6,555.22,M,-32.3,M,,*7D

Muchas Gracias a quien pueda ayudarme...


Desconectado ][ALFAK][

  • PIC10
  • *
  • Mensajes: 2
Re: Problemas Leyendo desde GPS 16f628
« Respuesta #1 en: 25 de Julio de 2011, 07:05:51 »
No estoy muy metido aún en este mundo, pero con lo que he hecho hasta ahora (display giratorio) puedo decirte que el código que funciona perfectamente en el simulador no tiene porqué funcionar en el PIC.
Intenta poner algún chivato después de la primera iteración, a ver si llega, salta, cambia el valor, ...

Desconectado PacoP

  • PIC10
  • *
  • Mensajes: 21
Re: Problemas Leyendo desde GPS 16f628
« Respuesta #2 en: 25 de Julio de 2011, 07:28:36 »
Hola, puede que te esté dando problemas en las comparaciones.
IF (A==B) AND (C==D) ... procura usar parentesis y a ser posible el doble ==, aunque en PBP parece que da igual, pero no , a veces se lia un poco el compilador.