Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Para acilitarnos la programaci!n vamos a usar una li"rer#a llamada $lib_rf2gh4_10.h$. Se enca trav,s del SPI por hard-are del PIC. Esta li"rer#a pertenece a la empresa Bizintek Innova, S .Open Source. por lo que se puede distri"uir y modi icar "a/o los t,rminos de la licencia !". E Personalmente llegu, a ella gracias a una estupenda -e" $#$u% ha& apunte'$0 donde se hace un ampliar in ormaci!n desde el oro de esa misma -e" haciendo clic a$u%.
5s adelante vers un enlace de descarga de todo el proyecto0 donde he modi icado la li"rer#a p +1&23170 tal como ves en el esquema0 aunque este e/ercicio es totalmente compati"le con cualq conservan las mismas direcciones.
4enemos cinco patillas para controlar el SPI del n%&'()*+0 ms una de interrupci!n qu de orma inmediata. El emisor enviar datos y el receptor los procesar. Esto quiere d
que nos interesa es ver c!mo uncionan exclusivamente en modo emisor y modo recep comunicaciones "idireccionales0 modi icando los programas seg8n tus necesidades.
Como vamos a controlar el S(I del 1)*+,) por har-.are con el n/*24L010 has de sa lugar y son6
Existen dos patillas del SPI que s# puedes modi icar de lugar y son 01 y 0S!. Esas patil 4odo cam"io que hagas en el hard-are has de tenerlo presente en la li"rer#a0 pero aq la segunda secci!n (esta es la primera). 2ea3o' el c4-igo -el e3i'or5
#include <16F876A.h> #fuses NOWDT, XT, PUT, NOPROT !T, NOD "U#, NO"ROWNOUT, NO$%P, NO!PD, NOWRT #use del&'(cl)c*+,------. #include /li012f34h,11-.h/ #0'5e 6)25&+-7-8 #0'5e 6)250+-7-6 #in51e75 <)id in51R"-(.
99 s5& 2u5in& es5: 6&2& un fu5u2) si h&ces c);unic&ci)nes 99 N) 5iene efec5) en el 62)42&;& 62inci6&l, '& =ue s>l) e;
? in58 2e51B
99 @e enc&24&2A& de l& 2ece6ci>n de d&5)s. 2e51 + RF1R ! C% (.B if ( (2e51 ++ -. DD (2e51 ++ 1. . ? d) ? 2e51 + RF1R ! C% (.B E Fhile ( (2e51 ++ -. DD (2e51 ++ 1. .B E
E <)id ;&in(. ? in58 2e53B RF1CNT1 N(.B RF1!ONFC#1@PC(.B RF1!ONFC#(-7,-,-7-1.B RF1ON(.B del&'1;s(8.B se5152is1&(-0111111.B Fhile(52ue. ? RF1DATAH-I+6)25&B RF1DCR+-7-8B 2e53+RF1@ ND(.B 99 99 99 99
G&0ili5&2 in5e22u6ci>n R"-9CNT. !)nfi4u2&2 ;>dul) @PC del PC!. !)nfi4u2&2 ;>dul) RF c&n&l ' di2ecci>n de 2ece6ci>n. P&2 Ac5i<&2 el ;>dul) RF.
99 $e d&;)s un ;Ani;) de 3.8 ;ilise4und)s 6&2& =ue se 6)n4 99 T)d) el 6ue25) A c);) en52&d&s. 99 "ucle infini5). 99 !&24&;)s el d&5) en
RF1DATAH-I.
E E
adems de emitir. Si le llegara alg8n dato0 tal y como est en el programa0 lo 8nico que har#a se programa principal.
9 /*_I!8_1!9:; Ese comando ha"ilita la recepci!n de datos por interrupci!n de la %;*<I=40 per
uturos proyectos en el que s# haya recepci!n de datos.
9 /*_0O!*I
_S(I9:; Con igura el SPI entre el PIC y el n%&'()*+0 de iniendo los pines0 4%IS e in li"rer#a $lib_rf2gh4_10.h$.
9 /*_0O!*I
90740,0701:; Se re iere $0740$ al canal de comunicaci!n: este siempre ha de ser e $0701$ es la direcci!n de recepci!n. 7unque en este e/ercicio no va a reci"ir datos0 de todas orm
9 /*_O!9:; 7ctiva el m!dulo %&. >espu,s de este comando conviene que transcurra unos '.? mi
e/ercicio es ms que su iciente.
9 'et_tri'_a90b111111:; 4odo el puerto 7 lo convertimos en entradas de datos. S!lo tie 9 /*_<#8#=0>?porta; Carga lo que hay en el puerto 7 en el "u
ancho de "anda que da el n%&'()*+ tendr#as que usar los 2 "ytes disponi"les para env posi"ilidad de enviar 2 "ytes de un golpe.
9 /*_<I/?070+; Este comando le est diciendo a qu, direcci!n ha de ir la in ormaci!n que quie
(+'3 te!ricos y D' prcticos)0 pues ir al PIC que tenga con igurado como recepci!n la direcci!n
9 ret2?/*_S1!<9:; Env#a la in ormaci!n. $ret'$ nos sirve para sa"er qu, ha sucedido al intentar
(con irmaci!n de recepci!n): E+E si ha enviado pero no ha reci"ido el 7CF: y E'E si no ha podido ser poner $/*_S1!<9:;$ a secas para enviar0 pero ortodoxamente lo correcto es hacerlo tal como lo h
porque/*_<#8# y /*_<I/ no contendrn valores constantes todo el tiempo0 sino que puede vari env#o de datos.
2e51 + RF1R ! C% (.B if ( (2e51 ++ -. DD (2e51 ++ 1. . ? d) ? 6)25&+RF1DATAH-IB 2e51 + RF1R ! C% (.B E Fhile ( (2e51 ++ -. DD (2e51 E
99 l 6ue25) A c)n5end2: el <&l)2 =ue le lle4ue del 99 /2e51/ n)s di2: si h&' 2ece6ci>n si;6le, ;Jl5i6 ++ 1. .B 99 Lien52&s h&'& d&5)s 6&2& lee2, se4ui2 l
<)id ;&in(. ? se5152is1&(-0------.B 6)25&+-B RF1CNT1 N(.B RF1!ONFC#1@PC(.B RF1!ONFC#(-7,-,-7-8.B RF1ON(.B Fhile(52ue.B E
99 P2)42&;& 62inci6&l. 99 T)d) el 6ue25) A c);) s&lid&. 99 Cnici&l;en5e l) 6)ne;)s & ce2). 99 99 99 99 G&0ili5&2 in5e22u6ci>n R"-9CNT. !)nfi4u2&2 ;>dul)s @PC del PC!. !)nfi4u2&2 ;>dul) RF (c&n&l ' di2ecci>n.. Ac5i<&2 el ;>dul) RF.
99 "ucle infini5).
9 =o de"emos de con undir $ret'$ (del emisor) con $ret+$ (del receptor)0 porque en es
4ienen signi icados distintos para emitir que para reci"ir. En el receptor0 cuando vem que0 si el valor es E*E hay entrada simple de datos (una sola recepci!n0 o dicho de otra para ser le#dos): si nos da E+E signi ica que hay ms de una entrada (cada entrada es de tanda0 y no soporta ms de tres niveles0 el resto se perder#an. Cuando $ret+$ nos d, el no ha ha"ido entrada nueva de datos. En el programa0 tanto si hay entrada simple com "u er (compuesto de 2 "ytes por D niveles) queda vac#o una vez que sale d el $.hile 9 9
sea un poco ms lento que el receptor para evitar saturar al receptor y eso puede suceder cuand
9 /*_0O!*I
_S(I9:; Con igura el SPI entre el PIC y el n%&'()*+0 de iniendo los patill li"rer#a $lib_rf2gh4_10.h$ y las puedes modi icar si tu hard-are es di erente.
9 /*_0O!*I
90740,070+:; Se re iere $0740$ al canal de comunicaci!n0 este siempre ha de ser e s#. $070+$ es la direcci!n de recepci!n. %ecuerda que en el emisor pusimos6 /*_<I/?070+; co
con igurado con esa direcci!n podr reci"ir esos datos0 si no uese esa direcci!n el PIC tanto no atender#a a esos datos.
9 /*_O!9:; 7ctiva el m!dulo %&. >espu,s de este comando conviene que transcurra unos '.? mi
e/ercicio es ms que su iciente. Esas salidas son a trav,s de )E>s. %ecuerda que /#4 e resistencia a positivo para poder alimentar ese )E>: en el esquema est detallado.
receptor has de cargarlos en una varia"le o matriz (seg8n el caso) antes de que pase a recepci!n no hace alta porque en la misma recepci!n (dentro de la interrupci!n) hag
En nuestro proyecto tenemos siempre a los PICs como maestros S(I y los transceptores como esc voltios y los n%&'()*+ uncionan con un rango de D.D voltios puede ha"er una descompensaci!n d l!gico y cundo un * en una entrada del PICH Esto puede suceder en la 8nica entrada SPI que tien una resistencia a positivo de ? voltios en dicha patilla (tal como est en el esquema0 al comienzo un + l!gico al PIC lo lea como real. 4ener este simple gesto nos ahorrar muchos que"raderos de
En este proyecto vamos a usar el PIC 18F455 como emisor y el PIC 1!F8"! como receptor. Se trata #e que centrar en la !odi)icaci*n de la li+rer,a ori-inal (li+.r)2-/4.10(/( para a#aptarla al PIC 18F4550. )ecue
hagas por tu cuenta luego has #e tenerlo presente mo#i+ic,n#olo tam%i-n en la li%rer$a.
Si quieres saberlo todo sobre la librera, has de descargarte un estupendo manual que profundiza en l pa cosas que e"plico en esta secci#n es gracias al manual que puedes descargarte haciendo clic a0u,! $a librera la puedes descargar, junto a todo el pro ecto, al final de esta p%gina!
Como vamos a controlar el S(I del 1+*4AA0 por har-.are con el n/*24L010 recuerd lugar y son6
Existen dos patillas del SPI que s# puedes modi icar de lugar y son 01 y 0S!. Esas pat
en las de iniciones de pines I<I0 4%IS y la con iguraci!n de %;' como interrupci!n externa. Esto son los cam"ios6
#define #define #define #define #define #define #define #define #define #define #define #define RF1!@ RF1! @!M @DC @DO RF1CRN RF1!@1TRC@ RF1! 1TRC@ @!M1TRC@ @DC1TRC@ @DO1TRC@ RF1CRN1TRC@
7hora vamos a modi icar la li"rer#a (li+.r)2-/4.10(/( que us, en el aparta-o anterior para
PCN1!1 99 Definici>n de l)s 6ines del PC! 6&2& c)n52)l&2 el nRF3,$ PCN1!3 PCN1"1 PCN1"PCN1!7 PCN1"3 TRC@!,1 99 Definici>n de l)s 6ines TRC@ del PC!. TRC@!,3 TRC@",1 TRC@",TRC@!,7 TRC@",3
#"PT #"PT
TRC@" TRC@!
+ +
-7FQR -7FQ,
+ + +
En la parte #e la li%rer$a que con+igura la interrupci.n e/terna0 como estamos usan#o )1 y )11 para el SPI #e que el PIC 18F455 tiene tres interrupciones e/ternas0 as$ que po#emos coger la 2ltima0 es #ecir en )1&.
<)id RF1CNT1 N(. ? 99G&0ili5&2 in5e22u6ci>n e75e2n& R"3 6)2 fl&nc) de 0&T&d&. dis&0le1in5e22u65s(4l)0&l.B en&0le1in5e22u65s(in51e753.B e751in51ed4e(3, G1TO1$ .B 0i51se5(RF1CRN1TRC@.B en&0le1in5e22u65s(4l)0&l.B E
5tro #etalle que se pue#e tocar en la li%rer$a es la veloci#a# #e transmisi.n0 #on#e po#emos con+igurar 1'% >> La distancia que quieras alcanzar depender de la velocidad de transmisin. En el peor de los casos podrs 2 bps!" # en el me$or de los casos hasta %& metros (configurando a ' bps! con el n()2%L&' ms barato (e mismas que usa los -.ifis-" es decir unos 2.%/+z! si encuentra una pared" un muro o un pasillo" la se0al se 11
En la li%rer$a hay una parte que con+igura la potencia #e sali#a 8en #eci%elios90 la ganancia #e entra#a 83:;9 valores a tope0 es #ecir4 m,/ima potencia #e sali#a0 m,/ima ganancia y m,/ima veloci#a# #e trans+erencia. <ay un registro llama#o RF.#E12%0 #el cual s.lo son 2tiles los %its
El +it 03 Si se pone a 1 activas el 3:;0 es #ecir0 que ten#r,s la m,/ima ganancia 8sensi%ili#a#9. Si lo pones Los +its 1 y 23 ?en#r$amos 4 com%inaciones que van #el 8m$nima potencia #e sali#a y m$nimo consumo9 El +it 43 @eloci#a# #e tras+erencia. Puesto a 1 la tras+erencia es #e &'%ps0 y a ser$a #e 1'%ps. Aentro #e la li%rer$a0 %uscan#o un poco0 encontraremos esto4
99RF1@ TUP 99!)nfi4u2&ci>n &s6ec5)s RF. 99#&n&nci& ;:7i;& de $NA, -d"; 6)5enci& de s&lid& ' 3L06s de <el)cid&d. )u56u51l)F(RF1!@.B s6i1F2i5e(-736.B s6i1F2i5e(-7-F.B )u56u51hi4h(RF1!@.B
Es / F porque los %its al = est,n a 10 es #ecir4 11110 que miran#o los %its antes e/plica#os te con+igura po m,/ima trans+erencia por la m$nima0 es #ecir0 pasar #e &'%ps a 1'%ps0 as$ o%ten#remos la posi%ili#a# #e po signi+ica poner el %it = a cero. :os que#ar$a 1110 por tanto es ". ;s$ que s.lo hemos #e cam%iar esa parte y
99RF1@ TUP 99!)nfi4u2&ci>n &s6ec5)s RF. 99#&n&nci& ;:7i;& de $NA, -d"; 6)5enci& de s&lid& ' 1L06s de <el)cid&d. )u56u51l)F(RF1!@.B s6i1F2i5e(-736.B s6i1F2i5e(-7-7.B 99 <UUUUUUUUUUUUUUU Aqu!!! )u56u51hi4h(RF1!@.B
#include /li012f34h,11-1,88-.h/ 99 $i02e2A& ;)dific&d& 6&2& el nRF3,$-1 c)n el PC! 18F,8 #0'5e #0'5e #0'5e #0'5e #0'5e 6)25&+-7F86)250+-7F81 6)25c+-7F83 6)25d+-7F8R 6)25e+-7F8, 99 Di2ecci>n de l)s 6ue25)s A, ", !, D ' .
99 s5& 2u5in& es5: 6&2& un fu5u2) si h&ces c);unic&ci)nes 99 N) 5iene efec5) en el 62)42&;& 62inci6&l, '& =ue s>l) e 99 @e enc&24&2A& de l& 2ece6ci>n de d&5)s.
2e51 + RF1R ! C% (.B if ( (2e51 ++ -. DD (2e51 ++ 1. . ? d) ? 2e51 + RF1R ! C% (.B E Fhile ( (2e51 ++ -. DD (2e51 ++ 1. .B E
<)id ;&in(. ? RF1CNT1 N(.B RF1!ONFC#1@PC(.B RF1!ONFC#(-7,-,-7-1.B RF1ON(.B del&'1;s(8.B se5152is1&(-0-11111.B in58 c)n5+-, 2e53B
99 99 99 99
G&0ili5&2 in5e22u6ci>n R"39CNT3 en es5e PC!. !)nfi4u2&2 ;>dul) @PC del PC!. !)nfi4u2&2 ;>dul) RF c&n&l ' di2ecci>n de 2ece6ci>n de d Ac5i<&2 el ;>dul) RF.
99 DeT) RA8 c);) s&lid& 6&2& e<i5&2 6)ne2 l& 2esis5enci& de 99 Decl&2&;)s l&s <&2i&0les & u5iliV&2.
99 "ucle infini5). 99 99 99 99 99
l c)n5enid) del c)n5&d)2 l) c&24) en RF1DATAH-I 6&2& se Di2ecci>n de en<A) 6&2& el 2ece65)2. n<A& el d&5). Cnc2e;en5& el c)n5&d)2. Un& 6&us& en c&d& inc2e;en5).
B 3a con+iguraci.n #e los C+uses est, para un cristal #e 4'<z y prepara#o para po#er usar el DS10 aunque a
B 3a interrupci.n 7int.ext2 en reali#a# no llega a utilizarse0 s.lo la he puesto para +uturos proyectos en el q B 5%serva la parte que pone4 7include 8li+.r)2-/4.10.4550(/8 ; la li%rer$a le ponemos otro nom%re para
en el que s$ haya recepci.n #e #atos.
#ato0 tal y como est, en el programa0 lo 2nico que har$a ser$a vaciar el %u++er #e recepci.n0 na#a m,s> no a+ec
B RF.&91.E9$': Ese coman#o ha%ilita la recepci.n #e #atos por interrupci.n #e la )1&EI:?&0 pero como B /*_0O!*I
_S(I9:; Con igura el SPI entre el PIC y el n%&'()*+0 de iniendo los pines0 4%IS e in li"rer#a 8li+.r)2-/4.10.4550(/8.
#irecci.n #e recepci.n. ;unque en este e7ercicio no va a reci%ir #atos0 #e to#as +ormas hay que poner una #ir
B RF.;9$': ;ctiva el m.#ulo )F. Aespu-s #e este coman#o conviene que transcurra unos &.5 milisegun#o
entra#a porque no se usa0 pero lo he #e7a#o como sali#a por si se te olvi#a poner en esa patilla un
di erente a este has de sa"er que /#A 9BSS: #el PIC 18F455 0 si est como entrada y al aire ha de como en la imagen de a"a/o. =o de"e de quedar $al aire$. Creo que el compilador CCS C
como receptor act8an como $maestros$ (SPI) en am"os casos0 sin em"argo estn a ect %ecuerda (y lo repito a prop!sito) que para otro monta/e o proyecto no puede estar c
#e %an#a que #a el n)F&43 1 ten#r$as que usar los 8 %ytes #isponi%les para enviar 8y reci%ir9 in+ 8 %ytes #e un golpe aunque aqu$ s.lo usamos uno porque no necesitamos m,s.
B RF.=&RA0x08: Este coman#o le est, #icien#o a qu- #irecci.n ha #e ir la in+ormaci.n que quieras enviar
pr,cticos90 pues ir, al PIC que tenga con+igura#o como recepci.n la #irecci.n / 8.
B ret2ARF.#E9=$': Env$a la in+ormaci.n. (ret&( nos sirve para sa%er qu- ha suce#i#o al intentar enviar. S
recepci.n9> I1I si ha envia#o pero no ha reci%i#o el ;CJ> y I&I si no ha po#i#o ser envia#o 8+allo #el har#*are orto#o/amente lo correcto es hacerlo tal como lo he puesto.
#in51e75 99 Cn5e22u6ci>n R"-9CNT 6&2& el ;>dul) RF. <)id in51R"-(. ? 2e51 + RF1R ! C% (.B if ( (2e51 ++ -. DD (2e51 ++ 1. . ? d) ? d&5&+RF1DATAH-IB 99 D&5& c)n5end2: el <&l)2 =ue le lle4e del e;is)2, & 52&<Ks 6)250+d&5&B 99 $) =ue h&'& en d&5& l) 2efleT& en l)s $ Ds. &-+0-B 99 Un 52uc) 6&2& =ue R"- si2<& de in5e22u6ci>n ' RA- 6&2& 6) 2e51 + RF1R ! C% (.B E Fhile ( (2e51 ++ -. DD (2e51 ++ 1. .B 99 T&n5) si e7is5e en52&d& ;Jl5i6le ) si;6 E E <)id ;&in(. ? se5152is1&(-011111-.B se5152is10(-0-------1.B 6)250+-B RF1CNT1 N(.B RF1!ONFC#1@PC(.B RF1!ONFC#(-7,-,-7-8.B RF1ON(.B Fhile(52ue.B E 99P2)42&;& 62inci6&l. 99 RA- sus5i5u'e & R"- ' se 6)ne un $ D en RA-. 99 R"- es 6&2& l& in5e22u6ci>n, el 2es5) s)n $ Ds. 99 99 99 99 G&0ili5&2 in5e22u6ci>n R"-9CNT. !)nfi4u2&2 ;>dul)s @PC del PC!. !)nfi4u2&2 ;>dul) RF (c&n&l ' di2ecci>n.. Ac5i<&2 el ;>dul) RF.
99 "ucle infini5).
9 )a interrupci!n 6int_e7t se encargar de reci"ir los datos. 9 =o de"emos de con undir $ret'$ (del emisor) con $ret+$ (del receptor)0 porque en es
4ienen signi icados distintos para emitir que para reci"ir. En el receptor0 cuando vem que0 si el valor es E*E hay entrada simple de datos (una sola recepci!n0 o dicho de otra para ser le#dos): si nos da E+E signi ica que hay ms de una entrada (cada entrada es de tanda0 y no soporta ms de tres niveles0 el resto se perder#an. Cuando $ret+$ nos d, el no ha ha"ido entrada nueva de datos. En el programa0 tanto si hay entrada simple com "u er (compuesto de 2 "ytes por D niveles) queda vac#o una vez que sale d el $.hile 9 9
sea un poco ms lento que el receptor para evitar saturar al receptor y eso puede suceder cuand
9 /*_0O!*I
_S(I9:; Con igura el SPI entre el PIC y el n%&'()*+0 de iniendo los patill
9 /*_0O!*I
90740,070+:; Se re iere $0740$ al canal de comunicaci!n0 este siempre ha de ser e s#. $070+$ es la direcci!n de recepci!n. %ecuerda que en el emisor pusimos6 /*_<I/?070+; co
con igurado con esa direcci!n podr reci"ir esos datos0 si no uese esa direcci!n el PIC tanto no atender#a a esos datos.
9 /*_O!9:; 7ctiva el m!dulo %&. >espu,s de este comando conviene que transcurra unos '.? mi
programa0 en el que %7* tomar el valor que hu"iese ido en %;*.
en el esquema sustituyo %;* por /#0 en el PIC receptor. Jtilizo un truco de intercam"ios de
receptor has de cargarlos en una varia"le o matriz (seg8n el caso) antes de que pase a sirve para poder tratar el ;I4 * de esa varia"le para extraerlo por %7*.
En nuestro proyecto tenemos siempre a los PICs como maestros S(I y los transceptores como esc voltios y los n%&'()*+ uncionan con un rango de D.D voltios puede ha"er una descompensaci!n d l!gico y cundo un * en una entrada del PICH Esto puede suceder en la 8nica entrada SPI que tien una resistencia a positivo de ? voltios en dicha patilla (tal como est en el esquema0 al comienzo un + l!gico al PIC lo lea como real. 4ener este simple gesto nos ahorrar muchos que"raderos de
7s# lo entend# yo6 /*_S1!<9: -evuelve lo' valore'5 4eniendo presente que en realidad siempre env#as 2 "ytes a la vez aunque s!lo uses uno0 es decir0 siempre env#as un array compuesto de 2 "ytes. * KL Env#o del array realizado y recepci!n con irmada (7CF). + KL Env#o del array realizado pero sin con irmaci!n por parte del receptor (sin 7CF). Es decir0 ha ha"ido pro"lemas por parte del receptor. ' KL Env#o no realizado. &allo del hard-are0 es decir0 allo del n%&'()*+.
Cuando da *0 todo "ien. Cuando da + ! '0 ha ha"ido pro"lemas. /*_/101I219: -evuelve lo' valore'5 %ecuerda que la recepci!n es tam"i,n un array de 2 "ytes aunque s!lo uses un s!lo "yte de dicho array. * KL %ecepci!n del array correcta. + KL %ecepci!n del array correcta y hay otro array en la cola para ser le#do. (Explico ms a"a/o este detalle.) ' ! D KL =o hay recepci!n de datos. =o es err!neo0 es que no hay datos reci"idos. Cuando da 0 signi ica que se ha reci"ido un array. )o procesas o lo cargas en otro array y listo. Cuando da 1 signi ica que se ha reci"ido varios arrays0 el mximo son D arrays0 el resto se perder#a si no le da tiempo a procesarlo0 o cargarlo en una matriz aparte (para que no se pierdan)0 o meter esa in ormaci!n en varia"les aparte (tam"i,n para que no se pierda). Cuando da 2 4 C signi ica simplemente que no se han reci"ido datos. Como normalmente se usa la interrupci!n %;* para provocar la interrupci!n y posterior lectura de los datos reci"idos0 %&@%ECEIME() normalmente te dar * ! +. 4e puede dar ' ! D si no usas la interrupci!n. >e todas ormas y por si las moscas0 en el programa la parte de la interrupci!n se le dice que si %&@%ECEIME() es + ! '0 entonces cargarlo en otro array o "ien procesar esa in o ah# mismo0 en cualquier otro modo no hacer nada. Cuando hay recepci!n m8ltiple (cuando da +) hay que volver a leer el array reci"ido mientras %&@%ECEIME() sea * ! + porque te ir dando los array que estn en cola. Cay como mximo D arrays (de 2 "its) de cola. Si reci"iese ms los perder#as0 pero esto es suponiendo que no le da tiempo a leerlos. Nue suceda esto me parece extraOo. P si sucede puede ser que el emisor env#e ms rpido de lo que el receptor puede asumir0 "ien porque el PIC receptor sea ms lento0 "ien porque adems de reci"ir los datos en ese momento quieras t" procesarlos o hacerles algo y eso demore la siguiente lectura. Personalmente no me he encontrado con ese pro"lema. 4odo lo que he comentado es de memoria y espero ha"erlo contando correctamente0 y si no que me corri/an. )a in ormaci!n de este tema est en el manual y lo puedes descargar haciendo clic en el siguiente enlace6 http6<<tinyurl.com<aDQe1y-