Meteorología Fácil

Área técnica. => Programación de microcontroladores. => JAL => Mensaje iniciado por: David Met en Diciembre 08, 2011, 09:40:48 PM

Título: Protocolo de comunicación PCCF.
Publicado por: David Met en Diciembre 08, 2011, 09:40:48 PM
Mi imaginación es limitada para los nombres. PCCF significa Protocolo de Comunicación con Control Futuro (aunque, seamos sincero, suena lindo y profesional ;D).

Con control futuro, me refiero a que hay dos bit que encabezarán los próximos bit 7 y 6 de la siguiente comunicación. Se que no se entiende, pero continuaremos.

Cada paquete, está constituido por 4 byte. Cada byte está formado de la siguiente manera:

BIT N°        7 6 5 4 3 2 1 0
Byte recibido 1 0 0 1 1 1 1 1


Los bit 7 y 6, se llaman bit de control.
Los bit 5 y 4, se llaman bit de control futuro.
Los bit 4 al 0, se llaman bit de datos.

Los bit 5 y 4, indican el valor que tienen que tener los bit 7 y 6 del siguiente byte recibido. No del presente. En nuestro ejemplo, en el próximo byte recibido, el bit 7 y 6 deben valer 01 respectivamente.
Los bit de datos, se utilizan para la sincronización (dos en total) y luego los bit de mayor y menor peso del dato a recibir.

El paquete está construído de la siguiente manera (los valores x son variables y su valor cambia):

Desde su valor fijo:
00xx1010 xxxx0101 xxxxxxxx xxxxxxxx

Desde valor bit:
76543210 76543210 76543210 76543210

Y el protocolo funciona de la siguiente manera:

Primero se envía el siguiente byte:

00XX1010

00 Como es el primer byte a enviar, no se obtiene bit de control futuro (ya que la comunicación recién empieza y no hubo dato anterior

XX es para enviar el control futuro. Más adelante diré como se obtiene.

1010 Son los bit para sincronizar.

Segundo byte a enviar:

XXXX0101

XX Son los bit de control futuro correspondiente a los bit 5 y 4 del primer byte enviado/recibido.

XX Son los bit de control futuro para el tercer byte a enviar/recibir.

0101 son los bit para sincronizar.

Tercer y cuarto byte a enviar:

XXXXXXXX

XXXX (los 4 bit de menor peso del byte recibido) Estos 4 bit corresponde a los 4 bit de mayor y menor peso del dato a enviar/recibir.
Estos 4 bit se concatenarán al final para formar un solo byte.

¿Cómo se obtiene el bit de control futuro?

Para ser lo más azar posible, se tomarán los último dos bit de menor peso del dato a enviar. Luego se incrementará en 1.

Vamos con un ejemplo:

Un sensor de temperatura, nos entrega el siguiente valor 10001101

Primero obtenemos el bit de control futuro de 10001101. El bit de control futuro vale 01
Como segundo paso, dividimos el valor a la mitad. Valor[1] = 1000 Valor[0]=1101

Luego enviamos el primer byte de sincronización 00011010
A continuación, enviamos el segundo byte de soncronización 01100101
Seguimos con el primer valor de mayor peso a enviar (Valor[1]) 10111000
Y finalizamos el paquete con el valor de menor peso a enviar (Valor[0]) 11001101

En el receptor, debemos concatenar el tercer y cuarto byte recibido y solamente los 4 bit de menor peso. Así obtendremos 10001101

Nota: En el cuarto byte, se envía los bit de control futuro, pero en realidad no serán tomado en cuenta, ya que para enviar un nuevo dato, es necesario hacer una nueva sincronización.


Nota 2: Estoy pensando en colocar uno o dos byte de finalización de la comunicación. Lo veo útil cuando tengo que enviar más de un valor. Por ejemplo, de varios sensores.
Título: Re: Protocolo de comunicación PCCF.
Publicado por: David Met en Diciembre 31, 2012, 12:52:32 AM
Para ver un ejemplo y las librerías para utilizarlo, hacer click aquí (http://www.meteorologiafacil.com.ar/foros/index.php?topic=699.0)