Newsgroup: it.hobby.elettronica.digitale
Titolo: far comunicare 2 pic tra di loro

nel caso che il primo pic trasmetta della variabili al secondo pic quale 
metodo č meglio usare?l'usart,la seriale software o quale altro metodo?con 
la seriale software ho notato che il pic ricevente si ferma finchč non 
riceve un nuovo byte,ma a me serve che l'esecuzione del programma sia 
continuo anche se non riceve nuove variabili,come posso fare? 

 la seriale software ho notato che il pic ricevente si ferma finchè non 


 la seriale software ho notato che il pic ricevente si ferma finchè non


 ha scritto nel messaggio 
news:44861ca7$0$36929$4faf...@reader3.news.tin.it...

ciao,
non specifichi quale sia il pic che stai usando e quindi non so se hai 
l'usart hardware o se simuli con il software.
Se stai usando l'usart hardware, presente in molti pic, la cosa migliore, 
nel tuo caso e a mio parere, e' attivare l'interrupt generato direttamente 
dalla periferica usart.
In questo caso, quando vai nella funzione di interrupt, il dato e' 
disponibile per essere letto nell'apposito buffer e, al ritorno, puoi 
gestire qualsiasi altra situazione.
Sono stato un po' criptico, lo so, ma se hai capito direttamente, il tuo 
livello e' tale che puoi fare da solo... altrimenti chiedi e ti verra' dato
ciao
Angelo

"angelo" <marcoangelo.r_SPAM_@_NOSPAM_alice.it> ha scritto nel messaggio 
news:4486bb52$0$29727$4faf...@reader2.news.tin.it...

si l'usart ce l'ho perchč ne sono dotati sia il 16f628 che il 16f876,uso 
picbasic pro,dici che lo posso fare o bisogna per forza andare 
sull'assembler? 

No, però posso assicurarti che c'è un modo anche in PICBasic per
verificare se sulla porta è presente un dato. In questo modo se dopo
la verifica hai esito positivo prelevando il dato con la lettura
dell'uart il codice non si inchioda. Io però non sò dirti altro dato
che uso CCS C, quindi riposta la domanda in questi termini, qualcuno
che usa PICBasic ti risponderà.
Ale


 ha scritto nel messaggio 
news:1149688243.5...@j55g2000cwa.googlegroups.com...


Il linea di massima sì... starei più attento però sul "di tanto in
tanto" :). Ammettendo che uno dei due PIC trasmetta un byte di tanto in
tanto, il PIC che riceve deve verificare la presenza del byte con una
velocità tale per cui non rischi di perdersene qualcuno per strada
perchè in genere i PIC hanno un buffer sulla uart di ingresso di soli
due byte. Se non li prelevi in tempo rischi di non leggerli mai perchè
sovrascritti da nuovi byte entranti.
Ale


 ha scritto nel messaggio 
news:1149713497.4...@f6g2000cwb.googlegroups.com...


> Angelo
Stavolta sono sceso in particolari e dovrei essere stato un po' piu' chiaro, 
ma se hai bisogno, chiedi ancora
ciao
Angelo

Ottima spiegazione Angelo, se il nostro amico non si fa dire da
qualcuno che usa PICBasic qual'è l'istruzione che fa esattamente
quello che hai descritto tu in ASM non credo che riuscirà ad andare
avanti. Non riesco a capire se l'ha compreso o no :)
Ale


 ha scritto nel messaggio 
news:1149772573.9...@j55g2000cwa.googlegroups.com...


 tutt'altra cosa?cioè il buffer è indipendente dal programma in esecuzione?
La scrittura nel buffer di ricezione è trasparente alla CPU. Non lo è 
invece la lettura. Ciò significa che quandro andrai a leggere il byte 
ricevuto per memorizzarlo in una variabile dovrai impegnare il 
processore per i cicli necessari.
Ciao,
Marco / iw2nzm

 Ale
Trattandosi di una periferica dedicata, ha anche un buffer dedicato, in 
questo caso 1 byte; in questo byte viene immagazzinato il carattere 
ricevuto.
Poiche' fai il polling e non usi l'interrupt, e' compito tuo, o meglio del 
tuo programma, far si che quando un carattere e' disponibile, sia elaborato 
immediatamente prima che ne possa arrivare un altro... ma a te questo non 
interessa dato che se perdi un carattere, hai disponibile il successivo, 
piu' aggiornato e quindi ugualmente valido per il tuo programma.
ciao
Angelo

Sì ok... ma tu in PICBasic non hai probabilmente bisongo di testare un
bit in maniera esplicita,   in CCS C  esiste una funzione di "alto
livello" che lo fa. Suppongo che esista anche in PICBasic.
Ale
cecenco! ha scritto:


 ha scritto nel messaggio 
news:1149777607.5...@h76g2000cwa.googlegroups.com...


Ok, ma mi sembrava d'aver letto che il tuo problema era anche il blocco
del codice all'istruzione di lettura della seriale. Per curiosità mi
sono scaricato il manuale di PICBasic e:
SERIN
Pin,Mode,{Timeout,Label,}{[Qual...],}{Item...}
dove...
"An optional Timeout and Label may be included to allow the program
to continue if a character is not received within a certain amount of
time.
Timeout is specified in 1 millisecond units."
inoltre...
"If the serial input pin stays in the idle state during the Timeout
time, the program will exit the SERIN command and jump to Label."
direi che il problema lo risolvi così.
Ale
P.S. il manuale non è un optional del compilatore!
cecenco! ha scritto:


 ha scritto nel messaggio 
news:1149779006.4...@i40g2000cwc.googlegroups.com...


 trovasse niente...
 > temperatura...

 ha scritto nel messaggio 
news:1149782928.3...@i40g2000cwc.googlegroups.com...


Io intendevo l'uart hardware con SERIN.
Ale
cecenco! ha scritto:
