Autor Tema: Programar la USART de un PIC18 con CCS  (Leído 2659 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado makumba5555

  • PIC10
  • *
  • Mensajes: 6
Programar la USART de un PIC18 con CCS
« 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

Desconectado narcosystem

  • PIC10
  • *
  • Mensajes: 32
RE: Programar la USART de un PIC18 con CCS
« Respuesta #1 en: 09 de Junio de 2004, 13:02:00 »
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

Desconectado kruskal

  • PIC16
  • ***
  • Mensajes: 108
RE: Programar la USART de un PIC18 con CCS
« Respuesta #2 en: 09 de Junio de 2004, 19:23:00 »
Tb si deseas pudes utilizar el sn75176 para realizar el cambio de estandares en forma externa al micro e implementar un red 485.

Salud2

Desconectado makumba5555

  • PIC10
  • *
  • Mensajes: 6
RE: Programar la USART de un PIC18 con CCS
« Respuesta #3 en: 10 de Junio de 2004, 03:36:00 »
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

Desconectado narcosystem

  • PIC10
  • *
  • Mensajes: 32
RE: Programar la USART de un PIC18 con CCS
« Respuesta #4 en: 10 de Junio de 2004, 10:33:00 »
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.

Desconectado pikman

  • Moderador Local
  • PIC24F
  • *****
  • Mensajes: 679
RE: Programar la USART de un PIC18 con CCS
« Respuesta #5 en: 10 de Junio de 2004, 13:21:00 »
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
saludos
PikMan

Desconectado fechubati

  • PIC10
  • *
  • Mensajes: 1
RE: Programar la USART de un PIC18 con CCS
« Respuesta #6 en: 28 de Noviembre de 2005, 14:13:00 »
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"Giño;
fprintf (PORT2, "Chau Viejo"Giño;

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"Giño;
fprintf (PORT2, "Chau Viejo"Giño;

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


 

anything