TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: makumba5555 en 09 de Junio de 2004, 06:02:00
-
Estoy haciendo un trabajo con un PIC18F8720. Tengo que realizar una comunicación con un rs232 y un rs485. El pic que he mencionado tiene dos USART por lo que había pensado utilizar una para cada capa física.
Se puede programar con el CCS?
Se que se puede programar para comunicarte con un rs232 pero con un rs485???
En caso contrario como podría hacerlo?
un saludo
-
El CCS permite que uses la libreria RS232 para comunicaciones 485 solo tienes que poner en la directiva que vas a utilizar un pin I/O para habilitar la linea de transmision/recepcion del adaptador de niveles 485, y por supuesto conectar este pin a la lineas puenteadas, por ejemplo, RE-DE del adaptador.
La directiva se usa asi:
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7,ENABLE=PIN_E0)
siendo en este caso E0 el pin usado para ello.
Saludos
-
Tb si deseas pudes utilizar el sn75176 para realizar el cambio de estandares en forma externa al micro e implementar un red 485.
Salud2
-
Genial, la verdad es que había pensado algo así. Peo la duda que me surge es a la hora de programar. Tengo que programar las dos USART que tiene el micro. Por ej. así:
#USE DELAY(clock = 4000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
#USE DELAY(clock = 4000000)
#use rs232(baud=9600, xmit=PIN_G1, rcv=PIN_G2, enable=PIN_E0)
el compilador es capaz de diferenciar que es para las dos USART o pensará que es un cambio a la configuración de la primera USART.
un saludo
-
En eso no te puedo ayudar porque no he trabajado con pics que tuveran 2 usart"s, pero me interesa mucho asi que si lo consigues postea la forma de hacerlo, por favor.
-
Bueno, si puedes implementar dos USART, no se va a interpretar como si fuese un cambio de configuracion inclusive puedes agragar un stream para diferenciarlos, lo que si si usas interrupciones deberas tener en cuenta que solo generara la interrupcion el que corresponda al Hardware de micro, el otro sera generado por software, y bueno si declaras como rx por ejemplo RB0 ( no se si corrsponde en tu micro por lo menos en el 18F452 si ), podras aprovecharte de la interrupcion de este pin para saber que emplezo a entrar un dato por el USART por softwar, de cualquier manera yo en experimento use el de harware para el 485 y el otro para la PC, pues la PC oficia como un esclavo, pues solo transmite cuando el micro se lo pide.
Vale aclarar que esto demandara rom del sistema, pero funciona, puedes ver la pagina 58 y 59 del manual de CCS para configuar el puerto y ademas en la pagina 205 un ejemplo con el titulo How can I use two or more RS-232 ports on one PIC®?, que responde a este tema.
saludos
PIKMAN
-
Hola. Tengo el mismo problema que vos. Yo estoy usando el PIC 18F8520 y quiero usar las 2 USART que tiene por HARD. Si incluyo el siguiente USE:
#use delay(clock=20000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8,stream=PORT1)
#use rs232(baud=9600,parity=N,xmit=PIN_G1,rcv=PIN_G2,bits=8,stream=PORT2)
y hago la siguiente rutina:
fprintf (PORT1, "Hola Viejo"
;
fprintf (PORT2, "Chau Viejo"
;
solo logro ver la impresión por el PORT1, la del PORT2 no se ve.
Pero si ahora agrego una USART por soft como ser:
#use delay(clock=20000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8,stream=PORT1)
#use rs232(baud=9600,parity=N,xmit=PIN_G3,rcv=PIN_G4,bits=8,stream=PORT2)
y hago la siguiente rutina:
fprintf (PORT1, "Hola Viejo"
;
fprintf (PORT2, "Chau Viejo"
;
El programa funciona correctamente.
Pero mi problema es que la USART por Soft no me va a interrumpir cuando llegue un dato. Y necesito que me interrumpa para actuar en consecuencia. Si lograste resolver el problema para poder usar las 2 USART que vienen por HARD me seria de gran ayuda tu respuesta.
Gracias.....Federico