TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: jfh900 en 17 de Abril de 2011, 00:15:50

Título: Configuración RS232
Publicado por: jfh900 en 17 de Abril de 2011, 00:15:50
Necesito hacer con CCS una comunicación RS232 con los siguientes parámetros:

Velocidad= 9600 Bits = 9 Paridad = Impar Bits_Stop = 1

Lo realizo con:

#use rs232(baud=9600 ,xmit=PIN_C6,rcv=PIN_C7,stop=1,bits=9,parity=O)

Y me da el error de longitud de bits no permitida.

Alguna idea de como configurarlo para que funcione.

Un saludo
Título: Re: Configuración RS232
Publicado por: bmb en 17 de Abril de 2011, 11:01:39
Hola jfh900, según entiento los bits totales son la suma de los bits mas el bit de paridad si lo hay.  Por ejemplo:

Bits = 8   Paridad = N    total bits = 8
Bits = 8   Paridad = E    total bits = 9
Bits = 8   Paridad = O    total bits = 9

Como parece que tu caso es este último entonces sería:

#use rs232(baud=9600 ,xmit=PIN_C6,rcv=PIN_C7,stop=1,bits=8,parity=O)

Saludos!
Título: Re: Configuración RS232
Publicado por: jfh900 en 17 de Abril de 2011, 14:24:02
Hola jfh900, según entiento los bits totales son la suma de los bits mas el bit de paridad si lo hay.  Por ejemplo:

Bits = 8   Paridad = N    total bits = 8
Bits = 8   Paridad = E    total bits = 9
Bits = 8   Paridad = O    total bits = 9

Como parece que tu caso es este último entonces sería:

#use rs232(baud=9600 ,xmit=PIN_C6,rcv=PIN_C7,stop=1,bits=8,parity=O)

Saludos!

Todo es correcto a excepción de el número de bits que es 9:

#use rs232(baud=9600 ,xmit=PIN_C6,rcv=PIN_C7,stop=1,bits=9,parity=O)

Justamente cuando lo configuro así, me da el error:

USE parameter value is out of range. Too many bits.

¿Tendré que configurarlo manualmente el registro, en vez del con el #USE? o es que ¿el pic18F2550 no soporta el manejo de 9 bits?

Un saludo
Título: Re: Configuración RS232
Publicado por: bmb en 17 de Abril de 2011, 14:45:47
... Todo es correcto a excepción de el número de bits que es 9:

#use rs232(baud=9600 ,xmit=PIN_C6,rcv=PIN_C7,stop=1,bits=9,parity=O)

Justamente a eso me refiero; cuando lo configuras asi, le estás diciendo que son 10 bits! De ahí el mensaje de error: Too many bits.  Si pones bits=8 y le sumas el bit de paridad parity=O, en total serían 9 bits.

Saludos!
Título: Re: Configuración RS232
Publicado por: jfh900 en 19 de Abril de 2011, 22:34:02
... Todo es correcto a excepción de el número de bits que es 9:

#use rs232(baud=9600 ,xmit=PIN_C6,rcv=PIN_C7,stop=1,bits=9,parity=O)

Justamente a eso me refiero; cuando lo configuras asi, le estás diciendo que son 10 bits! De ahí el mensaje de error: Too many bits.  Si pones bits=8 y le sumas el bit de paridad parity=O, en total serían 9 bits.

Saludos!

Precisamente la trama tiene 9 bits de datos (no 8) de ahí el problema. Ya se que no es usual, pero es que precisamente el sistema que intento conectar tiene estas especificaciones y no se si programando directamente los registros de comunicación RS232 del PIC conseguiría establecer la comunicación.

Un saludo
Título: Re: Configuración RS232
Publicado por: bmb en 19 de Abril de 2011, 23:00:31
Hola, estuve mirando la hoja de datos de un PIC 18F.  Por supuesto puedes hacer la programación directa declarando y seteando los registros correspondientes, pero también veo que allí explican lo mismo que te había comentado.  Si la comunicación es de 9 bits y quieres usar el bit de paridad, este será uno de esos 9 bits y no otro bit adicional.

Saludos!
Título: Re: Configuración RS232
Publicado por: Suky en 19 de Abril de 2011, 23:20:51
Exactamente, o tiene 9 bits sin paridad o tiene 8 con paridad, sino tienes que hacer las rutinas propias para recibir y enviar los datos.


Saludos!
Título: Re: Configuración RS232
Publicado por: cristian_elect en 20 de Abril de 2011, 01:43:40
Hay que repasar los libros de sistemas digitales.
Muchas cosas se olvidan con el tiempo.