ESCUELA POLITÉCNICA NACIONALFACULTAD DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA LABORATORIO DE CONTROL CON MICROPROCESADORES PRÁCTICA NO. 01 “COMUNICACIÓN SERIAL ASINCRÓNICA” COMUNICACIÓN SERIAL ASINCRÓNICA 1. OBJETIVO Familiarizar al estudiante con el uso del pórtico de comunicación serial (USART) del microcontrolador ATMEGA164P y el puerto serial del computador personal. 2. DESARROLLO 2.1. Consultar los comandos que permiten manejar el puerto de comunicación serial de un PC, mediante Visual Studio, Matlab y LabView. VISUAL STUDIO Estos son los comandos e instrucciones más frecuentes para utilizar el puerto serie: Principales mandatos para utilizar el puerto serie: Serie = My.Computer.Ports.OpenSerialPort("COM1") 'Constructor 'Definir las características de la comunicación Serie.BaudRate = 19200 'velocidad de comunicaciones Serie.DataBits = 8 'Longitud para Byte de datos Serie.Parity = Parity.Even 'paridad(enumeracion parity) Serie.StopBits = StopBits.Two 'Bits parada después datos 'Abrir/Control/Liberar Puerto Serie.Open() 'Abrir el puerto Serie Serie.Close() 'Cerrar el Puerto Serie Serie.Dispose() 'Liberar objecto Dim SiNo As Integer SiNo = Serie.IsOpen 'El Puerto esta abierto? Dim Puerto As String Puerto = Serie.PortName 'Nombre del puerto 'Manejo y Control de señales Dim Estado As Boolean 'True=Activa / False=Inactiva ReadBufferSize = 1024 'Definir tamaño buffer recepcion Serie.XOnXOff 'Control recepcion/envio Serie.CtsHolding 'Señal Clear to Send Estado = Serie.ReadExisting() 'Leer una linea 'Leer datos existentes en buffer .ReadLine() Serie.WriteTimeout = 10 'Fuera de tiempo en receción 'Fuera de tiempo en transmisión Serie.RtsEnable = True 'Activar Request To Send 'Control Transmission/Recepcion Serie.ReadTimeout = 10 Serie.DtrEnable = True 'Activar de Data Terminal Ready Serie.BytesToRead 'Bytes en espera de ser leidos Serie.WriteLine("Hola Mundo") 'Enviar una línea 'Leer datos Dim Contador as Integer Contador = Serie.DiscardOutBuffer() 'Borrar buffer de salida 'Enviar datos Contador = Serie.Write("Hola Mundo") 'Enviar una cadena de caracteres Serie.DsrHolding 'Señal Data Set Ready Serie.ReadByte() 'Leer un byte Serie.Handshake = Handshake.WriteBufferSize = 1024 'Definir tamaño buffer envio Serie.BytesToWrite 'Bytes en espera de ser escritos Serie.DiscardInBuffer() 'Borrar buffer de entrada Serie.CDHolding 'Estado de la señal carrier detect Estado = Serie.Estado = Serie.ReadChar() 'Leer un char Serie. %lee una linea de texto y la almacena en "datos" no incluye terminador datos = fgetl(s). %configurando puerto y dando de alta “s” como objeto asociado al “com1” s=serial('COM1'. % borrando el objeto de memoria delete(s) clear %algunas instrucciones asociadas con este puerto en matlab fgetl (serial) fgets (serial) fopen (serial) fprintf (serial) fread (serial) fscanf (serial) fwrite (serial) get (serial) instrcallback instrfind instrfindall isvalid (serial) length (serial) load (serial) readasync record save (serial) serial serialbreak set (serial) size (serial) stopasync .MATLAB Este es una forma básica de conectarse al puerto serial utilizando matlab.datos). % cerrando el puerto fclose(s). 9600). 'BaudRate'. %escribe datos en el puerto en binario fwrite (s. % abriendo el puerto fopen(s). . Use las propiedades del noto para obtener o configurar propiedades y métodos en aplicaciones locales o remotas. VISA CONFIGURE SERIAL PORT Inicializa las especificaciones del puesto serial para ‘VISA resource name’ 2. 4. Tambien s puede usar para acceder a datos privados en LabVIEW. VISA Write Escribe el dato desde el buffer de escritura hacia el dispositivo o interface especificado por ‘VISA resource name’ 3. VISA Read Lee el número especificado de bytes desde el dispositivo o interface especificado por ‘VISA resource name’ y retorna los datos en el buffer de escritura. y los siguientes comandos: 1. VISA Close Cierra una sesión con el dispositivo o un evento especificado por ‘VISA resource name’.LabView Para establecer una comunicación serial en este programa se hace uso de VISA serial. Propiedades del Nodo Leer y/o escribe propiedades como una referencia. 5. Realizar un programa para el uC. Ejecuta ‘Configure Seria Port VI’ primero si está configurando el tamaño de un buffer de puerto serial. VISA Serial Brake Envía una parada en salida especificada. Se puede especificar su uso como automático o de modo manual. VISA Set I/O Buffer Size Configura el tamaño del buffer de entrada/salida. VISA Flush I/O Buffer Nivela el buffer de entrada/salida especificado por ‘mask’ 2.6. 7. el cual permita mostrar en 8 leds el dato que recibe por comunicación serial desde el computador. adicionalmente el uC debe enviar el estado de 8 interruptores conectados a uno de sus puertos a través del puerto serial. 8.2. ANÁLISIS DE ENTRADAS Y SALIDAS Para este programa se necesitarán las siguientes variables: . AT90CAN128 Automotive. DIMENSIONAMIENTO DE DISPOSITIVOS Para controlar la corriente que circula por los Led’s se requerirán resistencias limitadoras. entre los que se encuentran: AT90CAN128. tenemos un total de 21 dispositivos que nos pueden servir para esta aplicación. etc. ATmega64. AT90CAN32. para su dimensionamiento se tiene lo siguiente: Para un led los valores típicos de voltaje y corriente son: Por lo que las resistencias limitadoras serán: . Debido al conocimiento y familiaridad se usará el microcontrolador ATMEGA164PA. Con estas características. usando el selector de microcontroladores de ATMEL.SELECCIÓN DEL MICROCONTROLADOR Los requerimientos mínimos más importantes que debe tener un microcontrolador serán: 1 Canal USART 16 terminales I/O Frecuencia de oscilación de 8Mhz Otros requerimientos serán: 16 Kbytes de memoria flash Frecuencia de operación 8MHz 1 Kbyte de memoria SRAM 512 bytes memoria EEPROM Voltaje de alimentación típico de 5V. AT90CAN64. ATmega164P Automotive. ATmega16. Configuración Stack Pointer Configuración Comunicación Serial 9600 Bauds. 8 Bits.DIAGRAMA DE FLUJO INICIO Definición de uC ATEMGA164PA Definición de constantes y variable Definición de vectores de direccionamiento. 8 pines de salida (Leds). 0x00 (Reset) y (0x28) Rx USART0 Configuración E/S 8 pines entrada (Dip-Switch). Terminales USART. Sin paridad. Rx Serial Interrupción Configuración E/S Guardar “Dato Recibido USART” Enviar estado de Dip-Switch mediante puerto USART a la PC. Impresión “Dato Recibido USART” en leds. 1 bit de parada. REGRESAR . dseg .0b0000_0000 out ddrc.equ bauds=9600 .Activación de pull-up //Configuración de stack pointer ldi tempo.low((frecuencia/(16*bauds))-1) sts ubrr0l. 1 bit de parada.org 0x00 jmp inicio .include "m164pdef.tempo ldi tempo. sin .cseg .0b1001_1000 sts ucsr0b.tempo interrupción de recepción.tempo ldi tempo.Puerto C como entrada .0b0000_0010 out ddrd.inc" //Definición de Constante y Variables .org 0x28 jmp rx_dato inicio: //Configuración de entradas y salidas ldi tempo.Cargo velocidad .Puerto A como salida .tempo ldi tempo.CÓDIGO (Assembler) /* * Practica_01_Comunicaci?n_serial.Asincrónico.Habilito Rx y Tx ldi tempo.0b1111_1111 out ddra.0b0000_0110 sts ucsr0c.Habilito .tempo .equ frecuencia=8000000 .tempo //Configuración de comunicación serial ldi tempo.high((frecuencia/(16*bauds))-1) sts ubrr0h.tempo paridad. 8 bits sei .def tempo=r16 dato_recibido: .D0-Rx como entrada y D1-Tx como salida .asm * * Created: 14/04/2015 20:07:40 * Author: Byron Sarabia */ //Definición del uC .0b1111_1111 out portc.tempo ldi tempo.tempo ldi tempo.high(ramend) out sph.low(ramend) out spl.byte 1 //Vectores de Direccionamiento .tempo ldi tempo. tempo in tempo.r16 pop r16 reti //Espera de envio espera: push r16 lds r16.udr0 sts dato_recibido.sreg push r16 lds r18.sreg push r16 lds tempo.pinc sts udr0.dato_recibido out porta.//Lazo Principal lazo: lds tempo.5 rjmp espera pop r16 sts sreg.tempo rjmp lazo //Interrupcion de Rx rx_dato: push r16 lds r16.ucsr0a sbrs r18.tempo call espera pop r16 sts sreg.r16 pop r16 ret . 2. Elaborar un programa en ambiente visual que permita establecer la comunicación serial entre el microcontrolador y el computador. INTERFAZ GRÁFICA (LabVIEW) DIAGRAMA DE BLOQUES . Esta interfaz debe constar de 8 indicadores para mostrar el estado de los interruptores conectados con el uC y 8 pulsadores que permitan modificar el estado de los leds conectador al uC.3. Semestre 2015-A. EPN. Semestre 2014B.PANEL FRONTAL 3.com/peplluis/2006/11/21/principales-mandatos-para-utilizar-elpuerto-serie-del-espacio-system-io-ports/ http://www. Quito-Ecuador. http://blogs. Quito-Ecuador. Marco Herrera MSc.. Ing. BIBLIOGRAFÍA APUNTES DE SISTEMAS MICROPROCESADOS.msmvps. EPN.ni..com/labview/esa/ . Jhon Pilataxi. APUNTES DE CONTROL CON MICROPROCESADORES. Ing.
Report "Practica 01_Comunicación Serial Asincrónica_Lab. Control Con UC"