| |||||||
| Registrazione | Gallery | FAQ | Lista utenti | Social Groups | Calendario | Cerca | I messaggi di oggi | Segna forums come letti |
![]() |
| | Strumenti discussione | Visualizzazione |
| |
| | #1 (permalink) Top |
| UserPlus |
partiamo dal concetto che non conosco quel linguaggio, ma ti dico cio' che penso possa essere che non va!, potrei anche dire delle fesserie, quindi prendimi con le pinze! intanto la routine (tranne che non incrementi in automatico la posizione, dovrebbe scrivere sempre sullo stesso punto 2,1 assumendo che tu hai settato la seriale a 4800, (bit di parita?, quanti bit invia?) e che e' settata correttamente, il dato che hai in ingresso, e' dello stesso tipo di quello in uscita? ossia, ricevi un char, e mandi un char? o ricevi un dato magari in due byte, e lo mandi come unico byte e quindi la routine impazzisce? perche' non provi a fare un ciclo if, che scriva sull' lcd una stringa nota "carattere ricevuto correttamente" quando riceve un carattere scelto da te? qualcosa di simile ad if received_byte = "C" then lcd_out(2,1,"carattere C ricevuto") in modo da esser sicuro che il carattere venga ricevuto correttamente! se lo ricevi correttamente, poi puoi provare if received_byte = "C" then lcd_out(2,1,received_byte) io non userei la funzione Usart_Read , perche' non so' se e' un buffer, che una volta letto, non contiene piu' niente!
__________________ 73 de davidea!!! |
| | |
| | #2 (permalink) Top |
| User Data registr.: 04-06-2005 Residenza: Genova
Messaggi: 46
![]() |
Innanzitutto grazie della risposta. La prima routine della lettura della seriale l'ho adattata dall'esempio presente nei samples del compilatore esso trasmetteva al pic una stringa e non un carattere da un terminale tipo hyperterminal di windows ed il pic ritrasmetteva il contenuto del buffer trasferito nella nuova variabile received_byte (cosicche' il rischio di avere il buffer vuoto e' scongiurato) e tutto funzionava. Io ho modificato il programma non ritrasmettendo la stringa dal pic al pc perche' il pin tx usart e' occupato per la gestione dell'lcd e d'altronde mi sembrava inutile. |
| | |
| | #3 (permalink) Top |
| User Data registr.: 26-10-2005 Residenza: Modena
Messaggi: 765
|
ciao' volevo informarti che in rete tale progetto e' gia' vechio di anni, sia con connessione seriale che parallela, e funzia volendo pure su un LCD 16x2. Tra l'altro il basic o simili nn sono proprio gli ideali x questi scopi. Ah, un ultima cosa (giusto x le persone che come me non usano sistemi operativi Microsoft): funziona su quasi tutti i sistemi operativi |
| | |
| | #4 (permalink) Top | ||
| UserPlus | Citazione:
Citazione:
poi inizializzi la seriale, e allora il pin che prima usavi per il display viene rimappato alla seriale, e da allora in poi son dolori!!! per provare, inverti le due righe, prima inizializza la seriale e poi scrivi data se e' come penso, non dovresti veder spuntare piu' neanche quello!!
__________________ 73 de davidea!!! | ||
| | |
| | #6 (permalink) Top |
| User Data registr.: 04-06-2005 Residenza: Genova
Messaggi: 46
![]() |
Niente da fare ho provato a fare come hai detto tu ed anche a customizzare i pins per liberare rb2(tx usart) ma fa lo stesso errore. Nella terminal del pc (che riceve anche lui il dato) tronca la stringa alla terza lettera. Io uso il programmatore di NE e sposto il pic pero' per non rovinare i piedini lo piazzo su uno zoccolo cosi' eventualmente si rovinano i terminali dello zoccolo. Per rispondere all'altro amico io sto esercitandomi per cui cerco di non copiare per quanto possibile ma di prendere spunti. Comunque non mi dispiacerebbe se mi mandaste qualche link in c o basic. Allego il file modificato: program lcd_serial dim received_byte as byte main: ' Lcd_Init(PORT ' initialize LCD connected to portbLcd_Config(PORTB,0,3,0,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 Usart_Init(4800) ' Initialize USART module while true if Usart_Data_Ready = 1 then ' If data is received received_byte = Usart_Read ' Read received data Usart_Write(received_byte) ' Send data via USART lcd_out(2,1,"data:") ' print gps data to LCD, 2nd row, 1st column lcd_out(2,7,received_byte) ' print gps data to LCD, 2nd row, 1st column end if wend end. |
| | |
| | #7 (permalink) Top | |||
| UserPlus | Citazione:
il dato (da cio' che ho capito proviene da un gps), viene mandato contemporaneamente sia al pic che al pc? se si' e' strano che ti venga troncata la stringa al 3 carattere, da cio' che ricordo io il gps da' delle stringhe belle linghe! Citazione:
Citazione:
prima inizializzi l' lcd e poi configuri i pin? non dovrebbe essere al contrario? nella configurazione ripeti 2 volte il valore 0.... io ho scaricato e installato picclite della hitech, e ho dato una lettura al manuale (350 pagine) ma ancora non ho iniziato a provare niente, anche perche' dai comandi che ho visto nel manuale, ci sono solo funzioni matematiche.... non ho trovato niente per la lettura delle porte, continuero' a cercare.... sono ancora fortemente tentato di abbandonare i pic per passare ad atmega... MICHELE??? ci sei , se ci sei batti un colpo!!!!!
__________________ 73 de davidea!!! | |||
| | |
| | #8 (permalink) Top |
| User Data registr.: 04-06-2005 Residenza: Genova
Messaggi: 46
![]() |
C'e' l'apice prima dell'inizializzazione quindi quella riga e' diventata un commento pero' mi sono accorto di una bestialita'. Mi ha portato fuori strada il fatto che il terminale su pc visualizzava una stringa ma sul lcd devo creare un buffer ad es. con un ciclo for/next perche' la seriale trasmette carattere per carattere cosi' ho fatto questo nuovo listato ma accetta solo 3 caratteri che vengono visualizzati in successione appena dopo il data (nella posiz 7 della seconda riga) e il cursore si posiziona dopo il "data" continuo a non capire. allego il listato: program lcd_serial dim received_byte as byte dim i as byte main: ' Lcd_Init(PORT ' initialize LCD connected to portbLcd_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 Usart_Init(4800) ' Initialize USART module while true if Usart_Data_Ready = 1 then ' If data is received received_byte = Usart_Read ' Read received data Usart_Write(received_byte) ' Send data via USART lcd_out(2,1,"data:") ' print gps data to LCD, 2nd row, 1st column for i=0 to 10 'buffer lcd_out(2,(7+i),received_byte) ' print gps data to LCD, 2nd row, 1st column ' lcd_cmd(LCD_CURSOR_ON) ' send command cursor on Lcd_Cmd(Lcd_Move_Cursor_Right) i=i+1 next i end if wend end. Se vuoi un bel tutorial c per pic vai sul sito di Fiser (http://www.jofi.it/fiser/page1.html |
| | |
| | #9 (permalink) Top | |
| User Data registr.: 21-01-2004 Residenza: Milano
Messaggi: 989
| Citazione:
Consiglieri vivamente di passare al C della Hitech che è disponibile gratis in versione demo: su quello posso garantire assistenza e qualche consiglio! In più considera che il C è abbastanza universale e se domani decidi di cambiare micro, non ti devi imparare tutto da capo! Intanto suggerisco questa prova: invece del GPS collega all'ingresso del PIC il PC e all'uscita il display; con Hyperterminal settato alla giusta velocità, 8 bit, 1 stop, no parity e handshake=nessuno prova ad inviare caratteri da tastiera che dovresti vedere sul display (non sul monitor perchè non c'è l'eco automatico); questo dovrebbe farti capire se il sistema si blocca quando i caratteri arrivano troppo velocemente. Scoperto questo vediamo come proseguire... Michele
__________________ __________________________________________________ The worst day flying is better than the best day working. | |
| | |
![]() |
| Bookmarks |
| Strumenti discussione | |
| Visualizzazione | |
| |
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 |