Vai al contenuto
PLC Forum


Pic 18 Interrupt Seriale


RESNIC

Messaggi consigliati

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


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

ciao

concordo con ifachsoftware, ho avuto problemi analogi( con altri micro)

e l'errore era sempre il mio programma (temporizzazioni)

attenzione anche all'hardware.

ciao

dario

Link al commento
Condividi su altri siti

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

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 account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...