Trasmissione seriale fra PIC

Nov 27, 2003 4 Replies

Ciao a tutti!



Ho due PIC (16f877a@4MHz e 16f84a@2MHz) che per comunicare usano il protocollo RS232, gestito via software (non faccio uso della uart integrata del 877a, insomma). Uso 7 bit, nessuna parità ed ho impostato il baud rate a



150b/s. Ecco a 100b/s e 150b/s tutto ok... ma siccome queste velocità di trasmissione non sono abbastanza, ho provato a portare il baud rate a 200. Ma già con questo valore la trasmissione non funziona più. La comunicazione è sufficente che avvenga solo in direzione 16f877a (host) -> 16f84a, inquanto quest'ultimo pilota un LCD a qualche metro di distanza. I programmi sono scritti con il compilatore pcw della ccs Aumentare le frequenze di clock dei PIC è l'unica soluzione?

Grazie per qualsiasi suggerimento


Non ho capito una cosa: programmi in assembler o in un linguaggio più ad alto livello? Nel caso di applicazioni che necessitino di temporizzazioni da rispettare, è più affidabile programmare direttamente in assembler. Inoltre, l'implementazione software (in assembler) di un protocollo seriale è una cosa abbastanza facile. Se hai un simulatore, ti conviene utilizzarlo (io uso MPLAB), da lì sarà facile salire alla sorgente del mancato collegamento tra i 2 pic.

Gabriele Bellini

Alto livello. Sfrutto le routine software per la trasmissione seriale messe a disposizione. #USE RS232(Baud=100, XMIT=PIN_A0, PARITY=N, BITS=7) Eventualmente seguirò il tuo consiglio e mi scriverò una routine in assembly

Grazie Ciao

altro consiglio: considera sempre che eventuali interrupt possono allungare i tempi delle tue routine. quindi, quando hai a che fare con temporizzazioni, sfrutta i timers del pic (quelli vanno avanti indipendentemente dal tipo di ruotine in esecuzione :). se invece utilizzassi dei semplici loop per generare il baud rate, allora (se prevedi interrupt) il tuo programma potrebbe non funzionare, specie se sali in velocità di trasmissione. Ciao.

Gabriele Bellini

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required