codificación Manchester

M

Munib

Guest
¿Puede darme algún cuerpo de código en C Manchester para codificar y decodificar un byte de datos.
Estoy usando MCU PIC18F452 y el compilador de C18.

Necesito una función como

Encode (en bytes)
(
return (byte [2] Manchester);
)

Decode (byte [2] Manchester)
(
return (byte out);
)

 
Eso es muy simple:

Codifique sus 1s lógica como un 01 y su 0s lógica como un 10 (o viceversa ... lógica 1 = 10 y 0 lógico = 01).

Ejemplo:

codificación de un byte "11010001" los resultados en MSB: "01011001" LSB: "10101001"

bastante simple?

 
Si la realidad es muy sencillo de Manchester codificar y descodificar los datos manualmente por nosotros mismos o mediante una tabla de búsqueda en un MCU
Pero lo que quiero es una función para cifrar y descifrar los datos en un MCU

 
Tal vez este sitio web puede ser útil para usted.

http://www.mikroelektronika.co.yu/english/product/books/picbasicbook/09.htm # 9.4

Nota: No he utilizado la codificación Manchester mí mismo, pero la IMPLEMENTACIÓN parece bastante sencillo.

 
Hola, sólo pensé en añadir mi $ 0,02

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Sonreír" border="0" />He usado Manchester (similar a bifásica) codificación en un PIC16F818 para poner a prueba el REC de un enlace de radiofrecuencia.Lo hice por mi división byte de entrada en dos mordiscos 4-bits, y utiliza una LUT de 16 entradas (1 por cada 4 combinación posible de bits).Creo que es sólo se utiliza un total de 10 líneas de código, además de la LUT.

Pseudocódigo:
Mover inbyte a temp registro
Mover a la W
Y con el 00001111, se deshace de los cuatro MSB
Buscar la llamada a filas de mesa
Mover resultado outbyte1
Swap nibbles en temp (swapf temp, W)
Y con 00001111
Buscar la llamada a filas de mesa
Mover resultado outbyte2

Nota: outbyte2 es la 4-MSB, outbyte1 el 4-LSB.

Y ahí está, la LUT es simple, así: es decir: 00000000 -> 10101010
con la última entrada es: 00001111 -> 01010101
Si no está seguro de qué poner en la LUT, theres un montón de información en la red sobre la codificación de Manchester.

Creo que thats a la derecha, pero estoy oxidado.Lo hice hace muchísimo tiempo, y maganged para obtener 1.5MB / s de la PIC (con la ayuda de un registro de desplazamiento).

En cuanto a la decodificación, algo más difícil.Un uso inteligente de interupts podría utilizarse, ya que un '1 'es una transicion hacia arriba, y un '0' una a la baja.Usted tendrá que añadir un preámbulo en su paquete para capacitar a su decodificador por lo que sabe de dónde a la muestra.(verificación de flanco de subida y transmitir todos los 1's).

Espero que esto ayude,

BuriedCode

 

Welcome to EDABoard.com

Sponsor

Back
Top