Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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.
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).
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.
MASTER
Atmega168p
TXat
RXwt
RXat
TXwt
RTSat
CTSwt
CTSat
RTSwt
SLAVE
WT-11
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:
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.
P: Bit de paridad.
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
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.
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.
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.
Las seales DTR, DSR y DCD son implementadas mediante puertos de entrada
y salida de propsito general del WT-11.
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:
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.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.
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.
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
Slo funciona en las distancias cortas a diferencia de, por ejemplo, RS-232, RS485, o Bus CAN.
ESQUEMA
CARACTERSTICAS GENERALES
Las principales caractersticas de la interfase SPI son:
Configuracin Maestro-Esclavo.
DIAGRAMA DE BLOQUES
En la siguiente figura se puede observar el diagrama de bloques que componen
la interfase.
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.
MODO MAESTRO
Si se configura el SPI como maestro se puede configurar la direccin del pin
#SS como se quiera.
Con CPHA = 1
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
volviendo el sistema al estado inicial de reposo en el que espera una nueva solicitud de
comunicacin.
Temperatura
(4 Bytes)
Batera
(6 Bytes)
SENSORES
GRUPO 1 SAN DESIDERIO