Torna indietro   BaroneRosso.it - Forum Modellismo > Elettronica > Circuiti Elettronici


Rispondi
 
Strumenti discussione Visualizzazione
Vecchio 19 dicembre 05, 23:07   #31 (permalink)  Top
UserPlus
 
L'avatar di protomax
 
Data registr.: 21-02-2005
Residenza: TURIN 45N 7E
Messaggi: 1.951
Invia un messaggio via MSN a protomax
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 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
__________________
C'e' chi vola con l'elettronica e chi fa volare l'elettronica ... entrambi volano.
________________________________________________
ProtoMax proudly present: ProtoMeter 2
32bit ARM core + ZigBee Radio all in one Telemetry system
... Next on this forum
protomax non è collegato   Rispondi citando
Vecchio 20 dicembre 05, 09:06   #32 (permalink)  Top
User
 
L'avatar di MSchiepp
 
Data registr.: 21-01-2004
Residenza: Milano
Messaggi: 989
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
__________________
__________________________________________________
The worst day flying is better than the best day working.
MSchiepp non è collegato   Rispondi citando
Vecchio 20 dicembre 05, 10:33   #33 (permalink)  Top
UserPlus
 
L'avatar di protomax
 
Data registr.: 21-02-2005
Residenza: TURIN 45N 7E
Messaggi: 1.951
Invia un messaggio via MSN a protomax
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 e mi sa che poi non esce mai dal "wend" piu' esterno

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

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
__________________
C'e' chi vola con l'elettronica e chi fa volare l'elettronica ... entrambi volano.
________________________________________________
ProtoMax proudly present: ProtoMeter 2
32bit ARM core + ZigBee Radio all in one Telemetry system
... Next on this forum
protomax non è collegato   Rispondi citando
Vecchio 21 dicembre 05, 17:31   #34 (permalink)  Top
User
 
L'avatar di MSchiepp
 
Data registr.: 21-01-2004
Residenza: Milano
Messaggi: 989
Citazione:
Originalmente inviato da protomax
Ma cosi' e troppo e mi sa che poi non esce mai dal "wend" piu' esterno
Hai ragione perchè ne manca un pezzo...
il primo ciclo ovviamente è

while (rxDone=0)

perchè while da solo fa poco!

Michele
__________________
__________________________________________________
The worst day flying is better than the best day working.
MSchiepp non è collegato   Rispondi citando
Vecchio 21 dicembre 05, 23:14   #35 (permalink)  Top
User
 
Data registr.: 04-06-2005
Residenza: Genova
Messaggi: 46
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.
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.
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 non è collegato   Rispondi citando
Vecchio 24 dicembre 05, 18:38   #36 (permalink)  Top
User
 
Data registr.: 04-06-2005
Residenza: Genova
Messaggi: 46
Ho risolto l'arcano!!!!
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

Ecco il prototipo con la prima decodifica
Icone allegate
visualizzatore seriale su lcd-gps_end.jpg  
aduri non è collegato   Rispondi citando
Rispondi

Bookmarks




Regole di scrittura
Non puoi creare nuove discussioni
Non puoi rispondere alle discussioni
Non puoi inserire allegati
Non puoi modificare i tuoi messaggi

BB code è Attivato
Le faccine sono Attivato
Il codice [IMG] è Attivato
Il codice HTML è Disattivato
Trackbacks è Disattivato
Pingbacks è Disattivato
Refbacks è Disattivato


Discussioni simili
Discussione Autore discussione Forum Commenti Ultimo Commento
Visualizzatore file dxf dwg filter Aeromodellismo Progettazione e Costruzione 4 12 giugno 06 12:54
Interfaccia seriale -> notebook senza porta seriale francyflyer Simulatori 4 10 marzo 06 18:48
Visualizzatore peppesci Simulatori 5 11 febbraio 05 10:25



Tutti gli orari sono GMT +2. Adesso sono le 19:17.


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