BaroneRosso.it - Forum Modellismo

BaroneRosso.it - Forum Modellismo (https://www.baronerosso.it/forum/)
-   Circuiti Elettronici (https://www.baronerosso.it/forum/circuiti-elettronici/)
-   -   visualizzatore seriale su lcd (https://www.baronerosso.it/forum/circuiti-elettronici/16543-visualizzatore-seriale-su-lcd.html)

protomax 19 dicembre 05 23:07

Citazione:

Originalmente inviato da aduri
Da come ho capito tu mi consiglieresti di fare un check sul $ anziche' la virgola (divisore campi), creare il vettore e poi analizzarlo all'interno dei cicli (come sotto) o al di fuori?

Tipo.....


rxDone = 0
rxIndex = 0
while rxDone=0
if USART_Data_Ready=1 then
rxGPSData = USART_Read
GP[rxIndex] = rxGPSData ' Nmea 183 sentence $GPGGA
if (rxGPSData="$") then ',
if (GP[1]="G") and (GP[2]="P") then 'G and P
if (GP[3]="G") and (GP[4]="G") then 'G and G
if (GP[5]="A") and (GP[6]=",") then ' A and ,
rxDone = 1
else
goto inizio
end if
end if
end if
end if
inc(rxIndex)
end if
wend

Lo provero'


no semplifica ancora!!!!


rxDone = 0
rxIndex = 0
while rxDone=0
if USART_Data_Ready=1 then
rxGPSData = USART_Read
if (rxGPSData="$") then
rxDone = 1
end if
end if
wend


Corto breve e conciso e cosi' trovi l'inizio della stringa :wink: dopo questo sei sicuro che i caratteri ricevuti saranno GPXXX ecc. quindi ricevi i caratteri successivi controlla se e' la tua stringa GGA e se si allora metti nelle variabili a seconda di dove li trovi separati dalla virgola .

Attenzione pero' che quando il GPS non e' "agganciato" manda fuori delle stringhe con tutte virgole quindi fai il controllo per campo vuoto.

Buone prove

MSchiepp 20 dicembre 05 09:06

Citazione:

Originalmente inviato da protomax
no semplifica ancora!!!!...

Se vogliamo proprio semplificare, allora

rxDone=0
while
while (USART_Data_Ready=0)
wend
if (USART_Read = "$") then
rxDone=1
end if
wend

@aduri
Ti ho mandato ieri per e-mail un po' d codice già pronto!

Michele

protomax 20 dicembre 05 10:33

Citazione:

Originalmente inviato da MSchiepp
Se vogliamo proprio semplificare, allora
rxDone=0
while
while (USART_Data_Ready=0)
wend
if (USART_Read = "$") then
rxDone=1
end if
wend
Michele

Ma cosi' e troppo :lol: e mi sa che poi non esce mai dal "wend" piu' esterno :mellow:

Il mio era un pezzetto di codice per trovare sempre l'inizio stringa :wink: poi il resto del codice per controllare caratteri ed altro, ma si puo' fare di meglio con una sola wend :P .

while (USART_read <> "$") 'qui loppa fino a che non trova il car. $
wend

all'uscita c'e' poi solo da capire se la string a e' GPGGA o altro caricando i dati sul famoso vettore :wink:

MSchiepp 21 dicembre 05 17:31

Citazione:

Originalmente inviato da protomax
Ma cosi' e troppo :lol: e mi sa che poi non esce mai dal "wend" piu' esterno :mellow:

Hai ragione perchè ne manca un pezzo...
il primo ciclo ovviamente è

while (rxDone=0)

perchè while da solo fa poco!

Michele

aduri 21 dicembre 05 23:14

Alla fine ho fatto una serie di if di questo tipo e funziona.

rxDone = 0
rxIndex = 0
while rxDone=0
if USART_Data_Ready=1 then
rxGPSData = USART_Read
if (rxGPSData="$") then
rxDone = 1
else goto inizio
end if
end if
wend

rxDone = 0
rxIndex = 0
while rxDone=0
if USART_Data_Ready=1 then
rxGPSData = USART_Read
if (rxGPSData="G") then
rxDone = 1
else goto inizio
end if
end if
wend

rxDone = 0
rxIndex = 0
while rxDone=0
if USART_Data_Ready=1 then
rxGPSData = USART_Read
if (rxGPSData="P") then
rxDone = 1
else goto inizio
end if
end if
wend


ecc.......

Ora sembra che tutto funzioni.
Purtroppo, finiti (almeno spero) i problemi sw, iniziano quelli HW. http://forum.pctuner.net/forum/images/smilies/climb.gif
Tutte le prove io le facevo col terminale del PC che, secondo lo std RS232 manda i segnali +-12V dove -12 significa 1 logico e +12V 0 logico.
Ora il mio gps va collegato al pc con la seriale ed il mouse e da quest'ultimo prende l'alimentazione (circa 5V , 4,88V misurati) quindi presumo abbia un'uscita pseudo seriale a 5V. http://forum.pctuner.net/forum/image...es/abashed.gif
Io avevo costruito il circuito col max232 per interfaccciare il pic ed a questi punti non serve piu'.
Mi chiedo ora come collegarlo a pic.
L'uscita del mio GPS e' al piedino 2 del connettore RB9.
Occorrera' negarlo? magari con un TTL 740....(non ricordo piu') :(

aduri 24 dicembre 05 18:38

1 Allegato/i
Ho risolto l'arcano!!!!:P
Il segnale che arriva dal gps e' ttl ma va invertito e ho risolto con successo il problema con un normalissimo transistor bjt BC548 immettendo tramite una resistenza da 5,6K il segnale sulla base e prendendo il segnale invertito sul collettore inviandolo al pic.

Tanti auguri di buone feste a tutti:D

Ecco il prototipo con la prima decodifica


Tutti gli orari sono GMT +2. Adesso sono le 15:49.

Basato su: vBulletin versione 3.8.11
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
E' vietata la riproduzione, anche solo in parte, di contenuti e grafica. Copyright 1998/2019 - K-Bits P.I. 09395831002