Está en la página 1de 24

Hola amigos los felcito por tan buena pagina, quisiera ver si me pueden

ayudar en algo, resulta que tengo que ver como me puedo comunicar en
labview 8 por medio del bus USB, no se si es posible realizar la lectura y
escritura de un pendrive o realizar un chat por medio del USB, la idea es ver
que herramientas dispongo para establecer esta comunicacion, ojala puedan
orientarme en aquello que ha sido un dolor de cabeza para mi,
Muchas Gracias y sigan con tan buena pagina..

Atte Lord_Inricam
Me Gusta

Mensaje
inapropiado?
Citar
02/07/2007 #2
electra26

Fecha de Ingreso: junio-2007
Ubicacin: colombia
Mensajes: 4
USB con
labview
Quisiera
comunicar
una tarjeta
de adquision
de datos que
yo estoy
fabricando a
traves del
puerto usb
con labview.
estoy
utilizando el
pic 18f2550,
y segun he
leido en la
ayuda de
labview para
facilitar la
conexion se
requiere que
este sea de
clase usbtmc
(usb test and
measurement
class) para
configurarlo a
traves de
visa, quisiera
que por favor
alguien me
facilitara un
fireware para
que mi
dispositivo
soporte esta
clase o me
guen en
como
hacerlo. he
leido en
solicitudes de
ayuda de
personas en
aos
anteriores
como altair
que
requerian lo
mismo que
yo, si por
favor estas
personas ya
lograron
desarrollar
sus proyectos
les
agradecera
mucho toda
la ayuda e
informacin q
me puedan
brindar.
desde ya
gracias!!!
Me Gusta

Mensaje
inapropiado?
Citar
03/07/2007 #3
eidtech

Fecha de Ingreso:
julio-2006
Ubicacin: Mxico,
DF
Mensajes: 383
Electra,

Una de manera de hacer la conexion es mediante el uso de una dll
que proporciona Microchip, esta se llama mpusbapi.dll. Hacerla
funcionar en Labview es muy sencillo.

Te recomiendo que visites esta pagina:

http://picmania.garcia-cuervo.com/US...encadenado.htm

ahi encontraras mucha informacin que seguro te va a servir en el
desarrollo de tu proyecto.

Ademas espero que compartas tus resultados con el foro.

Saludos..
Me Gusta

http://www.embedded.com.mx My site!

Any idiot can create code; professionals find ways to consistently create
high quality software on time and on budget.

Ganssle, Jack

Mensaje inapropiado?
Citar
04/07/2007 #4
electra26

Fecha de Ingreso:
junio-2007
Ubicacin: colombia
Mensajes: 4
hola eidtech, gracias por tu ayuda, pues te cuento el archivo
mpusbapi.dll ya lo tengo en un ejemplo q encontre en la
pagina www.hobbypic.com, pero segun he leido en la pagina de NI
para labview se crea el driver a travez VISA driver debelopment
wizard que se encuentra en inicio->todos los programas->
national instrument->visa, alli se genera una archivo .inf y para
ello hay q saber el ID vendor y el ID product que en mi caso al
programar el pic para usb se establecen estos numeros con el
ejemplo q les hable hecho por J1M, una vez se crea este archivo
se copia y se instala en la carpeta WINDOWS/INF, ya luego
coencto el usb y se supone se insatala normal con este driver pero
el problema q ahora tengo es q me pide una archivo llamado
"mchpusb.sys" q es de microchip pero una herramietna de NI en
la misma parte de VISA llamado VISA interactive control la cual
permite la comunicacion del dispositivo con labview no me lo
detecta :( , y es lo q no entiendo como hacer.
Me Gusta

Mensaje inapropiado?
Citar
04/07/2007 #5
eidtech

Fecha de Ingreso:
julio-2006
Ubicacin: Mxico,
DF
Mensajes: 383
Hola!

Yo he utilizado la conexion USB en Labview sin hacer uso de VISA.

Lo hice mediante llamadas a funciones DLL.
Me Gusta

http://www.embedded.com.mx My site!

Any idiot can create code; professionals find ways to consistently create
high quality software on time and on budget.

Ganssle, Jack

Mensaje inapropiado?
Citar
12/04/2008 #6
Jaiba2099

Fecha de Ingreso:
abril-2008
Ubicacin: El
Salvador
Mensajes: 1
USB con Labview
Hola
Soy nuevo en esta pagina, pero veo son gente muy capaz y que
de hecho saben mucho delo que hablan. Tengo un problema,
necesito comunicar labview 8.5 con un dispositivo USB. La idea es
ver cuales son los requisitos para que labview pueda interactuar
con un dispositivo USB, de preferencia cualquiera. Ya vi lo de usar
VISA, pero de nuevo me da problemas con los dll.
Me ayudaria mucho si me pudieran dar alguna referencia de
manual o algo asi, pues no cuento con un dispositivo especifico
USB con el cual me queiro conectar.
Perdon si sueno un poco vago, pero es toda la informacin que me
han dado y soy nuevo en esto.
Gracias por su tiempo.
Me Gusta

Mensaje inapropiado?
Citar
27/11/2008 #7
Ligator


Fecha de Ingreso:
mayo-2008
Mensajes: 11
Hola, yo tambin he usado el pic18f2550 con labview por medio
del puerto usb.

Lo que hice fue aprender la parte de la programacin del pic por
medio de la pgina www.muchotrasto.com (te la recomiendo
ampliamente), ah te ensean a programarlo con las libreras CDC
del compilador CCS, esto significa que solo tienes que instalar el
archivo *.inf (que la misma pgina te proporciona) y ya est, tu
ordenador reconocer a tu pic como si estuviera conectado a un
puerto serial!.

Solo tienes que ver en el administrador de dispositivos qu puerto
COM le asign a tu pic y de ah el puerto serial es fcil manipularlo
desde labview.

Espero te sirva esta informacin y suerte con tu proyecto, ya nos
contars que curiosidades haces con l.
Me Gusta
A holanda le gusta esto.

Mensaje inapropiado?
Citar
17/12/2008 #8
Ligator
http://zone.ni.com/devzone/cda/tut/p/id/4478


Fecha de Ingreso:
mayo-2008
Mensajes: 11
Me Gusta

Mensaje inapropiado?
Citar
26/12/2008 #9
jokelnice


Fecha de Ingreso:
noviembre-2008
Ubicacin: bogota-
colombia
Mensajes: 135
yo tambien saque la comunicacion por usb con la libreria de
microchip ya que por visa no pude , y hasta el momento todo
handa bien cualquier cosa estamos para ayudarnos
Me Gusta

Jonathan Cruz, Bogota - Colombia.

Mensaje inapropiado?
Citar
26/12/2008 #10
Moyano Jonathan


Fecha de Ingreso:
Estara buenisimo que postearas algo con labview de usb. Igual
me voy a tener que meter a leer como es la programacin con ese
lenguaje por que hasta ahora todo lo que programado en la pc lo
he hecho en vb 2006.
Me Gusta

abril-2008
Ubicacin: Mendoza,
Argentina
Mensajes: 2.859
No predigas el futuro, implementlo !

Mensaje inapropiado?
Citar
26/12/2008 #11
jokelnice


Fecha de Ingreso:
noviembre-2008
Ubicacin: bogota-
colombia
Mensajes: 135
si mira labview es muy sencillo lo unico que hay que tener en
cuenta es que no se programa de la forma tipica que conocemos (
por lineas de instruccion ) sino por lenguaje g ( grafico ) en donde
no se ejecuta de abajo hacia arriba sino con una perspectiva nodal
para que me entiendas es como si estuvieras simulando un
circuito
por ejemplo en c para sumar dos numeros que hariamos :
x=2;
y=3;
z=x+y; // 5
en labview tendriamos un esquema que simboliza la suma con dos
entradas ( los dos numeros ) y una salida ( resultado ) ;espero
que haya servido cualquier cosa avisenme he hecho muchas cosas
con este software ,cualquier cosa a la orden
Me Gusta

Jonathan Cruz, Bogota - Colombia.

Mensaje inapropiado?
Citar
26/12/2008 #12
Moyano Jonathan

La verdad , me gustara aprender todo lo que pueda de este
lenguaje. Igual primero me lo voy a conseguir y despus veo si
me bajo algunos tutos al respecto , cualquier duda te la comento.

Fecha de Ingreso:
abril-2008
Ubicacin: Mendoza,
Argentina
Mensajes: 2.859
Me Gusta

No predigas el futuro, implementlo !

Mensaje inapropiado?
Citar
20/01/2009 #13
jokelnice


Fecha de Ingreso:
noviembre-2008
Ubicacin: bogota-
colombia
Mensajes: 135
hay un ejemplo basico el otro post aca esta: Control de
dispositivos a travs del mdulo USB del PIC18F2550
Me Gusta

Jonathan Cruz, Bogota - Colombia.

Mensaje inapropiado?
Citar
15/02/2009 #14
Patico21

Fecha de Ingreso:
enero-2009
Ubicacin: Ecuador
Mensajes: 115
alguien me m puede ayudar a hacer la comunicacion usb con lab
view con visa o por lo menos los pasos para poder lograrlo les
agradeceria mucho
Me Gusta

Mensaje inapropiado?
Citar
16/02/2009 #15
jokelnice


Fecha de
Ingreso:
noviembre-
2008
Ubicacin:
bogota-
colombia
Mensajes:
135
Patico21 dijo:
alguien me m puede ayudar a hacer la comunicacion usb con lab view con visa o
por lo menos los pasos para poder lograrlo les agradeceria mucho
patico21 como estas antes de meternos con labview no se si ya tengas
informacin del protocolo ; como funciona ,que podemos hacer . si no la
tienes hacer lo primero que debes hacer es visitar estos foros y paginas
recomendados ya despues integrarlo con labview es facil cualquier cosa
estamos para servirte

Control de dispositivos a travs del mdulo USB del PIC18F2550
http://picmania.garcia-cuervo.com/US...encadenado.php

si por el contrario ya tienes algo de conocimiento sobre el usb entonces
dirigite a este foro que lo estoy llevando sobre labview y el primer
ejemplo es sobre comunicacion usb el modo cdc (Communications
Devices Class) saludos

Usb y labVIEW , entre otros
Me Gusta

Jonathan Cruz, Bogota - Colombia.

Mensaje inapropiado?
Citar
12/06/2009 #16
biskinson

Fecha de
Hola a todos.
Antes que nada daros a todos las gracias por los aportes que hacen.
Gracias a ellos, he conseguido comunicarme en modo usb cdc con el micro
sin ningn problema.
Ingreso:
mayo-2009
Ubicacin:
Espaa
Mensajes:
2

El problema lo estoy teniendo con el modo hid. Para empezar he partido
del ejemplo de CCS ex_usb_hid.c, modificndolo para usarlo con el pic
18f2550. El programa manda peridicamente un byte constante (0x55) y
el valor del ADC. Para probar que funciona, he utilizado una aplicacin
hiddemo.exe, con la que puedo leer la informacin mandada con un
dispositivo hid. Con esta aplicacin, detecto el dispositivo y recibo tanto el
byte constante como la lectura del ADC, as que entiendo que el pic
funciona perfectamente en modo hid.

Cre una aplicacin en labview para hacer la lectura de estos bytes
utilizando la librera mpusbapi.dll, pero no consegu ninguna respuesta.
Me baj el vi de jokelnice para detectar el dispositivo hid y tampoco lo
detecta. Llevo un tiempo dndole vueltas al asunto pero no entiendo qu
es lo que puedo estar haciendo mal, me podrais echar una mano?
Cdigo:
#define __USB_PIC_PERIF__ 1

//if using a 16bit PIC on an Explorer 16 borad, set this to 1
#define __USB_PIC_EXPLORER16__ 1

#if __USB_PIC_PERIF__
#define LED_ON(x) output_high(x)
#define LED_OFF(x) output_low(x)
#DEFINE LED1 PIN_B6
#DEFINE LED2 PIN_B7
#DEFINE LED3 PIN_C0
#define sw1 input(PIN_A3)
#include <18F2550.h>
#device ADC=8
#fuses
HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
#use delay(clock=48000000)

#endif


#use rs232(baud=9600, UART1, errors)

// you can change the tx and rx packet sizes here.
// in order to be compatbile with hiddemo.exe, these values
must be 2.
#define USB_CONFIG_HID_TX_SIZE 2
#define USB_CONFIG_HID_RX_SIZE 2

//////////////////////////////////////////////////////////////
///////////////
//
// Include the CCS USB Libraries. See the comments at the top
of these
// files for more informacinrmation
//
//////////////////////////////////////////////////////////////
///////////////

#include <pic18_usb.h> //Microchip PIC18Fxx5x hardware layer
for usb.c

#include <usb_desc_hid.h> //USB Configuration and Device
descriptors for this UBS device
#include <usb.c> //handles usb setup tokens and get
descriptor reports


//////////////////////////////////////////////////////////////
///////////////
//
// Configure the demonstration I/O
//
//////////////////////////////////////////////////////////////
///////////////



//////////////////////////////////////////////////////////////
///////////////
//
// usb_debug_task()
//
// When called periodically, displays debugging
informacinrmation over serial
// to display enumeration and connection states. Also lights
LED1 based upon
// enumeration and status.
//
//////////////////////////////////////////////////////////////
///////////////
void usb_debug_task(void)
{
static int8 last_connected;
static int8 last_enumerated;
int8 new_connected;
int8 new_enumerated;

new_connected=usb_attached();
new_enumerated=usb_enumerated();

if (new_enumerated)
LED_ON(LED1);
else
LED_OFF(LED1);

if (new_connected && !last_connected)
printf("\r\n\nUSB connected, waiting for
enumaration...");
if (!new_connected && last_connected)
printf("\r\n\nUSB disconnected, waiting for
connection...");
if (new_enumerated && !last_enumerated)
printf("\r\n\nUSB enumerated by PC/HOST");
if (!new_enumerated && last_enumerated)
printf("\r\n\nUSB unenumerated by PC/HOST, waiting for
enumeration...");

last_connected=new_connected;
last_enumerated=new_enumerated;
}

void main(void)
{
int8 out_data[2];
int8 in_data[2];
int8 send_timer=0;

LED_OFF(LED1);
LED_OFF(LED2);
LED_OFF(LED3);

printf("\r\n\nCCS Vendor Specific HID Example");

#ifdef __PCH__
printf("\r\nPCH: v");
printf(__PCH__);
#elif defined(__PCD__)
printf("\r\nPCD: v");
printf(__PCD__);
#else
printf("\r\nPCM: v");
printf(__PCM__);
#endif

usb_init_cs();

#if !(__USB_PIC_PERIF__)
printf("\r\nUSBN: 0x%X", usbn_get_version());
#endif
printf("\r\n");

setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_INTERNAL);
set_adc_channel(0);

while (TRUE)
{
usb_task();
usb_debug_task();
if (usb_enumerated())
{
if (!send_timer)
{
send_timer=250;
out_data[1]=read_adc();
out_data[0]=0x55;
if (usb_put_packet(1, out_data, 2,
USB_DTS_TOGGLE))
printf("\r\n<-- Sending 2 bytes: 0x%X 0x%X",
out_data[0], out_data[1]);
}
if (usb_kbhit(1))
{
usb_get_packet(1, in_data, 2);
printf("\r\n--> Received data: 0x%X
0x%X",in_data[0],in_data[1]);
if (in_data[0]) {LED_ON(LED2);} else
{LED_OFF(LED2);}
if (in_data[1]) {LED_ON(LED3);} else
{LED_OFF(LED3);}

}
send_timer--;
delay_ms(1);
}
}
}



Me Gusta

Mensaje inapropiado?
Citar
12/06/2009 #17
jokelnice


Fecha de Ingreso:
noviembre-2008
Ubicacin: bogota-
colombia
Mensajes: 135
biskinson dijo:
Hola a todos.
Antes que nada daros a todos las gracias por los aportes que hacen.
Gracias a ellos, he conseguido comunicarme en modo usb cdc con el
micro sin ningn problema.

El problema lo estoy teniendo con el modo hid. Para empezar he partido
del ejemplo de CCS ex_usb_hid.c, modificndolo para usarlo con el pic
18f2550. El programa manda peridicamente un byte constante (0x55) y
el valor del ADC. Para probar que funciona, he utilizado una aplicacin
hiddemo.exe, con la que puedo leer la informacin mandada con un
dispositivo hid. Con esta aplicacin, detecto el dispositivo y recibo tanto el
byte constante como la lectura del ADC, as que entiendo que el pic
funciona perfectamente en modo hid.

Cre una aplicacin en labview para hacer la lectura de estos bytes
utilizando la librera mpusbapi.dll, pero no consegu ninguna respuesta.
Me baj el vi de jokelnice para detectar el dispositivo hid y tampoco lo
detecta. Llevo un tiempo dndole vueltas al asunto pero no entiendo qu
es lo que puedo estar haciendo mal, me podrais echar una mano?

Colega el vi solo funciona con usb modo bulk , no en hid
Me Gusta

Jonathan Cruz, Bogota - Colombia.

Mensaje inapropiado?
Citar
15/06/2009 #18
biskinson

Fecha de Ingreso:
mayo-2009
Ubicacin: Espaa
Mensajes: 2
OK, he usado #DEFINE USB_HID_DEVICE FALSE y funciona.
Gracias, jokelnice. La librera mpusbapi.dll no se puede utilizar en
modo hid? Habra que utilizar la librera hid.dll de windows?
Tenis algn ejemplo usando esta librera?
Me Gusta

Mensaje inapropiado?
Citar
19/06/2009 #19
gpoolb


Fecha de Ingreso:
junio-2009
Ubicacin: Mxico
Mensajes: 7
Comunicacion por puerto USB con Labview 8.2 y PIC
Saludos...

Les comparto mis experiencias con la comunicacin por puerto
USB con PIC de Microchip (compilado con CCS C compiler) y
Labview 8.2 usando "Call Library Function Node" para manipular
mpusbapi.dll ... espero les sea til. Espero sus comentarios.
Archivos Adjuntos

daq_384.zip (592,2 KB (Kilobytes), 2447 visitas)

Envio del adc por usb modo bulk del micro al pc
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
Cdigo:
#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" //Configuracin 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 tamao
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 tamao 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
Archivos Adjuntos

ejemplo_adc_labview_506.rar (39,7 KB (Kilobytes), 901 visitas)

labview_82_119.rar (45,6 KB (Kilobytes), 744 visitas)

#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" //Configuracin 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 tamao
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 tamao 1byte del EP1 al PC**/
}
}
}
}
}

Gracias por responder, aqui esta mi codigo del PIC y el Labview que es el mismo que
todos estamos usando gracias a J1M:

Cdigo:
#include <18F4550.h>
#DEVICE ADC=8

#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
#use delay(clock=20MHZ)


#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 1 //size to allocate for the
tx endpoint 1 buffer
#define USB_EP1_RX_SIZE 3 //size to allocate for the
rx endpoint 1 buffer


#include <pic18_usb.h> //Microchip
PIC18Fxx5x Hardware layer for CCS's PIC USB driver
#include <PicUSB.h>
//Configuracin del USB y los descriptores para este dispositivo
#include <usb.c> //handles
usb setup tokens and get descriptor reports

#define LEDV PIN_B6
#define LEDR PIN_B7
#define LED_ON output_high
#define LED_OFF output_low

#define modo recibe[0]
#define param1 recibe[1]
#define param2 recibe[2]
#define resultado envia[0]
#include <18F4550.h>
#DEVICE ADC=8

#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
#use delay(clock=20MHZ)


#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 1 //size to allocate for the
tx endpoint 1 buffer
#define USB_EP1_RX_SIZE 3 //size to allocate for the
rx endpoint 1 buffer


#include <pic18_usb.h> //Microchip
PIC18Fxx5x Hardware layer for CCS's PIC USB driver
#include <PicUSB.h>
//Configuracin del USB y los descriptores para este dispositivo
#include <usb.c> //handles
usb setup tokens and get descriptor reports

#define LEDV PIN_B6
#define LEDR PIN_B7
#define LED_ON output_high
#define LED_OFF output_low

#define modo recibe[0]
#define param1 recibe[1]
#define param2 recibe[2]
#define resultado envia[0]

void main(void)
{
int8 recibe[3]; //declaramos variables
int8 adc[1];
int16 contador;

LED_OFF(LEDV);
LED_ON(LEDR);

setup_adc_ports(AN0|VSS_VDD);
setup_adc(ADC_CLOCK_DIV_2);
set_adc_channel(0);
delay_us(10);

usb_init(); //inicializamos el USB
usb_task(); //habilita periferico usb e
interrupciones
usb_wait_for_enumeration(); //esperamos hasta que el
PoteUSB sea configurado por el host

LED_OFF(LEDR);
LED_ON(LEDV);

contador=0;

while (TRUE)
{

if(usb_enumerated()) //si el PoteUSB est
configurado
{
LED_OFF(LEDR);
LED_ON(LEDV); // encendemos LED
para indicar que el disp esta enumerado

while(contador<512)
{
adc[0] = read_adc();
delay_us(10);

usb_put_packet(1, adc, 1, USB_DTS_TOGGLE); //enviamos el
paquete de tamao 1byte del EP1 al PC
delay_ms(100);
}
}
}
}