11
ESCUELA POLITÉCNICA NACIONAL FACULTAD 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

Practica 01_Comunicación Serial Asincrónica_Lab. Control Con UC

Embed Size (px)

DESCRIPTION

Comunicación Serial Asincrónica

Citation preview

  • 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/