Newsgroup: it.hobby.elettronica.digitale
Titolo: Comunicazione seriale PIC

Ciao a tutti, qualche settimana fa parlavo con qualcuno del NG a 
proposito di problemi sulla comunicazione seriale con un PIC 876. Volevo 
farvi sapere che ho risolto e come, visto che magari puň servire anche 
qualcun'altro.
Quello che succedeva, č che se trasmettevo piů di 2 byte consecutivi al 
PIC si verificava un errore di overrun. Il problema era che utilizzavo un 
risonatore ceramico al posto di un quarzo (molto piů preciso). Io, 
pensando che la comunicazione si risincronizzasse dopo ogni carattere 
trasferito, ero convinto che l'errore fosse altrove, ma provando a 
mettere un quarzo tutto č andato a posto (meglio cosě).
In effetti col senno di poi era una prova da fare prima, ma cosě č 
andata...
Ciao.
-- 
Nik (RN) - IW4EL
http://www.moduliaggiuntivi.com

 dopo ogni carattere trasferito,
beh... cosi' dovrebbe essere...
Se hai un frequenzimetro sarei curioso di sapere a quanto oscillava il
risuonatore, per non influire sull'oscillatore stesso basta misurare la freq
in uscita da un pin comandato con una piccola routine del tipo:
BSF PORTB,0
NOP
NOP
BCF PORTB,0
GOTO $-4
I nop sono per avere un duty del 50%
ciao
Claudio F

Ciao Nik,
io ero uno di quelli che ha partecipato alla discussione, e rimango convinto
che sbagli ancora qualcosa.
Se ci fosse un errore del baud rate dovuto alla frequenza errata, otterresti
un framing error, non un overrun.
Se vai in overrun, significa che ti incanti a fare qualcosa e ti arrivano 2
byte prima che tu riesca a leggere il primo.
Alla fine hai usato gli interrupt? Se li usi, dai la precedenza all'usart.
Ciao,
Lucio
"Nik" <mniko...@TOGLIMItin.it> ha scritto nel messaggio
news:c4u0bg$if8$1...@newsreader.mailgate.org...


 Se hai un frequenzimetro ...
Purtroppo non ho ne un frequenzimetro ne un oscilloscopio, se riesco a 
rimediarlo da qualche amico faccio la prova che hai consigliato e ti 
faccio sapere.
Grazie, Ciao.

 all'usart. 
La gestione l'ho pensata e realizzata ad interrupt fin dall'inzio, adoro 
gli interrupt e non capisco perchè non utilizzarli.
Quello che ho fatto è stato sostituire il risonatore con un quarzo 4MHz, 
senza cambiare un'istruzione di codice. Con risonatore se da PC trasmetto 
3 byte ottengo un errore di overrun, con il quarzo ho provato a 
trasmettere 15 byte che sono arrivati puntualmente senza alcun errore. Il 
tutto a 19600.
Se ho tempo faccio qualche altra prova con il risonatore poi posto i 
risultati.
Ciao e grazie.

> tutto a 19600.
uhm... 19600? o_O
--
...:::Zmaster:::...
DSL powered
zmaster.adsl[ANTISPAMSYSTEM]@
tin.it
www.zmaster.tk
Collaboratore del Media Player Project

 uhm... 19600? o_O
Grazie, ovviamente si tratta di 19200.

 Grazie, ovviamente si tratta di 19200.
Sai com'č... i problemi in queste cose sono spesso sciocchezze... come
poteva essere quello di aver messo per sbaglio un baudrate "non standard".
Non si sa mai ;)


Mah
A me è capitata un'altra cosa strana con il 628.
Ah... semplicemente per informarvi
io uso la comunicazione a 19200 baud utilizzando l'oscillatore a 4MHz
interno (quindi nessun quarzo) e non ho problemi.
Una cosa strana che mi sembra di ricordare mi è successa è un po' di
mesi fa.
Trasmettevo dei pacchetti a 19200 e in contemporanea utilizzavo quasi
tutti gli altri interrupt del PIC
Se avveniva un interrupt mentre stavo trasmettendo un carattere il
modulo seriale andava in blocco.
Avendo in quel periodo fretta di finire il programma mi ricordo che ho
risolto semplicemente disabilitando gli interrupt durante l'invio (non
mi comportava problemi nel programma)
comunque poi non ho piu' avuto tempo di fare verifiche.
Non mi ricordo su che PIC tempo fa (mi sembra sul 16F63) ricordo che
lessi le differenze tra la versione normale e la successiva versione
A.
Una delle differenze era che il PIC, con una certa frequenza di clock,
aveva problemi con il modulo seriale, ma questo solo per un
determinato baud rate.
Non vorrei che per il 628 ci fosse qualche problema simile.
In ogni caso... la differenza di comportamento tra l'oscillatore
ceramico e il quarzo... sembra anche a me moooolto strana.