biblioteca para java - intescespecífica y una librería (libintescrs232.dll) que se encarga de...

15
SADE Biblioteca para JAVA SADE (Sistema de Adquisición de Datos flexiblE ) es la aplicación de INTESC la cual facilita el manejo de la tarjeta Avanxe mediante comandos en lenguaje de alto nivel. En el siguiente diagrama se muestran los recursos con los que cuenta SADE. Descripción: SW: Se puede obtener una lectura de los switches de la tarjeta. LED: Podemos mandar información a los LEDs. IO PIN: SADE cuenta con 13 pines que se pueden configurar como entrada, salida e inclusive como PWM BiPORT: Puerto bidireccional de 8 bits que se puede configurar como entrada o salida. I2C: Protocolo de comunicación I2C para dispositivos que lo requieran. RS232 (PC): La tarjeta Avanxe cuenta con un convertidor USB-RS232 por lo que podemos utilizar los puertos COM de nuestra PC y trabajar con velocidades de transmisión de hasta 3 Megabaudios.

Upload: others

Post on 10-Jan-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Biblioteca para JAVA - INTESCespecífica y una librería (libIntescRS232.dll) que se encarga de hacer la interacción con los puertos. Clase “grafico.java”: En esta clase podemos

SADE

Biblioteca para JAVA

SADE (Sistema de Adquisición de Datos flexiblE ) es la aplicación de INTESC la cual facilita elmanejo de la tarjeta Avanxe mediante comandos en lenguaje de alto nivel. En el siguiente diagramase muestran los recursos con los que cuenta SADE.

Descripción:

SW: Se puede obtener una lectura de los switches de la tarjeta.

LED: Podemos mandar información a los LEDs.

IO PIN: SADE cuenta con 13 pines que se pueden configurar como entrada, salida e inclusive como PWM

BiPORT: Puerto bidireccional de 8 bits que se puede configurar como entrada o salida.

I2C: Protocolo de comunicación I2C para dispositivos que lo requieran.

RS232 (PC): La tarjeta Avanxe cuenta con un convertidor USB-RS232 por lo que podemos utilizar los puertos COM de nuestra PC y trabajar con velocidades de transmisión de hasta 3 Megabaudios.

Page 2: Biblioteca para JAVA - INTESCespecífica y una librería (libIntescRS232.dll) que se encarga de hacer la interacción con los puertos. Clase “grafico.java”: En esta clase podemos

RS232 (SADE): Protocolo RS232 para utilizarlo con dispositivos externos como por ejemplo un módulobluetooth HC-05, a diferencia del RS232 (PC) con este recurso trabajamos a velocidades más lentas ya que está configurado para trabajar a 9600 baudios. También cuenta con un pin para utilizarlo como interrupción que indica cuando se ha hecho una recepción, es muy útil si queremos tener más control al realizar la comunicación.

Avanxe también cuenta con un PSoC (System on Chip) que nos permite hacer uso de sus recursospara ampliar la utilidad de SADE, por lo que podemos utilizar los siguientes recursos:

ADC – ADC CHAN: Podemos hacer conversiones analógico-digital

DAC: También se pueden realizar conversiones digital-analógico.

La siguiente imagen muestra la ubicación de cada recurso.

Page 3: Biblioteca para JAVA - INTESCespecífica y una librería (libIntescRS232.dll) que se encarga de hacer la interacción con los puertos. Clase “grafico.java”: En esta clase podemos

Esta biblioteca hecha en JAVA tiene como objetivo utilizar los recursos SADE mediante unainterfaz creada por el usuario y la utilización de comandos predefinidos.

Programación.

El template o plantilla de JAVA cuenta con 7 clases, cada una para realiza una funciónespecífica y una librería (libIntescRS232.dll) que se encarga de hacer la interacción con los puertos.

Clase “grafico.java”: En esta clase podemos crear nuestra parte gráfica, se pueden agregar lineas,figuras geométricas e inclusive imágenes.

Clase “HexToDec.java”: Se utiliza para hacer una conversión de hexadecimal a decimal.

Clase “Hilo.java”: En esta clase escribiremos nuestro código que se va a estar ejecutándoseconstantemente.

Clase “LibRS232.java”: Contiene las funciones necesarias para configurar el puerto COM, como porejemplo buscar los puertos disponibles, abrir puerto, la velocidad de transmisión, envío y recepción dedatos.

Clase “MAIN.java”: Contiene la interfaz gráfica creada por el usuario.

Clase “SADEAvanxeRevA.java”: Contiene los métodos para utilizar los recursos de SADE.

Clase “Utils.java”: Esta clase contiene las rutas donde se encuentran las librerías que harán funcionarnuestra aplicación.

Page 4: Biblioteca para JAVA - INTESCespecífica y una librería (libIntescRS232.dll) que se encarga de hacer la interacción con los puertos. Clase “grafico.java”: En esta clase podemos

A continuación se muestra como utilizar los métodos dentro de la clase“SADESAvanxeRevA.java”.

Para obtener los métodos dentro de la clase “SADEAvanxeRevA.java” se creó un objetollamado “comando” (el nombre se puede cambiar), el cual hereda dichos métodos para controlar losrecursos de SADE:

SADEAvanxeRevA comando = new SADEAvanxeRevA();

Al desplegar el menú de contenido (presionando “Ctrl” + “Espacio”), podemos posicionarnos enel método a utilizar y se desplegará un cuadro de diálogo con la descripción de dicho método.

También nos muestra los pines que podemos utilizar como entrada, salida o PWM. En el casode los pines, un mensaje de ayuda nos indica si es un pin de Avanxe Verde o Avanxe Azul

Page 5: Biblioteca para JAVA - INTESCespecífica y una librería (libIntescRS232.dll) que se encarga de hacer la interacción con los puertos. Clase “grafico.java”: En esta clase podemos

Algunos comandos piden ciertos parámetros, dependiendo el tipo de variable es lo que se pondrádentro de los paréntesis:

byte → Valor tipo byte, por ejemplo: (byte) 0xaaint → Valor tipo entero, por ejemplo: 1,2,3,….Boolean → Valor tipo booleano, por ejemplo: true, false

IMPORTANTE: Todos los comandos que devuelvan un valor será de tipo byte.

Page 6: Biblioteca para JAVA - INTESCespecífica y una librería (libIntescRS232.dll) que se encarga de hacer la interacción con los puertos. Clase “grafico.java”: En esta clase podemos

1) LEDS(byte VALOR_A_LEDS)

Comando que manda a los LEDs un valor de 8 bits, el cual tiene que ser tipo byte. Este método nodevuelve ningún valor. Acá un código de ejemplo:

byte valor = 0x55; //Se carga el número 55 (hexadecimal) = 0101 0101 (binario)comando.LEDS(valor);//Lo mandamos a los LEDs

Ubicación LEDs:

Page 7: Biblioteca para JAVA - INTESCespecífica y una librería (libIntescRS232.dll) que se encarga de hacer la interacción con los puertos. Clase “grafico.java”: En esta clase podemos

2) SW()

Se utiliza para leer los Switches de la tarjeta Avanxe. Este comando devuelve un byte.

byte valor_sw = comando.SW(); /* Leemos de los switches y el valor que devuelve lo guardamos en la variable “valor_sw” */

Ubicación SW:

Page 8: Biblioteca para JAVA - INTESCespecífica y una librería (libIntescRS232.dll) que se encarga de hacer la interacción con los puertos. Clase “grafico.java”: En esta clase podemos

3) PWM(int PERIODO_PWM,int CICLO_PWM,byte PIN_FPGA)

PINES: M15, N16, P16, R16, P15, R12, N12, P12, M16, C16, D16, E12, E13, E15, F13, F14.

Con este método utilizamos como PWM uno de los pines de la tarjeta Avanxe. Sólo se debenespecificar los parámetros que se encuentran dentro de los paréntesis. Este comando no devuelveningún valor. El pin seleccionado quedará funcionando como PWM hasta que no se le asigne unanueva función.

int periodo = 10000; //Periodo del PWM (200 us) int ciclo = 100; //Ciclo de trabajo del PWM (2 us)

comando.PWM(periodo, ciclo, comando.F14); /*Seleccionamos el pin F14 de la tarjeta para utilizarlo como PWM */

Fórmulas:

valor_periodo = (Tiempo_periodo) * (50,000,000)valor_ciclo = (Tiempo_ciclo_trabajo) * (50,000,000)

Ubicación PWM:

Page 9: Biblioteca para JAVA - INTESCespecífica y una librería (libIntescRS232.dll) que se encarga de hacer la interacción con los puertos. Clase “grafico.java”: En esta clase podemos

4) Pin_Out(byte PIN_FPGA,boolean VALOR)

PINES: M15, N16, P16, R16, P15, R12, N12, P12, M16, C16, D16, E12, E13, E15, F13, F14.

Se nombra el pin de la tarjeta y lo convierte como salida, cuando VALOR = true se manda un '1' lógicoy VALOR = false se manda un '0' lógico. Este comando no devuelve ningún valor.

comando.Pin_Out(comando.C16, true); /*Seleccionamos a C16 como pin de salida y mandamos un '1' lógico */

comando.Pin_Out(comando.C16, false); /*Seleccionamos a C16 como pin de salida y mandamos un '0' lógico */

5) Pin_In(byte PIN_FPGA)

PINES: M15, N16, P16, R16, P15, R12, N12, P12, M16, C16, D16, E12, E13, E15, F13, F14.

Selecciona y convierte un pin de la tarjeta como entrada. Este comando sí devuelve un byte aunque únicamente toma dos valores: 0x00 y 0x01.

byte v_pin = comando.Pin_In(comando.M15);/*Seleccionamos a M15 como pin de entrada y el valor lo guardamos en “v_pin” */

Ubicación IO PIN:

Page 10: Biblioteca para JAVA - INTESCespecífica y una librería (libIntescRS232.dll) que se encarga de hacer la interacción con los puertos. Clase “grafico.java”: En esta clase podemos

6) BiPort_Out(byte BYTE_A_ESCRIBIR)

PINES: J14 a L12

Manda un valor de 8 bits a un puerto ya predefinido. Este comando no devuelve ningún valor.

byte dato = 0x55; //Dato a mandarcomando.BiPort_Out(dato); //Mandamos “dato” en el puerto bidireccional

7) BiPort_In()

PINES: J14 a L12

Lee un byte de un puerto predefinido. Este comando regresa un byte.

byte v_puerto = comando.BiPort_In(); /* Leemos el puerto y el dato lo guardamos en “v_puerto” */

Ubicación BiPORT:

Page 11: Biblioteca para JAVA - INTESCespecífica y una librería (libIntescRS232.dll) que se encarga de hacer la interacción con los puertos. Clase “grafico.java”: En esta clase podemos

8) I2C_Write(byte SLAVE_ADDRESS, byte REG_ADDRESS, byte REG_DATA)

PINES: SDA – G12, SCL – E16

Con éste comando se manda a escribir a un registro de un dispositivo mediante protocolo I2C, sólo senecesitan poner los siguientes parámetros: “SLAVE_ADRESS” (Dirección esclava del dispositivo),“REG_ADRESS” (Dirección del registro a escribir), “REG_DATA” (Dato a escribir) todos siendo de tipobyte. Este comando no devuelve ningún valor.

byte dir_esclava = 0x1d; //Dirección esclava del dispositivo sin bit R/Wbyte dir_registro = 0x2a; //Dirección del registro a escribirbyte dato = 0x2a; //Dato a escribir

comando.I2C_Write(dir_esclava, dir_registro, dato); /*Mandamos toda la información por I2C*/

9) I2C_Read(byte SLAVE_ADDRESS, byte REG_ADDRESS)

PINES: SDA – G12, SCL – E16

Comando que se utiliza para leer un dato de un dispositivo mediante I2C. Los parámetros que pidenson la dirección esclava y la dirección del registro a leer ambos valores de tipo byte. El comandodevuelve un byte. NOTA: Siempre se estará recibiendo un dato del registro.

byte dir_esclava = 0x1d; //Dirección esclava del dispositivo sin bit R/Wbyte dir_registro = 0x01; //Dirección del registro a leer

byte dato = comando.I2C_Read(dir_esclava, dir_registro); /* Mandamos toda la información por I2C y guardamos el dato recibido en la variable tipo byte “dato” */

IMPORTANTE: La dirección esclava se manda sin considerar el bit R/W

Ubicación I2C:

Page 12: Biblioteca para JAVA - INTESCespecífica y una librería (libIntescRS232.dll) que se encarga de hacer la interacción con los puertos. Clase “grafico.java”: En esta clase podemos

10) RS232_SADE_Write(byte DATO)

PINES: G16 – RX, F15 – TX, G14 – Bit de interrupción.

Envia un byte mediante protocolo RS232 cuya velocidad de transmisión es de 9600 baudios, es útil para comunicarnos con dispositivos externos que soporten este protocolo.

byte DATO = 0x55; //Byte a enviarcomando.RS232_SADE_Write(DATO); //Mandamos el byte “DATO”

11) RS232_SADE_Write(byte DATO)

PINES: G16 – RX, F15 – TX, G14 – Bit de interrupción.

Recepción de un byte mediante protocolo RS232 cuya velocidad de transmisión es de 9600 baudios,

byte DATO = comando.RS232_SADE_Read(); //Leemos el byte recibido y lo guardamos en//la variable “DATO”

NOTA: El bit de interrupción puede usarse para saber cuando se ha recibido un dato.

Ubicación RS232 de SADE:

Page 13: Biblioteca para JAVA - INTESCespecífica y una librería (libIntescRS232.dll) que se encarga de hacer la interacción con los puertos. Clase “grafico.java”: En esta clase podemos

12) ADC(int CANAL)

Comando que se utiliza para trabajar con el ADC del PSoC. Avanxe cuenta con un sólo canal analógicodigital, por lo que el argumento siempre es 1. Una vez que se ha seleccionado el canal, siempredevolverá un byte con el valor de la conversión.

El siguiente código de ejemplo muestra como utilizar este comando:

byte valor_adc = comando.ADC(1); /*El argumento de entrada siempre es 1 y el valor que devuelve lo guardamos en la variable tipo byte “valor_adc”*/

comando.LEDS(valor_adc); //Mandamos a los LEDs el valor leído por el ADC

Ubicación del canal ADC:

ADC

Page 14: Biblioteca para JAVA - INTESCespecífica y una librería (libIntescRS232.dll) que se encarga de hacer la interacción con los puertos. Clase “grafico.java”: En esta clase podemos

13) DAC(byte VALOR_DAC)Comando para utilizar el convertidor Digital/analógico del PSoC. Este comando no devuelve ningún valor.

byte valor_digital = 0xff; //Valor que convertiremos a analógicocomando.DAC(valor_digital); //Hacemos la conversión D/A

Fórmula:

Voltaje de salida = Valor_digital*0.016

donde: Voltaje de salida – Rango de 0 a 4.08 VValor digital – Rango de 0 a 255

Ubicación DAC:

Page 15: Biblioteca para JAVA - INTESCespecífica y una librería (libIntescRS232.dll) que se encarga de hacer la interacción con los puertos. Clase “grafico.java”: En esta clase podemos

¡Gracias por su interés en SADE!

Cualquier duda o información pueden contactarnos en: [email protected]

También pueden visitar nuestra página www.intesc.mx para ver otros proyectos.