Autor Tema: Como usar varias USARTs  (Leído 5014 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado fr4n

  • PIC12
  • **
  • Mensajes: 53
Como usar varias USARTs
« en: 27 de Abril de 2011, 06:20:51 »
Hola a todos,
Uso el PIC 18F4550 y el compilador CCS.
El PIC utilizado, solo dispone de una USART que uso para la comunicación con otro dispositivo y funciona todo OK.
Mi problema es que necesito la comunicación con un tercer dispositivo a través de otro PIN distinto del PIC.
He visto que se puede usar gracias al compilador otra usart (ésta seria por software) con solo poner la instrucción:

#use rs232(baud=xxxx,parity=N,xmit=PIN_X,rcv=PIN_Y,bits=8);

justo debajo de la de mi usart anterior, quedando así:

#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
#use rs232(baud=xxxx,parity=N,xmit=PIN_X,rcv=PIN_Y,bits=8);

Pero si usao el comando putc(c); se envian por la primera usart, como puedo hacer para enviar a través de la segunda usart?

Otra pregunta ¿puedo cambiar el baudrate de esta segunda usart simulada a 500 kbps?
En caso contrario...
¿Como puedo enviar datos en serie (un byte o más), bit a bit a través de cualquier otro pin del pic distinto a la uart y con la velocidad que necesito de 500K bits/s?

Muchas gracias a todos!
« Última modificación: 27 de Abril de 2011, 06:59:13 por fr4n »

Desconectado Diego E.

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1086
Re: Como usar varias USARTs
« Respuesta #1 en: 27 de Abril de 2011, 09:43:41 »
Hola amigo, si puedes poner varios Usart que el compilador controlará por soft-ware.

para seleccionarlos debes utilizar la directiva stream


#use rs232(baud=4800, xmit=pin_c6,rcv=pin_c7,stream=pc)
#use rs232(baud=2500, xmit=pin_a4,rcv=pin_a4,stream=mando)

debes utilizar también la directiva fputc

Para recibir:
dato_recibido = getc(pc);
dato_recibido = getc(mando);

Para enviar:
fputc(registro,pc);
fputc(registro,mando);

Saludos.


Desconectado fr4n

  • PIC12
  • **
  • Mensajes: 53
Re: Como usar varias USARTs
« Respuesta #2 en: 27 de Abril de 2011, 09:52:55 »
Muchas gracias por responder!

Cual es el baudrate maximo que se puede usar? Mi pic trabaja a 48Mhz (18F4550)
el baudrate tiene que ser de los "standars" o puede ser cualquier número dentro de los rangos maximos y minimos?
necesito un bitrate concreto y bastante altito a mi parecer (500kbits/segundo).

Saludos!

Desconectado Diego E.

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1086
Re: Como usar varias USARTs
« Respuesta #3 en: 27 de Abril de 2011, 11:15:53 »
La verdad no he probado comunicaciones mayores a 38400, en cuanto a las velocidades se puede elegir el valor, hay que tener en cuenta que el receptor esté obviamente sincronizado a la misma velocidad.

Saludos.

Desconectado fr4n

  • PIC12
  • **
  • Mensajes: 53
Re: Como usar varias USARTs
« Respuesta #4 en: 27 de Abril de 2011, 12:41:03 »
La verdad no he probado comunicaciones mayores a 38400, en cuanto a las velocidades se puede elegir el valor, hay que tener en cuenta que el receptor esté obviamente sincronizado a la misma velocidad.

Saludos.

Esa es la cosa, que mi receptor trabaja a 500 bits por cada segundo... y por eso quiero enviarle los datos a esa velocidad, para que asi "me entienda"

Saludos.

Desconectado beatAurex1

  • PIC12
  • **
  • Mensajes: 78
    • Proyectos de Ingeniera -Control-Electrónica y desarrollo embebido.
Re: Como usar varias USARTs
« Respuesta #5 en: 27 de Abril de 2011, 19:34:40 »
Revisa el datasheet del pic, en la seccion del USART viene una tabla, con las velocidades a las que puede trabajar, y tambien el error que puede haber en la velocidad, dependiendo del cristal utilizado.

Desconectado fr4n

  • PIC12
  • **
  • Mensajes: 53
Re: Como usar varias USARTs
« Respuesta #6 en: 28 de Abril de 2011, 05:47:19 »
Muchas gracias, en el datasheet pone valores como:
9.600     baudios
19.200   baudios
57.600   baudios
115.200 baudios

El de 57.600 es el más cercano, tiene distintos errores segun la configuración de ciertos parámetros, pero todos rondan de 57.000 a 62.000 de bitrate.
¿Puedo poner 50.000 baudios en lugar de 57.600? ¿o tengo que poner siempre solo esos rangos del data sheet?

Gracias!

Desconectado jukinch

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 608
Re: Como usar varias USARTs
« Respuesta #7 en: 28 de Abril de 2011, 09:18:43 »
Una duda al respecto. Esos valores son para el módulo de usart por hard o también para la librería de usart por soft?
          Saludos.
               Jukinch
"Divide las dificultades que examinas en tantas partes como sea posible para su mejor solución." -René Descartes

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Como usar varias USARTs
« Respuesta #8 en: 28 de Abril de 2011, 09:41:18 »
Muchas gracias, en el datasheet pone valores como:
9.600     baudios
19.200   baudios
57.600   baudios
115.200 baudios

El de 57.600 es el más cercano, tiene distintos errores segun la configuración de ciertos parámetros, pero todos rondan de 57.000 a 62.000 de bitrate.
¿Puedo poner 50.000 baudios en lugar de 57.600? ¿o tengo que poner siempre solo esos rangos del data sheet?

Gracias!

Podes poner el valor que te parezca, esos son estándares, ahora tienes que estudiar si logras que el error de la velocidad obtenida frente a la necesaria sea adecuado, nada mas.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado fr4n

  • PIC12
  • **
  • Mensajes: 53
Re: Como usar varias USARTs
« Respuesta #9 en: 28 de Abril de 2011, 10:27:25 »
Una duda al respecto. Esos valores son para el módulo de usart por hard o también para la librería de usart por soft?
          Saludos.
               Jukinch
En el datasheet se refiere a la usart por hardware supongo, la verdad que no viene especificado en ningun sitio, así que supongo que la usart por software debe ser igual...
Aunque ahora que lo dices la de software la genera el propio compilador de ccs y no se si soportará esas velocidades, ni el error que me generaría en caso de no ser igual que la usart por hardware :oops:

Gracias!
Muchas gracias, en el datasheet pone valores como:
9.600     baudios
19.200   baudios
57.600   baudios
115.200 baudios

El de 57.600 es el más cercano, tiene distintos errores segun la configuración de ciertos parámetros, pero todos rondan de 57.000 a 62.000 de bitrate.
¿Puedo poner 50.000 baudios en lugar de 57.600? ¿o tengo que poner siempre solo esos rangos del data sheet?

Gracias!

Podes poner el valor que te parezca, esos son estándares, ahora tienes que estudiar si logras que el error de la velocidad obtenida frente a la necesaria sea adecuado, nada mas.


Saludos!

Muchas gracias!
PD: Aunque la duda de nuestro amigo jukinch necesitaría aclararla antes supongo :oops:

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Como usar varias USARTs
« Respuesta #10 en: 28 de Abril de 2011, 12:26:17 »
Una duda al respecto. Esos valores son para el módulo de usart por hard o también para la librería de usart por soft?
          Saludos.
               Jukinch
En el datasheet se refiere a la usart por hardware supongo, la verdad que no viene especificado en ningun sitio, así que supongo que la usart por software debe ser igual...
Aunque ahora que lo dices la de software la genera el propio compilador de ccs y no se si soportará esas velocidades, ni el error que me generaría en caso de no ser igual que la usart por hardware :oops:

Gracias!

 :shock: Está más que claro que el datasheet indica las características de UART por hardware. El tema de emularlo por software es totalmente tu responsabilidad.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado fr4n

  • PIC12
  • **
  • Mensajes: 53
Re: Como usar varias USARTs
« Respuesta #11 en: 28 de Abril de 2011, 13:10:31 »
Ok, muchisimas gracias!

Saludos!

Desconectado jukinch

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 608
Re: Como usar varias USARTs
« Respuesta #12 en: 28 de Abril de 2011, 17:30:03 »
Ok. Gracias Suky por el dato.
         Saludos a ambos.
                   Jukinch
"Divide las dificultades que examinas en tantas partes como sea posible para su mejor solución." -René Descartes

Desconectado fr4n

  • PIC12
  • **
  • Mensajes: 53
Re: Como usar varias USARTs
« Respuesta #13 en: 29 de Abril de 2011, 07:43:13 »
Hola amigo, si puedes poner varios Usart que el compilador controlará por soft-ware.

para seleccionarlos debes utilizar la directiva stream


#use rs232(baud=4800, xmit=pin_c6,rcv=pin_c7,stream=pc)
#use rs232(baud=2500, xmit=pin_a4,rcv=pin_a4,stream=mando)

debes utilizar también la directiva fputc

Para recibir:
dato_recibido = getc(pc);
dato_recibido = getc(mando);

Para enviar:
fputc(registro,pc);
fputc(registro,mando);

Saludos.



Sin la directiva stream, cuando solo usaba la usart por hardware, uno de los parámetros era decirle el numéro de bit que se iban a trasmitir, de la siguiente forma:
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)

Con la directiva stream, como se o como le digo los bits a trasnmitir?

Gracias!

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Como usar varias USARTs
« Respuesta #14 en: 29 de Abril de 2011, 09:38:05 »
La directiva stream es para asignarle un nombre al bus, nada tiene que ver con la cantidad de bits a transmitir, eso ya lo definiste con BITS=...



Saludos!
No contesto mensajes privados, las consultas en el foro