Vous êtes sur la page 1sur 35

Transmisin de datos por Radio Frecuencia

Diseo de Sistemas Basados en Microcontrolador Universidad de Las Palmas de Gran Canaria 2003 - 04
Jos Carlos Ruiz Luque Francisco Garca Rodrguez

CONTENIDOS

Introduccin ............................................. 3 Componentes .......................................... 3 Desarrollo prctico .................................. 3 1 Placa Radio frecuencia XE1201 .......................... 4 1.1 Envo de un bit contino ........................ 15 2 Protocolo de comunicaciones ........................... 20 2.1 Material ........................................ 21 2.2 Algoritmo ....................................... 21 3 Comunicacin por radiofrecuencia ...................... 24 4 Indicaciones de uso rpido ............................ 25 5 Ampliaciones .......................................... 26 6 Ficheros .............................................. 27 Programa 1: Protocolo de comunicacin ............... 27 Programa 2: Programa principal ...................... 31 7 Bibliografa .......................................... 35

Introduccin
En el transceptor equipos. desarrollo de XE 1201 para la la prctica se comunicacin utilizar el entre varios

Se ha planteado el desarrollo de la prctica en forma piramidal, cuya base ser la de configurar el transceptor y de la transmitir un bit siendo capaz de captar el bit por el receptor. En cada nivel se ir aumentando la complejidad de la informacin necesitando para ello un protocolo de comunicacin, como el rs-232, hasta llegar a trasmitir a la frecuencia de las placas.

Componentes Para la comunicacin de radio frecuencia: Dos placas RF(radio frecuencia) con el chip XE1201 empotrado Para el control de la placa XE 1201: Dos pic 16f84 Placa AC84

Desarrollo prctico La elaboracin de la prctica se ha orientado en una jerarqua de etapas. A continuacin se expondr un breve resumen de las mismas: Primera Etapa: Envo de un bit continuo alternado su valor entre 0 y 1 con el interruptor de la placa de desarrollo. Segunda etapa: Implementacin del protocolo RS-232. Tercera etapa: Combinacin de las dos etapas anteriores

Tras enunciar las etapas de realizacin de la prctica se profundizar en cada etapa en los recursos usados y en el cdigo ensamblador del pic.

1 Placa Radio frecuencia XE1201


El XE1201A es un transceptor FSK half-duplex que opera en banda ISM1 (optimizada) de 433 Mhz y en banda de 300500Mhz. Aplica la modulacin por desplazamiento de frecuencia de fase continua a 2 niveles (CPFSK). La conversin directa de la arquitectura del receptor permite al chip filtrar los canales. El XE1201A incluye un sincronizador de bit que genera datos libres de interferencia y un reloj sincronizado a los datos facilitando a un microcontrolador adquirir los datos sin mucha complejidad. La alimentacin de energa es de 3.5V y puede ser controlada por medio del bus o por los pins Vcc y Vss. El XE1201A usa el estndar I-ETS300-220.

Figura del XE1201A

Como ya dice la definicin de ISM en ingles esta es una banda para el uso: industial, cientfico y mdico, en la cual no es necesaria la posesin de una licencia para poder ser utilizada. Esta banda tiene varios rangos de frecuencias una que est en Europa en los 433 Mhz normalmente usada para los telemandos de garajes; otra en los 850 MHz para el uso de aplicaciones que necesitan una mayor ancho de banda como pueden ser perifricos de ordenadores (ratones, teclados, etc.) Y una alrededor de los 2,4 Ghz que puede ser usada ya par la realizacin de redes de ordenadores inalmbricas.

Detalles de la descripcin de los pines:

Los pins que son accesibles al exterior:

Configuracin de los pines de la placa RF:

Resumen de los valores algunos pins del chip:

mnimos,

mximos

tipos

para

Lgica de control a travs de 3 cables El transceptor puede se configurado en varios modos a travs de la interfaz del bus 3 cables. Esta interfaz consiste de un registro desplazador, que recoge cada bit de dato en cada nuevo flanco de subida del SC (reloj serial). El circuito interno incorporado chequea la validez de algunas entradas y cuenta el nmero de flanco de subida de la seal SC. El dato ser transferido desde el registro desplazador al correspondiente registro de configuracin, si slo si el flanco de subida 16 ha sido detectado en el reloj serial (SC). Despus del decimosexto flanco de subida, se debe activar la seal SE (habilitacin serial). La habilitacin de la seal SE indica que ha terminado la configuracin del registro.

En la figura siguiente se nuestra el tiempo mnimo necesario que el dato debe estar estable antes de un flanco de subida de SC en el bus serial.

La transmisin de la configuracin a travs de la interfaz del bus de 3 claves se empieza por el bit ms significativo (MSB) hasta el bit menos significativo (LSB). Cada paquete de transmisin tiene la siguiente configuracin:

Registros internos Las caractersticas principales de transceptor son configuradas por medio de la interfaz bus de 3 cables y registros internos (A, B, C). Como la frecuencia de desmodulacin, la habilitacin del reloj, la frecuencia de dato, etc. puede ser programado. Los primeros 2 bits D15 y D14 determinan el acceso a los registros A, B o C a travs de la siguiente tabla de verdad:

Los 3 registros son rellenado por los datos A13 a A0, B13 a B0 o C13 a C0 de acuerdo a los valores del los bits de 15 y 14.

El registro A Este registro es usado para establecer el modo del transceptor (modo emisor, modo recepto y modo stand-by) y seleccionar la frecuencia de recepcin. Se accede al registro con lo siguiente en los bit 15 y 14: D15 = 0 D14 = 0 Formato de los datos: valores de

Control de modo: Cuando es 0, este bit permite el control de los 3 modos de funcionamiento del transceptor y la activacin del chip para ser dirigido mediante los pin15 (RxTx) y el pin1 (EN). Cuando es 1, el control de los modos de funcionamiento y de activacin son dirigidos mediante los bits A10 y A11. En este modo los pines 15 y el pin 1 no tienen efecto.

Modo de control con el pin15 y pin1: En este modo el transceptor puede ser apagado, encendido y configurado en modo emisor o receptor como se explica en la siguiente tabla y figura:

Diagrama de tiempo para el control con los pines RxTx y EN

Control de reloj: Este bit indica si activar o no el reloj interno del XE1201A. Cuando es 1, el reloj siempre esta corriendo en cualquier caso de los estados del chip activo (bit A11 cuando A13=1 o pin1 cuando A13=0). Cuando es 0, la actividad del reloj es determinada por el bit(A11).

Activar el chip: Cuando es cero, todas las seales del XE1201A estn desactivadas (excepto el reloj si el bit A12 esta a 1). Sin embargo el bus de 3 cables puede ser programado en modo 10

desactivado mientras Vdd este presente. Este bit remplaza el Chip Enable (pin1) when A13=1. RXTX: Modo receptor/emisor. Cuando es 1, el transceptor es configurado como receptor y en modo transmisor cuando vale 0. Este bit reemplaza el RxTx (pin15) cuando A13=1.

Sync off Estos bits son usados en sincronizador no es necesario.

aplicaciones

cuando

el

1) El receptor est en modo normal pero se ignora el demodulador. La salida I y Q estn habilitadas en el pin 19 y pin18 respectivamente. El valor A9 a A6 debe ser:

2) El receptor est en modo normal pero el sincronizador de bit interno est parado. Los datos sin traza (en bruto) estn disponibles en el pin19 (RXD). El CLKD (pin18) es insignificante. En este modo, el prembulo no es requerido para el sincronizador de reloj del sincronizador de bit as que el tiempo mnimo de reavivar el receptor es accesible. Los valores de A9 a A6 deben ser configurados como en la tabla siguiente:

Frecuencia de recepcin: Estos bits son usado para configurar el sincronizador de bit a la frecuencia de dato de acuerdo a la siguiente frmula:

Donde el valor de n es un decimal si signo de los bit A5(MSB) a A0. Nota: Cuando el sincronizador de bit esta en bypassed, no es necesario programar la frecuencia del dato. Los datos 11

son remodulados consecuentemente a frecuencia de dato de entrada.

El registro B Este registro es usado para ajustar la frecuencia central durante la transmisin. Se accede a travs: D15 = 0 D14 = 1 Formato de los datos:

Frecuencia de offset. Estos bits pueden ser usados para calibrar la frecuencia central de oscilacin. Bits de test. Estos bits son solo para proposito de test. Debe ser configurado a 0.

El registro C Este registro es usado para la frecuencia de desmodulacin, establece los valores de la amplificacin, ajuste de potencia de la trasmisin y otras funciones auxiliares. Es accedido con: D15 = 1 D14 = 0

12

Potencia de salida en la transmisin. Puede ser ajustada con el pin13 y pin12 Dato invertido en bit. Las tramas de datos recibidas estn invertidas si el bit est 1. Bit de test. Estos bits deben estar siempre configurados a C10 = 1 y C9 = 0 Habilitar el amplificador de salida transmitido. Cuando es cero, esta desactiva esta funcin. Bit de dato trasmitido (TXD). Este bit replaza el pin 17 (TXD) cuando el bit 13 del registro A es configurado a 1 y as permite una transmisin de dato mediante el bus 3 cable. Desviacin de frecuencia. Estos bits son usado para ajustar la desviacin de frecuencia del modulador. Al activar el transceptor los inicializados con los siguientes valores: registros son

Control pins. El reloj parado. Frecuencia de recepcin PA = -12dBm. Fdev = +/- 125kHz.

a 16 KHz

DR= 16 bits/s.

13

Sincronizador de bit en modo receptor El desmodulador interno del XE1201A necesita un dato de 20 bits sincronizado para asegurar un correcto reloj sincronizado. El dato de sincronizacin debe ser una secuencia de 0 y 1 enviado alternativamente. A continuacin se ilustra con dos figura la recepcin de datos con sincronizador de bit o bypassed.

bypassed

sincronizador de bit

14

1.1 Envo de un bit contino En esta etapa se realiz la comprobacin del cable elaborado para la comunicacin por la interfaz bus de 3 cables, el control del modo de funcionamiento y de la activacin de las placas a travs de los interruptores. Las caractersticas de configuracin del transceptor se realizarn a travs del bus 3 claves. Slo se configura el registro A, los registros B y C se mantendrn con los valores iniciales de la placa, ya que controlan algunos parmetros que no controlamos. El nico registro que modificaremos ser el A para comprobar la funcin del cdigo ensamblador de controla la transmisin serie de configuracin del transceptor. La configuracin de los registros es la siguiente: reg A B C 13 0 0 0 12 1 0 1 11 0 0 0 10 0 0 1 9 0 0 0 8 0 0 1 7 0 0 0 6 0 0 0 5 1 0 1 4 1 0 0 3 0 0 0 2 0 0 0 1 0 0 0 0 0 0 0

Tabla 1

Despus de encender y haber sido configurado por el microcontrolador, el transceptor est en el estado siguiente: modo de control a travs de las lneas RxTx(pin15) y EN (pin1), el reloj activo, frecuencia de datos 1 kbits/s, potencia de salida -5dBm, atenuacin de la potencia de entrada al circuito, y desviacin de frecuencia a 125 kHz. Listo para receptor o emisor. Tras hablar de lo que se configuracin de los registros se necesario para esta etapa. va realizar, y la comentar el cdigo

Primero se comentar la configuracin de los puertos para la comunicacin del pic con el transceptor y vicersa. En esta etapa el puerto A se configurar con los 3 bit menos significativo (LSB) como entrada: PORTA0: es el que controla el estado de funcionamiento de la placa, - 1: El transceptor activo. - 0: El transceptor desactivado PORTA1: Se indica el modo de funcionamiento - 1: modo transmisor. - 0: modo receptor. 15

PORTA2: el valor que disponga este puerto se tendr en cuenta cuando el modo de funcionamiento de la placa RF est en transmisor. El valor del puerto se transmitir para el receptor. Los valores que puede tomar este puerto son obvios al hacer un bit (0 o 1).

La ristra de configuracin del puerto A es en binario 0 0111 y en hexadecimal 07 La configuracin del puerto B es meramente para la comunicacin entre el pic y el transceptor. En la tabla se indica los pins del cable de conexin de la interfaz de la placa RF con el puerto B del pic: Nombre de la linea TXD RxTx EN DE RXD SC CLKD SD Pin Interfaz placa 1 10 8 6 5 4 3 2 Pin del puerto B 0 1 2 3 4 5 6 7 Estado del pin puerto b Salida Salida Salida Salida Entrada Salida Entrada Salida

De la anterior tabla se extrae la ristra binaria 0101 0000 para la configuracin del puerto, o en hexadecimal, 50h. Al saber la configuracin de los puertos se ilustra a continuacin dicha configuracin en el ensamblador del pic.

16

;; SIMBOLOS E EQU 3 SC EQU 5 SD EQU 7 BIT3 EQU 3 CLKD EQU 6 TXD EQU 0 RXD EQU 4 RxTx EQU 1 EN EQU 2 CONFA CONFB ASup AInf EQU EQU EQU EQU 07h 50h 10h 30h ; Configuracin del puerto B ; Mitad superior del registro A de xemics ; Mitad inferior del registro A de xemics

;estado inicial del puerto B INI EQU 0Ah ;Registros Generales utilizados TRANS EQU 0Ch ;tamao 2 CONT EQU 0Eh

org 0 goto inicio org 5 ; configuramos el puerto B, interfaz con la placaRF BSF STATUS,RP0 MOVLW CONFB MOVWF TRISB MOVLW CONFA MOVWF TRISA BCF STATUS,RP0 ; inicializamos el puerto B MOVLW INI MOVWF PORTB

Se puede observar en el cdigo que se ha puesto una inicializacin al puerto B, cuyo valor en binario es 0000 1010. El significado de la ristra, INI, es que las lineas RxTx y De esta activada. El registro TRANS es un registro de 2 bytes que nos servir para almacenar la configuracin de los registros que se transmitir por la interfaz del bus serie de 3 cables (3-wire serial bus). Se usa este registro de 16 en contra de uno de 8 bit para no producir retraso en la transmisin por el puerto serie. Las etiquetas Asup y Ainf configuracin de registro de estado A anteriormente (tabla 1). La etiqueta CONT representa registro CONT que se comenta funcionamiento en el cdigo. representa la que se coment

la direccin posteriormente

del su

A continuacin se muestra el cdigo que prepara el registro TRANS con los valores correspondientes para la transmisin a la placa RF. La transmisin se realizar con 17

la funcin transmitir que se hablar de ella ms delante de esta memoria.

; transmitimos el registro A MOVLW TRANS MOVWF FSR MOVLW ASup MOVWF INDF INCF FSR, F MOVLW AInf MOVWF INDF CALL transmitir

En el cdigo de utiliza un modo de direccionamiento indirecto para establecer los valores de TRANS. Siguiendo el cdigo original viene el bucle principal del programa que interacta con el usuario, indicado el usuario el funcionamiento, modo de funcionamiento y cuando est o no habilitado el transceptor.
Begin BTFSC PORTA, 0 GOTO UNO BCF PORTB, EN GOTO SIG2 UNO SIG BSF PORTB, EN ; Se habilita o no el circuito? ; inhibe el circuito ; se habilita el circuito ; Se configura en el modo de ejecucin

BTFSS PORTA,1 GOTO TRANSIM BSF PORTB, RxTx GOTO SIG2 TRANSIM BCF PORTB, RxTx BTFSC PORTA, 2 GOTO UNO1 BCF PORTB, TXD GOTO SIG2 UNO1 BSF PORTB, TXD SIG2 GOTO begin

Lo ms relevante del cdigo es cuando el transceptor se encuentra en modo receptor no se mira el valor del puerto PORTA2, debido a que no va ser transmitido. A continuacin es expone el cdigo de la transmitir que se quedo antes sin hablar de ella: funcin

18

transmitir MOVLW TRANS MOVWF FSR BCF PORTB,E CLRF CONT B1 BCF PORTB,SC RLF INDF,F BCF PORTB,SD BTFSC STATUS,C BSF PORTB,SD BSF PORTB,SC INCF CONT,1 BTFSS CONT,BIT3 GOTO B1 CLRF CONT INCF FSR,F BCF PORTB,SC RLF INDF,F BCF PORTB,SD BTFSC STATUS,C BSF PORTB,SD BSF PORTB,SC INCF CONT,1 BTFSS CONT,BIT3 GOTO B2 BSF PORTB,E NOP BCF PORTB,SC BCF PORTB,SD RETURN

; Duerme el dispositivo ; Reinicia contador ; Conmutar a bajo el reloj ; Rotar a izquierda TRANS ; Poner seal de envo a cero ; Enviar un 1 ? ; Pone seal de envo a uno ; Conmutar a alto el reloj ; Contar rotaciones realizadas ; Se ha rotado 8 veces ? ; No, volver a empezar ; Si, reiniciar contador ; Siguiente byte

B2

; Configuracin terminada

Como sabemos ya en este punto la configuracin del transceptor se realiza a travs de los registros A, B, C y se transmite por le bus serial de 3 cables (3-wire serial bus). Las lneas que se involucran en este bus son SC (reloj serial), SD (dato serial), DE (dato habilitado) de la interfaz de la placa RF. Se usa de nuevo un modo de direccionamiento indirecto para tener acceso a los valores que se van a transmitir. Lo primero que realiza la funcin es estable DE a nivel bajo indicando al transceptor que estamos en un ciclo de configuracin y resetea el valor del contador CONT a cero. La transmisin se comienza por el byte ms significativo (MSB) y por el MSb (bit ms significativo). Tras enviar los 8 bits que es controlado por el contador CONT se transmite el segundo byte del registro A. Al terminar la transmisin del ltimo byte se activa la seal DE para confirmar al transceptor que la configuracin del registro A se ha terminado.

19

2 Protocolo de comunicaciones
Antes de comunicar cualquier dato entre las placas se hace necesario crear un protocolo de transmisin que adems deber ser probado inicialmente con dos PICS conectados fsicamente para descartar posibles problemas en el manejo de las placas y centrarnos nicamente en el algoritmo. Se ha escogido el protocolo RS232 por ser el ms familiar al haber trabajado con l previamente. Al tratarse de una primera versin y en este caso inicial, se modific para que fuese lo bastante lento como para poder observar visualmente su funcionamiento y la transmisin en curso.

Linea = Linea comunicacin Cont = Contador

20

Ntese que el programa no empieza antes de 12 marcos de bits, esta espera tan larga la utilizaremos para asegurar que no se empieza a procesar en medio de la transmisin de un byte. 2.1 Material Las pruebas del protocolo se realizan conectando con un cable alguno de los conectores del puerto A de dos PICS, dejando enteramente libre el B para poder mostrar con los leds el estado de la transmisin. En el receptor, adems, se emplea el display led de 7 segmentos incorporado en las tarjetas de entrenamiento para mostrar la codificacin del nmero enviado. Los dos primeros switchs controlan el funcionamiento de las placas. El RA0 decide si el circuito est activado y el RA1 en qu modo lo hacen. 0 1 Transmisor Receptor

2.2 Algoritmo La implementacin del programa hace uso de interrupciones para controlar el tiempo que ha de tardar un marco de bit. Como stos duran 833 milisegundos y necesitamos desbordar varias veces el timer calculando mltiplos de 64 milisegundos, podemos resumir los valores que necesita tomar el contador segn la parte del programa. Desbordamientos:
01 - Espera start bit = 19 - Leer primer BIT = 13 - Lectura de bits =
RSI MOVWF DECFSZ GOTO MOVLW MOVWF MOVLW MOVWF BCF BSF MOVFW RETFIE END Temp Contador,1 SEGUIR 01h Continuar V_TIMER0 TIMER0 INTCON,TOIF INTCON,TOIE Temp

64 ms 833 + 833/2 ms 833 ms


; ; ; ; Guardamos W Decrementa contador. Contador = 0? Si contador != 0 ir a Seguir Continuar cede el paso

SEGUIR

; ; ; ; ;

Recarga TMR0 Borra bandera de interrupcin Rehabilita interrupcin RTIE Restaura W Repone GIE y Retorna

21

La interrupcin lo nico que hace una vez lanzada, es decrementar un contador que fija cuntas veces ha de desbordarse el timer antes de poner a uno el bit de Continuar, con lo cual la funcin retardar conocer el tiempo que ha de retrasarse segn el valor que le demos a dicho contador. De hecho, como esta es la nica parte del programa donde interesa conservar interrupciones, la propia subrutina se encarga de activar las interrupciones antes de entrar y desactivarlas al salir. Para llamarla, lo nico que se necesita es que se le pase en el registro W el tiempo que ha de esperar en mltiplos de 64 milisegundos.
RETARDAR movwf clrf BANCO1 movlw movwf BANCO0 movlw movwf movlw movwf LOOP1 btfss goto movlw movwf

Contador Continuar

; Tiempo espera (x64ms)

b'00000111' OPCION V_TIMER0 TIMER0 b'10100000' INTCON Continuar,0 LOOP1 00h INTCON ; Desbordar cada 64 ms

; Activa GIE y TOIE ; Esperar seal de continuar

; Activa GIE y TOIE TMR0

La lectura de datos se realiza desde una funcin especfica que realiza todas las tareas necesarias para captar el bit. Como queremos tener un duplicado del byte enviado, se insertan los bits uno a uno en un registro empezando por la izquierda. Segn sea un uno o un cero, se coloca en el bit de desbordamiento de STATUS para que la funcin de rotacin lo coloque al final de la variable.
LEER btfsc goto bcf rrf return LINEA_IN LEER1 STATUS,0 Dato,1 ; Mirar la LINEA_IN ; Poner un 1 ; Poner un 0 ; Rotamos y lo cargamos

LEER1: bsf rrf incf return

STATUS,0 Dato, 1 C_Paridad,1

; Ponemos bit en STATUS,0 ; Rotamos sin cambiar W ; Incrementar contador de paridad

22

El algoritmo inicial del receptor es la implementacin directa del diagrama puesto al principio de esta seccin. En cuando al emisor, sigue la secuencia expuesta en esta pgina. Durante la creacin del protocolo, tanto emisor como receptor fueron desarrollados por etapas. En la primera se eludieron los bits de paridad. El emisor enviaba un byte programado y el receptor al recogerlo, limpiaba el puerto B y volcaba el byte reconocido. Luego se aadi el control de errores con un bit de paridad y se enviaron varios bytes en cadena. El objetivo era observar posibles problemas al recibir una transmisin contnua de bytes, la recepcin correcta del resto de datos cuando se encenda el receptor en medio de una transmisin y la deteccin de errores cuando desconectbamos durante un tiempo el cable de datos para simular una alteracin de la seal.

Linea = Linea comunicacin Cont = Contador ContPar = Contador de paridad

23

3 Comunicacin por radiofrecuencia


Despus de depurar el protocolo de comunicacin, se procede a unir el cdigo de configuracin de las placas y el de la transmisin, as, donde antes tenamos una unin fsica con los cables entre los pics, ahora tenemos las terminales RxD y TxD de las placas transceptoras. Se conectan las placas siguiendo los pasos de la seccin 4 sobre uso rpido. Luego se repiten los pasos de comprobacin que se realizaron cuando la conexin era fsica. Una vez solucionados todos los inconvenientes surgidos, se decide ampliar la funcionalidad de las placas utilizando el teclado alfanumrico, para que espere en un bucle la pulsacin de una tecla que decidir el byte a enviar. Como se devuelve el cdigo decimal, se necesita construir una tabla que los traduzca al display de 7 segmentos que se utilizar para mostrar los datos.
CODIGONUMERO MOVLW MOVWF MOVF ADDWF retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw RETLW RETLW RETLW RETLW RETLW RETLW 3Fh 06h 5Bh 4Fh 66h 6Dh 7Dh 07h 7Fh 67h 77h 7Ch 39h 5Eh 79h 71h high CODIGONUMERO PCLATH POS, W PCL, 1 ; ; ; ; ; ; ; ; ; ; cdigo cdigo cdigo cdigo cdigo cdigo cdigo cdigo cdigo cdigo ; ; ; ; ; ; del del del del del del del del del del A B C D E F 0 1 2 3 4 5 6 7 8 9

Como consecuencia del uso completo del puerto B, no se puede mostrar indefinidamente el byte recibido por el display, as que se recurre a la funcin RETARDAR del protocolo para mostrarlo un corto tiempo mientras se deshabilita el receptor.

24

4 Indicaciones de uso rpido


Estos son los pasos a seguir para empezar a usar inmediatamente las placas con los programas incluidos.

1. Cargar el proyecto includo en final.hex o compilarlo de las fuentes para cargarlo en dos placas de laboratorio con el pic 16F84. 2. Conectar al zcalo de ampliacin un conector adaptado para introducir los cables necesarios del conector de la placa. Suministrar a las tarjetas transceptoras una tensin de 3,5 voltios y unir sus tierras con la de las placas. Por ltimo se debe asegurar que se conectan adecuadamente las lneas por donde se transmiten los datos. Inicialmente la lnea de recepcin est incluida en el zcalo, pero la trasmisora se conecta a la pata TxD de las placas. 3. En la placa destinada a ser la receptora, conmutar los dos primeros switchs del puerto a (RA0 y RA1) a uno, y en la transmisora conmutar el primero a uno y el segundo a 0. El primero indica que se desea activar las placas y el segundo el modo bajo el que funcionarn. 4 Pulsar en el teclado alfanumrico una tecla, a continuacin se transmitir por radiofrecuencia en un plazo de 13,3 segundos el byte pulsado. En el display de 7 segmentos de la receptora justo antes de mostrarse el byte, se activar el punto para a continuacin, exhibirse durante 1,5 segundos la tecla pulsada.

Ntese que como el protocolo de comunicaciones se incluye en forma de librera, ste puede mejorarse siendo los cambios transparentes para el programa principal siempre y cuando se respeten las funciones exportadas en el include. El proyecto ocupa la mayor parte de los puertos, de hecho ocupa todo el puerto B salvo el RB4 y del A solamente coge el RA4. Sin embargo, cuando no transmite, se puede poner en suspensin la placa y mientras tanto, todo el puerto B queda libre. Si se necesitase cambiar las lneas por donde se comunican los datos, existe una macro para que esto pueda realizarse sin problemas.

25

5 Ampliaciones
Se proponen diversos proyectos para los que se pueden utilizar estas placas. 1. Interfaz entre perifricos del ordenador como ratones, teclados o placas de adquisicin de datos. Como las seales son digitales, se pueden usar directamente las patas emisoras y receptoras de las placas, adems, la comunicacin puede ser en dos sentidos.

2. Control y/o monitorizacin de dispositivos remotos.

3. Implementacin de protocolos especficos para comunicaciones inalmbricas, con control de errores y verificacin de tramas.

4. El protocolo actual no aprovecha el reloj para leer los datos enviados, ni cambia dinmicamente de funcin para el control de errores.

26

6 Ficheros
Programa 1: Protocolo de comunicacin
Esta es la implementacin de la versin simple del protocolo RS232 adaptada ya para ser usado como una librera usando memoria dinmica. ;; ;; ;; ;; ;; ;; ;; ;; ;; ;; ;; ;; ;; ;; ;; PROTOCOLO RS232 simple Programa que lee el bit que llega por una LINEA y lo procesa segn las normas RS232. Trabaja con un periodo de 833ms. Espera start bit escaneando cada 64ms Transmisor:: Receptor:: El retardar va despus de escribir en la lnea El retardar va antes de leer la lnea

Jos Carlos Ruiz Luque Francisco Garca Rodrguez NOTAS El programa principal ha de controlar que los puertos esten configurados correctamente como entrada o salida

;; Clculos para el contador ;; ;; 832ms = 256x13x (TMR0 = 256 - 250,30048) ;; ;; Cuenta para esperar Sync = 100 #include "p16f84.inc" ;; Macros #define #define #define #define #define

LINEA_OUT LINEA_IN V_TMR0 BANCO1 BANCO0

PORTB,0 PORTB,4 06h bsf STATUS,RP0 bcf STATUS,RP0

GLOBAL Dato, Eviar, TRANSMITIR, ESTADO, RECIBIR, RSI, Contador, Continuar, RETARDAR udata ;; VARIABLES Contador res Temp res Continuar res Veces res Eviar res C_Paridad res Dato res Recepcion res ESTADO res ts2 code

1 1 1 1 1 1 1 1 1

; ; ; ; ; ; ; ;

Estado del circuito Numero ledo Variable para RSI BYTE enviado Contador de paridad BYTE recibido Indica si hubo un error

27

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; RETARDAR ;; ;; Recoge en W el tiempo que pone en espera el micro en mltiplos de ;; 64 milisegundos ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; RETARDAR movwf Contador ; Tiempo espera (x64ms) clrf Continuar ;; Preparar interrupciones BANCO1 movlw b'00000111' movwf OPTION_REG BANCO0 movlw movwf movlw movwf LOOP1 btfss goto Continuar,0 LOOP1 ; Esperar seal de continuar V_TMR0 TMR0 b'10100000' INTCON ; Desbordar cada 64 ms ; Activa GIE y TOIE TMR0

;; Deshabilitar interrupciones movlw 00h movwf INTCON ; Desactiva GIE y TOIE TMR0 return ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Leer :: Lee el dato de la linea y lo pone al final de Dato despus ;; de desplazarlo. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; LEER btfsc LINEA_IN ; Mirar la LINEA_IN goto LEER1 ; Poner un 1 bcf STATUS,0 ; Poner un 0 rrf Dato,1 ; Rotamos y lo cargamos return LEER1: bsf rrf incf return STATUS,0 Dato, 1 C_Paridad,1 ; Ponemos bit en STATUS,0 ; Rotamos sin cambiar W ; Incrementar contador de paridad

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; TRANSMITIR :: Transmite el byte contenido en la variable Eviar ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; TRANSMITIR clrf C_Paridad bsf LINEA_OUT movlw 0E1h ; Esperar 833x15 ms call RETARDAR ;; Start bit bcf LINEA_OUT movlw 0Dh call RETARDAR

; Esperar 833 ms

28

movlw movwf LOOP_BYTE btfss goto bsf incf goto ENVIA_0 bcf RESTAR rrf movlw call decfsz goto

08h Veces ;; Envo del byte Eviar,0 ; Enviar 1 0? ENVIA_0 ; 0 LINEA_OUT ; 1 C_Paridad,f ; Incrementar contador de paridad RESTAR LINEA_OUT Eviar,1 0Dh RETARDAR Veces,f LOOP_BYTE

; Esperar 833 ms

;; Bit de paridad btfss C_Paridad,0 goto T_PAR bsf LINEA_OUT goto T_FIN T_PAR bcf T_FIN movlw call MOVLW MOVWF return LINEA_OUT 0Dh RETARDAR 06h Eviar

; Paridad? ; PAR ; IMPAR

; Esperar 833 ms

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; RECIBIR :: Recoge el byte enviado por LINEA_IN y lo guarda en Dato ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; RECIBIR movlw 9Dh ; Veces que debera desbordarse movwf Veces clrf C_Paridad ; Resetear bit de paridad EST01 ;; Estado 01 -- Espera start bit movlw 01h ; Esperar 64 ms call RETARDAR decfsz Veces,1 ; Decrementa Veces goto A01 ; An no es 0 incf Veces,1 ; Ya es 0 A01 btfsc LINEA_IN ; Linea ha pasado a 0? goto EST01 ; An no decfsz Veces,1 ; Si, Ha durado lo suficiente? goto RECIBIR ; No EST02 ;; Estado 02 -- Saltar start bit y leer primer dato movlw 14h ; Esperar 833+833/2 ms (20d)

29

call call movlw movwf

RETARDAR LEER 07h Veces

; Ahora tomaremos otros 7 bits

EST03 ;; Estado 03 -- Leer 7 bits restantes movlw 0Dh ; Para esperar 833 ms (13d) call RETARDAR call LEER decfsz Veces,1 ; Ledo un byte? goto EST03 ; No bsf PORTB,7

;; Estado 04 -- Leer bit de paridad movlw 0Dh ; Para esperar 833 ms (13d) call RETARDAR ;; Comprobar bits de paridad btfsc LINEA_IN goto IMPAR ; Linea = 1 btfss C_Paridad,0 ; Linea = 0 goto BIEN goto MAL Btfsc goto MAL BIEN OK movlw goto movlw movwf return ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Rutina de Servicio a la Interrupcin. Estados: ;; ;; 01 Espera start bit 64 ms ;; 19 Leer primer BIT 833 + 833/2 ms ;; 13 Lectura de bits 833 ms ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; RSI MOVWF DECFSZ GOTO MOVLW MOVWF Temp Contador,1 SEGUIR 01h Continuar V_TMR0 TMR0 INTCON,T0IF INTCON,T0IE Temp ; ; ; ; Guardamos W Decrementa. Contador = 0? Si contador != 0 ir a Seguir Continuar cede el paso C_Paridad,0 BIEN 00h OK 01h ESTADO

PAR

IMPAR

SEGUIR MOVLW MOVWF BCF BSF MOVFW RETFIE END

; ; ; ; ;

Recarga TMR0 Borra bandera de interrupcin Rehabilita interrupcin RTIE Restaura W Repone GIE y Retorna

30

Programa 2: Programa principal Este es el programa principal con el que se configuran las placas y se envan todos los caracteres introducidos por el teclado.
;; ;; ;; ;; ;; ;; ;; ;; PROTOCOLO RS232 simple Programa que lee el bit que llega por una LINEA y lo procesa segn las normas RS232. Trabaja con un periodo de 833ms. Espera start bit escaneando cada 64ms Jos Carlos Ruiz Luque Francisco Garca Rodrguez

#include <P16F84.INC> #include <ts2.inc> #include <tecla.inc> ;; Macros de atajo #DEFINE ENABLEPLACA #DEFINE DISABLEPLACA #DEFINE BANCO1 #DEFINE BANCO0 ;; SIMBOLOS E SC SD BIT3 CLKD TXD RXD RxTx EN

BSF BCF BSF BCF

PORTA,4 PORTA,4 STATUS,RP0 STATUS,RP0

para configurar las placas EQU 3 ; Validar dato EQU 5 ; Reloj serial EQU 7 ; Lnea transmisin serial EQU 3 ; EQU 6 ; Reloj EQU 0 ; Salida de datos EQU 4 ; Entrada de datos EQU 1 ; Modo transmisor/receptor EQU 2 ; Habilitar placa

;; Configuraciones para los registros de las placas CONFA EQU 03h CONFB EQU 50h ; Configuracin del puerto ASup EQU 10h ; Mitad superior del registro A de xemics AInf EQU 30h ; Mitad inferior del registro A de xemics INI EQU 08h ; Configuracin inicial del puerto B udata ;; Registros Generales utilizados TRANS RES 2 ; Configuracion de 16 bits de la placa CONT RES 1 ; Contador para los 8 bits BACK RES 1 ; Guarda la configuracion del puerto B HF Inter CodPrin code goto code goto code 0 INICIO 4 RSI

31

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; CODIGONUMERO ;; ;; Convierte un un nmero binario a su correspondiente codificacin ;; en el display de 7 segmentos. Utiliza W como variable de entrada y ;; salida ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; CODIGONUMERO MOVLW high CODIGONUMERO MOVWF PCLATH MOVF POS, W ADDWF PCL, 1 retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw 3Fh 06h 5Bh 4Fh 66h 6Dh 7Dh 07h 7Fh 67h ; ; ; ; ; ; ; ; ; ; cdigo cdigo cdigo cdigo cdigo cdigo cdigo cdigo cdigo cdigo del del del del del del del del del del 0 1 2 3 4 5 6 7 8 9

RETLW 77h ; A RETLW 7Ch ; B RETLW 39h ; C RETLW 5Eh ; D RETLW 79h ; E RETLW 71h ; F ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ESCRIBIR ;; ;; Vuelca el byte recibido en el display de 7 segmentos y espera 1,5 s ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ESCRIBIR BANCO1 ; Guarda la configuracin del puerto B movfw TRISB movwf BACK clrf TRISB BANCO0 movfw movwf movlw call Dato PORTB 17h RETARDAR

BANCO1 movfw BACK movwf TRISB BANCO0 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

32

INICIO ;; Configuramos el puerto B, interfaz con la placa RF BANCO1 MOVLW CONFB MOVWF TRISB MOVLW CONFA MOVWF TRISA BANCO0 ;; Inicializamos el puerto B MOVLW INI MOVWF PORTB DISABLEPLACA ;; Transmitimos el registro A MOVLW TRANS MOVWF FSR MOVLW ASup MOVWF INDF INCF FSR, F MOVLW AInf MOVWF INDF CALL transmitirConf BEGIN ;; Se habilita o no el circuito BTFSC PORTA, 0 GOTO UNO DISAB LEPLACA ; inhibe el circuito GOTO BEGIN UNO SIG ;; BTFSS GOTO Se configura en el modo de ejecucin del transceptor PORTA,1 TRANSIM ; Funcionamiento Receptor ; se habilita el circuito

bsf PORTB, RxTx ENABLEPLACA call RECIBIR call ESCRIBIR GOTO BEGIN TRANSIM Escanear call movlw SUBWF btfss goto btfsc goto E TCOD call call movwf bsf Key_Scan 80h Tecla, w STATUS, 0 TCOD STATUS, 2 scanear

; Ha leido algo

Cods_Tecla CODIGONUMERO Eviar OPTION_REG, NOT_RBPU

33

BANCO1 MOVLW MOVWF MOVLW MOVWF BANCO0 MOVLW MOVWF

CONFB TRISB CONFA TRISA INI PORTB ; ; ; ; Se Se Se Se configura Activa la transmite desactiva como emisor placa el Dato la placa

bcf PORTB, RxTx ENABLEPLACA call TRANSMITIR DISAB LEPLACA bcf PORTB, TXD GOTO BEGIN

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; CONFIGURACION :: Transmitir en serie configuracin de las placas ;; ;; Enva mitad superior y luego inferior del registro de ;; configuracin de las placas a un ritmo de 5us cada ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; transmitirConf MOVLW TRANS MOVWF FSR BCF PORTB,E ; Comienza la configuracin de la placa CLRF CONT ; Reinicia contador B1 BCF RLF BCF BTFSC BSF BSF INCF BTFSS GOTO CLRF INCF B2 BCF RLF BCF BTFSC BSF BSF INCF BTFSS GOTO BSF NOP BCF BCF RETURN END PORTB,SC INDF,F PORTB,SD STATUS,C PORTB,SD PORTB,SC CONT,1 CONT,BIT3 B2 PORTB,E PORTB,SC PORTB,SD PORTB,SC INDF,F PORTB,SD STATUS,C PORTB,SD PORTB,SC CONT,1 CONT,BIT3 B1 CONT FSR,F ; ; ; ; ; ; ; ; ; ; ; Conmutar a bajo el reloj Rotar a izquierda TRANS Poner seal de envo a cero Enviar un 1 ? Pone seal de envo a uno Conmutar a alto el reloj Contar rotaciones realizadas Se ha rotado 8 veces ? No, volver a empezar Si, reiniciar contador Siguiente byte

; Configuracin terminada

34

7 Bibliografa

E. Martn Cuenca Microcontroladores PIC Ed: Paraninfo, 1998

35

Vous aimerez peut-être aussi