Está en la página 1de 15

UNIVERSIDAD POLITECNICA SALESIANA SISTEMAS MICROPROCESADOS I

UNIVERSIDAD POLITCNICA SALESIANA


INGENIERIA ELECTRNICA EN TELECOMUNICACIONES

SISTEMAS MICROPROCESADOS I

Tema: Desarrollo Comunicacin USB PC-PIC-PC con LabView. Fecha de Realizacin: 2009 / 12 / 28 / ao mes da

Realizado por: Alumnos: Cristian Zapata Francisco Jurado

Periodo Lectivo: 2009- 2010

Cristian Zapata Francisco Jurado

UNIVERSIDAD POLITECNICA SALESIANA SISTEMAS MICROPROCESADOS I

Desarrollo del programa en LabView


Creamos un Nuevo Proyecto en LabView

Ventana de presentacin de Inicio de LabView. Comunicacin USB con LabView.

Para realizar la comunicacin USN mediante LabView se necesita crear un archivo dll (Dynamic Link Library), para lo cual se deben seguir las instrucciones que se indican en los tutoriales de la pagina de la National Instruments http://www.ni.com, en este tutorial para mayor facilidad en su desarrollo se adjunta el archivo FASE.dll y un ejecutable desarrollado en Visual Basic llamado Register the DLL, estos archivos los guardamos en la misma carpeta donde se localiza nuestro proyecto.Como primer paso debemos ejecutar el archivo ejecutable llamado Register the DLL, el cual nos servir para poder registrar esta librera en Windows, luego de ejecutar exitosamente este archivo procedemos a realizar los siguientes pasos para la creacin de nuestro programa. 1. En la Ventana de Block Diagram en el men Functions, accedemos al submen Connectivity seleccionamos ActiveX y escogemos Automation Open.

A este objeto creamos una constante en la entrada Automation Refnum, damos click derecho sobre la constante creada y seleccionamos Select ActiveX Class y en Browse buscamos nuestro archivo dll el
Cristian Zapata Francisco Jurado 2

UNIVERSIDAD POLITECNICA SALESIANA SISTEMAS MICROPROCESADOS I

cual lo debemos situar en la misma carpeta en la que se va a grabar este programa en LabView.

2. En el men Functions, accedemos al submen Programming seleccionamos Aplication Control y escogemos la opcin de Invoke Node esta funcin la unimos a la salida Automation Refnum del objeto Automation Open, automticamente el objeto Invoke Node cambiara de nombre a _Class3 que se refiere a los parmetros de nuestro archivo dll, damos click derecho sobre el icono Invoke Node y en el men que aparece seleccionamos Select Method y en el cuadro de dialogo que aparece escogemos ConnectToHID, y en el icono aparece una opcin llamada pHostWin a esta entrada creamos una constante y dejamos por defecto el cero.

3. En el men Functions, de la ventana de Diagram Block escogemos el icono Exec Control y seleccionamos While Loop y lo creamos es aconsejable que sea grande para poder colocar los dems items necesarios.

4. Dentro del lazo While Loop ingresamos el icono de Invoke Node y lo unimos al primer Invoke Node creado luego le damos un click y en el men que nos aparece seleccionamos la opcin readhid y en el icono aparecern dos niveles readhid y Buffer, ingresamos al men Functions en el submen
Cristian Zapata Francisco Jurado

UNIVERSIDAD POLITECNICA SALESIANA SISTEMAS MICROPROCESADOS I

Programming seleccionamos Array y escogemos la opcin Initialize Array, a esta funcin en la entrada element creamos una constante de valor cero, la entrada dimension size 0 creamos una constante con el valor de 20, y la salida initialized array la unimos a la entrada de Buffer del segundo Invoke Node creado

5. Ingresamos al men Functions al submen Programming seleccionamos la opcin Structures y escogemos Case Structure.

6. Unimos la salida readhid de la segunda funcin Invoke Node creada al smbolo del Case Structure que sirve para seleccionar el case que puede ser TRUE o FALSE.

7.

Dentro del case TRUE de la estructura ingresada del men Funtions accedemos al submen

Connectivity seleccionamos ActiveX y escogemos Variant To Data, ingresamos al men Functions al


Cristian Zapata Francisco Jurado

UNIVERSIDAD POLITECNICA SALESIANA SISTEMAS MICROPROCESADOS I

submen Programming seleccionamos Array y escogemos la opcin Array Constant dentro de este ingresamos una constante de valor cero y unimos a la entrada type de la funcin Variant To Data, de la salida Buffer de la segunda funcin Invoke Node unimos a la entrada variant de la funcin Variant To Data.

8. En el men Functions en el submen Programming seleccionamos Array y escogemos Index Array aumentamos a 3 las entradas de index, nos situamos en la entrada n-dimension array y la unimos a la salida data de la funcin Variant To Data, y a las entradas de index colocamos constantes de valor 1, 2 y 3 para cada entrada.

9. Ingresamos al men Functions al submen Programming seleccionamos Boolean y escogemos la opcin Number To Boolean Array la entrada de esta funcin la unimos a la primera salida de la funcin Index Array, la salida de la funcin Number To Boolean Array la unimos a la entrada de un arreglo de ocho Indicadores que representaran los Leds a ser encendidos por el dipswitch del protoboard.

Cristian Zapata Francisco Jurado

UNIVERSIDAD POLITECNICA SALESIANA SISTEMAS MICROPROCESADOS I

10. Continuando dentro del case TRUE ahora creamos nuevamente otra funcin Invoke Node de la misma forma que las anteriores y la unimos a la segunda funcin Invoke Node.

11. Le damos un click a la tercera funcin Invoke Node creada y en el men que aparece seleccionamos la opcin writehid y automticamente al icono se aaden dos opciones.

12. Ingresamos al men Functions y en el submen Programming seleccionamos Array y escogemos las opciones Replace Array Subset e Initialize Array, a la funcin Initialize Array a las entradas element y dimension size les creamos dos constantes de valores 0 y 17 respectivamente, la salida de la funcin Initialize Array la unimos a la entrada n-dimension array de la funcin Replace Array Subset a esta funcin a la entrada index creamos una constante de valor 1 y salida la unimos a la entrada Buffer de la tercera funcin Invoke Node. Adicionalmente agregamos del men Functions del submen Programming seleccionamos Timing y escogemos Wait (ms) al cual le agregamos una constante de valor 1.

Cristian Zapata Francisco Jurado

UNIVERSIDAD POLITECNICA SALESIANA SISTEMAS MICROPROCESADOS I

13. En la Ventana Front Panel ingresamos al men Controls en el submen Modern seleccionamos Boolean y escogemos ocho controles que representaran un dipswitch quedando nuestro panel Frontal de la siguiente forma.

14. Retornamos a la Ventana Block Diagram y colocamos fuera del Case Structure pero dentro del While Loop nuestros ocho controles que representan interruptores, del men Functions del submen Programming seleccionamos Array y escogemos Build Array y lo extendemos hasta que tenga 8 entradas a las cuales unimos los interruptores, ingresamos nuevamente al submen Programming, seleccionamos Boolean donde escogemos la opcin Boolean Array To Number unimos la salida de la funcin Build Array a la entrada de la funcin Boolean Array To Number y la salida de esta a la entrada new element/subarray de la funcin Replace Array Subset que se encuentra dentro del case TRUE del Case Structure.

Cristian Zapata Francisco Jurado

UNIVERSIDAD POLITECNICA SALESIANA SISTEMAS MICROPROCESADOS I

15. Ahora la primera salida de la segunda funcin Invoke Node llamada _Class3 la unimos al Case Structure.

16. Ingresamos al men Functions al submen Programming seleccionamos Application Control escogemos Close Reference y el icono lo colocamos fuera del While Loop y la entrada la unimos a la conexin realizada en el paso anterior.

17. Como se observa en la grfica anterior al realizar la conexin esta queda con un cuadro de color blanco en el borde del Case Structure por lo que nos colocamos en case FALSE y realizamos la conexin que se muestra a continuacin y el cuadro de color blanco cambia y toma el color de la conexin.

Cristian Zapata Francisco Jurado

UNIVERSIDAD POLITECNICA SALESIANA SISTEMAS MICROPROCESADOS I

18.

Una vez realizado los pasos anteriores en la Ventana Front Panel podemos decorar a nuestro

programa con las diferentes herramientas que presenta LabView para mejorar su presentacin quedando nuestro Programa y su presentacin para el usuario de la siguiente forma: Panel frontal:

Cristian Zapata Francisco Jurado

UNIVERSIDAD POLITECNICA SALESIANA SISTEMAS MICROPROCESADOS I

Programa:

Nota.- El Interfaz fue desarrollado en LabView (Versin 8.5) Realizamos la programacin para el PIC18F2550, armamos el circuito siguiendo el esquema que se muestra a continuacin obteniendo as la comunicacin PIC-PC-PIC con la Interfaz desarrollada en LabView. Elementos Utilizados: PIC 18F2550 Cable USB Resistencias 330 Diodos Led's Dipswitch
Cristian Zapata Francisco Jurado 10

UNIVERSIDAD POLITECNICA SALESIANA SISTEMAS MICROPROCESADOS I

Diagrama Esquemtico:

Cristian Zapata Francisco Jurado 11

UNIVERSIDAD POLITECNICA SALESIANA SISTEMAS MICROPROCESADOS I

Cdigo para el PIC18F2550 realizado en Microcode


DEFINE OSC 48 DEFINE LOADER_USED 1 USBBufferSizeMax con 16 ' maximum buffer size USBBufferSizeTX USBBufferSizeRX pulsosvuelta USBBuffer USBBufferCount i revol rpm J ALPHA FPulso ' alias Zero Tach out var portb.0 var portb.1 var portc.2 ' cruce por cero frecuencia ' pulso velocidad ' the USB buffer... Var Byte[USBBufferSizeMax] Var Byte var word var word var word VAR BYTE VAR BYTE var bit con 16 ' input con 16 ' output

con 1

int0ie var intcon.4 int0if var intcon.1 int1ie var intcon3.3 int1if var intcon3.0 tmr0ie var intcon.5 tmr0if var intcon.2 ' ************************************************************ ' * main program loop - remember, you must keep the USB ' * connection alive with a call to USBService every couple * ' * of milliseconds or so... * ' ************************************************************ usbinit ' initialise USB... TRISA=%00111111 trisc.2=0 *

Cristian Zapata Francisco Jurado 12

UNIVERSIDAD POLITECNICA SALESIANA SISTEMAS MICROPROCESADOS I

trisc.7=0 trisb=%00000000 portc=0 portb=0 adcon1=$0F CMCON=7 CVRCON=0 rcon.7=0 ProgramStart: USBbUFFER[0]=PORTA gosub DoUSBOut gosub DoUSBIn goto ProgramStart ' ************************************************************ ' * receive data from the USB bus * ' ************************************************************ DoUSBIn: USBBufferCount = USBBufferSizeRX USBService PORTB=USBBUFFER[0] enddousbin: return ' ************************************************************ ' * wait for USB interface to attach DoUSBOut: USBBufferCount = USBBufferSizeTX USBService fdousbout: return end ' TX buffer size ' keep connection alive * ' ************************************************************ ' RX buffer size ' keep connection alive

USBIn 1, USBBuffer, USBBufferCount, EndDoUSBIn ' read data, if available

USBOut 1, USBBuffer, USBBufferCount, fDoUSBOut ' if bus available, transmit data

Cristian Zapata Francisco Jurado 13

UNIVERSIDAD POLITECNICA SALESIANA SISTEMAS MICROPROCESADOS I

Circuito armado en el Protoboard

Programa en LabView

Cristian Zapata Francisco Jurado 14

UNIVERSIDAD POLITECNICA SALESIANA SISTEMAS MICROPROCESADOS I

Bibliografa Ayuda de Microcode Apuntes de la Materia Sistemas Microprocesados I, Ing. Luis Oate http://www.ni.com/

Cristian Zapata Francisco Jurado 15

También podría gustarte