Vous êtes sur la page 1sur 12

OMBRE DEL PERIFRICO: UART

RECEIVER AD TRASMITTER.

UIVERSAL

ASYCHROOUS

DESCRIPCI GEERAL.
La UART permite al microcontrolador establecer comunicaciones seriales RS-232 con
otros dispositivos. El tipo de comunicacin Full Duplex, Asncrona y las velocidades de
transferencia son de hasta 115200 b.p.s.
DISPOIBLE E
AT90S2313, AT90xS2333,
AT90xS8535.

AT90xS4433,

AT90S4414,

AT90S8515AT90xS4434,

APLICACIOES
La UART es a menudo utilizada para realizar interfaces con computadoras personales.
Tambin se utiliza para adquisicin de datos mediante la conexin con otros instrumentos
tales como multmetros.
REGISTROS IVOLUCRADOS
OMBRE
B7
B6
B5
B4
B3
B2
B1
B0
REGISTRO
RXC
TXC UDRE
FE
OR
USR
RXCIE TXCIE UDRIE RXEN TXEN CHR9 RXB8 TXB8
UCR
MSB
LSB
UBRR
MSB
LSB
UDR
Tabla UART-1. Registros Involucrados con UART

El significado de cada bit y su funcin se puede observar en la Tabla UART-2.


BIT
significado
FUCI
RXC UART Receive Complete Este bit se establece a 1 cuando se recibe un
dato de manera serial por la UART.
TXC UART Transmit Complete Este bit se establece a 1 cuando ha terminado
de enviar un dato por la UART..
Mediante este bit la UART indica ya est lista
UDRE UART Data Register
Empty
para enviar otro dato.
Framing Error
Se establece a 1 cuando el bit de STOP es cero.
FE
(Un Error en la recepcin).
Se establece a 1 cuando llega un nuevo dato por
OR Overrun
la UART y no se ley el anterior. (Se ha perdido
un dato).
Continua...

64

Continuacin...
BIT
SIGIFICADO
RXCIE RX Complete Interrupt
Enable
TXCIE TX Complete Interrupt
Enable
Data
Register
UDRIE UART
Interrupt Enable
RXE Receiver Enable
TXE Transmitter Enable
CHR9 9 Bit Characters

RXB8 Receive Data Bit 8


TXB8 Transmit Data Bit 8

FUCI
1 Habilita Interrupcin de Recepcin.
1 Habilita Interrupcin de Transmisin.
1 Habilita Interrupcin de Registro de Datos
Vaco.
1 Habilita la Recepcin de datos.
1 Habilita la Transmisin de datos.
1 Hace que la longitud de los datos sea de 9
bits.
0 Longitud de los datos 8 bits.
Si CHR9 es 1 este bit contiene el noveno bit
recibido.
Si CHR9 es 1 este bit ser el noveno bit a
transmitir.

Tabla UART-2. Bits de los registros especiales utilizados UART.

RECEPCI Y TRASMISI DE DATOS.


Para recibir o transmitir por la UART se deben de habilitar primero los bits RXEN y TXEN
del registro UCR.
El registro UDR se utiliza para recibir y transmitir datos por la UART. La longitud de los
datos generalmente es de 8 bits, sin embargo, se puede configurar al perifrico para que la
longitud sea de 9 bits mediante el bit CHR9 del registro UCR. Esto es til para ciertas
aplicaciones donde el noveno bit puede servir como bit de direccin.
Para saber si ha llegado un dato por la UART puede utilizarse el bit RXC del registro USR:
si este bit se encuentra en 1 puede leerse el registro UDR para recuperar el ltimo dato
recibido. Otra opcin es habilitar la interrupcin de recepcin y dentro de la I.S.R. leer el
registro UDR.
Para transmitir datos por la UART simplemente escriba al registro UDR, esto har que el
perifrico realice lo necesario para comenzar a transmitir. Es conveniente revisar el bit
TXC, para asegurarse que ya se ha transmitido completamente un dato antes de enviar otro.
La recepcin y transmisin de datos se realiza por los pines RXD y TXD del
microcontrolador, la Tabla UART-3 muestra la posicin de estos pines en cada miembro de
la familia AVR con empaque DIP.

65

DISPOSITIVO

TXD
RXD
3
2
AT90S2313
(PD1)
(PD0)
3
2
AT90xS2333
(PD1)
(PD0)
3
2
AT90xS4433
(PD1)
(PD0)
11
10
AT90S8515
(PD1)
(PD0)
11
10
AT90S4414
(PD1)
(PD0)
15
14
AT90xS4434
(PD1)
(PD0)
7
6
AT90xS8535
(PB6)
(PB5)
Tabla UART-3. Localizacin de los pines TXD y RXD en la familia AVR.
(EMPAQUETADO DIP).
En las comunicaciones seriales la velocidad de transmisin / recepcin de datos es muy
importante. Esta velocidad esta relacionada con el Baud Rate.

SELECCI DEL BAUD RATE.


Para seleccionar el Baud Rate se utiliza el registro especial UBRR. La ecuacin (1) muestra
la relacin entre el valor de Baud Rate y el del registro UBRR.
Baud

Rate =

fosc
--------------(1)
16(UBRR + 1)

En la ecuacin (1) Baud Rate puede tomar cualquier valor, sin embargo los valores ms
comunes son mostrados en la Tabla UART-4.

66

Baud rate
2400
4800
9600
14400
19200
28800
38400
57600
76800
115200
Tabla UART-4. Valores ms comunes de Baud Rate.
En lugar de proporcionar una tabla completa con valores de UBRR, Baud Rate y
frecuencias de oscilador principal (fosc) se mostrar un mtodo para encontrar el valor de
UBRR en funcin de Baud Rate y fosc.
Para configurar las transmisiones / recepciones a un Baud Rate especfico (Tabla UART-3)
proceda como se muestra a continuacin.

(a) Encuentre el valor de UBRR para un Baud Rate.


f osc
UBRR =
1 --------------(2)
16(BaudRate )
(b) El valor de UBRR encontrado en el paso (a) se redondea. Este valor debe estar entre 1 y
255.
(c) Sustituya en la ecuacin (1) el valor de UBRR encontrado en el paso (b). Con esto
encontrar Baud RateREAL
(d) Calcule el porcentaje de error.
Baud Rate REAL
--------------(3)
% Error = 100 1
Baud Rate

Se recomienda que el porcentaje de error sea menor a 1%.

EJEMPLO UMERICO.
Suponga que se desea configurar la UART a un Baud Rate de 19200. La frecuencia del
oscilador (cristal) del microcontrolador es 4MHz.
4000000
(a) UBRR =
1 =12.02
16(19200 )
(b) Redondeando se tiene UBRR =12
(c) Baud

Rate REAL =

4000000
= 19230.769
16(12 + 1)

67

19230.769
(d) % Error = 100 1
= 0.16 0.2
19200

En resumen se tiene Baud Rate 19200, fosc=4MHz, UBRR=12, Error 0.2 %. Como el
error es menor a 1% se puede utilizar el valor encontrado de UBRR sin problemas.
Algunas frecuencias de osciladores permiten seleccionar valores de Baud Rate con
porcentajes de error muy bajos. La Tabla UART-5 muestra algunos ejemplos.

fosc= 1.8432 Mhz


BAUD
RATE
2400
4800
9600
14400
19200
28800
38400
57600
76800
115200

%ERROR

UBRR

fosc= 3.6864 Mhz


%ERROR

UBRR

fosc= 7.3728 Mhz


%ERROR

UBRR

0.0
47
0.0
95
0.0
191
0.0
23
0.0
47
0.0
95
0.0
11
0.0
23
0.0
47
0.0
7
0.0
15
0.0
31
0.0
5
0.0
11
0.0
23
0.0
3
0.0
7
0.0
15
0.0
2
0.0
5
0.0
11
0.0
1
0.0
3
0.0
7
33.3
1
0.0
2
0.0
5
0.0
0
0.0
1
0.0
3
Tabla UART-5. Valores de UBRR para algunas frecuencias de cristal.

SECUECIA DE COFIGURACI UART


Deshabilite interrupciones. Recomendado pero no necesario.
Configure los pines TXD y RXD como entradas.
Configure el Baud Rate. Ver SECCION SELECCIN DEL Baud Rate
Seleccione la longitud de los datos. Generalmente es 8 bits.
UCR<CHR9>=0 8 bits
UCR<CHR9>=1 9 bits
5. Si su aplicacin lo requiere, habilite las interrupciones siguientes:

1.
2.
3.
4.

Interrupcin de Recepcin. UCR<RXCIE>=1


Interrupcin de Transmisin. UCR< TXCIE >=1
Interrupcin de UDR vaco. UCR<UDRIE>=1

6. Habilite la interrupcin transmisin y recepcin de datos. Ver Tabla UART-2.


7. Habilite interrupciones globales.
Para transmitir un dato por medio de la UART, simplemente escriba al registro UDR el
dato correspondiente. Para leer la ultima palabra recibida, lea el valor del registro UDR.

68

I.S.R.
Para que se generen interrupciones se requiere que se encuentren habilitadas, incluidas las
interrupciones globales.
Cuando se completa una transmisin, se genera la Interrupcin de Transmisin Para evitar
corrupcin de datos, antes de escribir al registro UDR verifique que se haya completado la
transferencia anterior.
Cuando se recibe un dato por la UART, se genera la Interrupcin de Recepcin, si el dato
anterior no fue ledo, se genera un error de sobreflujo.
La Tabla UART-6 muestra el vector de interrupcin y la direccin correspondiente para
cada dispositivo de la familia AVR.
ITERRUPCI
DE RECEPCIO

ITERRUPCI
DE TRASMISIO

ITERRUPCI
DE UDR VACIO

DISPOSITIVO VECTOR DIRECCIO VECTOR DIRECCIO VECTOR DIRECCIO


8
$007
10
$009
9
$008
AT90S2313
9
$008
11
$00A
10
$009
AT90xS2333
9
$008
11
$00A
10
$009
AT90xS4433
10
$009
12
$00B
11
$00A
AT90S8515
10
$009
12
$00B
11
$00A
AT90S4414
12
$00B
14
$00D
13
$00C
AT90xS4434
12
$00B
14
$00D
13
$00C
AT90xS8535
Tabla UART-6. Vectores de interrupcin para UART.

IMPLATACIO
En aras de la claridad, el cdigo presentado no est optimizado ni en tamao ni en
velocidad.
El siguiente programa configura a la UART a 19200 Baudios. Longitud de 8 Bits,
Interrupciones de Recepcin y Transmisin habilitadas. fosc es 4MHZ Cada vez que llega
un dato por la UART se hace eco.
;-Configuracin
;-Manejo Por Interrupciones.
;************************************************************************
.include "8515def.inc" ;archivo que contiene los nombres de registros
;especiales
;Sustityalo por el archivo correspondiente al
;microcontrolador que utiliza.
;************************************************************************
.org
$0 ;vector de inicio.
rjmp RESET
;redireccionado a la direccin donde se encuentra RESET
;************************************************************************
.org
URXCaddr
;Vector de UART Recepcion completa.
rjmp Rx_Completa ;redireccionado.
.org
UDREaddr
;Vector de Registro UDR vacio.

69

rjmp UDR_Vacio
;redireccionado.
.org
UTXCaddr
;Vector de UART Transmisin completa.
rjmp Tx_Completa ;redireccionado.
;************************************************************************
;ISR De Transmision Completa
Tx_Completa:
;Escriba aqui su codigo
reti
;************************************************************************
;ISR De Recepcion Completa
Rx_Completa:
;Escriba aqui su codigo
in r18,UDR;Lee el ltimo dato recibido.
;Se guarda en r18.
out UDR,r18 ;Regresar el dato (ECO).
reti
;************************************************************************
;ISR De UDR Vacio.
UDR_Vacio:
;Escriba aqui su codigo
reti
RESET:
;inicio de programa.
;************************************************************************
ldi
r16,high(RAMEND)
out
SPH,r16
ldi
r16,low(RAMEND)
out
SPL,r16
;************************************************************************
;PASO 1
cli
;SREG<I>=0.int. deshabilitadas.
;PASO 2
cbi DDRD,0;Pin RXD como entrada
cbi DDRD,1;Pin TXD como entrada
;PASO 3
ldi r17,0x0c;Baud Rate=19200
out UBRR,r17;
;PASO 4
cbi UCR,CHR9;Longitud de Datos 8 bits
;PASO 5
sbi UCR,RXCIE;Interrupcin de Recepcin.
sbi UCR,TXCIE;Interrupcin de Transmisin.
cbi UCR,UDRIE;Interrupcin de UDR vaco.No Habilitada.
;PASO 6
sbi UCR,TXEN;Habilita Transmisin
sbi UCR,RXEN;Habilita Recepcin.

70

;PASO 7
sei
loop:
nop
nop
rjmp loop

;Habilita Interrupciones Globales

;loop infinito

En aras de la claridad, el cdigo presentado no est optimizado ni en tamao ni en


velocidad.
El siguiente programa configura a la UART a 19200 Baudios. Longitud de 8 Bits,. fosc es
4MHZ Cada vez que llega un dato por la UART se hace eco.
;-Configuracin
;-Manejo Por Escaneo.
;************************************************************************
.include "8515def.inc" ;archivo que contiene los nombres de registros
;especiales
;Sustityalo por el archivo correspondiente al
;microcontrolador que utiliza.
;************************************************************************
.org
$0 ;vector de inicio.
rjmp RESET
;redireccionado a la direccin donde se encuentra RESET
;************************************************************************
RESET:
;inicio de programa.
;************************************************************************
ldi
r16,high(RAMEND)
out
SPH,r16
ldi
r16,low(RAMEND)
out
SPL,r16
;************************************************************************
;PASO
;PASO 1
cli
;SREG<I>=0.int. deshabilitadas.
;PASO 2
cbi DDRD,0;Pin RXD como entrada
cbi DDRD,1;Pin TXD como entrada
;PASO 3
ldi r17,0x0c;Baud Rate=19200
out UBRR,r17;
;PASO 4
cbi UCR,CHR9;Longitud de Datos 8 bits
;PASO 5
cbi UCR,RXCIE;Interrupcin de Recepcin.NO HABILITADA.
cbi UCR,TXCIE;Interrupcin de Transmisin. NO HABILITADA.
cbi UCR,UDRIE;Interrupcin de UDR vaco.No Habilitada. NO HABILITADA.

71

;PASO 6
sbi UCR,TXEN;Habilita Transmisin
sbi UCR,RXEN;Habilita Recepcin.
;PASO 7
sei
;Habilita Interrupciones Globales
loop:
nop
nop
sbis USR,RXC;Llego nuevo Dato?
rjmp loop;No, seguir esperando
in
r18,UDR ;Si, guardarlo en r18
out UDR,r18 ;Hacer eco.
nop
nop
rjmp loop
;loop infinito

72

GLOSARIO
ADC. Convertidor Analgico Digital. Es un dispositivo que convierte una seal
Analgica en usa seal digital
Analgica, seal. Es una seal definida en un intervalo continuo de tiempo cuya amplitud
puede adoptar un intervalo continuo de valores
Asncrona, comunicacin. Una forma de comunicacin en la cual la informacin se
transmite como un flujo en serie de bits. Cada carcter se codifica como una cadena de bits
y se separa por un bit de <<inicio de carcter>> y bit de <<parada>>. A veces se usa un bit
de paridad para la deteccin y correccin de errores.
Asncrono, sistema. Son aquellos que pueden cambiar de estado en cualquier momento en
que una o ms seales que entran al sistema cambie.
AVR. Nombre que le da la empresa ATMEL a su familia de microcontroladores RISC de 8
bits. Oficialmente AVR no tiene ningn significado.
Baud Rate. Ver Baudio.
Baudio. Los cambios de seal por segundo que se producen en un dispositivo se miden en
baudios. Un baudio representa e nmero de veces que el estado de la lnea de comunicacin
cambia por segundo. Si un dispositivo transfiere un bit por cada cambio de seal entonces
la velocidad en baudios y la velocidad de transmisin ser la misma. Las tcnicas de
codificacin empleadas representan cada bit con dos o ms cambios de seal
CPU. Unidad Central de Proceso.
Digital, seal. Es una seal en tiempo discreto con amplitud cuantificada. Dicha seal se
puede representar mediante una secuencia de nmeros
DIP. Dual In Package. Es un tipo encapsulado en el cual existen dos hileras de terminales.
Discreto, seal en tiempo. Es una seal definida slo en valores discretos de tiempo.
EIA Electronics Industries Association.
Full Duplex. Es un tipo de comunicacin serial en la cual el flujo de los datos puede ser en
ambos sentidos de manera simultnea.
I.S.R. Rutina de Servicio de Interrupcin. Es una parte de cdigo que se ejecuta cuando se
atiende a una interrupcin.
IL. Es la desviacin de los valores de la funcin de transferencia real a los valores de una
lnea recta. Para un ADC las desviaciones son medidas en las transiciones de un paso al
siguiente.
Interrupcin. Es una peticin que se hace al CPU para que atienda un evento que acaba de
ocurrir.
LSB. Una medida de la resolucin de un ADC, puesto que define el nmero de divisiones
o unidades del rango analgico total. 1LSB= FSR/(2n-1) Donde FSR Es la Resolucin a
Plena Escala y n es el nmero de Bits de salida del ADC.
LSB. Bit Menos Significativo.
MSB. Bit Ms Significativo.
Muestreador retenedor. Es un circuito que toma imgenes instantneas de una seal
elctrica. Generalmente un circuito Muestreador Retenedor se coloca a la entrada de los
ADC.
Registro. Conjunto de Bits que son considerados como una sola entidad.
Reloj. Seal elctrica pulsante, generalmente cuadrada con la que se alimenta a un sistema
digital para propsitos de sincrona.

73

RISC. Reduced Instruction Set code.


RS-232. Es un estndar de comunicaciones seriales introducido por la EIA en 1962.
Serial, comunicacin. Consiste en la transmisin de seales a travs de un nico cable o
enlace. Los bits se transmiten secuencialmente, uno tras otro.
Serie, comunicacin. Ver Serial.
Sincrona, comunicacin. A diferencia de las comunicaciones asncronas, se cuenta con
un mecanismo de reloj para separar grupos de bits en una transmisin.
Tacmetro. Dispositivo para medicin de velocidades angulares.
Vector, interrupcin. Es un nmero que indica el nmero de interrupcin dentro de una
tabla de prioridades dentro del microcontrolador, este nmero tiene asociada una
localidad de memoria a la que la CPU del microcontrolador salta cuando se genera una
interrupcin.

74

BIBLIOGRAFA.

AT90S/LS2323 & AT90S/LS2343 DATA SHEET. ATMEL. www.atmel.com


AT90S/LS2333 & AT90S/LS4433 DATA SHEET. ATMEL. www.atmel.com
AT90S/LS4434 & AT90S/LS8535 DATA SHEET. ATMEL. www.atmel.com
AT90S1200 DATA SHEET. ATMEL. www.atmel.com
AT90S2313 DATA SHEET. ATMEL. www.atmel.com
AT90S4415/8515 DATA SHEET. ATMEL. www.atmel.com
Lan Times Enciclopedia de Redes Mc Graw Hill. Tom Sheldon
Sistema de Monitoreo de Seales Con Salidas Analgicas para Aplicaciones
Crticas en Tiempo Real Asdrbal L. Chau. Tesis de Maestra. Noviembre 2000.
Sistemas de Control en Tiempo Discreto Segunda Edicin. Katsuhiko Ogata..
Pearson Educacin.
Sistemas Digitales, Principios y Aplicaciones Quinta Edicin, Ronald Tocci.
Prentice Hall.
Understanding Data Converters, Application Report. Texas Instruments. 1995.

75