Practica 01_Comunicación Serial Asincrónica_Lab. Control Con UC
-
Upload
byron-sarabia-morales -
Category
Documents
-
view
59 -
download
7
description
Transcript of Practica 01_Comunicación Serial Asincrónica_Lab. Control Con UC
-
ESCUELA POLITCNICA NACIONAL FACULTAD DE INGENIERA ELCTRICA Y ELECTRNICA
LABORATORIO DE CONTROL CON MICROPROCESADORES PRCTICA NO. 01
COMUNICACIN SERIAL ASINCRNICA
COMUNICACIN SERIAL ASINCRNICA
1. OBJETIVO Familiarizar al estudiante con el uso del prtico de comunicacin 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 comunicacin serial de un PC,
mediante Visual Studio, Matlab y LabView.
VISUAL STUDIO
Estos son los comandos e instrucciones ms frecuentes para utilizar el puerto serie:
Principales mandatos para utilizar el puerto serie:
Serie = My.Computer.Ports.OpenSerialPort("COM1") 'Constructor
'Definir las caractersticas de la comunicacin
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 despus 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 seales
Dim Estado As Boolean 'True=Activa / False=Inactiva
-
Estado = Serie.CDHolding 'Estado de la seal carrier detect
Estado = Serie.CtsHolding 'Seal Clear to Send
Estado = Serie.DsrHolding 'Seal Data Set Ready
Serie.DtrEnable = True 'Activar de Data Terminal Ready
Serie.RtsEnable = True 'Activar Request To Send
'Control Transmission/Recepcion
Serie.ReadBufferSize = 1024 'Definir tamao buffer recepcion
Serie.WriteBufferSize = 1024 'Definir tamao buffer envio
Serie.ReadTimeout = 10 'Fuera de tiempo en rececin
Serie.WriteTimeout = 10 'Fuera de tiempo en transmisin
Serie.Handshake = Handshake.XOnXOff 'Control recepcion/envio
Serie.DiscardInBuffer() 'Borrar buffer de entrada
Serie.DiscardOutBuffer() 'Borrar buffer de salida
'Enviar datos
Contador = Serie.BytesToWrite 'Bytes en espera de ser escritos
Serie.Write("Hola Mundo") 'Enviar una cadena de caracteres
Serie.WriteLine("Hola Mundo") 'Enviar una lnea
'Leer datos
Dim Contador as Integer
Contador = Serie.BytesToRead 'Bytes en espera de ser leidos
Serie.ReadByte() 'Leer un byte
Serie.ReadChar() 'Leer un char
Serie.ReadLine() 'Leer una linea
Serie.ReadExisting() 'Leer datos existentes en buffer
-
MATLAB
Este es una forma bsica de conectarse al puerto serial utilizando matlab.
%configurando puerto y dando de alta s como objeto asociado al com1
s=serial('COM1', 'BaudRate', 9600);
% abriendo el puerto
fopen(s);
%lee una linea de texto y la almacena en "datos" no incluye terminador
datos = fgetl(s);
%escribe datos en el puerto en binario
fwrite (s,datos);
% cerrando el puerto
fclose(s); % 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
-
LabView
Para establecer una comunicacin serial en este programa se hace uso de VISA serial, y los
siguientes comandos:
1. VISA CONFIGURE SERIAL PORT
Inicializa las especificaciones del puesto serial para VISA resource name
2. 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 nmero especificado de bytes desde el dispositivo o interface especificado por VISA
resource name y retorna los datos en el buffer de escritura.
4. VISA Close
Cierra una sesin con el dispositivo o un evento especificado por VISA resource name.
5. Propiedades del Nodo
Leer y/o escribe propiedades como una referencia. Use las propiedades del noto para obtener
o configurar propiedades y mtodos en aplicaciones locales o remotas. Tambien s puede usar
para acceder a datos privados en LabVIEW.
-
6. VISA Serial Brake
Enva una parada en salida especificada. Se puede especificar su uso como automtico o de
modo manual.
7. VISA Set I/O Buffer Size
Configura el tamao del buffer de entrada/salida. Ejecuta Configure Seria Port VI primero si
est configurando el tamao de un buffer de puerto serial.
8. VISA Flush I/O Buffer
Nivela el buffer de entrada/salida especificado por mask
2.2. Realizar un programa para el uC, el cual permita mostrar en 8 leds el dato que recibe
por comunicacin serial desde el computador, adicionalmente el uC debe enviar el
estado de 8 interruptores conectados a uno de sus puertos a travs del puerto serial.
ANLISIS DE ENTRADAS Y SALIDAS
Para este programa se necesitarn las siguientes variables:
-
SELECCIN DEL MICROCONTROLADOR
Los requerimientos mnimos ms importantes que debe tener un microcontrolador sern:
1 Canal USART
16 terminales I/O
Frecuencia de oscilacin de 8Mhz
Otros requerimientos sern:
16 Kbytes de memoria flash
Frecuencia de operacin 8MHz
1 Kbyte de memoria SRAM
512 bytes memoria EEPROM
Voltaje de alimentacin tpico de 5V.
Con estas caractersticas, usando el selector de microcontroladores de ATMEL, tenemos un
total de 21 dispositivos que nos pueden servir para esta aplicacin, entre los que se
encuentran: AT90CAN128, AT90CAN128 Automotive, AT90CAN32, AT90CAN64, ATmega16,
ATmega164P Automotive, ATmega64, etc.
Debido al conocimiento y familiaridad se usar el microcontrolador ATMEGA164PA.
DIMENSIONAMIENTO DE DISPOSITIVOS
Para controlar la corriente que circula por los Leds se requerirn resistencias limitadoras,
para su dimensionamiento se tiene lo siguiente:
Para un led los valores tpicos de voltaje y corriente son:
Por lo que las resistencias limitadoras sern:
-
DIAGRAMA DE FLUJO
INICIO
Definicin de uC
ATEMGA164PA
Definicin de constantes y variable
Definicin de vectores de direccionamiento.
0x00 (Reset) y (0x28) Rx USART0
Configuracin E/S
8 pines entrada (Dip-Switch), 8 pines de salida (Leds), Terminales
USART.
Configuracin Stack Pointer
Configuracin Comunicacin Serial
9600 Bauds, 8 Bits, Sin paridad, 1 bit de parada.
Impresin Dato Recibido USART en leds.
Rx Serial
Interrupcin
Configuracin E/S
Guardar Dato Recibido USART
Enviar estado de Dip-Switch mediante puerto USART a la PC.
REGRESAR
-
CDIGO (Assembler)
/* * Practica_01_Comunicaci?n_serial.asm * * Created: 14/04/2015 20:07:40 * Author: Byron Sarabia */ //Definicin del uC .include "m164pdef.inc" //Definicin de Constante y Variables .dseg .equ frecuencia=8000000 .equ bauds=9600 .def tempo=r16 dato_recibido: .byte 1 //Vectores de Direccionamiento .cseg .org 0x00 jmp inicio .org 0x28 jmp rx_dato inicio: //Configuracin de entradas y salidas ldi tempo,0b1111_1111 out ddra,tempo ;Puerto A como salida ldi tempo,0b0000_0010 out ddrd,tempo ;D0-Rx como entrada y D1-Tx como salida ldi tempo,0b0000_0000 out ddrc,tempo ;Puerto C como entrada ldi tempo,0b1111_1111 out portc,tempo ;Activacin de pull-up //Configuracin de stack pointer ldi tempo,high(ramend) out sph,tempo ldi tempo,low(ramend) out spl,tempo //Configuracin de comunicacin serial ldi tempo,high((frecuencia/(16*bauds))-1) ;Cargo velocidad sts ubrr0h,tempo ldi tempo,low((frecuencia/(16*bauds))-1) sts ubrr0l,tempo ldi tempo,0b1001_1000 sts ucsr0b,tempo ;Habilito interrupcin de recepcin,Habilito Rx y Tx ldi tempo,0b0000_0110 sts ucsr0c,tempo ;Asincrnico, sin paridad, 1 bit de parada, 8 bits sei
-
//Lazo Principal lazo: lds tempo,dato_recibido out porta,tempo rjmp lazo //Interrupcion de Rx rx_dato: push r16 lds r16,sreg push r16 lds tempo,udr0 sts dato_recibido,tempo in tempo,pinc sts udr0,tempo call espera pop r16 sts sreg,r16 pop r16 reti //Espera de envio espera: push r16 lds r16,sreg push r16 lds r18,ucsr0a sbrs r18,5 rjmp espera pop r16 sts sreg,r16 pop r16 ret
-
2.3. Elaborar un programa en ambiente visual que permita establecer la comunicacin serial
entre el microcontrolador y el computador. 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.
INTERFAZ GRFICA (LabVIEW)
DIAGRAMA DE BLOQUES
-
PANEL FRONTAL
3. BIBLIOGRAFA
APUNTES DE SISTEMAS MICROPROCESADOS; Ing. Marco Herrera MSc.; Semestre 2014-
B; EPN; Quito-Ecuador.
APUNTES DE CONTROL CON MICROPROCESADORES; Ing. Jhon Pilataxi.; Semestre
2015-A; EPN; Quito-Ecuador.
http://blogs.msmvps.com/peplluis/2006/11/21/principales-mandatos-para-utilizar-el-
puerto-serie-del-espacio-system-io-ports/
http://www.ni.com/labview/esa/