
![]() | #11 (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. | |
![]() | ![]() |
![]() | #12 (permalink) Top |
UserPlus |
Direi che la cosa piu' bella sarebbe avere a disposizione la seriale TX RX per il pc e il display diretto attaccato al Pic. No ho ben presente l'architettura, ma forse varrebbe la spesa oltre che a passare al C (piu' duttile ma soprattutto piu' usato ) in modo da avere un parco librerie piu' ampio.
__________________ 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 |
![]() | ![]() |
![]() | #13 (permalink) Top |
User Data registr.: 04-06-2005 Residenza: Genova
Messaggi: 46
![]() |
Per quello che riguarda il c della Hitech lo uso da tempo ma ho fatto cose semplici anche perche' la mia conoscenza del c e' scarsa. Ho gestito l'LCD guardando le routine del sito di Fiser per la gestione della seriale ma gli esempi sulla seriale che ho visto utilizzano gli ingressi a/d (invece della USART) di pic di classe superiore che sinceramente per questo tipo di applicazioni non vorrei scomodare . Se trovassi qualcosa da cui partire sulla usart in c mi farebbe piacere ma non ho trovato nulla o di molto complesso. ![]() Inizialmente cercavo qualcosa per il 16f84a ma avrei dovuto addirittura simulare la usart. ![]() Tornando al Mikrobasic innanzitutto grazie dei consigli ho letto il manuale (forse avrei dovuto farlo prima) ed effettivamente ho fatto un passo avanti. ![]() Adesso funziona perfettamente con un solo carattere ed il cursore si posiziona subito dopo, se ne spedisco 2 mi si visualizza il secondo se 3 il terzo col 4 mi rimane il terzo ![]() Nel terminale a PC se trasmetto 3 caratteri li visualizza perfettamente se ne trasmetto di piu' li tronca al terzo carattere. ![]() Il mio obbiettivo e' quello di ricevere il segnale dal gps riconoscere i caratteri della stringa che mi interessa e fare la codifica del protocollo. Pero' ci vorrei arrivare un poco alla volta cercando di capire. Addesso sto testando il tutto senza gps ma spedendo e ricevendo col pc. Allego il listato se potete darmi ancora un aiuto: program lcd_serial dim received_byte as byte main: ' Lcd_Init(PORT ![]() 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 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+i),received_byte) ' print gps data to LCD, 2nd row, 1st column Lcd_Chr_cp(received_byte) end if wend end. |
![]() | ![]() |
![]() | #14 (permalink) Top | ||
UserPlus | Citazione:
Citazione:
inoltre la versione demo del compilatore non prevede il 16f628 ma il 16f627, saro' limitato a 1024 byte di programma?? visto che la demo e' limitata a 2 banchi ram, saro limitato a 112 byte di ram? routine d' accesso alla eeprom? routine per usare il comaratore come adc? per programmare incircuit che consigli? scusami per la valanga di domande, ma in questo periodo , tornando la sera a casa sono stanco e... fare le ricerche e capire cio' che si legge non e' sempre facile! ![]()
__________________ 73 de davidea!!! | ||
![]() | ![]() |
![]() | #15 (permalink) Top | |
UserPlus | Citazione:
Lo so sono troppo di parte ma perche' vi complicate la vita quando c'e' un prodotto totalmente free con cui potete fare un numero sufficiente di cose senza dover ammattire ![]() Passate ad Atmel li c'e' il GCC free potete riempire 128Kbyte di micro con due seriali, in circuit programming tutto libero!!!!! Oppure se volete un prodotto performate a + basso costo ATmega32 con una seriale ho messo la board monofaccia il programmatore via pp e' semplice ![]() X aduri putroppo penso di aver centrato il problema, il compilatore basic no fa buffering di piu' byte e la routin di scrittura su LCD e' molto pesante cosi' capita che il pic si perde i byte RX prova a fare cosi': 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 end if se cosi' no perdi dati allora fai cosi' if Usart_Data_Ready = 1 then ' If data is received i= i+1 ; received_byte (i) = Usart_Read ' Read received data buffer if i = 10 then for i= 1 to 10 lcd_out(2,i,received_byte) ' print gps data to LCD, 2nd row, 1st column next i i = 0 ; end if qui fa buffering di 10 caratteri vedi come fare per dichiarare un array no so se il tuo basic lo consente. Lui stampa dopo 10 caratteri quindi se non gli arrivano non stampa Ora per far si che le stringhe siano stampate quando finiscono inserisci un controllo di RX per il >CR< o >LF< sul carattere appena arriva manda in stampa ![]() ![]()
__________________ 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 | |
![]() | ![]() |
![]() | #16 (permalink) Top | |
User Data registr.: 21-01-2004 Residenza: Milano
Messaggi: 989
| Citazione:
Puoi fare questa prova: program Test_Display dim i as byte Lcd_Config(PORTB,0,3,0,7,6,5,4) ' pins custom lcd_cmd(LCD_CLEAR) ' send command to LCD "clear display" lcd_chr(1,1,0x20) for i=1 to 20 Lcd_Chr_cp(63+i) ' Delay_us(50) next i Delay_ms(1500) lcd_chr(2,1,0x20) for i=1 to 20 Lcd_Chr_cp(95+i) ' Delay_us(50) next i end. che dovrebbe riempire la prima riga del display, aspettare 1,5 sec e riempire la seconda riga; se funziona cercheremo il problema nella gestione combinata della UART, se no togli i commenti sui due Delay_us ed eventualmente prova ad alzare i valori. Per quanto riguarda Atmel e altri micro, in questa fascia non ci sono grosse differenze; i Microchip sono più diffusi soprattutto a livello industriale perchè godono fama migliore dei concorrenti, mentre gli Atmel hanno avuto il loro momento di gloria nel campo della telefonia mobile, ma adesso sembrano essere un po' in declino. Se la scelta è fatta su 'feeling' personale o disponibilità di tools gratuiti allora i criteri di scelta cambiano... @DAVIDEA Non è questione di 'cantonate', ma di differenza tra linguaggio e librerie; il C è un linguaggio e ti mette a disposizione una serie di funzioni, operatori e strutture dati che ti permettono di scrivere del codice in accordo con determinate 'regole'; l'insieme di tutte queste cose è codificato e definito in modo universale indipendente da chi produce il compilatore od il micro e si chiama 'Ansi C'; quando i compilatori hanno dei comportamenti differenti dallo standard vengono specificate quali sono le differenze rispetto allo standard. Le librerie sono un insieme di funzioni complesse create per risolvere problemi ricorrenti e possono essere quindi adattate e personalizzate perchè non fanno parte di uno standard. Spesso (vedi questo topic) le librerie fornite sono solo degli esempi e non è sempre possibile integrarle in modo immediato. Esempio: la libreria del display LCD impiega circa 40 istruzioni a scrivere un dato, perchè, per mantenere la flessibilità di assegnare liberamente i pin di interfaccia, esegue otto operazioni separate di test del dato e set/reset dei bit corrispondenti; per contro vincola ad usare una sola porta per il display obbligando a rinunciare ad altre funzioni che hanno dei pin dedicati. Morale: in un paio d'ore posso scrivermi la mia libreria in C che gestisce il display in modo più mirato e più efficiente e che posso integrare facilmente con dell'altro codice. Il resto alla prossima puntata... Michele
__________________ __________________________________________________ The worst day flying is better than the best day working. Ultima modifica di MSchiepp : 13 dicembre 05 alle ore 15:05 | |
![]() | ![]() |
![]() | #17 (permalink) Top | ||
UserPlus | Citazione:
Citazione:
se debbo scrivermi da me le librerie, allora la programmazione in c si limita alla sola struttura del sw, mentre le funzioni me le devo scrivere. essendo che l' hitech diceva di non dare i sorgenti delle librerie nel demo, pensavo che vi erano le varie funzioni , ma che non potevo modificarle, mancando il sorgente, ma da cio' che vedo, non vi sono! o sbaglio??? non vi sono, nel senso che oltre a trovarmi la sin(x) cos(x) etc, mi aspettavo di trovare read_adc() write_internal_eeprom(byte,loc) set(port,bit) read(port,bit) ed un' altra sfilza di istruzioni gia' pronte, che nella versione demo, se mi sta bene uso, se no' riscrivo, ma nella versione commerciale puoi adattare alle tue esigenze! utopistico?? forse e' la troppa inesperienza a portarmi a commettere degli errori concettuali dei quali non mi accorgo! @protomax per ora ho questo dentro, e siccome come puoi vedere ho le idee mooolto confuse, inizio con questo, e poi quando padroneggio un po' meglio le problematiche avro' la possibilita' di capire cio' che mi serve realmente!
__________________ 73 de davidea!!! | ||
![]() | ![]() |
![]() | #18 (permalink) Top |
User Data registr.: 11-10-2004 Residenza: out of Verona
Messaggi: 573
|
Sarò banale, ma invia il messaggio al PC/LCD quando è completo. Ovvero il protocollo MNEA invia una stringa di dati terminata da un CR/LF. Memorizza in un array il pacchetto ricevuto e spediscilo al PC quanto ricevuto completo. Nota che a 9600 hai 1 mS per gestire un singolo carattere, mentre tra un messaggio e il successivo di un GPS hai circa 500mS. Sono in disaccordo con protomax: i processori sono come l'u......o non conta quanto è grande ma come lo usi... ![]() Puoi avere anche un ATMEL a 200MHz, ma se il programma non è concepito bene, un PICcino a 4MHz funziona meglio... NB: per vari motivi, uso Z80, ST7 e PIC. E i samples della microchip sono gli unici che mi arrivano regolarmente, dunque scelta naturale. (Ma l'atmel ha l'USB?<_< ) Per quanto riguarda il compilatore, si tratta di comodità. Per lavoro uso il C++, per i processori il basic o il C. Purtroppo, i compilatori per i uPC costano un pacco, e dipende anche cosa trovi sul muletto. Non tutti possono permettersi il Proton o l'Hitek. ![]() bye |
![]() | ![]() |
![]() | #19 (permalink) Top | ||||
UserPlus |
Premetto che non voglio per nulla essere polemico e se sforo in OT perdonatemi ![]() Citazione:
![]() Citazione:
No volevo dire che il software sviluppato era inadeguato ![]() ![]() Citazione:
Citazione:
Non pensare che sia cosi' ottuso da non controllare anche i PIC ![]()
__________________ 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 | ||||
![]() | ![]() |
![]() | #20 (permalink) Top | |
User Data registr.: 21-01-2004 Residenza: Milano
Messaggi: 989
| Citazione:
Il discorso è ovviamente diverso per librerie più complesse come quelle grafiche o quelle usate per inerfacciare dispositivi particolari, ma in genere sono fornite da chi vende il dispositivo; sui siti dei costruttori di micro o dei fornitori di compilatori si trovano comunque tanti esempi ed applicazioni; in questo caso lavorare in C ti permette più facilmente di adattare codice di un altro micro o di un altro processore. Della stessa famiglia del Mikrobasic esiste anche il MikroC http://www.mikroelektronika.co.yu/ con le stesse librerie ed esempi! Ciao, Michele
__________________ __________________________________________________ The worst day flying is better than the best day working. | |
![]() | ![]() |
![]() |
Bookmarks |
| |
![]() | ||||
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 |