Está en la página 1de 27

10.

Comunicaciones
10.1. Comunicacin RS232 Mediante UART
El microcontrolador host atmega se comunica con el dispositivo Bluetooth WT11 mediante comunicacin serie, utilizando para ello la USART implementada en el
microcontrolador. Con esta comunicacin se consigue que el host enve todos los
comandos de configuracin y de control al WT 11 y a su vez ste responda.

10.1.1. Introduccin. Comunicacin RS232


En primer lugar se realiza una breve introduccin del estndar de comunicacin
serie RS232 que se utilizar para realizar la comunicacin entre el host WT11. La
comunicacin mediante UART es diferente a la comunicacin mediante RS232, las
diferencias se describirn ms adelante.

LA NORMA
La denominada RS-232 es una interfaz que designa una norma para el
intercambio serie de datos binarios entre un DTE (o Equipo terminal de datos) y un
DCE (o Equipo de terminacin del circuito de datos), aunque existen otras situaciones
en las que tambin se utiliza la interfaz RS-232.
En esta aplicacin el equipo terminal de datos DTE ser el procesador host
atmega, mientras que el equipo terminacin del circuito de datos es el dispositivo WT 11.
La interfaz RS-232 est diseada para distancias cortas, de unos 15 metros o
menos, y para unas velocidades de comunicacin bajas, de no ms de 20 KBytes. A
pesar de ello, muchas veces se utiliza a mayores velocidades con un resultado aceptable.
La interfaz puede trabajar en comunicacin asncrona o sncrona y tipos de canal
simplex, half duplex o full duplex. En un canal simplex los datos siempre viajarn en
una direccin, por ejemplo desde DCE a DTE. En un canal half duplex, los datos
pueden viajar en una u otra direccin, pero slo durante un determinado periodo de
tiempo; luego la lnea debe ser conmutada antes que los datos puedan viajar en la otra
direccin. En un canal full duplex, los datos pueden viajar en ambos sentidos
simultneamente. Las lneas de handshaking de la RS-232 se usan para resolver los
problemas asociados con este modo de operacin, tal como en qu direccin los datos
deben viajar en un instante determinado.
Si un dispositivo de los que estn conectados a una interfaz RS-232 procesa los
datos a una velocidad menor de la que los recibe deben de conectarse las lneas
handshaking que permiten realizar un control de flujo tal que al dispositivo ms lento le
de tiempo de procesar la informacin. Las lneas de "hand shaking" que permiten hacer
este control de flujo son las lneas RTS y CTS. Los diseadores del estndar no

concibieron estas lneas para que funcionen de este modo, pero dada su utilidad en cada
interfaz posterior se incluye este modo de uso.

SEALES
A continuacin se describen las seales ms utilizadas para realizar las
comunicaciones RS232.
SG (Signal ground) o GND: Esta lnea de tierra.
DTR (Data Terminal Ready): Esta seal prepara al modem para conectarse a una lnea
de comunicacin y mantener la conexin establecida. Una vez que modem esta
conectado a la lnea este pin debe estar encendido para mantenerse la conexin, si DTR
es apagado, provoca una desconexin de la lnea, interrumpiendo el enlace de datos en
progreso. DTR tambin puede mantenerse encendido para efectuar la transmisin de
datos por el pin TXD. Bsicamente DTR es el pin de control maestro del modem.
DSR (Data Set Ready): Es la lnea que indica que el modem est preparado.
Usualmente el DSR esta todo el tiempo encendido porque este valor es un indicador de
que el MODEM esta encendido y listo.
RTS (Request To Send): Es la lnea que dice al modem que el PC quiere enviar datos.
El estndar RS-232 dice que RTS condiciona al modem para la transmisin, en realidad
esta es solo una funcin que sirve de interruptor a un modem half duplex para transmitir
o recibir. Mientras un modem half duplex esta recibiendo, el DTE guarda el RTS
apagado (cero), Cuando le toca al DTE el turno de transmitir, este informa al modem
que desea transmitir poniendo el RTS a (uno). El DTE no puede comenzar
inmediatamente con el envo de datos al modem porque este, no puede cambiar
inmediatamente el modo de transmisin a recepcin. Despus de poner a uno RTS el
DTE monitorea el pin CTS el cual es apagado por el modem que esta en modo de
recepcin, cuando el modem esta listo para transmitir, este enciende el CTS en funcin
al DTE que esta listo para el envo de datos. Este RTS-CTS (hand shaking), tambin es
permitido en sentido contrario, es decir cuando el transmisor vuelve a recibir. Como en
una comunicacin full duplex hay dos canales no se necesita el RTS-CTS, de esta forma
un modem full duplex pone permanentemente el pin CTS conectado al pin DCD (Data
Carrier Detect).
CTS (Clear To Send): Es la lnea que indica que el modem est preparado para recibir
datos desde el PC.
DCD (Data Carrier Detect): Es la lnea que indica que el modem tiene de verdad
conexin remota. Este pin es tambin llamado Receiver Time Signal Detect, es
encendido cuando el modem recibe una seal remota y se mantiene encendido durante
el enlace. En conexiones de modem half duplex el DCD es encendido solamente por el
MODEM que esta en recepcin.
TXD (Transmit Data): Es la lnea de transmisin de datos serie al modem. El TXD no
puede transmitir datos a menos que los siguientes circuitos hayan sido encendidos:
DTR

DSR
RTS (listo para enviar).
CTS (listo para recibir).
RXD (Receive Data): Es la lnea de recepcin de datos serie desde el modem.
RI (Ring Indicator): Es la lnea que indica que el modem ha detectado la seal de
llamada (se pone en uno).
Adems para que dos dispositivos puedan hacer efectivo el intercambio de
informacin, se requiere que cada uno de ellos utilice las mismas caractersticas de
transmisin, entre estas caractersticas estn la velocidad de transmisin, que pueden ser
de: 110bps, 300bps, 600bps, 900bps, 1200bps, 2400bps, 4800bps, 9600bps, 19200bps.
Estas velocidades han sido ampliadas en la versin RS-232-E.
El circuito RTS activa y desactiva el circuito de transmisin del modem.
Cuando un terminal detecta que le estn llamando a l activa su seal RTS y queda a la
espera de recibir la seal CTS (listo para enviar) desde el modem antes de enviar su
respuesta. Cuando el terminal ha terminado la transmisin, desactiva la seal RTS, lo
que hace que el modem desactive su transmisor dejando la lnea libre.
Con las seis seales de la tabla se puede establecer una comunicacin punto a punto
entre los dos DTE (por ejemplo dos mdems conectados por un cable).

10.1.2. Diferencias entre RS232 y UART


Bsicamente son dos las diferencias entre la comunicacin estndar RS232 y la
comunicacin serie mediante UART, estas son las siguientes:

Los niveles de tensin para representar los estados lgicos del bit son diferentes,
en la comunicacin serie RS232 los niveles de tensin son -12 V (1 lgico) y
+12 V (0 lgico), en cambio utilizando la UART se utilizan los niveles de
tensin + Vdd (1 lgico) y 0 V (0 lgico), en este caso Vdd utilizado es 3,3V.

Como se puede deducir del la descripcin anterior los niveles lgicos estn
invertidos, esto quiere decir, que lo que se entiende como un 1 lgico en RS232
(estado de la lnea abajo), se entiende en la UART como un 0, lo mismo ocurre
con el estado lgico 0 del RS232. Es por ello que si se quiere conectar el WT
11 al puerto serie de un PC se necesita de un drivers adaptador de los niveles de
tensin y estados lgicos, esto se desarrollar ms adelante.

10.1.3. Esquema de la Comunicacin


La siguiente figura muestra un esquema de las seales que se usarn para la
comunicacin entre el microprocesador Host y el WT-11.
En la comunicacin serie mediante UART, el atmega168p funcionar como
maestro por lo cual el WT -11 trabajar como esclavo. Las lneas RTS y CTS estn

cruzadas entre el maestro y el esclavo como viene indicado en la norma. De la misma


forma ocurre con las lneas TX y RX de ambos mdulos.

COMUNICACIN A CUATRO LNEAS

MASTER
Atmega168p

TXat

RXwt

RXat

TXwt

RTSat

CTSwt

CTSat

RTSwt

SLAVE
WT-11

La comunicacin se realiza utilizando slo cuatro lneas del estndar RS232,


debido a la implementacin de las UART tanto en el atmega como en el WT -11. En el
caso del atmega slo estn implementadas en el microprocesador las lneas de RX y TX,
las lneas de control de flujo se implementa utilizando dos puertos de propsito general
del micro.
Existe una descripcin mas detallada a nivel de conexin entre ambos
dispositivos en el capitulo de planos.

10.1.4. USART ATMEGA168P

CARACTERSTICAS GENERALES
Se pasa a describir los aspectos ms generales de la USART que se encuentra
implementada en el microprocesador atmega168p.
El Transmisor/Receptor Universal Sncrono y Asncrono (USART) es un
dispositivo altamente flexible para comunicacin serie. Las principales caractersticas
son:

Operacin Full Duplex (Registros independientes de recepcin y transmisin


serie).
Operacin Asncrona y Sincrona.
Operacin Sincrona Maestro-Esclavo.
Generador de alta resolucin de Baud rate.
Soporte de tramas con 5, 6, 7, 8 o 9 bits de datos y 1 o 2 bits de stop.
Generacin de paridad Par o Impar y Chequeo soportado por hardware.
Deteccin de datos OverRun.
Deteccin de tramas de error.
Filtrado de ruido incluid, deteccin de bit de inicio falso y filtro pasa-bajo ideal.

Tres interrupciones separadas: Finalizacin de Tx, Registro de datos vaco Tx,


Recepcin Completa Rx.
Modo de comunicacin Multiprocesador.
Modo de comunicacin de doble velocidad Asncrona.

A continuacin de muestra el diagrama a bloques del transmisor USART.


Registros accesibles de I/O del CPU y pines de I/O se muestran en negritas.

Los recuadros punteados en el diagrama de bloques muestran las tres partes


principales del USART (listadas de arriba hacia abajo): Generador de reloj, transmisor y
receptor. Los registros de control son compartidos por todas las unidades. La generacin
de reloj lgico consiste en la sincronizacin de la entrada de reloj externa usada el modo
de operacin esclavo sncrono y el generador de baute rate. El pin XCK (reloj de
transferencia) solamente se usa para el modo de transferencia sincrona. El transmisor
consiste de un solo buffer de escritura, un registro de desplazamiento serie, el generador
de paridad y el control lgico para manejar los diferentes formatos de tramas serie. El
buffer de escritura permite una continua transferencia de datos sin ningn retardo entre
tramas. El receptor es la parte ms compleja del mdulo USART consiste en un reloj y

unidad de recuperacin de datos. La unidad de recuperacin es usada para la recepcin


de datos asncronos. En resumen para la unidad de recuperacin, el receptor incluye un
chequeador de paridad, control lgico, un registro de desplazamiento y un buffer de
recepcin de dos niveles (UDR). El receptor soporta el mismo formato de trama como
el transmisor, y puede detectar un error de trama, y errores de paridad y de overrun de
datos.

INICIALIZACIN
La USART tiene que ser inicializada antes que cualquier comunicacin tome
lugar. El proceso de inicializacin consiste normalmente en ajustar el baud rate, el
formato de trama y habilitar el transmisor o el receptor dependiendo del uso. Para una
operacin de interrupcin que conduzca el USART, las banderas de interrupcin
globales debern ser limpiadas (y las interrupciones globales deshabilitadas) cuando se
realiza la inicializacin.
Antes de la inicializacin cuando se cambie el baud rate u el formato de trama,
hay que tener cuidado de que no se estn usando transmisiones de salida durante el
periodo que los registros se cambien. La bandera TXC puede usarse para comprobar si
el transmisor ha completado su transferencia, y la bandera de RCX puede usarse para
comprobar que no exista un dato sin leerse en el buffer receptor. Hay que tener en
cuenta que la bandera TXC debe de limpiarse antes de cada transmisin (antes que el
UDR se escriba) si se usa para este propsito.

TRANSMISION DE DATOS
El transmisor de LA USART es habilitado ajustando el bit Habilitacin de
Transmisin (TXEN) en el registro UCSRB. Cuando el transmisor es habilitado, la
operacin normal del puerto del pin TxD es overridden por LA USART dando la
funcin de transmisin de salida serie. El baud rate, modo de operacin y el formato del
trama deben establecerse antes que inicie cualquier transmisin.

ENVIO DE TRAMAS DE 5 A 8 BITS


Una transmisin de datos es iniciada cargando al buffer del trasmisor con los
datos a ser transmitidos. La CPU puede cargar al buffer de transmisin con solo escribir
en la localidad de I/O de UDR. Los datos almacenados en el buffer de transmisin sern
movidos al registro de desplazamiento cuando este registro este listo para enviar un
nuevo trama. El registro de desplazamiento es cargado con un nuevo dato si se
encuentra en estado libre (ninguna transmisin de salida) o inmediatamente despus del
ltimo bit de stop de la trama anterior sea transmitido. Cuando el registro de
desplazamiento es cargado con un nuevo dato, transferir una trama completa a una
razn dada por el registro del Baud, el bit U2X o por XCK dependiendo del modo de
operacin.

En el siguiente cronograma se puede ver un ejemplo de trama

St: Bit de Star siempre es activo en bajo.

N: Nmero de datos de 0 a 8 bits.

P: Bit de paridad.

Sp: Bits de parada puede ser 1 o 2. Siempre son activos en altos.

INTERRUPCIONES DE TRANSMISIN
El transmisor USART tiene dos banderas que indican un estado: Registro de
Datos Vaco (UDRE) y Transmisin Completada (TXC). Ambas banderas pueden
usarse para generar interrupciones. La bandera del registro de datos vaca (UDRE)
indica si el buffer del transmisor esta listo para recibir nuevos datos. Este bit se pone a
uno cuando el buffer del transmisor esta vaco., y se limpia cuando el buffer del
transmisor contiene datos para ser transmitidos que an no se han movido al registro de
corrimiento. Por compatibilidad para dispositivos futuros, siempre escriba a este bit un
cero cuando se escriba al registro UCSRA.
Cuando el bit de habilitacin de interrupcin del registro de datos vaco
(UDRIE) en el UCSRB se escriba a uno, la interrupcin del registro de datos vaco del
USART ser ejecutada tan pronto como UDRE pase a uno (siempre y cuando las
interrupciones globales estn habilitadas). UDRE se limpia escribiendo en UDR.
Cuando se usa una transmisin de datos manejada por interrupcin, la rutina de
interrupcin de registro vaco debe ya sea escribir un nuevo dato a UDR para limpiar
UDRE o deshabilitar la interrupcin de datos de registro vaco, de lo contrario una
nueva interrupcin puede ocurrir una vez que la rutina de interrupcin termine.
El bit de la bandera de la transmisin completada (TXC) se coloca a uno cuando
la trama entera en el registro de desplazamiento de transmisin ha sido enviada y ningn
dato actualmente se encuentra en el buffer de transmisin. El bit de la bandera TXC
automticamente se limpia cuando una interrupcin de transmisin completa se ejecute,
o puede ser borrado escribiendo a uno en esa localidad del bit. La bandera TXC es til
para interfaces de comunicacin half-duplex (como el estndar RS485), donde una
transmisin debe entrar a modo de recepcin y se libere el bus de comunicacin
inmediatamente despus de completar la transmisin.
Cuando el bit de habilitacin de interrupcin de transmisin completa en el
UCSRB se ponga a uno, la interrupcin de transmisin completa del USART ser
ejecutada cuando la bandera TXC llegue a ponerse a uno (siempre y cuando las

interrupciones globales estn habilitadas). Cuando la interrupcin de transmisin


completa se use, la rutina del manejo de interrupcin no tiene que limpiar la bandera
TXC, esto se realiza automticamente cuando la interrupcin se ejecute.

DESHABILITAR EL TRANSMISOR
La deshabilitacin del transmisor (ajustando el TXEN a cero) no llevara a cabo
hasta que transmisiones de salida o pendientes se hayan completado, por ejemplo,
cuando el registro de desplazamiento de transmisin y el registro del buffer de
transmisin no contengan datos para ser trasmitidos. Cuando se deshabilite, el
transmisor no enviara ms datos por el pin TxD.

RECEPCIN DE DATOS
El receptor del USAR se habilita escribiendo en el bit de habilitacin de
recepcin (RXEN) en el registro UCSRB a uno. Cuando el receptor se habilita, la
operacin normal del pin de RxD es overridden por el USART y se comporta como
receptor serie de entrada. El Baud Rate, el modo de operacin y el formato del frame
deben de ajustarse antes que cualquier recepcin serial se lleve a cabo.

RECEPCIN DE TRAMAS DE 5 A 8 BITS


El receptor inicia la recepcin de datos cuando detecta un bit de inicio valido.
Cada bit que siga al bit de inicio ser muestreado a un baud rate o al reloj XCK, y se
correr dentro del registro de desplazamiento del receptor hasta que el primer bit de stop
de una trama se reciba. Un segundo bit de stop ser ignorado por el receptor. Cuando el
primer bit de stop sea recibido, por ejemplo, un trama serie completa este presente en el
registro de desplazamiento del receptor, el contenido de registro desplazamiento ser
movido dentro del buffer del receptor. El buffer del receptor puede entonces leerse por
lectura de la localidad del registro de I/O UDR.

INTERRUPCIONES DE RECEPCIN
El receptor de la USART tiene una bandera que indica el estado del receptor. La
bandera de recepcin completa (RXC) indica si existen datos presentes sin leerse en el
buffer de recepcin. Esta bandera esta en uno cuando existen datos sin haberse ledo en
el buffer de recepcin y esta a cero cuando el buffer de recepcin esta vaco (por
ejemplo, no contiene ningn dato sin leerse). Si el receptor esta deshabilitado (RXEN =
0), el buffer receptor ser flushed y consecuentemente el bit RXC llega a se cero.
Cuando el bit de habilitacin de interrupcin de recepcin completa (RXCIE)
en el UCSRB es puesto a uno, la interrupcin de recepcin completa de la USART ser
ejecutada tan pronto como la bandera RXC se ponga a uno (siempre y cuando las
interrupciones globales estn habilitadas). Cuando se usa la recepcin de datos dirigida
por interrupcin, la rutina de recepcin completa debe leer el dato recibido de UDR para
limpiar la bandera de RXC, de lo contrario una nueva interrupcin puede ocurrir una
vez que la rutina de interrupcin termina.

BANDERAS DE ERROR
El receptor USART tiene tres banderas de error: Error de trama (FE), Dato
Sobre escrito (DOR) y Error de Paridad (PE). Todas pueden accederse leyendo el
UCSRA. Algo similar para las banderas de Error es que ellas estn localizadas juntas en
el buffer de recepcin con la trama para las cuales ellas indican el estado del error.
Debido a que las banderas de error son almacenadas, el UCSRA deber de leerse
antes que el buffer de recepcin (UDR), ya que leyendo la localidad de I/O del UDR
cambia la localidad de lectura del buffer. Otra similitud para las banderas de error es
que ellas no pueden ser alteradas por software poniendo una escritura en la localidad de
la bandera. Sin embargo, todas las banderas deben ponerse a cero cuando el UCSRA es
escrito para incrementar la compatibilidad de futuras implementaciones del USART.
Ninguna de las banderas de Error puede generar interrupciones.
La bandera de error de trama (FE) indica el estado del primer bit de stop de la
prxima trama legible almacenada en el buffer de recepcin. La bandera de error de
trama es cero cuando el bit de stop fue correctamente ledo (como uno), y la bandera de
error de trama ser uno cuando el bit de stop haya sido incorrecto (cero). Esta bandera
puede ser usada para detectar condiciones de fuera de sincronizacin, detectando
condiciones de ruptura y manejo de protocolo. La bandera de error de trama no ser
afectada por los ajustes del bit USBS en el UCSRC ya que el receptor ignora todo,
excepto para los primeros bits de stop. Por compatibilidad con futuros dispositivos,
siempre ponga a cero este bit cuando se escriba a UCSRA.
La bandera de Datos Sobre escritos (DOR) indica la perdida de datos debido a la
condicin de buffer de recepcin lleno. Una sobre escritura de datos ocurre cuando el
buffer del receptor esta lleno (dos caracteres), y esta un nuevo carcter esperando en el
registro de desplazamiento del receptor, y un nuevo bit de inicio es detectado. Si la
bandera DOR es puesta a uno entonces hubo una o ms perdidas de tramas series entre
la ltima trama leda del UDR y la prxima trama leda de UDR. Para compatibilidad
con futuros dispositivos, siempre se debe escribir este bit a cero cuando se escriba en
UCSRA. La bandera DOR se limpia cuando la trama recibida fue exitosamente movida
del registro de desplazamiento al buffer de recepcin. La bandera de Error de Paridad
(PE) indica que la prxima trama en el buffer de recepcin tuvo un error de paridad
cuando se recibi. Si la comprobacin de paridad no esta habilitado el bit PE siempre
leer cero. Para compatibilidad con futuros dispositivos, siempre escriba a este bit a
cero cuando escriba en UCSRA.

DESHABILITAR EL RECEPTOR
En contraste con el transmisor, la deshabilitacin del receptor ser inmediata.
Los datos de las recepciones que estn en proceso sern perdidos. Cuando se deshabilita
el receptor (por ejemplo, RXEN se coloca a cero) la operacin de recepcin no se
ejecutara ms en el pin del puerto de RxD. El buffer receptor FIFO ser flushed
cuando el receptor se deshabilita. El resto de los datos en el buffer sern perdidos.

REGISTROS DE LA USART
Se presenta un breve resumen de los registros utilizados y de sus caractersticas
de funcionamiento.
Registro de Datos de E/S del USART UDR
El buffer de registro de datos de transmisin del USART y el buffer de registro
de datos de recepcin del USART comparten la misma direccin de E/S referida como
Registro de Datos del USART o UDR. El buffer de registro de transmisin de datos
(TXB) ser el destino para los datos escritos en la localidad del registro UDR. Leyendo
la localidad del registro UDR retornara el contenido del buffer de registro de datos de
recepcin (RXB).
Para los caracteres de 5-, 6- o 7- bits los bits altos no usados sern ignorados por
el transmisor y se ajustaran a cero por el receptor. El buffer de transmisin solamente se
puede escribir cuando la bandera UDRE en el registro UCSRA esta en alto. Los datos
escritos a UDR cuando la bandera UDRE no esta en alto, sern ignorados por el
transmisor del USART. Cuando el dato se escribe al buffer de transmisin, y el
transmisor es habilitado, el transmisor cargar los datos dentro del registro de
desplazamiento del transmisor cuando el registro de desplazamiento este vaco.
Entonces los datos sern transmitidos por el pin TxD.
El buffer de recepcin consiste de una FIFO (Fila de Primero en Entrar, Primero
en Salir) de dos niveles. La FIFO cambiar su estado cuando el buffer de recepcin se
acceda.

Registro A de Estado y Control del USART

Bit 7 RXC: Recepcin Completa del USART

Bit 6 TXC: Transmisin Completa del USART

Bit 5 UDRE: Registro de Datos Vaco del USART

Bit 4 FE: Error de Frame

Bit 3 DOR: Datos Sobre escritos

Bit 2 PE: Error de Paridad

Bit 1 U2X: Doble Velocidad de Transmisin del USART

Bit 0 MPCM: Modo de Comunicacin Multi-procesador

Registro B de Estado y Control del USART

Bit 7 RXCIE: Habilitacin de Interrupcin de RX Completa

Bit 6 TXCIE: Habilitacin de Interrupcin de TX Completa

Bit 5 UDRIE: Habilitacin de Interrupcin de Registro de Datos Vaco del


USART

Bit 4 RXEN: Habilitacin del Receptor

Bit 3 TXEN Habilitacin del Transmisor

Bit 2 UCSZ2: Tamao del Carcter

Bit 1 RXB8: 8vo Bit de Datos de Recepcin

Bit 0 TXB8: 9no Bit de Datos de Transmisin

Registro C de Estado y Control del USART


El registro UCSRC comparte la misma localidad de E/S del Registro UBRRH.

Bit 7 URSEL: Registro de Seleccin

Bit 6 UMSEL: Seleccin del Modo del USART

Bits 5:4 UPM1:0. Modo de Paridad

Bit 3 USBS: Seleccin del Bit de Stop

Bits 2:1. Tamao del Carcter

Bit 0 UCPOL: Polaridad de Reloj

Registro del Baud Rate del USART UBRRL y UBRRH


El registro comparte la misma localidad de E/S como el registro UCSRC.

Bit 15 URSEL: Seleccin de Registro

Bit 14:12 Bits Reservados

Bits 11:0 UBRR11:0. Registro del Baud Rate del USART

10.1.5. UART Sistema Bluetooth WT-11


El dispositivo Bluetooth lleva incorporado una interfase UART para poder
realizar una comunicacin con otros dispositivos. A continuacin se explica las
caractersticas bsicas de dicha UART:

Los niveles de tensin utilizados son de 0 a Vdd que son los mismos que utiliza
el microprocesador ATmega 168P, por lo cual no se necesita ningn tipo de
drivers para realizar adaptacin alguna.

Estn implementadas las cuatro seales bsicas de comunicacin serie con


control flujo, estas son UART_TX, UART_RX, UART_RTS y UART_CTS.
Pero para la comunicacin que se desea realizar slo sern usadas las de
transmisin y recepcin no obstante, las seales de control de flujo se han
conectado a dos pines del microprocesador por si en algn momento se quiere
realizar una comunicacin con control de flujo.

Las seales DTR, DSR y DCD son implementadas mediante puertos de entrada
y salida de propsito general del WT-11.

10.1.6. Configuracin Baud Rate


Este apartado es el ms importante dentro de la configuracin de la
comunicacin entre el microprocesador host y el sistema Bluetooth, ya que ambas
UART deben ser configuradas para que comuniquen con el mismo Baud Rate para que
los comandos sean entendibles en ambos sentidos.
CONFIGURACIN DEL BAUD RATE DEL ATmega168P
En la configuracin del ATmega intervienen los siguientes factores:

Frecuencia a la que trabaja el micro y si hay algn divisor de frecuencia


activado. Se trabaja con una frecuencia de 8MHz proporcionada por el oscilador
interno RC. La configuracin de esta fuente de reloj y de esta frecuencia la
realiza el programador.

Si est activado el bit U2X del registro USCRnA el cual dobla la velocidad a la
que transmite la UART. No ha hecho falta activar dicho flag ya que con 8 MHZ
se trabaja a una velocidad adecuada y doblando dicha velocidad no se consigue
mejorar la transmisin como se explicar a continuacin.

Una vez conocidas las condiciones de reloj en las que se realizar la transmisin
hay que configurar el registro de baud rate del microprocesador, que es un registro
doble, UBRRnH y UBRRnL.
El valor que se debe insertar en dicho registro se puede calcular mediante las
siguientes expresiones:

Donde Fosc es la frecuencia seleccionada y UBRRn el valor que se ha de cargar


en dicho registro de configuracin.
De la anterior expresin se deduce,

Esta ltima expresin se ha implementado mediante cdigo, el cual se carga


directamente de cargar los registros, para mayor informacin ver el capitulo dedicado al
cdigo.
En la siguiente tabla, que ha sido sacada del datasheet del micro se muestra los
distintos Baud Rate que se pueden conseguir con la frecuencia selecciona de 8 MHz y el
error que se comete.
El error se puede calcular con la siguiente expresin:

CONFIGURACIN DEL BAUD RATE DEL WT-11


El firmware que trae el dispositivo fija el Bate Rate a 115200 baud, pero este se
puede cambiar tocando la configuracin interna del firmware mediante la herramienta
que proporciona CSR (fabricante del microprocesador interno al chip Bluegiga) PSTool,
el cual viene dentro del paquete CSR Bluesuite.
En la siguiente tabla se muestra los valores de velocidad con los que se puede
configurar el dispositivo y sus correspondientes errores.

PROBLEMTICA DE CONFIGURACIN
El problema consiste en que el firmware (iWRAP) viene configurado por
defecto con un Bate Rate como ya se ha explicado anteriormente, si se intenta
configurar con este Baud Rate al microprocesador se comete un error muy grande, en
concreto como se puede observar de la tabla mostrada en el apartado de configuracin
del microprocesador, un error de 8,5 % este error es inadmisible, por lo que hay que
intentar configurarlo con otra tasa de transmisin.
Por otro lado si se configura a 9600 baud que es una tasa para la que el micro
tiene un error de 0%, se tiene en cambio un error de -0,82 % que puede llegar a ser un
poco elevado, adems de ser un tasa de transmisin que puede llegar a ser baja
conforme se eleva el flujo de informacin que se dese enviar.

SOLUCIN ADECUADA
Finalmente se ha decidido configurar ambos dispositivos con una tasa de 38400
baud, con la cual en el micro se obtiene un error de 0,2 % que es bastante bajo y en
cuanto al dispositivo Bluetooth se tiene un error de -0,18% que tambin es muy bajo.
Permitiendo adems tener una velocidad de transmisin ms elevada y adecuada para la
cantidad de transmisin que desea enviar.
Como se observa de la tabla de ejemplo de Baud Rate del Atmega, se ha
cargado con el valor 12.
La configuracin del WT-11 se explica en el apartado dedicado a la herramienta
de configuracin PSTool.

10.1.7. Configuracin Interna WT-11: Herramienta PSTool

Con la herramienta PSTool que viene incluida en el paquete software BlueSuite


proporcionado por CSR, se puede configurar las principales caractersticas funcionales
del firmware que contienen los chip CSR.
Esta aplicacin se ha utilizado para modificar el Baud Rate con el que funciona
por defecto iWRAP, para poder realizar la comunicacin con el microprocesador Host a
38400 baud como ya se explic anteriormente.
En el Datasheet del sistema Bluetooth WT -11 vienen los pasos seguidos para
poder cambiar la configuracin del Baud Rate.

10.2. Comunicacin SPI


A continuacin se describe como se ha realizado la comunicacin serie SPI, la
cual ha sido utilizada para comunicar el microprocesador Host con la memoria externa,
as como para programar el microprocesador se ha utilizado tambin esta interfase.

10.2.1. Introduccin
El Bus SPI (del ingls Serial Peripheral Interface) es un estndar de
comunicaciones, usado principalmente para la transferencia de informacin entre
circuitos integrados en equipos electrnicos. El bus de interface de perifricos serie o
bus SPI es un estndar para controlar casi cualquier electrnica digital que acepte un
flujo de bits serie regulado por un reloj.
Incluye una lnea de reloj, dato entrante, dato saliente y un pin de chip select,
que conecta o desconecta la operacin del dispositivo con el que uno desea
comunicarse. De esta forma, este estndar permite multiplexar las lneas de reloj.
Muchos sistemas digitales tienen perifricos que necesitan existir pero no ser
rpidos. La ventajas de un bus serie es que minimiza el nmero de conductores, pines y
el tamao del circuito integrado. Esto reduce el coste de fabricar montar y probar la
electrnica. Un bus de perifricos serie es la opcin ms flexible cuando muchos tipos
diferentes de perifricos serie estn presentes. El hardware consiste en seales de reloj,
data in, data out y chip select para cada circuito integrado que tiene que ser controlado.
Casi cualquier dispositivo digital puede ser controlado con esta combinacin de seales.
Los dispositivos se diferencian en un nmero predecible de formas. Unos leen el dato
cuando el reloj sube otros cuando el reloj baja. Algunos lo leen en el flanco de subida
del reloj y otros en el flanco de bajada. Escribir es casi siempre en la direccin opuesta
de la direccin de movimiento del reloj. Algunos dispositivos tienen dos relojes. Uno
para capturar o mostrar los datos y el otro para el dispositivo interno.

VENTAJAS

Comunicacin full-duplex.

Mayor velocidad de transmisin que con IC o SMBus.

Protocolo flexible en que se puede tener un control absoluto sobre los bits
transmitidos:
o No est limitado a la transferencia de bloques de 8 bits.
o Eleccin del tamao de la trama de bits, de su significado y propsito.

Su implementacin en hardware es extremadamente simple:


o Consume menos energa que IC o que SMBus debido que posee menos
circuitos (incluyendo las resistencias pull-up) y estos son ms simples.
o No es necesario arbitraje o mecanismo de respuesta ante fallos.
o Los dispositivos esclavos usan el reloj que enva el maestro, no necesitan
por tanto su propio reloj.
o No es obligatorio implementar un transceptor (emisor y receptor), un
dispositivo conectado puede configurarse para que solo enve, slo
reciba o ambas cosas a la vez.

Usa muchos menos terminales en cada chip/conector que una interfaz paralelo
equivalente.

Como mucho una nica seal especfica para cada esclavo (seal SS), las dems
seales pueden ser compartidas.

INCONVENIENTES

Consume ms terminales en cada chip que IC, incluso en la variante de 3 hilos.

El direccionamiento se hace mediante lneas especficas (sealizacin fuera de


banda) a diferencia de lo que ocurre en IC que se selecciona cada chip mediante
una direccin de 7 bits que se enva por las mismas lneas del bus.

No hay control de flujo por hardware.

No hay seal de asentimiento. El maestro podra estar enviando informacin sin


que estuviese conectado ningn esclavo y no se dara cuenta de nada.

No permite fcilmente tener varios maestros conectados al bus.

Slo funciona en las distancias cortas a diferencia de, por ejemplo, RS-232, RS485, o Bus CAN.

Como conclusin decir que este interfase se ha utilizado debido a que es un


estndar muy utilizado en la comunicacin con memora flash externas, y el
microprocesador utilizado dispone de este interfase.

ESQUEMA

La siguiente figura muestra el esquema de comunicacin utilizado, donde el


sistema maestro el microprocesador ATmega y el esclavo es la memoria 25P80. Las
lneas utilizadas son las de una comunicacin clsica, a estas se les ha aadido la de
hold que es especial para este tipo de memoria y esta fuera del mbito de una
comunicacin SPI clsica.

10.2.2. SPI ATMEGA 168P


En este capitulo se describe el interfase SPI que contiene el microprocesador
ATmega126P.

CARACTERSTICAS GENERALES
Las principales caractersticas de la interfase SPI son:

Comunicacin Full_duplex a tres cables, con transferencia de datos sncrona.

Configuracin Maestro-Esclavo.

Transferencia de datos primero LSB o MSB.

Siete programables tasas de Bits.

Flag de interrupcin de fin de transmisin.

Flag de proteccin de colisin de escritura.

Conmutacin del modo de funcionamiento Idle.

Doble velocidad (CK/2) en modo maestro.

DIAGRAMA DE BLOQUES
En la siguiente figura se puede observar el diagrama de bloques que componen
la interfase.

El sistema consiste en dos registros de desplazamiento y generador de reloj


maestro. El SPI maestro comienza el ciclo de comunicacin cuando se selecciona el
chip select (poniendo en bajo) del dispositivo esclavo con el que se desea realizar la
comunicacin. Tanto el maestro como el esclavo preparan los datos para ser enviados en
sus respectivos registros de desplazamiento y el maestro genera los pulsos de reloj
requeridos para intercambio de informacin. La informacin siempre es desplazada
desde el maestro hacia el esclavo sobre la salida del maestro entrada del esclavo
MOSI, y desde el esclavo hacia el maestro sobre la entrada del maestro salida del
esclavo MISO. Despus de cada envo de un paquete el maestro debe sincronizar el
esclavo colocando en alto la lnea de chip select #SS.
Cuando el SPI es configurado como maestro no se tiene un control automtico
sobre la lnea #SS, sta debe ser manejada por software para poder empezar. Cuando se
ha realizado dicho paso, escribiendo un byte sobre el registro de datos SPI se comienza
la generacin del reloj SPI y el hardware desplaza los 8 hacia el esclavo. Una vez
desplazado todo el byte el generador de reloj para, actualizando el flag de final de
transmisin. Si la interrupcin correspondiente est activada, sta se llevar a cabo. El
maestro puede continuar enviando el siguiente byte escribiendo dentro de SPDR o
establecer la seal de final de paquete colocando en alto la seal #SS. El ltimo byte
recibido ser almacenado en Buffer para su posterior uso.
Cuando se configura como esclavo el interfase SPI permanece durmiendo con la
seal MISO en tri-estado mientras el pin #SS se encuentre en estado alto. En este estado

mediante software se puede actualizar el contenido del registro de datos SPI, SPDR,
pero los datos no sern desplazados hasta que no se reciba una seal correcta de reloj y
el pin #SS se coloque en bajo. Una vez que el byte ha sido completamente desplazado,
el flag de final de transmisin SPIF es activado. Si la interrupcin correspondiente est
activada la rutina de servicio de interrupcin se llevar a cabo. El esclavo podra recibir
un nuevo dato antes de leer el que haba recibido anteriormente. El ltimo dato recibido
se almacenar en el registro Buffer para su posterior uso.
En la siguiente figura se puede observar el funcionamiento de los registros de
desplazamiento tanto del maestro como del esclavo.

El sistema contiene un buffer en la direccin de transmisin y tiene dos en la


direccin de recepcin. Esto significa que los bytes transmitidos no pueden ser escritos
en el registro de datos SPI antes que el ciclo entero de desplazamiento sea completado.
Sin embargo cuando se reciben los datos, los caracteres recibidos deben ser ledos del
registro de datos SPI antes que un nuevo carcter sea completamente desplazado. En
cualquier otro caso el byte ser perdido.

FUNCIONALIDAD DEL PIN #SS


MODO ESCLAVO
Cuando la SPI se encuentra configurado como esclavo el pin #SS es siempre una
entrada. Cuando dicho pin se coloca en bajo, el SPI se activa y el pin MISO pude
hacerse salida si es configurado por el usuario. El resto de pines son entradas.
Cuando el pin es conducido a alto, todos los pines son entradas y el SPI es
pasivo, lo cual significa que no puede recibir datos. Cuando el #SS es llevado a alto el
SPI esclavo realiza un reset lgico y coloca parcialmente algn dato recibido en registro
desplazamiento.

MODO MAESTRO
Si se configura el SPI como maestro se puede configurar la direccin del pin
#SS como se quiera.

Si el pin es configurado como salida el funcionamiento de tal pin es como una


pin de salida general del micro el cual se conectar con el otro pin #SS del esclavo.
Si en cambio de configura como entrada hay que asegurarse de que sta se
encuentra en estado alto, para asegurar una correcta operacin de SPI. Si estando
configurado como entrada se coloca en bajo el SPI interpretar que otro maestro ha
seleccionado el SPI como esclavo y comenzar a enviar datos.

10.2.3. Modos de Funcionamiento


Existen cuatro combinaciones de fase y polaridad del reloj con respecto a la
informacin serie, esto modos de funcionamiento son determinados por los bits de
control CPHA y CPOL. Los formatos posibles son mostrados en la siguiente tabla:

Las siguientes figuras muestran el diagrama de tiempo de funcionamiento de la


transferencia de informacin en los cuatro modos de funcionamiento Con CPHA = 0

 Con CPHA = 1

10.2.4. Modos SPI de la Memoria


La memoria puede manejarse mediante dos modos de funcionamiento con la
interfase SPI, dependiendo de cmo estn configurados los bits CPOL y CPHA. La
diferencia de funcionamiento entre los dos modos de funcionamiento se muestra en la
figura a continuacin y se refiere al estado de polaridad del reloj cuando el bus maestro
se encuentra en estado de standby.

Como conclusin se puede ver que hay q configurar el modo de funcionamiento


de ambos dispositivos de la misma forma con el objetivo de que la comunicacin se
realice de forma correcta.

10.3. Comunicacin Sistema Bluetooth Telfono Mvil Nokia


6132NFC

Como ya es conocido para la comunicacin con el Nokia 6132 NFC se utilizar el


estndar de comunicacin Bluetooth. En el capitulo dedicado a la especificacin
Bluetooth se vieron los distintos perfiles que se podan utilizar para realizar una
comunicacin Bluetooth y a su vez que protocolo se utilizaban en dichos perfiles para
llevar a cabo la comunicacin.
Dentro de todos esos perfiles se ha utilizado el perfil serie para realizar la
transmisin de informacin, es un perfil que como ya se ha comentado en captulos
anteriores permite emular un puerto serie utilizando como medio de transmisin
Bluetooth. Esto quiere decir que la informacin llegar al receptor, es decir el telfono
mvil, de forma continua. En concreto el telfono recibir una cadena de caracteres que
contendr todo la informacin de inters para la aplicacin que corre sobre el telfono
mvil.
El siguiente diagrama de flujo sirve para entender como se realiza los pasos para
establecer la comunicacin y enviar la informacin al telfono mvil.

Esperando
Llamada

RING
Direccin
Bluetooth
BDADDR

No
Nokia 6131
NFC

S
Canal
RFCOMM
1

Abrir
Comunicacin

Temperatura
Batera
Registros
Contadores

Enviar
Datos

Close
Link 1

Cerrar
Comunicacin

10.3.1. Establecimiento de la comunicacin


El establecimiento de la comunicacin se realiza un vez que se ha recibido una
llamada por parte del telfono mvil, mediante software se comprueba que la llamada
corresponde al telfono mvil Nokia 6131 NFC, esta comprobacin se realiza mediante
comparacin de la direccin Bluetooth del telfono la cual de antemano es conocida por
el sistema Bluetooth, con la direccin Bluetooth de dispositivo que ha realizado la
llamada.
En el caso que la direccin Bluetooth que se recibe no coincide con la del
telfono se cierra inmediatamente el canal de comunicacin que se haba abierto,

volviendo el sistema al estado inicial de reposo en el que espera una nueva solicitud de
comunicacin.

10.3.2. Envo de Informacin


Una vez establecida la comunicacin el sistema Bluetooth enva la trama de
caracteres por el canal de comunicacin serie abierto, esto es un por un canal del
protocolo RFCOMM que se abre cuando se establece la comunicacin.
En la siguiente figura se puede observar en que consiste la trama de informacin
que se enva al telfono:

Temperatura
(4 Bytes)

Batera
(6 Bytes)

Registro de los Contadores


(n Bytes)

En primer lugar se envan 4 bytes que corresponden con la medida de


temperatura que mide el sensor que lleva incorporado el WT-11. Se utilizan cuatro bytes
que corresponden 2 bytes al valor numrico de la temperatura con dos cifras y otros dos
bytes para enviar los caracteres C. Un posible ejemplo para este campo sera 25C.
A continuacin se mandan 6 bytes, estos corresponden con el % de batera del
sistema en el momento en el que se ha realizado la solicitud de comunicacin. Los bytes
corresponden 5 bytes para las cifras del % de batera con dos decimales ms los
caracteres de separacin de las cifras enteras de los decimales y smbolo porcentual. Por
ejemplo un posible valor para este campo sera 75,20%.
Por ltimo se envan los datos de los registros de las medidas de los contadores.
La siguiente figura constituye lo que sera un registro de una media.

El carcter -corresponde a la indicacin del comienzo del registro.

El siguiente byte en el ejemplo 1, corresponde al nmero de sensor. Se tienen


tres posibles sensores que corresponden a los tres concentradores de contadores,
que se muestran en la siguiente tabla.

SENSORES
GRUPO 1 SAN DESIDERIO

GRUPO 2 SAN LORENZO


GRUPO 3 SAN GIOBATTA

El carcter : sirve de separacin para los campos de fecha e instante.

La fecha se manda en formado dd#mm#aaaa, donde el carcter # sirve para


diferenciar los distintos subcampos que componen la fecha.

En ltimo lugar se enva el instante en formato hh.mm, en este caso se utiliza


el carcter * para diferenciar los subcampos.

El nmero de trama como la anterior que se enven depender del nmero de


medida de los contadores.

10.3.3. Cierre de la comunicacin


El cierre de la comunicacin lo realiza el sistema Bluetooth por medio del
comando CLOSE 0, el cual cierra el canal RFCOMM que previamente se haba abierto
al recibir la llamada por parte del Nokia 6131 NFC.

10.4. Comunicacin Sistema Bluetooth Otras tarjetas


Bluetooth.
Como se explicara ms adelante se han realizado pruebas de comunicacin del
Sistema Bluetooth diseado con otras tarjetas Bluetooth las cuales son un PC porttil
con Bluetooth incorporado u otra tarjeta de desarrollo del WT-11-

10.4.1. Establecimiento de la comunicacin

El establecimiento de la comunicacin se realiza exactamente igual que el caso


del mvil slo que ahora se comprobar que la direccin Bluetooth de la solicitud
recibida corresponde con unas de las tarjetas Bluetooth antes mencionadas.

10.4.2. Envo de Informacin


En cuanto al envo de informacin es parecido slo que los campos de la trama
que se enva aumentan, enviando todos los posibles datos de la comunicacin
establecida que pueden resultar interesante al receptor.
En la siguiente figura se observa la composicin de la trama:

Como se puede observar el volumen de informacin que se transmite en estos


casos es mayor. La informacin de los campos es la siguiente:

BER, corresponde a la tasa de error de transmisin en %.

TXPOWER, potencia de transmisin en dBm.

RSSI, potencia de recepcin en dBm.

PING, relacionado con el tiempo de respuesta en ms.

Lo otros campos son iguales que en el caso anterior.

10.4.3. Cierre de la comunicacin


Se realiza de la misma forma que en el caso anterior.

También podría gustarte