Noticias:

Grupo en telegram, del foro de meteorología fácil: https://t.me/meteorologiafacil

Para mas detalles, puedes visitar el siguiente tema http://www.meteorologiafacil.com.ar/foros/index.php?topic=1608.0

Espero que les sea de mucha utilidad.

Menú Principal

Protocolo de comunicación PCCF.

Iniciado por David Met, Diciembre 08, 2011, 09:40:48 PM

Tema anterior - Siguiente tema

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

David Met

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.
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

David Met

Para ver un ejemplo y las librerías para utilizarlo, hacer click aquí
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.