Universidad de Santiago de Chile

Facultad de Ingeniería
Departamento de Ingeniería Eléctrica

Informe Experiencia N°3
UART

Asignatura: Tópicos de Microprocesadores
Profesor: Ing. Felipe Garrido S.
Alumnos: Sebastián Díaz. – Guillermo Bobadilla.

Lunes, 13 de junio de 2016

...........................1 Desarrollo actividad 1................................................................................................................ 5 2.................. 8 4 Conclusiones................................................................................................2 Desarrollo actividad 2........3 1......................................................................................................................................................... 6 3 Actividades desarrollo..................................................................................................2 Actividad 2..................................................... 7 3....................4 1............ 4 1. 5 2..... 9 5 Anexos.................. 13 5................. 7 3................................................................................................................................................................................3..2 Desarrollo ejemplo 2................................................2 Diagrama de bloque desarrollo actividad 2.. 3 1................................................1 Diagrama de bloque desarrollo actividad 1............................2............................................................................................................................................................................11 5...................................................................................3....1 Función Inicializar UART............... 11 5.......................................................................2......................................................................................1 Objetivos............................................................... 4 2 Actividades ejemplo... 14 2 .................3 Fotografías mostrando el funcionamiento de la placa con las funciones solicitadas....................................................................1 Desarrollo ejemplo 1..................................................4 Función Transmitir string........................1 Actividad 1..........................2.....................................................3 Función Transmitir carácter....................................................................................13 5.2..................................................12 5.................Contenido 1 Introducción............... 3 1....................... 3 1.............................................................................2 Funciones a utilizar..................................................................................2 Función Recibir carácter..................................

1 Función Inicializar UART. y posteriormente el desarrollo de problemas planteados través de un programa ideado para ser visualizado tanto en la pantalla de un computador. que permite enviar y recibir datos desde un computador hacia el microcontrolador a través del puerto de comunicación serial RS 232 integrada en la placa de desarrollo CADmega 128-B. //Inicializa UART0 a 9600 8-N-1 3 . dispositivos de audio y video. que pueden ser operados en modo síncrono o asíncrono. 2) Enviar datos. La CPU ATmega128 posee 2 canales de comunicación serial (USARTs). A continuación. El presente informe detalla las actividades realizadas en la tercera experiencia del Laboratorio de Tópicos de Microprocesadores. Estas funciones permiten manejar el UART del microcontrolador. 1. La UART0 está alambrada a un convertidor TTL/RS232. caracteres y variables a través del puerto serial hacia un receptor (Computador). permitió la familiarización con este periférico. como en la pantalla LCD de la placa de entrenamiento CADmega 128-B.2. //Inicializa la UART junto con establecer la transmisión de datos (baudrate). Ethernet. En esta experiencia se manejó el periférico UART del microcontrolador. ambas USARTs pueden ser usadas de manera directa en modo asíncrono (es decir. se muestran las funciones para el manejo del UART.c y CADmega 128-Bbase. Los objetivos que se quieren alcanzar en esta experiencia de laboratorio es: 1) Familiarizarse con el estándar RS 232. WiFi. como UARTs) y ello otorga inmediata compatibilidad con infinidad de equipos que usan estos estándares.1 Introducción Hoy en día es muy común el uso de comunicación serial UART en sistemas embebidos y proyectos de aplicación en electrónica. Las funciones a utilizar en esta experiencia se encuentran declaradas en el formulario UART. 1. conversión a USB. Ejemplo: serial_init (9600). de modo que sus señales aparecen listas para conectarse a un PC u otro equipo compatible con EIA232. En la placa CADmega128.c. caracteres y variables a través del puerto serial desde un emisor (Computador).1 Objetivos. 3) Recibir datos.2 Funciones a utilizar. Lo anterior. el cual permitirá realizar los ejemplos expuestos en este laboratorio y el desarrollo de las actividades propuestas. estos existen en dispositivos Bluetooth (SPP). inicialmente mediante el desarrollo de programas básicos. 1. Estas funciones se encuentran implementadas en el Proyecto Base del programa principal. void serial_init(baudrate).

uart_puts().3 Función Transmitir carácter. Ejemplo: ucharc.1. 1. 4 .4 Función Transmitir string. // lo envía directamente al LCD.2.2. Ejemplo: uart_putc('A'). Ejemplo: uart_puts(“HOLA!\n”).2 Función Recibir carácter. c=serial_rx_uchar(). unsigned char serial_rx_uchar (). uart_putc(). // Microcontrolador espera recibir un byte por el puerto serial y lo retorna. 1.2. // espera recibir carácter o byte desde PC lcd_char(c).

//Set interrupt.1 Desarrollo ejemplo 1. serial_init(9600). Como primera actividad se revisaron dos ejemplos propuestos que permite comprender el funcionamiento del UART del microcontrolador. uchar dato.0). sei(). se muestra el desarrollo: lcd_init(). Estas actividades tienen como fin poseer los conocimientos necesarios para realizar lo solicitado en el informe. lcd_pos(5. lcd_num_dec(dato). ciclo_princ: dato= serial_rx_uchar(). Se actualiza los códigos a la base presentada este semestre.0). lcd_num_hex(dato). habilita todas las interrupciones del micro.2 Actividades ejemplo.0). //dato es el carácter recibido if(dato!=10 && dato!=13) //si el dato es distinto al terminador de línea entonces que lo muestre: { lcd_clear(). 2. //regresa a ciclo principal. } _delay_ms(500). goto ciclo_princ. a continuación. lcd_char(dato). 5 . lcd_char('h'). lcd_pos(0. lcd_pos(12.

uart_putc(13). } if (sw_flanco(3)) { serial_num(71). 6 . } if (sw_flanco(2)) { uart1_puts_p(“hola mundo”). Se actualiza los códigos a la base presentada este semestre.2. uart_putc(13). se muestra el desarrollo: serial_init(9600). sei().2 Desarrollo ejemplo 2. ciclo_princ: if (sw_flanco(1)) { uart_putc('*'). habilita la interrupción int n=0.//Set interrupt. a continuación.

1 Desarrollo actividad 1. Este número ira incrementándose desde 1 a 255 cada 500ms y se debe desplegar en el LCD es la esquina superior izquierda. uart_putc(13). //imprime en LCD el valor cuenta en decimal serial_num('c').5).c++) { lcd_text (0. //************************ ACTIVIDAD 1 *********************** int main().c<255. lcd_num_dec(c).0. //Tiempo de retardo } goto clcp. //Se declara valor que utilizará el contador clcp: for(c=0. uart_putc(13). } goto ciclo_princ. En caso de recibir el carácter “n”. uart_putc(13).14159."Cuenta: "). 3. _delay_ms(500). En caso de recibir el carácter “a”. } if (sw_flanco(4)) { serial_num_float(3. desactivar la alarma (desplegar mensaje: “Normal”) y apagar el LED. sei(). //envía valor cuenta en decimal al puerto serie. lcd_init(). } 7 . 3 Actividades desarrollo. Enviar caracteres del PC al micro por el puerto serial. A partir de los conocimientos expuestos el alumno debe: Crear un código que envíe un número al PC desde el micro por el puerto serial. int c=0. { serial_init(9600). desplegar en el LCD el mansaje “Alarma activa” y encender en la placa el LED0.

// mensaje mostrado si condición se cumple. //************************ ACTIVIDAD 2 *********************** serial_init(9600).0.0. set_led(1. // mensaje mostrado si condición se cumple. set_led(1. lcd_init(). { lcd_clear(). // enciende Led } if (valor=='n') // Segunda condición impuesta. //Declara variable de tipo unsigned character."normal").//valor es el carácter recibido if(valor!=10 && valor!=13) // Si el dato es distinto al terminador de línea entonces que muestre: if(valor =='a') // Ciclo IF para ejecutar ciclo si el valor es 'a') { lcd_clear().1).2 Desarrollo actividad 2. sei().0). } 8 . // limpia la pantalla lcd_text(0."Alarma Activada").3. cplp: valor= serial_rx_uchar(). // apaga Led } goto cplp. // limpia la pantalla lcd_text(0. uchar valor.

Guillermo Bobadilla Al utilizar un dispositivo tan avanzado como un microcontrolador. Las librerías uart.4 Conclusiones. que está convertida a RS-232 y lista para usarse por el conector DB-9 de la izquierda de la placa. su facilidad de uso. equipos industriales y de producción. para esto utilizamos comunicación RS232 con el UART (Receptor/Transmisor Universal Asíncrono) que se encuentra incluido en el microcontrolador. falta de corrección de error. 2) Recibir varias decenas de bytes o caracteres del computador “en segundo plano: sin necesidad de paralizar al micro para esperar la recepción (buffer de recepción). es decir. precisamente por su sencillez sigue siendo muy utilizado en módems.). Se ratifica el diseño del microcontrolador para la ejecución eficiente del código C compilado. Sin embargo. Por otra parte. es decir permite enviar y recibir caracteres por el puerto serial. Todo lo anterior. La comunicación por RS-232 tiene ya más de 40 años y por su antigüedad. seguir las mismas definiciones para la partida. a través de rutinas de programación en C. por supuesto. hubo una aproximación al recurso “interrupciones”. a través de la herramienta Termite. Aspectos destacados de esta herramienta son la facilidad de instalación (posiblemente con ajustes pre configurados) mediante una búsqueda del puerto COM adecuado y. como se mencionó. Tanto la transmisión como la recepción de datos están bufferizadas y utilizan interrupciones. 9 . posee numerosas limitaciones (velocidad de transmisión. 8 bits de datos y 1 bit de parada. etc. adicionalmente se complementa con el manejo de interfaz display alfanumérico para mostrar mensajes de texto desde el micro al PC y viceversa. no es multipunto. parada y los bits de datos. Esto permite al micro: 1) Transmitir datos que van mucho más lentos que la velocidad del mismo micro (buffer de transmisión). El software Termite es una herramienta que facilita el uso y configuración del terminal RS232. 2) Sin paridad.h proveen toda esta funcionalidad. El protocolo supone que tanto el transmisor y el receptor están configurados de la misma manera. con una gran ventana que contiene todos los datos recibidos y una línea de edición para escribir las cadenas para transmitir. La comunicación se realizó bajo las siguientes condiciones: 1) 19200 bps. Se utilizará la UART#0.c y uart. además dispone de LEDs para mostrar transmisión y recepción. Utiliza una interfaz similar a la de los programas de "chat" "mensajero ". etc. PLCs. el cual permite cambiar la continuidad de ejecución de un programa para atender una necesidad. permite una mayor comprensión de la manipulación del puerto serie (UART) del microcontrolador. se requieren de interfaces para evaluar los datos o enviar comandos al microcontrolador. Esta configuración se conoce popularmente como 8-N-1.

usos en domótica. Esta comunicación permite reflejar datos directamente en la pantalla LCD disponible en el microcontrolador. entre otros. como también el uso del microcontrolador para la adquisición de datos para un análisis mayor (si se integran sensores a un microcontrolador. Además. el código compila por lo que asumiendo que el código funciona como es esperado se concluye que el microcontrolador es un dispositivo con comunicación bidireccional capaz de enviar y recibir información. lamentablemente por algún error de comunicación.c y uart. El uso de la comunicación serie por el puerto RS232 es objetivamente más sencillo que otros tipos de comunicación. el microcontrolador enviaba datos erróneos al terminal usado para leer los bytes (termite.exe).Sebastián Díaz. En el desarrollo de la experiencia en la primera actividad se comprueba el envío de datos desde un PC hacia la placa. De este modo. Aun así. por ejemplo. Esta actividad que. el uso del lenguaje de alto nivel más las librerías uart. Se sospecha que el adaptador USB a RS232 presenta problemas. si se pudo programar. de manera que se pueden activar dispositivos de manera remota. seguridad.h facilita el uso de los microcontroladores con microprocesador Atmel. labor que el micro se comporta correctamente. Esta aplicación es útil para microcontroladores que requieran una señal externa desde un PC para activar algún dispositivo. La segunda actividad se solicita enviar datos desde el microcontrolador hacia el PC. el uso del software AVR STUDIO para compilar y depurar el código. El microcontrolador una vez más demostró su versatilidad. la información enviada desde el microcontrolador puede ser utilizada para integrar éste a un sistema mayor. así el uso del microcontrolador se abre a usos a distancia. Este estándar que tiene más de 40 años se caracteriza por ser de fácil programación y rápido para las necesidades de microcontroladores comunes. 10 . tomar registros en el tiempo). estos datos también se utilizan para encender un led.

5 Anexos.1 Diagrama de bloque desarrollo actividad 1 11 . 5.

5.2 Diagrama de bloque desarrollo actividad 2 12 .

3.3 Fotografías mostrando el funcionamiento de la placa con las funciones solicitadas 5.5.1 Actividad 1 13 .

5.2 Actividad 2 14 .3.

15 .