Vai al contenuto
PLC Forum


Usart Del Pic16f876


Sergio Bianchi

Messaggi consigliati

Sergio Bianchi

Ciao a tutti, vorrei chiarire un dubbio sull' interfacciamento seriale RS232 tra un PC e un PIC16876.

Voglio realizzare un circuito che tramite un MAX232 vada ad interfacciarsi con PIC per lo scambio di alcune stringhe della lunghezza di circa 20 caratteri in entrambe i sensi. Non devo gestire controlli di flusso quindi userò solo linee TX e RX.

Le domande sono:

Meglio utilizzare il PIC con USART integrato (PIC16F876), oppure come ho visto in alcuni esempi, i segnali TTL del MAX232 che vanno su linee normali di I/O del PIC (immagino con appesantimento del firmware)??

Se uso l' USART integrato che configurazione quarzo-condensatori devo usare considerando che il mio baudrate sarà di 19200??

Qualcuno ha un esempio per l' invio e la ricezione di stringhe nel PIC16F876??

Purtroppo non ho trovato esempio pratico del mio caso nei vari siti, quindi mi affido voi!

Grazie

Link al commento
Condividi su altri siti


Ciao,

Se non ti interessa gestire in modo particolare la seriale, quindi non ti necessita avere un buffer di ricezione a parte per immagazzinare i dati mentre il tuo programma gira, puoi usare delle routine dedicate.

Se invece ti interessa che il tuo programma giri senza dipendere dalla comunicazione allora devi usare per forza l' uart.

Per quanto riguarda l'uart se ti scarichi i data sheet della microchip vi sono delle tabelle che ti indicano come settare l' sprg per avere 19200 baud in base al quarzo installato, come gestire gli interrupt di tx e rx e tanto altro.

Per quanto riguarda le routine software dovresti trovare qualcosa su www.tanzilli.com, io personalmente le uso molto ma in basic (è più sbrigativo anche se meno prestante!).

Saluti, Marco

Link al commento
Condividi su altri siti

Ciao Sergio,

Se hai a disposizione un 16F876 sicuramente ti conviene usare la USART interna.

Questa USART gestisce direttamente un buffer di entrata e uno di uscita .

Per trasmettere un byte lo devi solo caricare in un registro e il PIC si gestira' da solo tutta la trasmissione.

Anche la ricezione e' automatica , quando un carattere e' ricevuto lo puoi prelevare da in registro specifico , ne puo' memorizzare 3 prima di andare un overflow.

Quando riceve un carattere puo' scatenare un interrupt che ti permette di fare altre cose senza preoccuparti della seriale ....

Tutto questo e' relativamente difficile farlo senza USART .... ovvero puoi farlo , ma mentre invii il byte non puoi fare niente .

Se uso l' USART integrato che configurazione quarzo-condensatori devo usare considerando che il mio baudrate sarà di 19200??

Link al commento
Condividi su altri siti

Grazie per le delucidazioni molto utili.

Adesso ho le idee + chiare e proverò a "smanettare" un pò!

Quello che vorrei fare è ricevere un frame di circa 20 caratteri, alcuni fissi ed altri dati, quindi rispondere con una stringa simile dove cambiano i valori dei dati.

Capisco benissimo che non sia semplice come usare mscomm di VB, ma il buffer di ricezione si limita a 3 caratteri dlgcom?

Ciao

Link al commento
Condividi su altri siti

  • 1 year later...

domanda: io sto usando la usart della 1pic 16f876 e non riesco a ricevere correttamente i byte che la pic mi invia,

so usando MSComm sotto visual c++ 6.0 e ho che alcuni valori mi si convertono, probabilmente perche' male interpretati. qualcuno sa come aiutarmi?

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...