TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: fco1306 en 31 de Diciembre de 2011, 10:13:21

Título: Problema con red rs485
Publicado por: fco1306 en 31 de Diciembre de 2011, 10:13:21
Parece que la comunicación entre pics no es lo mío.Hace algún tiempo intenté comunicar en pic simulator mediante serie dos pics y no lo conseguí. A partir de "un relé en la lejanía" estoy intentando comunicar dos 16f628a mediante rs485, pero tampoco lo consigo. He mirado y vuelto a mirar la electrónica,el código y no consigo hacerlo funcionar. Lo último que hago es pedir ayuda, no sé por donde seguir.
El proyecto es el siguiente: con una red rs485 comunicar varios 16f628a. Desde un panel de control , con un botón transmito a otro pic 16f628a que pone en alto un pin y hace mover un servo conectado a un 12f629. Cuando el servo se mueve ,se transmite al tablero para apagar un led y encender otro. Dejo la simulación y los códigos. La simulación funciona, pero en la realidad no hace nada.
Un saludo
Título: Re: Problema con red rs485
Publicado por: MLO__ en 31 de Diciembre de 2011, 10:46:46
Hola.

Veo que usas el oscilador interno en los dos pics y eso no es recomendable cuando usas algún tipo de comunicación, además que el baud rate esta muy alto. No he podido abrir la simulación (creo que mi versión del ISIS ya es muy vieja).

Sería bueno un esquemático del proyecto, porque si la simulación funciona, debería funcionar en físico.

Saludos
Título: Re: Problema con red rs485
Publicado por: fco1306 en 31 de Diciembre de 2011, 11:05:34
Muchas gracias por la ayuda.
Marchando esquemático.
Voy a probar a bajar el baud rate a ver que pasa.
A continuación probaré con oscilador de 4Mz.
Título: Re: Problema con red rs485
Publicado por: fco1306 en 31 de Diciembre de 2011, 15:31:06
Nada,que la comunicación entre pics no es lo mío.
He bajado el baud rate a 1200 y puesto un oscilador externo de 4mz y condensador de 33pf, otro no tengo. En fuses XT.
Y nada, sigue sin funcionar.En teoría si funciona en simulación debería funcionar, supngo que será cuestión de electrónica,pero no encuentro el fallo.¿Alguna idea más? ¿Sabeis de algún ejemplo con pcb incluida que funcione?
Una duda, cuando con el polímetro compruebo la continuidad entre la línea rs485, entre los terminales A y B, me marca continuidad. ¿Es correcto?. Estoy utilizando una fuente de ordenador y cuando compruebo continuidad en la salida de la fuente existe.¿es correcto, no?
Título: Re: Problema con red rs485
Publicado por: Tec_Claudio_Perez en 04 de Enero de 2012, 14:08:33
Hola que tal,
Está bastante interesante tu circuito, con muchos micros y posibles fuentes de error. Basado en que en el simulador te funciona, deberías probar primero la capa física del enlace RS485. Sacando los micros 16F628A prueba poner la linea TX(RB2) y DE(RB5) del primero a 5V, esto va al primer MAX487, luego al segundo y deberías tener 5V en el RX del segundo 16F628A, luego pones TX a 0V y verificas que te salga un 0 en el segundo pic. Luego repites lo mismo desde el segundo 16F628A. Con esto por lo menos sabrías que los drivers te funcionan. Con los 75176 me pasaba seguido que se quemaban por las descargas electrostáticas, por lo que al final usaba una pulsera a tierra para manipularlos.
Una vez verificado el enlace físico, lo segundo que probaría seria que los micros estén enviando comandos. En el primer pic bajaría la velocidad a 1200 bits por segundo para poder ver mejor los parpadeos de un led con su resistencia que pondríamos en la pata RX del segundo PIC. Este led lo deberías conectar como drenador hacia el MAX487 y con una resistencia grande, digamos de 1K a 5V. Esto para no exigirle corriente al driver. Al enviar un comando el primer pic deberías ver parpadear este led.
Este mismo procedimiento lo deberías hacer en el driver del primer pic para poder monitorear las respuestas del segundo pic.
Bueno espero te ayude, una vez andando todo, vuelves a tu velocidad de transmisión normal.
Saludos y espero encuentres pronto tu problema.

Claudio Pérez
Instituto Tecnológico de Jujuy
www.itjujuy.com.ar
Título: Re: Problema con red rs485
Publicado por: fco1306 en 22 de Agosto de 2013, 17:53:59
He vuelto a retomar el proyecto de comunicación con red rs485. Tengo un par de módulos que intento comunicar y sigue sin funcionar. La simulación funciona.
Estoy simulando la comunicación sin micros, para ver si la electrónica funciona ¿sería algo así?
El led se mantiene encendido y cuando se pulsa el botón se apaga.
Un saludo
Título: Re: Problema con red rs485
Publicado por: don_shaggy en 13 de Mayo de 2014, 02:57:57
Hola todos... la verdad soy nuevo en el foro y aun no aprendo a crear nuevos temas así que usare este ya que es afin con mi problema.

Estoy haciendo una red RS-485 donde pretendo comunicar 2 PIC a un programa en Labview en el computador, ya logre hacer el programa en labview y funciona muy bien, igualmente ya logre comunicar cada uno de los pic por separado con el PC, de tal manera que recibe y envían información maravillosamente del PC y hacia el PC.

El problema se presenta cuando trato de conectar los 2 módulos MAX485 (pin A de uno con el pin A del otro y el pin B de uno con el pin B del otro), en ese momento dejan de funcionar, no mandan respuesta ninguno de los 2 pero claramente labview si les manda información, pero estos no responden.

Si elimino el cable de conexionar entre los dos MAX485, inmediatamente inician a trasmitir el PIC donde donde quedo conectado el cable datos que va al PC, asi mismo retiro el cable de ese MAX y lo pongo en el otro y su transmisión inicia también sin problema.

Tengo una resistencia de 120 ohm entre las patillas A y B de cada max485 y una resistencia mas del mismo valor en el adaptador de RS485 a USB que es el que combierte de 485 a USB con protocolo CDC lo que simula una conexion serial en el PC.

Los dos PIC estan montados en la misma proto y como les digo, cada uno funciona por separado pero deja de funcionar cuando pongo en paralelo los MAX.

Por favor su ayuda urgente ya que llevo mucho tiempo y esfuerzo invertido en esto y estoy casi rendido. :shock:
Título: Re: Problema con red rs485
Publicado por: stk500 en 13 de Mayo de 2014, 03:45:05
Hola dom_shaggy, y Bienvenido a nuestros Foro TODOPIC,
para poner un mensaje nuevo en el foro ,primero saber que lenguaje de programacion usas, si es problema de componente, en el foro Tecnico, y si es pregunta que no va ni con lo uno ni lo otro, en el foro OFF TOPIC, si tiene dudas arriba en la pagina principal FUNCIONAMIENTOS DEL FORO TODOPIC ahi te explica todos.
bien respecto a tu problema, puede ser varias, mejor seria si pusiera el codigo y un esquema de tus projectos asi te pueden ayudar mas gente con mas experiencia.
habia que ver como conmuta el MAX485 y si usas interrupciones para activar los Modos (RX-TX).
el Protoboard puede dar problema con el cristal, si lo usa externo y si es internos ahi puede ser el problema, otros problema puede ser la alimentacion de los micros.
ante de poner un mensaje te aconsejo que use el Buscador del foro respecto a RS485 o cualquier otros dudas y si encuentra tus problema entonce escribir un nuevo mensaje.
Saludos

Título: Re: Problema con red rs485
Publicado por: don_shaggy en 13 de Mayo de 2014, 18:18:28
Hola dom_shaggy, y Bienvenido a nuestros Foro TODOPIC,
para poner un mensaje nuevo en el foro ,primero saber que lenguaje de programacion usas, si es problema de componente, en el foro Tecnico, y si es pregunta que no va ni con lo uno ni lo otro, en el foro OFF TOPIC, si tiene dudas arriba en la pagina principal FUNCIONAMIENTOS DEL FORO TODOPIC ahi te explica todos.
bien respecto a tu problema, puede ser varias, mejor seria si pusiera el codigo y un esquema de tus projectos asi te pueden ayudar mas gente con mas experiencia.
habia que ver como conmuta el MAX485 y si usas interrupciones para activar los Modos (RX-TX).
el Protoboard puede dar problema con el cristal, si lo usa externo y si es internos ahi puede ser el problema, otros problema puede ser la alimentacion de los micros.
ante de poner un mensaje te aconsejo que use el Buscador del foro respecto a RS485 o cualquier otros dudas y si encuentra tus problema entonce escribir un nuevo mensaje.
Saludos



Hola, gracias por tu respuesta, creo que por ahora seguiré en este mismo post puesto que es afín con mi problema y posiblemente le sirva a quien lo inicio.

Adjunto el esquemático de proteus, no se si haga falta unas fotos del montaje físico.
El programa fue realizado en el programa PIC C y lo que hace es que cuando reciba el carácter indicado, toma el dato del puerto B y lo envía a labview, esto es un numero y los dos pic hacen lo mismo.

Como les mencione antes, los dos PIC están montados en la misma porto con la misma configuración y cristal (Cada uno con un cristal de 4MHz) y al PC se conectan con un adaptador de RS485 a USB con protocolo CDC el cual tiene una resistencia de 120 ohm en los conectores A y B(esto no se evidencia en el esquemático adjunto.), cada pic al ser conectado por aparte funciona muy bien pero al unir los MAX485 por los pines A y B, estos dejan de funcionar y ya no transmiten.

A continuación el programa.

#include <16F876a.h>
#FUSES NOWDT, XT, NOPUT, NOPROTECT, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG, WDT
#use delay(clock=4M)
#USE rs232(baud=9600, xmit= pin_c6, rcv=pin_c7, bits=8, parity=E)
char rx;
#int_rda

void main()
{
   set_tris_b(0xFF);
   set_tris_a(0x00);
   setup_wdt(WDT_36MS);
   int count;
   rx='z';

while(TRUE)
{
   if (kbhit())
   {
      output_low(pin_c0);
      restart_wdt();
      rx=getch();
   }
   if (rx =='A')
    {
      output_high(pin_c0);
      restart_wdt();
      count=input_b();
      printf("%d",count);
      delay_ms (10);
      output_low(pin_c0);
      rx='z';
      restart_wdt();
    }
   }


Aclaro que me vi obligado a activar el WDT por que tras la segunda o tercera lectura de puerto con Getch() el pic se bloqueaba y dejaba de funcionar, le hice de todo para remediar esto y al final solo pude activar el WDT con lo que funciona perfectamente.

Son 2 pic con el mismo programa, el 16F876a y un 16F873a, uno tiene la letra A como carácter de inicio y el otro actúa cuando recibe la letra B, es su identificación en la red.

Estoy algo desesperado con este proyecto ya que siempre cuando creo que ya queda me sale algo, por favor ayúdenme... se los agradezco.
Título: Re: Problema con red rs485
Publicado por: MGLSOFT en 13 de Mayo de 2014, 18:28:45
Estas en problemas, el puerto contra el PC debería llevar el max232 y el max485 para hacer bien la conversión.
Título: Re: Problema con red rs485
Publicado por: don_shaggy en 13 de Mayo de 2014, 19:07:06
Estas en problemas, el puerto contra el PC debería llevar el max232 y el max485 para hacer bien la conversión.

hola, gracias por tu respuesta pero no te fijes en el puerto que esta en el esquemático del plano, que pena que no aclare bien ese detalle.

Realmente el max485 se comunica con un adaptador que recibe este protocolo por su entrada y lo transmite hacia el PC vía USB, es una conexión USB con protocolo CDC lo cual crea en el PC un puerto serie virtual.

De este modo el acople este completo y entre PC y circuito no haría falta nada para que funcione según entiendo.

Creo que el problema esta en el circuito de la proto, me falta alguna resistencia de polarización o algo así o tengo problema de interferencia de algun tipo y no se como remediarlo, adjunto una foto del circuito físico, el cable trenzado verde que se ve es con el que uno los dos pic, espero esto les pueda servir para hacerse una mejor idea de como esta el circuito y así puedan seguir colaborandome.

Gracias.
Título: Re: Problema con red rs485
Publicado por: MGLSOFT en 14 de Mayo de 2014, 00:48:21
El PIC del medio no debería tener resistencia de 120 Ohm, porque solo debe haber una en cada extremo de la linea, o sea en los extremos mas alejados entre si.
Título: Re: Problema con red rs485
Publicado por: RedPic en 14 de Mayo de 2014, 04:15:50
El PIC del medio no debería tener resistencia de 120 Ohm, porque solo debe haber una en cada extremo de la linea, o sea en los extremos mas alejados entre si.

Y no solo eso. Después de muchos años gestionando redes RS-485 he llegado a la conclusión práctica de que las resistencias-fin-de-linea de 120 Homs sólo las coloco cuando hacen falta.

Quiero decir que inicialmente no coloco ninguna, miro cómo se produce la transmisión-recepción entre los distintos elementos de la red y si ésta es correcta no pongo resistencia alguna.

Si tengo ecos o recibo basura pongo una resistencia de 120 Ohms en uno sólo de los extremos, normalmente en el extremo opuesto al del elemento que sirve de MASTER, si continúa la recepción de ecos o basura coloco la del otro extremo ...

... y si continúa igual entonces me pongo a buscar errores en la topología de la red: que no haya "T" con el tramo descendiente demasiado largo, que no haya ninguna configuración en estrella, que en ningún equipo de la red haya intercambiado entre sí los hilos A y B, que no sea un equipo en concreto quien está interfiriendo desconectando uno a uno los mismos hasta ver si alguno de ellos es el malo de la película ... y que Dios me coja confesado si no detecto por donde se produce el error.
Título: Re: Problema con red rs485
Publicado por: alperez en 14 de Mayo de 2014, 04:31:17
Esas pull-up en el pin DE...

Yo tengo varios dispositivos en un bus con el max487 y funcionan bien, y no tengo esa pull-up y nada de resetear el wdt.

La resistencias pueden ser necesarias si la longitud del bus es muy elevada o si hay muchos elementos o si quieres transmitir a mucha velocidad.
Título: Re: Problema con red rs485
Publicado por: don_shaggy en 14 de Mayo de 2014, 11:46:39
Esas pull-up en el pin DE...

Yo tengo varios dispositivos en un bus con el max487 y funcionan bien, y no tengo esa pull-up y nada de resetear el wdt.

La resistencias pueden ser necesarias si la longitud del bus es muy elevada o si hay muchos elementos o si quieres transmitir a mucha velocidad.

Hola muchachos, le quite las resistencias de 120 ohm y deje las de los extremos y no funciono, asi mismo las removi todas y tampoco funciono... en ambos casos la comunicación de cada pic por separado si seguía funcionando.

Una pregunta... se supone que el MAX485 hace todo lo necesario para transmitir el dato en ese protocolo, verdad?? un profesor me decía que no y que tenia que mandar el dato desde el pic cumpliendo ciertos protocolos del max485 para que este los enviara y pudiera así compartir cableado con otros módulos pero la verdad no me convenció mucho... lo que entiendo es que el MAX recibe RS232 y el  hace lo pertinente para comunicarse via RS485 sin que se tenga que hacer nada mas.

mas tarde intentare lo de las pull-up del pin DE que menciona alperez y les cuento... por ahora sigo al tanto de este foro para intentar cualquier cosa que se les ocurra, gracias de ante mano.
Título: Re: Problema con red rs485
Publicado por: MGLSOFT en 14 de Mayo de 2014, 14:21:16
Debes dejar de manejar el enable por programa y dejar que lo haga desde el puerto.
Lee bien en Use_rs232() como habilitar el pin enable del 485...
Creo que por ahi viene la gansa...
Título: Re: Problema con red rs485
Publicado por: don_shaggy en 15 de Mayo de 2014, 14:39:25
Debes dejar de manejar el enable por programa y dejar que lo haga desde el puerto.
Lee bien en Use_rs232() como habilitar el pin enable del 485...
Creo que por ahi viene la gansa...
Hola todos, MGLSOFT te cuento que hice lo del pin enable, eso represento una buena mejora de performance para mi programa, sin embargo no genero efecto sobre el problema que he venido exponiendo, los módulos independientes se comunican pero cuando los uno, no se comunican.

también intente cambiando el cristal de 4M a 20M y el resultado fue peor, ni siquiera se comunicaban de forma individual, les vole las resistencias de 120 ohm de la linea de transmisión y las que están entre los pines A y B de cada MAX485 y nada, se comunican pero no al unirlos.

Leí algo en internet, donde decía que un error muy común era unir los módulos directamente por 2 cables, esto genera mucho EMI o algo si (Interferencia Electromagnética), justamente lo que estoy haciendo es eso... los conecto entre si con un cable trenzado directamente. el problema es que la pagina no dice como deben conectarse de forma correcta y a demás, un circuito tan pequeño no creo que se vea afectado por tal magnitud de EMI y menos cuando el cable que los conecta mide escasos 5 cm a lo mucho.

También le cambie bit de 8 a 7 y el resultado es el mismo, solo me funciona con paridad par, intente hacerlo con paridad ninguna y no me funciono.

En este momento (15/05/2014 a las 12:02 del medio dia) esta cargando un vídeo donde explico mas detalladamente el funcionamiento del sistema, el link es el siguiente pero puede ser visto hasta dentro de una hora, se me corto antes de tiempo la grabación pero alcanzo a mostrar lo que quería mostrarles, por favor vean en link y me comentan... de preferencia manejemos los comentarios en este foro y no en youtube para no tener que chequear dos lugares.

El link es el siguiente.
Título: Re: Problema con red rs485
Publicado por: MGLSOFT en 15 de Mayo de 2014, 14:47:57
Aun no se cargo...
Título: Re: Problema con red rs485
Publicado por: don_shaggy en 15 de Mayo de 2014, 14:52:48
Aun no se cargo...
si, ya se cargo jejeje verifica por favor.
Título: Re: Problema con red rs485
Publicado por: MGLSOFT en 15 de Mayo de 2014, 15:04:27
Porque no pones el código que tienes en cada PIC ?

Si es posible usa Geshi > C para ponerlo, así se puede leer mejor...
Título: Re: Problema con red rs485
Publicado por: don_shaggy en 15 de Mayo de 2014, 15:20:20
Porque no pones el código que tienes en cada PIC ?

Si es posible usa Geshi > C para ponerlo, así se puede leer mejor...

Código: CSS
  1. #include <16F876a.h>
  2. #FUSES NOWDT, XT, NOPUT, NOPROTECT, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG, WDT
  3. #use delay(clock=4M)
  4. #USE rs232(baud=9600, xmit= pin_c6, rcv=pin_c7, bits=7, parity=E, enable=pin_c0)
  5. char rx;
  6. #int_rda

Hola, el código es este, lo había puesto mas arriba pero igual aquí lo refresco, ambos tienen el mismo programa, la diferencia es el PIC y el carácter de inicio que para este es A y para el otro PIC es una B.

Código: CSS
  1. void main()
  2. {
  3.    set_tris_b(0xFF);
  4.    set_tris_a(0x00);
  5.    setup_wdt(WDT_36MS);
  6.    int count;
  7.    rx='z';
  8.  
  9. while(TRUE)
  10. {
  11.    if (kbhit())
  12.    {
  13.       restart_wdt();
  14.       rx=getch();
  15.    }
  16.    if (rx =='A')
  17.     {
  18.       restart_wdt();
  19.       count=input_b();
  20.       printf("%d",count);
  21.       delay_ms (10);
  22.       output_low(pin_c0);
  23.       rx='z';
  24.       restart_wdt();
  25.     }
  26.    }
  27. }
Título: Re: Problema con red rs485
Publicado por: RedPic en 15 de Mayo de 2014, 16:46:16
¿El #INT_RDA está así, sólo, sin una función a continuación que atienda la interrupción? ¿Pero después lees la USART desde el Main()? ¿No da error o se queja el CCS al compilar? Eso puede ser fuente de problemas, seguro.  :shock:

Título: Re: Problema con red rs485
Publicado por: MGLSOFT en 15 de Mayo de 2014, 16:56:28
Tiene razon Diego, ese #int_rda le dice al compilador que arranca el codigo de la interrupcion por puerto serie.
Sacala o comenta esa linea y es muy posible se solucione.

Asi deberia quedarte:

Código: C
  1. #include <16F876a.h>
  2. #FUSES NOWDT, XT, NOPUT, NOPROTECT, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG, WDT
  3. #use delay(clock=4M)
  4. #USE rs232(baud=9600, xmit= pin_c6, rcv=pin_c7, bits=7, parity=E, enable=pin_c0)
  5.  
  6. char rx;
  7.  
  8. //#int_rda
  9.  
  10.  
  11.  
  12. void main()
  13. {
  14.    set_tris_b(0xFF);
  15.    set_tris_a(0x00);
  16.    setup_wdt(WDT_36MS);
  17.    int count;
  18.    rx='z';
  19.  
  20. while(TRUE)
  21. {
  22.    if (kbhit())
  23.    {
  24.       restart_wdt();
  25.       rx=getch();
  26.    }
  27.    if (rx =='A')
  28.     {
  29.       restart_wdt();
  30.       count=input_b();
  31.       printf("%d",count);
  32.       delay_ms (10);
  33.     //  output_low(pin_c0);  // no es necesario, se encarga de esto el pin enable de #use_rs232
  34.       rx='z';
  35.       restart_wdt();
  36.     }
  37.    }
  38. }
Título: Re: Problema con red rs485
Publicado por: don_shaggy en 15 de Mayo de 2014, 17:22:25
Gracias a los dos, ya hice los cambios, ese #INI_RDA lo tenia cuando intente hacer el proyecto con interrupciones pero no me fue bien asi que borre eso y se me quedo ese, nunca me genero problemas en la compilacion, sin embargo es evidente que se trata de un error como ustedes me lo han echo ver.

El problema mejoro pero el problema persiste, me sigue pasando lo mismo, los dos pic por separado se comunican con el PC pero al unirlos ya no hacen comunicacion... no tengo claro si puede ser un problema del montaje electrónico o algo de la programación.

Este es el nuevo código después de las correcciones, sigue funcionando como se ve en el vídeo que monte en youtube... esto debería ser un proyecto muy sencillo, me da coraje que se complique tanto pero pues bueno, supongo que eso es la electrónica hermosa aunque a ratos incomprensible... sigo buscando solución y pendiente de sus comentarios.  :? :?

#include <16F873a.h>
#FUSES NOWDT, XT, NOPUT, NOPROTECT, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG, WDT
#use delay(clock=4000000)
#USE rs232(baud=9600, xmit= pin_c6, rcv=pin_c7, bits=7, parity=E, enable=pin_c0)
char rx;

void main()
{
   set_tris_b(0xFF);
   set_tris_a(0x00);
   setup_wdt(WDT_36MS);
   int count;
   rx='z';

while(TRUE)
{
   if (kbhit())
   {
      restart_wdt();
      rx=getch();
   }
   if (rx =='A')
    {
      restart_wdt();
      count=input_b();
      printf("%d",count);
      delay_ms (10);
      rx='z';
      restart_wdt();
    }
   }
Título: Re: Problema con red rs485
Publicado por: alperez en 15 de Mayo de 2014, 17:58:42
¿Me ha parecido ver un par de resistencias en el bus, o es que no veo bien?
Título: Re: Problema con red rs485
Publicado por: don_shaggy en 15 de Mayo de 2014, 19:18:02
¿Me ha parecido ver un par de resistencias en el bus, o es que no veo bien?
Pin 6 del max485 a vcc con una resistencia de 680 ohm y pin 7 del max485 a gnd con otra resistencia del mismo valor, lo encontré en internet cuando recién empezaba a montar el circuito... te refieres a esas?
Título: Re: Problema con red rs485
Publicado por: alperez en 16 de Mayo de 2014, 15:13:04
Pin 6 del max485 a vcc con una resistencia de 680 ohm y pin 7 del max485 a gnd con otra resistencia del mismo valor, lo encontré en internet cuando recién empezaba a montar el circuito... te refieres a esas?

Los pines 6 y 7 son A y B respectivamente.
Vcc es el pin 8 y GND es el pin 5.

En el datasheet no veo esas resistencias, prueba primero a conectarlo como dice el fabricante, una vez que funcione haz las pruebas que te den la gana.


http://datasheets.maximintegrated.com/en/ds/MAX1487-MAX491.pdf
Título: Re:Problema con red rs485
Publicado por: dago2000 en 16 de Marzo de 2020, 11:11:45
Estimados lectores si funciona el sistema de rs485 lo que pasa es que el pic que utilizan no tinen intermamente un max232 y es que por eso deberien colocarle un max232 para tener el TX y RX ya que este funciona en NOINVERT si en caso que no tuvieran un max232 cambien la linea de comunicacion en la declaracion del #use rs232(baud=9600,xmit=PIN_B2,rcv=PIN_B1, INVERT)