RESNIC Inserito: 17 novembre 2005 Segnala Share Inserito: 17 novembre 2005 Buongiorno, chiedo qualche idea sul "Come mai?"HO realizzato la recezione seriale di alcuni dati .... e per ora il controllo del RCREG viene fatto ad ogni scansione (del programma) e lo trasferisco in un Buffer da me creato.... Il tutto ha la gestione di un Display LCD 16x2...... e funziona tutto alla grande..... veramente......forse lo lascerò cosi!!!Per migliorare il progetto ho deciso di fare la recezione e salvare l'RCREG ad interrupt.... il tutto funziona bene.... solo che essendoci pure la gestione del Display questo impazzisce... nel senso che talvolta comincia a visualizzare caratteri strani e senza senzo,.... tra le ipotesi fatte del malfunamento ho messo il fatto che l'interrupt va a bloccare il programma (e se magari stà mandando qualcosa all'LCD, ciò perde il comando.... con tale ipotesi ho disabilitato l'iterrupt ogni volta che scrivevo su display... ma niente....IDEE???? Link al commento Condividi su altri siti More sharing options...
elsabz Inserita: 17 novembre 2005 Segnala Share Inserita: 17 novembre 2005 Ciao, se il codice nell'interrupt è molto contenuto non vedo problemi per il tuo LCD. Probabilmente hai ecceduto in quello? Link al commento Condividi su altri siti More sharing options...
RESNIC Inserita: 17 novembre 2005 Autore Segnala Share Inserita: 17 novembre 2005 Il codice della recezione è del tipo:Void RX(unsigned char Buff[]){Buff[Puntatore]=RCREG;Puntatore++;}Perchè dici che se è troppo lungo ci sono dei problemi?Probabilmente il compilatore lo sviluppa e diventa lungo come codice.... Link al commento Condividi su altri siti More sharing options...
elsabz Inserita: 17 novembre 2005 Segnala Share Inserita: 17 novembre 2005 Che compilatore usi? Link al commento Condividi su altri siti More sharing options...
RESNIC Inserita: 17 novembre 2005 Autore Segnala Share Inserita: 17 novembre 2005 Uso MCC18 della casa madre Microchip.....PS: La routine RX è richiamata dalla ISR ad alto livello di priorità!! Link al commento Condividi su altri siti More sharing options...
elsabz Inserita: 17 novembre 2005 Segnala Share Inserita: 17 novembre 2005 Ok, non mi sembra un codice eccessivo!Mi sembra strano che questo può causarti ritardi nel codice del LCD.Forse il problema sta da un altra parte!Ciao! Link al commento Condividi su altri siti More sharing options...
ifachsoftware Inserita: 17 novembre 2005 Segnala Share Inserita: 17 novembre 2005 Secondo me il problema non e' nell'interrupt ma o in qualche errrore di programma o forse (piu' probabile) nelle temporizzazioni dell'LCD.Ciao Link al commento Condividi su altri siti More sharing options...
Dario Valeri Inserita: 17 novembre 2005 Segnala Share Inserita: 17 novembre 2005 ciaoconcordo con ifachsoftware, ho avuto problemi analogi( con altri micro)e l'errore era sempre il mio programma (temporizzazioni)attenzione anche all'hardware.ciaodario Link al commento Condividi su altri siti More sharing options...
dlgcom Inserita: 17 novembre 2005 Segnala Share Inserita: 17 novembre 2005 Io non conosco il compilatore Mcc18.Sei sicuro che questo comp. ti genera il codice per salvare i registri importanti?Tipo W PC STATUS ecc.Per esempio in CCS lo fa in automatico , ma noon so nel c18.Non riesco a capire anche questa cosa del odice contenuto...Se quello che sta' facendo la routine di interrupt ha una priorita' rispetto al programma principale il codice puo' essere anche di grandi dimensioni , basta che alla fine metta tutto a posto prima di tornare al programma principale.Posso capire se ci sono piu' di un interrupt , allora si che la lunghezza puo' essere un problema . Link al commento Condividi su altri siti More sharing options...
RESNIC Inserita: 17 novembre 2005 Autore Segnala Share Inserita: 17 novembre 2005 Buongiorno,Stasera proverò a dare un'occhiata.... gli errori notturni oramai sono un MUST!!!Domani vi saprò dire!!!! Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora