14 dicembre 05, 19:29 | #21 (permalink) Top |
User Data registr.: 04-06-2005 Residenza: Genova
Messaggi: 46
|
Grazie a tutti mi siete stati molto utili. Sono riuscito a mandare con successo la mia prima stringa da terminale creando (come da voi consigliato) un vettore inviato poi in un secondo tempo all'lcd. Effettivamente nel sito del compilatore c'e' molto materiale. Per quello che riguarda Picclite ne ho sentito parlare molto bene anche della versione free e fino ad ora quello che ho fatto mi e' andato a buon fine. Per usare il 16f628 con picclite in un forum ho visto questo messaggio: All you need to do is to copy the 627 info in the pic.ini file into a new section then change just the header to 628. Then you will be able to select and program. |
14 dicembre 05, 22:35 | #22 (permalink) Top | |
User Data registr.: 21-01-2004 Residenza: Milano
Messaggi: 989
| Citazione:
Se vuoi provare il PicLite ti passo il file di configurazione del 628... vero!! Ciao, Michele
__________________ __________________________________________________ The worst day flying is better than the best day working. | |
15 dicembre 05, 23:28 | #23 (permalink) Top | |
User Data registr.: 04-02-2005 Residenza: Milano
Messaggi: 1.350
| Citazione:
Per la mia esperienza il miglior compilatore è il Picbasicpro PBP, unico difetto è il costo elevato. Se sei interessato ai GPS ti consiglio un ottimo simulatore, Nema Talker http://www.sailsoft.nl/ Praticamente trasmette le stringhe Nmea che vuoi ed è totalmente configurabile. Ciao, Sub53 | |
15 dicembre 05, 23:46 | #24 (permalink) Top | |
UserPlus | Citazione:
Ottimo lavoro
__________________ 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 | |
17 dicembre 05, 18:10 | #25 (permalink) Top |
User Data registr.: 04-06-2005 Residenza: Genova
Messaggi: 46
|
Qualcuno sa' come utilizzare il debugger di Mikrobasic per dare a USART_DATA_ready =1 (attiva) in quanto anche selezionando add all non appare tra le variabili (sempre che sia considerata tale). x MSchiepp se mi mandi il file del 628a per picclite mi fai una cortesia. Io il gps ce l'ho gia e l'ho comprato in una fiera ma non ha visualizzatore ed ha solo la seriale per poter essere collegato ad un portatile. E' per questo motivo che volevo fare un visualizzatore lcd per l'ora UTC e latitudine + longitudine Ultima modifica di aduri : 17 dicembre 05 alle ore 18:19 |
18 dicembre 05, 10:03 | #26 (permalink) Top | |
User Data registr.: 21-01-2004 Residenza: Milano
Messaggi: 989
| Citazione:
Se mi mandi il tuo indirizzo e-mail ti mando i file per il compilatore C. Ciao, Michele
__________________ __________________________________________________ The worst day flying is better than the best day working. | |
18 dicembre 05, 18:47 | #27 (permalink) Top |
User Data registr.: 04-06-2005 Residenza: Genova
Messaggi: 46
|
Ti ringrazio stasera provero'. Il mio indirizzo e' antonio.durighello£fastwebnet.it sostituisci la £ con la chiocciola |
18 dicembre 05, 22:34 | #28 (permalink) Top |
User Data registr.: 04-06-2005 Residenza: Genova
Messaggi: 46
|
Ho fatto la simulazione e purtroppo ho notato dove e' l'arcano ma non riesco a risolverlo. Il codice come e' adesso funziona se simulo via seriale solo una delle 6 stringhe che il mio gps spedisce e piu' precisamente la stringa $GPGGA, ora UTC, latitudine, N/S, longitudine , E/W , ...... Quindi funziona la prima parte dove avviene il riconoscimento della virgola (separatore campi) e dopo non funziona la parte di riconoscimento della stringa $GPGGA quindi lui legge qualunque stringa sbagliando la decodifica. Qualcuno piu' esperto di me mi puo' dare una mano. Ho commentato per quanto e' possibile il codice. Nella prima parte ho customizzato i pins dell'lcd per liberare i pins della usart del pic. Allego il listato: program GPS dim rxIndex as byte dim rxDone as byte dim rxGPSData as byte dim rxDataGarbage as byte dim conta as byte dim GP as char[10] dim sincro as char[7] dim UTC as char[10] dim Latitudine as char[10] dim Longitudine as char[10] 'dim Altitudine as char[4] dim NS as char[1] dim EW as char[1] 'dim SatNum as char[4] dim Ora as char[10] dim NSLatitudine as char[11] dim EWLongitudine as char[12] 'Questa e' la successione di stringhe del mio GPS '$GPGSA,A,1,,,,,,,,,,,,,99.0,99.0,99.0*00 '$GPGSV,3,1,09,01,30,312,00,02,24,112,00,04,28,063 ,00,05,77,128,00*73 '$GPGSV,3,2,09,06,15,209,00,14,38,269,00,20,10,000 ,00,25,13,309,00*77 '$GPGSV,3,3,09,30,58,254,00,,,,,,,,,,,,*4D '$GPGGA,204620.999,4530.6671,N,00916.9484,E,0,00,5 0.0,101.9,M,,,,0000*32 '$GPRMC,204620.999,V,4530.6671,N,00916.9484,E,0.0, 0.0,250805,0.0,W*63 'Io analizzo solo la stringa '$GPGGA,204620.999,4530.6671,N,00916.9484,E,0,00,5 0.0,101.9,M,,,,0000*32 ' ora UTC lat N/S long E/W main: Lcd_Config(PORTB,0,3,1,7,6,5,4) ' pins custom lcd_cmd( LCD_CLEAR) ' send command to LCD "clear display" ' lcd_cmd( LCD_CURSOR_OFF) ' send command cursor off lcd_out(1,1,"GPS data") ' print txt to LCD, 1nd row, 1st column 'VRCON = 7 ' I need to do that because I'm using the PORTA for lcd output 'CMCON = 7 ' same as above USART_init(4800) 'Lcd_Config(PORTA,2,3,0,7,6,1,4) Lcd_Cmd(LCD_CLEAR) Lcd_Cmd(LCD_CURSOR_OFF) lcd_out (1,1,"Attesa...") inizio: Ora = " " GP = " " sincro = " " rem NSLatitudine = " " rem EWLongitudine = " " rem Altitudine = " " rem SatNum = " " if USART_Data_Ready=1 then rxDataGarbage = USART_Read end if 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=44) then ', if (GP[0]=36) and (GP[1]=71) then '$ and G if (GP[2]=80) and (GP[3]=71) then 'P and G if (GP[4]=71) and (GP[5]=65) then 'G and A rxDone = 1 else goto inizio end if end if end if end if inc(rxIndex) end if wend rxIndex = 0 rxdone = 0 while rxDone=0 if USART_Data_Ready=1 then rxGPSData = USART_Read UTC[rxIndex] = rxGPSData ' UTC (ora) if (rxGPSData=44) then rxdone=1 end if inc(rxIndex) end if wend rxIndex = 0 rxdone = 0 while rxDone=0 if USART_Data_Ready=1 then rxGPSData = USART_Read Latitudine[rxIndex] = rxGPSData ' Latitudine if (rxGPSData=44) then rxdone = 1 end if inc(rxIndex) end if wend rxIndex = 0 rxdone = 0 while rxDone=0 if USART_Data_Ready=1 then rxGPSData = USART_Read NS[rxIndex] = rxGPSData ' Nord o Sud if (rxGPSData=44) then rxdone = 1 end if inc(rxIndex) end if wend rxIndex = 0 rxdone = 0 while rxDone=0 if USART_Data_Ready=1 then rxGPSData = USART_Read Longitudine[rxIndex] = rxGPSData ' Longitudine if (rxGPSData=44) then rxdone = 1 end if inc(rxIndex) end if wend rxIndex = 0 rxdone = 0 while rxDone=0 if USART_Data_Ready=1 then rxGPSData = USART_Read EW[rxIndex] = rxGPSData ' Est o Ovest if (rxGPSData=44) then rxdone = 1 end if inc(rxIndex) end if wend for conta = 1 to 2 rxIndex = 0 rxdone = 0 'while rxDone=0 'if USART_Data_Ready=1 then ' rxGPSData = USART_Read ' SatNum[rxIndex] = rxGPSData ' Numero di Satelliti ' if (rxGPSData=44) then ' rxdone = 1 ' end if ' inc(rxIndex) ' end if 'wend next conta 'esempio stringa ' $GPGGA,204620.999,4530.6671,N,00916.9484,E,0,00,50 .0,101.9,M,,,,0000*32 ' Crea l'array ora ora[0] = UTC[0] 'ore "20" ora[1] = UTC[1] ora[2] = ":" ora[3] = UTC[2] 'minuti "46" ora[4] = UTC[3] ora[5] = ":" ora[6] = UTC[4] 'secondi "20" ora[7] = UTC[5] ' Crea l'array NSLatitudine NSLatitudine[0] = Latitudine[0] ' gradi NSLatitudine[1] = Latitudine[1] ' gradi NSLatitudine[2] = "'" ' apice NSLatitudine[3] = Latitudine[2] ' primi NSLatitudine[4] = Latitudine[3] ' primi NSLatitudine[5] = Latitudine[4] ' punto per decimali NSLatitudine[6] = Latitudine[5] 'decimali NSLatitudine[7] = Latitudine[6] 'decimali NSLatitudine[8] = Latitudine[7] 'decimali NSLatitudine[9] = Latitudine[8] 'decimali NSLatitudine[10] = " " NSLatitudine[11] = NS[0] 'nord/sud ' Crea l'array EWLongitudine EWLongitudine[0] = Longitudine[0] ' gradi EWLongitudine[1] = Longitudine[1] EWLongitudine[2] = Longitudine[2] EWLongitudine[3] = "'" EWLongitudine[4] = Longitudine[3] ' primi EWLongitudine[5] = Longitudine[4] EWLongitudine[6] = Longitudine[5] EWLongitudine[7] = Longitudine[6] EWLongitudine[8] = Longitudine[7] EWLongitudine[9] = Longitudine[8] EWLongitudine[10] = Longitudine[9] EWLongitudine[11] = " " EWLongitudine[12] = EW[0] lcd_out(1,1,"UTC: ") lcd_out(1,6,ora) delay_ms(3000) lcd_cmd( LCD_CLEAR) ' send command to LCD "clear display" 'delay_ms(1500) 'lcd_out(1,1,"Lat: ") 'delay_ms(3000) lcd_out(1,6,NSLatitudine) 'delay_ms(3000) lcd_out(1,18," ") '7 spazi vuoti x pulire 'delay_ms(3000) lcd_out(2,1," ") '24 spazi vuoti x pulire 'delay_ms(4000) 'lcd_cmd( LCD_CLEAR) ' send command to LCD "clear display" 'lcd_out(2,1,"Lon: ") 'delay_ms(3000) lcd_out(1,1," ") 'delay_ms(3000) lcd_out(1,1,"Lat: ") 'delay_ms(3000) lcd_out(2,1,"Lon: ") 'delay_ms(3000) lcd_out(2,6,EWLongitudine) 'delay_ms(3000) lcd_out(2,19," ") ' spazi vuoti x pulire 'delay_ms(3000) lcd_out(1,1," ") 'delay_ms(3000) lcd_out(1,1,"Lat: ") 'delay_ms(5000) 'lcd_cmd( LCD_CLEAR) ' send command to LCD "clear display" rem lcd_out(2,9,"Alt:") rem lcd_out(2,14,Altitudine) goto inizio end. Nell'ultima parte sono dovuto andare a tentativi per pulire il mio lcd (2x24)perche' rimanevano dei caratteri dove non doveva esserci nulla non sono riuscito a capire lo standar di Mikrobasic per gli lcd da quante righe e colonne e' e se si puo' settare in qualche modo. Ultima modifica di aduri : 18 dicembre 05 alle ore 22:39 |
19 dicembre 05, 15:12 | #29 (permalink) Top | |
UserPlus | Citazione:
A volte bisogna semplificarsi la vita
__________________ 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 | |
19 dicembre 05, 19:00 | #30 (permalink) Top |
User Data registr.: 04-06-2005 Residenza: Genova
Messaggi: 46
|
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' |
Bookmarks |
| |
Discussioni simili | ||||
Discussione | Autore discussione | Forum | Commenti | Ultimo Commento |
Visualizzatore file dxf dwg | filter | Aeromodellismo Progettazione e Costruzione | 4 | 12 giugno 06 11:54 |
Interfaccia seriale -> notebook senza porta seriale | francyflyer | Simulatori | 4 | 10 marzo 06 17:48 |
Visualizzatore | peppesci | Simulatori | 5 | 11 febbraio 05 09:25 |