Capitulo 8 USART 8.0 Introducción
La comunicación serial es un proceso de envío de múltiples bits de datos sobre un solo alambre. Es una reminiscencia del telégrafo original, en el cual los bits fueron los puntos y las rayas del código Morse. Los bits de un byte serial están separados en tiempo tal que el dispositivo receptos puede determinar los niveles lógicos de cada bit. El USART es empleado para comunicarse del microcontrolador a varios otros dispositivos. Ejemplos de estos dispositivos incluyen la herramienta terminal del Code Vision (empleado para los problemas y la depuración de los problemas de los programas), otros microcontroladores que requieren comunicarse con otros microcontroladores para efectuar un trabajo. La forma regular de comunicación serial, y la forma que se discutirá aquí, es asíncrona. La cual es asíncrona en el sentido que la señal de reloj común no se requiere tanto en la transmisión como en la recepción para la sincronización de la detección de los datos. Comunicación serial asíncrona emplea un bit de arranque y un bit de fin de transmisión agregados al byte de datos para permitir al receptor la determinación del tiempo de cada bit. En la siguiente figura se muestra los elementos del byte de la comunicación serial asíncrona. Esta figura muestra la definición de cada bit de la palabra serial. El mensaje inicia con una espera estando en alto y pasando a bajo para iniciar el mensaje. El bit de arranque o inicio toma el valor de un bit completo y es seguido por los ocho bits de él byte de dato que se muestra sobre una línea serial en un orden inverso, esto es, el bit menos significativo aparece primero y el bit más significativo aparece al último. El bit de fin de mensaje sigue al bit más significativo corresponde a un uno lógico, el mismo valor para el bit de espera.
St (n) P Sp Idle
Bit de inicio siempre en cero logico. Bits de datos (0 a 8). Bit de pariedad, puede ser par o impar. Bit o bits de fin de mensaje, siempre en uno logico. Bit de espera. No existe transferencia de dato sobre la linea de comunicación
El flanco de bajada inicia la secuencia de transmisión en el receptor serial. Iniciando desde el flanco de bajada del bit de inicio, el receptor espera 1.5 bits antes de muestrear la línea receptora. Después de eso, el receptor espera 1 bit por cada bit, por lo tanto se muestrea cada bit de dato sucesivo en el centro del periodo par a máxima eficiencia.
Afortunadamente, todo el tiempo del formateo del byte serial, el muestreo de los bits seriales, y la suma del bit de inicio y el bit de fin de transmisión son manejados automáticamente por el universal synchronous asynchronous receiver transmitter (USART).
8.1 USART
El transmisión y receptor serial asíncrono y síncrono universal (USART) es una unidad de comunicación periférica muy flexible, que en le microcontrolador atemga8 permite entre otras funciones.
Operación full dúplex (se puede enviar y recibir datos simultáneamente)
Operación síncrona y asíncrona
Operación en modo maestro esclavo con reloj síncrono
Soporta frames de 5,6,7,8 y 9 datos y 1 o 2 de parada
Generador de paridad par o impar
Detección de errores (sobre flujo de datos, error en el frame)
Filtrado de ruido (inicio falso, filtro digital)
Generación de interrupciones por transmisión completa, por recepción completa o por registro de datos de transmisión vacía
Comunicación entre multiprocesadores
Doblador de velocidad modo de comunicación asíncrona
8.2 Norma RS 232
La interfaz RS-232 está diseñada para distancias cortas, de hasta 15 metros según la norma, y para velocidades de comunicación bajas, de no más de 20 Kilobytes/segundo. A pesar de ello, muchas veces se utiliza a mayores velocidades con un resultado aceptable. La interfaz puede trabajar en comunicación asíncrona o síncrona y tipos de canal simplex, half duplex o full duplex. En un canal simplex los datos siempre viajarán en una dirección, por ejemplo desde DCE (Data communication equipment) a DTE (Data terminal equipment). En un canal half duplex, los datos pueden viajar en una u otra dirección, pero sólo durante un determinado periodo de tiempo; luego la línea debe ser conmutada antes que los datos puedan viajar en la otra dirección. En un canal full duplex, los datos pueden viajar en ambos sentidos simultáneamente. Las líneas de handshaking de la RS-232 se usan para resolver los problemas asociados con este modo de operación, tal como en qué dirección los datos deben viajar en un instante determinado.
Si un dispositivo de los que están conectados a una interfaz RS-232 procesa los datos a una velocidad menor de la que los recibe deben de conectarse las líneas handshaking que permiten realizar un control de flujo tal que al dispositivo más lento le dé tiempo de procesar la información. Las líneas de " hand shaking" que permiten hacer este control de flujo son las líneas RTS y CTS. Los diseñadores del estándar no concibieron estas líneas para que funcionen de este modo, pero dada su utilidad en cada interfaz posterior se incluye este modo de uso. La norma RS 232 es un protocolo de comunicación serial que define la transmisión física entre la terminal DTE (Data terminal equipment) y un modem DCE (Data communication equipment). Este protocolo define un uno lógico como una señal comprendida en el intervalo de -5 volts a -15 volts y un cero lógico como una señal comprendida en el intervalo de +5 volts a +15 volts. Bajo esta terminología, la primera transmisión de 1 a 0 lógico, define un bit de inicio, bit de arranque, a la que le siguen 5, 6,7 u 8 bits de datos. El octavo bit se emplea como bit de paridad, mecanismo de detección de errores; al final de la transmisión, la señal debe regresar al valor lógico cero, el cual se define como bit de fin de transmisión, que se puede configurar como uno o dos bits de parada. El conector normalizado para este protocolo es el conector V24, de 25 terminales, sin embargo, en equipos de cómputo es más utilizado el conector DB9 de 9 terminales, las terminales de este conector se muestran en la siguiente tabla.
Numero Nombre CD 1 RXD 2 TXD 3 DTR 4 GND 5 DSR 6 RST 7 8 CTS 9 RI Tabla 8.1 Pines de conexión RS232 conector DB9.
Función Carrier detect Recepción de dato Transmisión de dato Data terminal ready Tierra del sistema Data set ready Request to send Clear to send Ring indicator
8.3 Configuración de la USART.
8.3.1 Registro de entrada salida de datos de la USART, UDR.
Es el registro donde se escriben los datos a transmitir (TXB) y donde se leen los datos recibidos (RXB), sólo se pueden escribir en este registro cuando el bit UDRE (USART data register empty). Los datos escritos en este registro mientras UDRE esta en cero, serán ignorados. 8.3.2 Registro de control y estado A de la USART, UCSRA.
Bit 7 – RXC, recepción completa. Este bit se activa cuando existen datos no leídos en el buffer de recepción.
Bit 6 – TXC, transmisión completa. Este bit se activa cuando se han enviado todos los datos del buffer de transmisión.
Bit 5 – UDRE, registro de datos de la USART vacio. Indica que el buffer UDR está listo para recibir nuevos datos.
Bit 4 – FE, error en el frame. Se activa cuando existe un error en el frame de datos recibidos.
Bit 3 – DOR, data overrun. Si el buffer de recepción está lleno y se detecta un nuevo bit de inicio.
Bit 2 – PE, error de paridad. Si se activa la verificación de paridad (UPM1=1) y existe un error de paridad en la transmisión, este bit se activa.
Bit 1 – U2X, doblador de velocidad de la USART. Sólo tiene efecto en modo asíncrono, reduce el divisor de baud rate de 16 a 8, lo que ocasiona que se duplique la velocidad de transmisión.
Bit 0 – MPCM, modo de comunicación multiprocesador. Activa el mo do de comunicación multiprocesador, todos los frames recibidos que no contengan información de dirección serán ignorados.
8.3.3 Registro de control y estado B de la USART, UCSRB.
Bit 7 – RXCIE, habilitación por interrupción por recepción completa.
Bit 6 – TXCIE, habilitación de interrupción por transmisión completa.
Bit 5 – UDRIE, habilitación de interrupción por registro de datos de USART vacio.
Bit 4 – RXEN, habilita el receptor de la USART.
Bit 3 – TXEN, habilita el transmisor de la USART.
Bit 2 – UCSZ2, en conjunto con la UCSZ1:0, establecen el tamaño de bits de datos a utilizar.
Bit 1 – RXB8, si se escogió un frame de 9 bits de datos, aquí se ubica el noveno bit recibido y debe ser leído antes de leer los 8 bits restantes.
Bit 0 – TXB8, si s escogió un frame de 9 bits de datos, aquí se debe de escribir el noveno bit de datos y debe escribirse antes de los ocho restantes.
8.3.4 Registro de control y estado C de la USART, UCSRC.
Bit 7 – URSEL, este bit selecciona si se accede al registro UCSRC (URSEL=1) o al registro UBRRH (URSEL=0).
Bit 6 – UMSEL, modo de operación de la USART, cero en este bit la USART opera en modo asíncrono, con un uno en este bit, la USART opera de forma síncrona.
Bit 5:4 – Modo de paridad, las posibles combinaciones para modo de operación con paridad se muestran en la tabla 8.2.
Bit 3 – USBS, selección de bits de parada; 0=1 bit de parada, 1=2 bits de parada.
Bit 2:1 – UCSZ1:UCSZ0, en conjunto con UCSZ2, establecen el tamaño de bits de datos, de acuerdo a la tabla 8.3.
Bit 0 – UCPOL, polaridad de reloj, sólo aplica en modo síncrono y determina la relación entre el cambio en la salida de datos y la entrada de datos y el reloj de sincronía (XCK), como lo muestra la tabla 8.4.
UPM1 UPM0 Modo de paridad 0 Desactivada 0 1 Reservado 0 0 Activada, paridad par 1 1 Activada, paridad impar 1 Tabla 8.2 Modos de paridad UCSZ2
UCSZ1
UCSZ0
Tamaño de datos
0 0 5 bits 0 0 1 6 bits 0 1 0 7 bits 0 1 1 8 bits 0 0 0 Reservado 1 0 1 Reservado 1 1 0 Reservado 1 1 1 9 bits 1 Tabla 8.3 Tamaño de datos. UCPOL Cambio en transmisión (TXD) 0 Flanco de subida en XCK Flanco de bajada en XCK 1 Tabla 8.4 Configuración de UCPOL
Muestreo de recepción (RXD) Flanco de bajada en XCK Flanco de subida en XCK
8.3.5 Registros de sección de baud rate, UDRRH y UDRRL.
Bit 11:0 – UBRR11:UBRR0, registro de baud rate de la USART. Para una completa lista de valores de configuración consulte la hoja de datos del microcontrolador, paginas 156-159.
8.4 Práctica del USART. 8.4.1 Objetivo.
Conocer el funcionamiento y los registros que intervienen en la configuración del USART. 8.4.2 Desarrollo.
Arme el circuito de la figura 8.8. 8.4.3 Código.
//_________________________inicio del programa #include
#include #include char data; void init_USART(void){ UBRRL=25;
//configurar USART para
UCSRB=(1<
UCSRC=(1<
void TX_USART(void){ data=data-32;
// resta 32 para obtener
loop_until_bit_is_set(UCSRA,UDRE); // valor ASCII en mayúsculas UDR=data;
// enviar dato
}
ISR (SIG_UART_RECV){
//interrupción de recepción USART
Data=UDR;
//leer dato recibido
TX_USART();
//función de envío de dato
}
int main(){ init_USART(); while(1); } 8.5 Anexo. 8.5.1 Hyperterminal (configuración).
Para comenzar la configuración, diríjase al botón de Inicio y seleccione: Programas Accesorios - Hyperterminal. Si no tiene la carpeta de Hyperterminal: Dentro de Mi PC haga doble click sobre el icono de Panel de Control. Luego haga doble click sobre Agregar o Quitar Programas y haga un click sobre la pestaña de Instalación de Windows. Ahora para verificar las opciones de comunicaciones que tiene instalada, haga doble click sobre Comunicaciones , luego en las Propiedades, y marque la opción de Hyperterminal y seleccione Aceptar hasta que el programa empiece a instalar el Hyperterminal.
Se visualizará una ventana como lo muestra la figura. Haga doble clic sobre el ícono Hypertrm.
Al presentarse esta pantalla, en el campo de Nombre, escriba el nombre con el que desea identificar la sesión (puede escribir T-NET) y oprima el botón de Aceptar .
En el campo de Conectar utilizando, se selecciona el puerto de comunicación (COM) en donde se encuentre su módem instalado. Oprima el botón de Aceptar.
Las propiedades del puerto (COM x) no deben sufrir modificaciones. En esta pantalla oprima el botón de Aceptar .
En esta pantalla empezará a parpadear el cursor, en donde debe escribir el siguiente comando AT&V y oprimir la tecla de Enter. De no visualizarse las letras al teclearlo escriba el siguiente comando ATE1 y presione Enter al tratar de escribir podrá visualizar los comandos. Esta será la pantalla con todo los perfiles que tiene configurado, en donde hay que observar los valores que se encuentran en: S7, S9, S10, y en S12. Si tienen valores por debajo de los que se mencionarán a continuación hay que modificarlos, para que la transmisión no sea interrumpida. Ahora escriba los siguientes comandos: ats7=80 Haga un click en la tecla de ENTER. Deberá aparecer OK ats9=100 Haga un click en la tecla de ENTER. Deberá aparecer OK ats10=255 Haga un click en la tecla de ENTER. Deberá aparecer OK ats12=120 Haga un click en la tecla de ENTER. Deberá aparecer OK at&w Haga un click en la tecla de ENTER. Deberá aparecer OK. De lo contrario escriba atw atx3 Haga un click en la tecla de ENTER. Deberá aparecer OK at&k3 Haga un click en la tecla de ENTER. Deberá aparecer OK. De lo contrario estriba atk3 at%c=1 Haga un click en la tecla de ENTER. Deberá aparecer OK. De lo contrario escriba at%c1 , at&c=1 ó at&c1 at&w Haga un click en la tecla de ENTER. Deberá aparecer OK. De lo contrario escriba atw Una vez concluida la configuración, vaya al menú de File (Archivo) y seleccione Exit (Salir). Le preguntará si desea desconectarse, haga un click en Yes (Si), y si desea guardar sesión, seleccione la opción Yes (Si). Saldrá un nuevo ícono con el nombre o la letra que coloca al principio, cierre la ventana y realice la conexión nuevamente directamente desde el ícono Internet, observando si fue solventado el inconveniente con el módem.