TODOPIC
Microcontroladores PIC => * PROYECTOS * => Mensaje iniciado por: nietzche en 05 de Agosto de 2010, 02:08:51
-
caballeros, tengo una duda estoy implementando un transmisor rf , para la codificacion uso manchester, el proyecto consiste en un PIC 16f876a que hace una conversion analogica digital y la manda por USART directamente al RX, logico no puedo mandarla solo asi por la cuestion esa del ruido, segun tengo entendido que el manchester tiene un formato, como dice aca http://es.wikipedia.org/wiki/Codificaci%C3%B3n_Manchester.
Como dice: Una transición de negativo a positivo representa un 1 y una transición de positivo a negativo representa un 0. Asi que basicamente, digamos que un 1 es en realidad un 10 y un 0 es un 01, ocupa logicamente el doble de ancho de banda.
Ahora bien, despues de hacer la Conversion A/D ese dato de 8 bits pasa por un codificador, del cual ese byte resulta en 2 bytes, primero mando la parte baja y luego la parte alta, del lado del RX se decodifica, pasando de los 2 bytes en manchester a codigo binario original. La pregunta es: lo hise bien ?????? aca los ejemplos del code decode:
;-------- CODIFICADOR MANCHESTER --------
MOVF ADRESH,0 ;PASA DE ADRESH A W
MOVWF 0X20 ;EL BYTE ORIGINAL SE CONVIERTE EN 2
MOVLW 0X04 ;BYTES CODIFICADOS Y ALMACENADOS
MOVWF 0X23 ;EN: 0X21 PARTE BAJA DEL BYTE ORIGINAL
probe RRF 0X20,1 ;0X22 PARTE ALTA DE BYTE ORIGINAL
BTFSC STATUS,C
GOTO uno
BSF STATUS,C
RRF 0X21,1
RRF 0X21,1
DECFSZ 0X23,1
GOTO probe
GOTO ende
uno BCF STATUS,C
RRF 0X21,1
BSF STATUS,C
RRF 0X21,1
DECFSZ 0X23,1
GOTO probe
ende MOVLW 0X04
MOVWF 0X23
prob RRF 0X20,1
BTFSC STATUS,C
GOTO unov
BSF STATUS,C
RRF 0X22,1
RRF 0X22,1
DECFSZ 0X23,1
GOTO prob
GOTO fin
unov BCF STATUS,C
RRF 0X22,1
BSF STATUS,C
RRF 0X22,1
DECFSZ 0X23,1
GOTO prob
;FIN DEL CODIFICADOR MANCHESTER
***************************************************
;-------------DECODIFICADOR MANCHESTER-----------
movlw 0x04 ;EL RESULTADO DEL BYTE ORIGINAL EN 0X32
movwf 0x25
testb rrf 0x30,1
rrf 0x30,1
rrf 0x32,1
decfsz 0x25,1
goto testb
movlw 0x04
movwf 0x25
testa rrf 0x31,1
rrf 0x31,1
rrf 0x32,1
decfsz 0x25,1
goto testa
MOVF 0X32,0
MOVWF PORTB ;EL RESULTADO DECODIFICADO Y ORIGINAL
;SALE POR EL PUERTO B
-
Yo he terminado un proyecto con envio /recepción por RF con codificación manchester.
Recuerdo haber utilizado las rutinas de decodificación que proveía el fabricante del chip receptor y era bastante , pero bastante más extensa que tu rutina. El tema de resincronización era muy largo.
Voy a ver si lo encuentro.
-
Aqui lo tienes. Está basado en la decodificación de un chip de Chipcon.
http://focus.ti.com/lit/an/swra083/swra083.pdf
Lo tienes en C y en asm.
Que te diviertas :mrgreen:
-
A poco tengo que hacer todo lo que hace ese chip, samplearlo 8 veces y que es eso de resincronizacion?, no anda solo con mi rutina ?
-
Que tal nietzche,
En realidad puedes usar algo mas simple.
En el siguiente link yo di una respuesta en la que explico como lograr una buena comunicacion con modulos RF y usando manchester. Espero te sirva.
http://www.todopic.com.ar/foros/index.php?topic=30837.msg257548#msg257548
Saludos
elreypic
-
OK, programe el codigo, e hize lo que me dijiste, envio una señal de 50 milisegundos, el rx la capta y por medio de un incfsz de al menos 45 ms sabe si es una señal fuerte y prende el modulo.
Envio la cabecera y despues la info, ok
Crees que funcione para estos modulos baratos ??????
-
Claro que si.
De hecho esos son los modulos que uso con este protocolo de comunicacion.
Saludos.
Elreypic