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


Rispondi
 
Strumenti discussione Visualizzazione
Vecchio 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.
aduri non è collegato   Rispondi citando
Vecchio 14 dicembre 05, 22:35   #22 (permalink)  Top
User
 
L'avatar di MSchiepp
 
Data registr.: 21-01-2004
Residenza: Milano
Messaggi: 989
Citazione:
Originalmente inviato da aduri
All you need to do is to copy the 627 ...
Questo ti permette di creare un finto 628 che avrà le stesse limitazioni del 627 con l'unico vantaggio di poterlo dichiarare come un 628...

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.
MSchiepp non è collegato   Rispondi citando
Vecchio 15 dicembre 05, 23:28   #23 (permalink)  Top
User
 
L'avatar di sub53
 
Data registr.: 04-02-2005
Residenza: Milano
Messaggi: 1.350
Citazione:
Originalmente inviato da aduri
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.


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
sub53 non è collegato   Rispondi citando
Vecchio 15 dicembre 05, 23:46   #24 (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
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.
Bene cosi'! Procedere piccoli passi ma continui testando i vari moduli senza mettere troppo e tutto insieme e' utile per capire e modificare il codice a seconda delle esigenze e dei problemi che ci si pongono di fronte

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
protomax non è collegato   Rispondi citando
Vecchio 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
aduri non è collegato   Rispondi citando
Vecchio 18 dicembre 05, 10:03   #26 (permalink)  Top
User
 
L'avatar di MSchiepp
 
Data registr.: 21-01-2004
Residenza: Milano
Messaggi: 989
Citazione:
Originalmente inviato da aduri
Qualcuno sa' come utilizzare il debugger di Mikrobasic...
Devi aggiungere nella finestra di watch il registro PIR1 e quindi assegnargli il valore 0x20 per settare il bit RCIF e simulare l'arrivo di un carattere; per simulare anche la ricezione devi caricare nel registro RCREG il valore del carattere del quale vuoi simulare la lettura.
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.
MSchiepp non è collegato   Rispondi citando
Vecchio 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
aduri non è collegato   Rispondi citando
Vecchio 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
aduri non è collegato   Rispondi citando
Vecchio 19 dicembre 05, 15:12   #29 (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

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
Il problema e' qui! in pratica la stringa $GPGGA deve "cadere" proprio giusta nelle posizioni della variabile e cioe' il carattere $ al primo posto e gli altri di seguito..... fai invece cosi' cerca il solo carattere $ con lo stesso sistema e poi sai che di seguito avrai sempre GPxxx....... ecc.... il carattere dollaro $ e' fatto apposta per trovare il punto di partenza della stringa

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
protomax non è collegato   Rispondi citando
Vecchio 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'
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 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



Tutti gli orari sono GMT +2. Adesso sono le 03:51.


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