Usb y labVIEW , entre otros

jokelnice porque al programar el pic le pones retardo de 4 y 10 milisegundos. Esto hace que la lectura no sea en tiempo real?
set_adc_channel(0);
delay_us(4);
dato=read_adc();
delay_us(10);
envia[0]=dato;
usb_put_packet(1,envia,,USB_DTS_TOGGLE);
 
jokelnice dijo:
ah ok entonces ahi va si alguien lo necesita en 8.2 avisen
bueno pues aca va el codigo , esto solo es el codigo para probar el adc
Código:
#include <18F4550.h>
#DEVICE ADC=8
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
#use delay(clock=48000000)

#define USB_HID_DEVICE FALSE //deshabilitamos el uso de las directivas HID
#define USB_EP1_TX_ENABLE USB_ENABLE_BULK //turn on EP1(EndPoint1) for IN bulk/interrupt transfers
#define USB_EP1_RX_ENABLE USB_ENABLE_BULK //turn on EP1(EndPoint1) for OUT bulk/interrupt transfers
#define USB_EP1_TX_SIZE 2 //size to allocate for the tx endpoint 1 buffer
#define USB_EP1_RX_SIZE 2 //size to allocate for the rx endpoint 1 buffer

#include ".\librerias\pic18_usb.h" //libreria suministrada por picc para el manejo de pic 18fxxx
#include ".\librerias\PicUSB.h" //Configuración del USB y los descriptores para este dispositivo ,ademas la identificacion del dispositivo ( id - vendor)
#include ".\librerias\usb.c" //handles usb setup tokens and get descriptor reportsç

void main(void) {
int8 recibe[2]; //declaramos variables
int8 envia[0];
int8 x,y,i;
int16 dato;
/*set_tris_b(0x00);
//set_tris_d(0x7f);
output_b(0x00);*/

usb_init(); //inicializamos el USB
usb_task(); //habilita periferico usb e interrupciones
usb_wait_for_enumeration(); //esperamos hasta que el PicUSB sea configurado por el host
                            //es decir esperar hasta que el dispositivo lo reconozca el pc
setup_adc_ports(ALL_ANALOG);
setup_adc(ADC_CLOCK_INTERNAL);

while (TRUE){
   if(usb_enumerated()){//si el PicUSB está configurado
       if (usb_kbhit(1)){//si el endpoint de salida contiene datos del host
         usb_get_packet(1,recibe,1); //cojemos el paquete de tamaño 1bytes del EP1 y almacenamos en recibe
           if( recibe [0]=='1'){//  si llego un "1" entonces activa el conversor  
               set_adc_channel(0);
               delay_us(4);
               dato=read_adc();
               delay_us(10);
               envia[0]=dato;
               usb_put_packet(1,envia,,USB_DTS_TOGGLE); //enviamos el paquete de tamaño 1byte del EP1 al PC**/
              }
           }
         }
      }
    }
este es el codigo para enviar el valor leido del conversor fue el primer ejemplo conversor a 8 bits despues lo mejore a 10 y se vio cierta mejoria

y en cuanto a los vi despues de hacer varios codigos pude concluir que es mejor utilizar el codigo , en si es decir sin llamar subvis a no ser que claro se invoquen dinamicamente que funciono igual , tambien me di cuenta que directa o indirectamente influye el pc en el que estamos corriendo ya que por experiencia una cosa era lo que yo observaba en la casa y otra lo que veia en la "u" cuando haciamos pruebas con otro equipo saludos y comenten sus experiencias para mejorar



podrias subri este ejemplo en version 8.5 que es la que comunmente los mortales trabajamos ,
estaria muy agradecido
 
Saludos Jokeline, me lei todo tu foro en una noche, que dolor de cabeza, pero muy interesante,.
Me gustaria que me permitieras tener los codigos para mirar como hace usted la comunicacion del USB del labview, porque sinceramente hay muchas cosas que no comprendi leyendo y talvez viendo como funcionan, aprenda.

Almenos eso de modificar lo del VID y PID, porque estoy tratando de montar los ejemplos en Windows Vista, pero el Labview no reconoce el dispositivo.
Windows Vista si lo reconoce, pero Labview no, y me gustaria manejar bien lo del USB para yo tambien hacer una tarjeta de adquisicion de datos (Algun dia, en unos siglos).

Me gustaria que me ayudara a comprender mucho lo de esa comunicacion, y que pena si le pregunto bastante, pero estoy bien interesado.

PD. muchas gracias, Jokeline y Moyano han sido de gran ayuda para usar el USB.
 
jajajaja, otro aporte
para el amigo que no ha podido con el labview 8.6, este trae una opcion que te permite grabar en una version anterior, solo lo trae el 8.6, asi que es sino que Jokeline le de en FILE/Save for Previous Version/ y listo te aparece un cuadro que te da la opcioin para grabar en versiones anteriores, pero solo las versiones del 8.X
 
me alegra que el foro este creciendo .

adrianjpc dijo:
jokelnice porque al programar el pic le pones retardo de 4 y 10 milisegundos. Esto hace que la lectura no sea en tiempo real?
set_adc_channel(0);
delay_us(4);
dato=read_adc();
delay_us(10);
envia[0]=dato;
usb_put_packet(1,envia,,USB_DTS_TOGGLE);

saludos adrian tu apreciacion es buena pero si observas el retardo esta en microsegundos el us y de hecho si miramos las hojas de datos nos ponen como recomendacion este tipo de retrasos para asegurar la conversion , saludos y espero que te haya servido ..

David Andres Toro Garzon dijo:
jajajaja, otro aporte
para el amigo que no ha podido con el labview 8.6, este trae una opcion que te permite grabar en una version anterior, solo lo trae el 8.6, asi que es sino que Jokeline le de en FILE/Save for Previous Version/ y listo te aparece un cuadro que te da la opcioin para grabar en versiones anteriores, pero solo las versiones del 8.X

je je je jej huy colega pueden creer que este ah sido un dolor de cabeza no me van a creer que tengo instalada versiones anteriores para poder hacer los ejercisios no puedo creer que se haya pasado por alto pero muchas gracias por la apreciacion no, no ah y la pagina esta muy bien en cuanto a lo de labview en windows vista la verdad es que no eh hecho pruebas asi que no podria decirte porque no te funciona alguna vez lei que la mpbuspapi de microchip no funcionaba en vista recordemos que con esta es la que hacemos la comunicacion usb en modo bulk , y lei tambien que entonces tendriamos que hacer algo con algo que trae vista que se llama winusb especifico para dispositivos usb de lo cual no eh mirado nada espero que haya podido ayudar y estamos en comunicacion
 
Jajajaja!... Si soy yo!... Y alcon8212 es nada mas y nada menos que don "MARIN"... :LOL:
Que bacano reencontrarmelos en la virtualidad!...
Jhonathan o mejor Jockelnice!...
Si, que pena que estaba confundiendo el USD- MSD con el Bulk, ops:!...(Los otros ya los conocía, pero es bueno recordar... Thanks!)
En efecto el Bulk permite manejar todo el ancho de banda del USB, es decir que si es USB 1.1 tendríamos 12Mbits /s y si es 2.0 serían 480Mbits /s!!!... Y ni hablar del nuevo USB 3.0 con nada mas y nada menos que 5.0 Gbit/s. Pero aclaro: son Bits no Bytes!... http://en.wikipedia.org/wiki/Universal_Serial_Bus...
Claro está que eso depende del Computador y no del desarrollo del firmware que viene estándar para Microchip/Labview... (Cuando hice la prueba con un HID, en algunos computadores salía: "Este dispositivo USB puede funcionar mas rápido"...Porque lo conecté en puertos 1.1)
Tal vez esa pueda ser la causa del cambio del comportamiento en la U y en su casa... Algunos PC de la U son de usb 1.0/1.1... Aunque no estoy muy seguro k sea por eso... En cuanto al CDC su velocidad es la que "emule" en el puerto configurado es decir 9600 bits o en mi caso 38,4Kbits/s. Pero eso implicaría que en ocasiones el "puerto virtual" cambie de ubicación y sea necesario escogerlo en la aplicación de LabView. Aunque eso no es tan grave... (Cambiar el "puerto" del VISA Serial por un tipo "indicador").... En cuanto a estabilidad no he probado el Bulk para saber cual de los dos es mas estable.... Eso si el Bulk es matador en sistemas RTOS http://es.wikipedia.org/wiki/Sistema_operativo_de_tiempo_real
¿Pero exactamente cuál es el problema en la U?... Errores de Labview?... Saltos o ruido en la señal?... Me cuenta...Se me cuida!...
Sugiero a David que pruebe primero con USB-CDC... Y después si pase a USB-Bulk... Saludos.
 
jokelnice gracias por tu aportacion ya hice pruebas funciono perfectamente bien
mi error estaba en los retardos que se deve hacer para hacer la convercion adc en el pic y en labview mandaba a llamar dos veces la funcion call library lo que hacia que se retardara el sistema.
 
adrianjpc dijo:
quiero programar varias entradas analogicas por ejemplo 4 de puertoA, como le haria?
en el codigo cambio el canal y me marca error que tengo que hacer?

pues de alguna manera tienes que hacer un codigo donde te vaya seleccionando cada canal , guardas cada lectura y a la hora de enviarlo lo podrias enviar generando un array de todas las lecturas y envias solo un trama algo como esto

Código:
envia[0]=canal_1; // lectura 1 , etc
                envia[1]=canal_2;
                envia[2]=canal_3;
                usb_put_packet(1,envia,USB_DTS_TOGGLE); //enviamos el paquete
yo todavia estoy experimentado ya que necesito hacer algo parecido

darck_khronos dijo:
y como puedo comunicar una simulacion de proteus usando rs232 en Labview

pues recuerda que rs232 es serial y hasta donde "c" proteus no tiene implementado este tipo de emulacion como el usb , lo que hacemos con el hyperterminal es interno solo es una emulacion quiere decir que en ningun momento se esta metiendo con la parte del hardware del pc ( como si se hace con el usb en cdc por ejemplo en donde con una emulacion podrias tener proteus ejecutando y labview tambien y ver si la comunicacion esta bien ) en el serial es muy complicado lo mejor es montar lo que estes haciendo y ahi si pobrar la comunicacion rs232 en labview
 
por que estoy haciendo una pequeña practica con serial con un 18f4550 y ya lo comunique con labview en fisico, solo tengo la duda si tambien podria hacer lo mismo simulado asi como la usb
 
hola jockelnice quisiera saber si me podrias pasar el codigo de tus vi's ya que tengo cierta curiosidad de como manejaste esta interfaz he visto que contiene el visa pero hasta ahi.
 
si necesitas simularlo bajate el proteus 7.4 sp3 que ya trae hasta el usb simulacion y obvio el rs232 que traen las versiones anteriores este programa tiene mucha caña.
 
tr_manolete dijo:
hola jockelnice quisiera saber si me podrias pasar el codigo de tus vi's ya que tengo cierta curiosidad de como manejaste esta interfaz he visto que contiene el visa pero hasta ahi.

claro tr_manolete los ejemplos que se han posteado ya se puede ver el codigo , algunos tenian clave pero ya se las quite y si para esta comunicacion uso las librerias de visa

saludos
 
Atrás
Arriba