Вы находитесь на странице: 1из 8

1

5.2 Comunicacin USART (Transmisin y recepcin serie asincrnica y


sincrnica)

5.2.1 Descripcin general

La interface USART (Universal Synchronous and Asynchronous serial Receiver
and Transmitter) est implementada dentro del Controlador Atmega 168 como
un hardware independiente que le permite establecer una comunicacin serie
full duplex .
La interface provee tanto comunicacin sincrnica como asincrnica.
Nosotros describiremos aqu el modo de operacin asincrnico.
La interface USART es muy flexible dado que permite:
- Seleccionar un gran nmero de baud rates
- Transmitir caracteres entre 5 y 9 bits de longitud
- Insertar en forma automtica los bits de start y stop en el carcter
transmitido.
- Calcular en forma automtica el bit de paridad e insertarlo en el
carcter transmitido.
- Comprobar automticamente si hay error de paridad en el carcter
recibido.

En la figura siguiente se muestra un diagrama en bloques simplificado de la
USART




























2

Las lneas interrumpidas delimitan las tres partes principales de la USART:
- Generador de reloj
- Transmisor
- Receptor
Los registros de control son compartidos por todas las unidades.

5.2.2 Generador de baud rate

El Generador de reloj provee el reloj para la transmisin y recepcin.
El Generador de reloj se divide en dos partes:
- El registro de 16 bits de baud rate UBRRn
- Un contador hacia abajo
Utilizando la USART en modo asincrnico (bit U2Xn del registro UCSRnA en 0)
el baud rate se determina de acuerdo a la siguiente expresin:





5.2.3 Transmisin y recepcin de datos

El transmisor posee dos unidades principales:
- Un registro buffer de datos de transmisin de 8 bits (TXB)
- Un registro de desplazamiento.
Los datos a transmitir se escriben en primer lugar en el registro buffer. Los bits
de start y stop son aadidos automticamente a los de datos en el registro de
desplazamiento. La paridad es calculada automticamente y el bit
correspondiente agregado en el registro de desplazamiento. El dato es luego
desplazado bit a bit hacia el pin TxDn al baud rate especificado .

El transmisor posee dos banderas de estado:
- UDREn (bit 5 del registro UCSRnA).
Esta bandera se pone en 1 cuando el registro buffer est vaco,
indicando que est listo para recibir datos y se pone en 0 cuando se
escribe en el registro buffer.
La CPU puede escribir en el registro buffer solo si el bit UDREn est
en 1. Estando en 0 toda operacin de escritura ser ignorada.
Una vez que el dato a transmitir est escrito en el registro buffer, que
el transmisor est habilitado (TXENn en 1 en el registro UCSRnB) y
que el registro de desplazamiento se encuentra vaco, el transmisor
carga el dato en el registro de desplazamiento y a continuacin es
transmitido en serie hacia el pin TXDn al baud rate seleccionado.
Esta bandera genera tambin el evento de interrupcin de Vaciado
del Registro de Dato (vector de interrupcin N 20) que es habilitado
por el bit UDRIEn (bit 5 del registro UCSRnB).
Si se maneja la transmisin por interrupcin, durante la ejecucin de
la misma se debe escribir el registro UDRn para que se claree la
bandera UDREn, si esto no se hace se produce una nueva
interrupcin una vez finalizada.

3
- TXCn (bit 6 del registro UCSRnA).
Esta bandera se pone en 1 cuando todo el cuadro del registro de
desplazamiento es desplazado a la salida y cuando el registro buffer
est vaco.
Esta bandera genera el evento de interrupcin por Transmisin
Completa (vector N 21) que es habilitado por el bit TXCIEn (bit 6 del
registro UCSRnB).
TXCn se pone en cero automticamente cuando se ejecuta la
interrupcin por Transmisin Completa o escribiendo un 1 en la
direccin del bit.

El receptor posee tambin dos unidades principales:
- Un registro buffer de datos de recepcin de 8 bits (RXB) que
comparte la misma direccin (UDRn) en el mapa de memoria con el
registro buffer de transmisin.
- Un registro de desplazamiento

El receptor de la USART se habilita poniendo un 1 en el bit RXENn (bit 4 del
registro UCSRnB).
El receptor empieza a recibir datos cuando detecta un bit de start vlido.
Cada bit que sigue al start bit ser muestreado al baud rate elegido y
desplazado dentro del Registro de Desplazamiento hasta que se recibe el
primer stop bit. Cuando esto ltimo sucede, es decir cuando se completa un
cuadro en el registro de desplazamiento, su contenido se mueve hacia el
registro buffer de recepcin.
El receptor posee la bandera RXCn (bit 7 del registro UCSRnA) que indica el
estado del mismo. Cuando est en 1 significa que hay datos sin leer en el
registro buffer.
Esta bandera se pone en cero cuando se vaca el registro buffer de recepcin.
Si la recepcin se inhabilita poniendo un 0 en el bit RXENn, el buffer se vaca
y el bit RXCn se pondr en cero.
Esta bandera genera el evento de interrupcin por Recepcin Completa (vector
N 19) que es habilitado por el bit RXCIEn (bit 7 del registro UCSRnB).
Si la recepcin se maneja por interrupcin, durante la ejecucin de la misma se
debe leer el registro UDRn para que se claree la bandera RXCn, si esto no se
hace se produce una nueva interrupcin una vez finalizada.

5.2.4 Descripcin de registros

UDRn Registro de Datos de I/O de la USART n.






Los dos registros comparten la misma direccin. El Registro Buffer de Datos
de Transmisin (TXB) ser el destino de los datos escritos en la direccin de
UDRn. La lectura de la direccin de UDRn retornar el contenido del Registro
Buffer de Datos de Recpcin (RXB).

4

UCSRnA Registro de Control y Estado A de la USART n





Bit 7 RXCn: USART Receive Complete
Ver pgina 8.
Bit 6 TXCn: USART Transmit Complete
Ver pginas 7 y 8.
Bit 5 UDREn: USART Data Register Empty
Ver pginas 7 y 8.
Bit 4 FEn: Frame Error
Este bit se pone en 1 cuando el carcter entrante en el registro buffer de
recepcin present un Error de Frame al ser recibido, es decir, cuando el
primer bit de Stop del carcter entrante en el registro buffer de recepcin es
cero.
Este bit es vlido hasta que se lee el registro buffer de recepcin.
El bit FEn es cero cuando el bit de stop del dato recibido es 1.
Este bit debe ponerse en 0 cuando se escribe el registro UCSRnA.
Bit 3 DORn: Data OverRun
Este bit se pone en 1 cuando se detecta una condicin de Data OverRun. Esto
sucede cuando el registro buffer de recepcin est lleno, hay un nuevo carcter
esperando en el registro de desplazamiento y un nuevo bit de Start es
detectado.
El bit es vlido hasta que se produce la lectura del registro buffer de recepcin.
Este bit debe ponerse en 0 cuando se escribe el registro UCSRnA.
Bit 2 UPEn: USART Parity Error
Este bit se pone en 1 cuando el carcter entrante en el registro buffer de
recepcin present un Error de Paridad al ser recibido y al mismo tiempo la
Comprobacin de Paridad estaba habilitada (UPMn1=1 en el registro UCSRnC)
Este bit es vlido hasta que se lee el registro buffer de recepcin.
Este bit debe ponerse en 0 cuando se escribe el registro UCSRnA.
Bit 1 U2Xn: Double The USART Transmission Speed
En modo asincrnico controla el valor del divisor de baud rate:
- U2Xn = 0 , divisor de baud rate = 16.
- U2Xn = 1, divisor de baud rate = 8.
Bit 0 MPCMn: Multi-processor Communication Mode
Este bit habilita el modo de comunicacin Multi-procesador.
No ser de aplicacin en este curso por lo tanto se pondr en 0.

UCSRnB Registro de Control y Estado A de la USART n






Bit 7 RXCIEn : RX Complete Interrupt Enable n


5
Este bit en 1 habilita la interrupcin por la bandera RXCn

Bit 6 TXCIEn Complete Interrupt Enable n
Este bit en 1 habilita la interrupcin por la bandera TXCn
Bit 5 UDRIEn: USART Data Register Empty Interrupt Enable n
Este bit en 1 habilita la interrupcin por la bandera UDREn.
Bit 4 RXEn: Receiver Enable n
Este bit en 1 habilita el receptor de la USART y deshabilita el normal
funcionamiento del pin RXDn como puerto. Un cero en el bit RXEn deshabilita
el receptor, vaca el registro buffer de recepcin e invalida las banderas Fen,
DORn y UPEn.
Bit 3 TXEn: Transmitter Enable n
Este bit en 1 habilita el transmisor de la USART y deshabilita el normal
funcionamiento del pin TXDn como puerto. La deshabilitacin del transmisor
(TXEn = 0) no se hace efectiva hasta tanto los registros buffer y de
desplazamiento del receptor no contengan datos a ser transmitidos.
Bit 2 UCSZn2: Character Size n
El bit UCSZn2 combinado con los bits UCSZ1:0 del registro UCSRnC configura
el nmero de bits de datos en el cuadro utilizado tanto en la recepcin como en
la transmisin.
Bit 1 RWB8n: Receive Data Bit 8 n
Se utiliza en la recepcin de cuadros de 9 bits.
No ser de aplicacin en este curso.
Bit 0 TXB8n: Transmit Data Bit 8 n
Se utiliza en la transmisin de cuadros de 9 bits.
No ser de aplicacin en este curso.

UCSRnC Registro de Control y Estado C de la USART n





Bits 7:6 UMSELn1:0 USART Mode Select
Estos bits seleccionan el modo de operacin de la USART como se muestra en
la tabla.








Bits 5:4 UPMn1:0: Parity Mode
Estos bits habilitan y configuran la generacin y comprobacin de paridad de
acuerdo a la tabla siguiente.






6
Bit 3 USBS: Stop Bit Select
Selecciona el nmero de bits de Stop insertados por el transmisor. El receptor
ignora esta configuracin.






Bits 2:1 UCSZn1:0: Character Size
Los bits UCSZn1:0 combinados con el bit UCSZn2 del registro UCSRnB
configuran el nmero de bits de datos en el cuadro a transmitir y recibir













Bit 0 UCPOLn: Clock Polarity
Utilizado slo en modo sincrnico.
No ser de aplicacin en este curso.

UBRRnL and UBRRnH Registros de Baud Rate de la USART



Bits 15:12 Reserved Bits




Bits 11:0 UBRR11:0: Registro de Baud Rate de la USART

El registro UBRRnH contiene los cuatro bits ms significativos y el registro
UBRRnL los ocho menos significativos de control de baud rate de la USART.
Al escribir el registro UBRRnL se iniciar un actualizacin inmediata del
preescalador de baud rate.










7
5.2.5 Diagramas de flujo de la Transmisin y de la Recepcin
Inicializacin



Transmisin

































Interrupciones de transmisin











TXENn = 1
TXCn = 1
NO
S
PROGRAMA
escribe un byte
en UDRn
TSR vaco
NO
UDR carga el TSR
TSR desplaza byte TXDn
Auto
I =1
UDREn = 1
UDRIEn = 1
DREI
Vector 20
UDREn = 0
UDRn lleno
UDRIE = 0
UDRn vaco
NO
S
Se configuran los registros UCSRnA, UCSRnB, UCSRnC, UBRRnH y UBRRnL
8








Recepcin
































Interrupcin de recepcin









I =1
TXCn = 1
TXCIEn = 1
TCI
Vector 21
TXCn = 0
Auto
TXCn = 1
NO
S
UDRn vaco
&
RXENn = 1
START Bit
NO
S
RSR recibe caracter de
RXD
RXD
n
STOP Bit
NO
UDRn recibe caracter de RSR
Auto
I =1
RXCn = 1
RXCIEn = 1
RCI
Vector 19
RXCn = 0
Leyendo
UDRn
RXEN = 0
NO
S
UDRn lleno
TSR vaco
PROGRAMA chequea errores FE, DOR, UPE y lee
registro UDRn
S

Вам также может понравиться