![]() |
Citazione:
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 |
Citazione:
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 |
Citazione:
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: |
Citazione:
il primo ciclo ovviamente è while (rxDone=0) perchè while da solo fa poco! Michele |
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') :( |
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