OMBRE DEL PERIFÉRICO: UART - UIVERSAL ASYCHROOUS RECEIVER AD TRASMITTER. DESCRIPCIÓ GEERAL. La UART permite al microcontrolador establecer comunicaciones seriales RS-232 con otros dispositivos. El tipo de comunicación Full Duplex, Asíncrona 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 interfaces con computadoras personales. También se utiliza para adquisición de datos mediante la conexión con otros instrumentos tales como multímetros. 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 función 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. Se establece a “1” cuando el bit de STOP es cero. FE Framing Error (Un Error en la recepción). 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
Continuación... BIT SIGIFICADO RXCIE RX Complete Interrupt Enable TXCIE TX Complete Interrupt Enable UDRIE UART Data Register 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 Interrupción de Recepción. “1” Habilita Interrupción de Transmisión. “1” Habilita Interrupción de Registro de Datos Vacío. “1” Habilita la Recepción de datos. “1” Habilita la Transmisión 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 periférico 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 dirección. 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 opción es habilitar la interrupción de recepción 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 periférico 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 recepción y transmisión de datos se realiza por los pines RXD y TXD del microcontrolador, la Tabla UART-3 muestra la posición 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. Localización de los pines TXD y RXD en la familia AVR. (EMPAQUETADO DIP). En las comunicaciones seriales la velocidad de transmisión / recepción 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 ecuación (1) muestra la relación entre el valor de Baud Rate y el del registro UBRR. Baud Rate =
fosc
16(UBRR + 1)
--------------(1)
En la ecuación (1) Baud Rate puede tomar cualquier valor, sin embargo los valores más 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 más comunes de Baud Rate. En lugar de proporcionar una tabla completa con valores de UBRR, Baud Rate y frecuencias de oscilador principal (f osc) se mostrará un método para encontrar el valor de UBRR en función de Baud Rate y f osc. Para configurar las transmisiones / recepciones a un Baud Rate específico (Tabla UART-3) proceda como se muestra a continuación.
(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 ecuación (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
(d) % Error = 100 1 −
19230.769 = 0.16 ≅ 0.2 19200
En resumen se tiene Baud Rate ≅19200, f osc=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.
f osc= 1.8432 Mhz BAUD RATE 2400 4800 9600 14400 19200 28800 38400 57600 76800 115200
%ERROR
UBRR
f osc= 3.6864 Mhz %ERROR
UBRR
f osc= 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 1. 2. 3. 4.
Deshabilite interrupciones. Recomendado pero no necesario. Configure los pines TXD y RXD como entradas. Configure el Baud Rate. Ver SECCION “SELECCIÓN DEL Baud Rate” Seleccione la longitud de los datos. Generalmente es 8 bits. UCR
=”0” 8 bits UCR=”1” 9 bits 5. Si su aplicación lo requiere, habilite las interrupciones siguientes: Interrupción de Recepción. UCR=”1” Interrupción de Transmisión. UCR< TXCIE >=”1” Interrupción de UDR vacío. UCR=”1”
6. Habilite la interrupción transmisión y recepción 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 transmisión, se genera la Interrupción de Transmisión Para evitar corrupción 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 Interrupción de Recepción, si el dato anterior no fue leído, se genera un error de sobreflujo. La Tabla UART-6 muestra el vector de interrupción y la dirección 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 interrupción para UART.
IMPLATACIO En aras de la claridad, el código presentado no está optimizado ni en tamaño ni en velocidad.
El siguiente programa configura a la UART a 19200 Baudios. Longitud de 8 Bits, Interrupciones de Recepción y Transmisión habilitadas. f osc es 4MHZ Cada vez que llega un dato por la UART se hace eco. ;-Configuración ;-Manejo Por Interrupciones. ;************************************************************************ .include "8515def.inc" ;archivo que contiene los nombres de registros ;especiales ;Sustitúyalo por el archivo correspondiente al ;microcontrolador que utiliza. ;************************************************************************ .org $0 ;vector de inicio. rjmp RESET ;redireccionado a la dirección 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 Transmisión 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=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;Interrupción de Recepción. sbi UCR,TXCIE;Interrupción de Transmisión. cbi UCR,UDRIE;Interrupción de UDR vacío.No Habilitada. ;PASO 6 sbi UCR,TXEN;Habilita Transmisión sbi UCR,RXEN;Habilita Recepción.
70
;PASO 7 sei loop: nop nop rjmp loop
;Habilita Interrupciones Globales
;loop infinito
En aras de la claridad, el código presentado no está optimizado ni en tamaño ni en velocidad.
El siguiente programa configura a la UART a 19200 Baudios. Longitud de 8 Bits,. f osc es 4MHZ Cada vez que llega un dato por la UART se hace eco. ;-Configuración ;-Manejo Por Escaneo. ;************************************************************************ .include "8515def.inc" ;archivo que contiene los nombres de registros ;especiales ;Sustitúyalo por el archivo correspondiente al ;microcontrolador que utiliza. ;************************************************************************ .org $0 ;vector de inicio. rjmp RESET ;redireccionado a la dirección 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=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;Interrupción de Recepción.NO HABILITADA. cbi UCR,TXCIE;Interrupción de Transmisión. NO HABILITADA. cbi UCR,UDRIE;Interrupción de UDR vacío.No Habilitada. NO HABILITADA.
71
;PASO 6 sbi UCR,TXEN;Habilita Transmisión sbi UCR,RXEN;Habilita Recepción. ;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 Analógico Digital. Es un dispositivo que convierte una señal Analógica en usa señal digital” Analógica, señal. “Es una señal definida en un intervalo continuo de tiempo cuya amplitud puede adoptar un intervalo continuo de valores” Asíncrona, comunicación. “Una forma de comunicación en la cual la información se transmite como un flujo en serie de bits. Cada carácter se codifica como una cadena de bits y se separa por un bit de <> y bit de <>. A veces se usa un bit de paridad para la detección y corrección de errores.” Asíncrono, sistema. Son aquellos que pueden cambiar de estado en cualquier momento en que una o más señales 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 ningún significado. Baud Rate. Ver Baudio. Baudio. “Los cambios de señal por segundo que se producen en un dispositivo se miden en baudios. Un baudio representa e número de veces que el estado de la línea de comunicación cambia por segundo. Si un dispositivo transfiere un bit por cada cambio de señal entonces la velocidad en baudios y la velocidad de transmisión será la misma. Las técnicas de codificación empleadas representan cada bit con dos o más cambios de señal” CPU. Unidad Central de Proceso. Digital, señal. “Es una señal en tiempo discreto con amplitud cuantificada. Dicha señal se puede representar mediante una secuencia de números” DIP. Dual In Package. Es un tipo encapsulado en el cual existen dos hileras de terminales. Discreto, señal en tiempo. “Es una señal definida sólo en valores discretos de tiempo”. EIA Electronics Industries Association. Full Duplex. Es un tipo de comunicación serial en la cual el flujo de los datos puede ser en ambos sentidos de manera simultánea. I.S.R. Rutina de Servicio de Interrupción. Es una parte de código que se ejecuta cuando se atiende a una interrupción. IL. Es la desviación de los valores de la función de transferencia real a los valores de una línea recta. Para un ADC las desviaciones son medidas en las transiciones de un paso al siguiente. Interrupción. Es una petición que se hace al CPU para que atienda un evento que acaba de ocurrir. LSB. “Una medida de la resolución de un ADC, puesto que define el número de divisiones o unidades del rango analógico total.” 1LSB= FSR/(2n-1) Donde FSR Es la Resolución a Plena Escala y n es el número de Bits de salida del ADC. LSB. Bit Menos Significativo. MSB. Bit Más Significativo. Muestreador retenedor. Es un circuito que toma imágenes instantáneas de una señal eléctrica. 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. Señal eléctrica pulsante, generalmente cuadrada con la que se alimenta a un sistema digital para propósitos de sincronía.
73
RISC. Reduced Instruction Set code. RS-232. Es un estándar de comunicaciones seriales introducido por la EIA en 1962. Serial, comunicación. “Consiste en la transmisión de señales a través de un único cable o enlace. Los bits se transmiten secuencialmente, uno tras otro.” Serie, comunicación. Ver Serial. Sincronía, comunicación. A diferencia de las comunicaciones asíncronas, se cuenta con un mecanismo de reloj para separar grupos de bits en una transmisión. Tacómetro. Dispositivo para medición de velocidades angulares. Vector, interrupción. Es un número que indica el número de interrupción dentro de una tabla de prioridades dentro del microcontrolador, este número tiene asociada una localidad de memoria a la que la CPU del microcontrolador salta cuando se genera una interrupción.
74
BIBLIOGRAFÍA. ♦ ♦ ♦ ♦ ♦ ♦ ♦ ♦
“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 Señales Con Salidas Analógicas para Aplicaciones Críticas en Tiempo Real” Asdrúbal L. Chau. Tesis de Maestría. Noviembre 2000. ♦ “Sistemas de Control en Tiempo Discreto” Segunda Edición. Katsuhiko Ogata.. Pearson Educación. ♦ “Sistemas Digitales, Principios y Aplicaciones” Quinta Edición, Ronald Tocci. Prentice Hall. ♦ “Understanding Data Converters, Application Report”. Texas Instruments. 1995.
75