Autor Tema: Ayuda envio datos de pc a pic18f4550 con jpic  (Leído 4864 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado jhuaraya

  • PIC10
  • *
  • Mensajes: 6
Ayuda envio datos de pc a pic18f4550 con jpic
« en: 16 de Marzo de 2014, 13:46:09 »
Hola a todos los usuarios de todopic. Estoy haciendo mis primeros pasos con el pic18f4550 y tengo el siguiente codigo en ccs
Código: [Seleccionar]
#include <18f4550.h>
#fuses hspll,nowdt,nomclr,noprotect,nolvp,nodebug,usbdiv,pll1,cpudiv1,vregen
#use delay(clock=48M)                                // clock  a 48Mhz
#define USB_CON_SENSE_PIN PIN_C6                    // pin para reconcer conexion por hardware


/*******************************************************************************************/
#DEFINE USB_HID_DEVICE TRUE                      // Vamos a utilizar el protocolo HID.
#define USB_EP1_TX_ENABLE USB_ENABLE_INTERRUPT // Definición del tamaño del buffer de salida.
#define USB_EP1_TX_SIZE 32
#define USB_EP1_RX_ENABLE USB_ENABLE_INTERRUPT // Definición del tamaño del buffer de entrada.
#define USB_EP1_RX_SIZE 32

/*************************************************************************************************/
// Librerías utilizadas.

#include <pic18_usb.h>                 // Drivers's USB del PIC18F2550.
#include <usb_desc_hid_cus.h>              // Descriptores USB.
#include <usb.c>  

int8 recbuf[32];
int8 sndbuf[32];

void main()
{      
   set_tris_d(0x0);
   output_d (0);
  
   output_low(PIN_B6);
   output_high(PIN_B7);
   usb_init();
   usb_wait_for_enumeration();
   output_low(PIN_B7);
   output_high(PIN_B6);  
   while(TRUE){
      if(usb_enumerated()){  
         if (usb_kbhit(1)){
            usb_get_packet(1, recbuf, 32);            
            Output_Toggle(PIN_D0);              
  
         }
      }      
   }  
}

y el siguiente codigo en java
Código: [Seleccionar]
try {
iface.load();            

} catch (Exception e) {
System.err.println(e.getMessage());
}        
iface.set_instance(0);
iface.set_vidpid("vid_04d8&pid_0000");
byte[] out = {127};  
System.out.println(iface.QWrite(out, 1, 1000));
mas no me es posible enviar esa data al pic, lo que quiero es solamente q se encienda el pin_d0 cuando el pic reciba informacion, pero no puedo lograrlo. gracias de antemano sus aportes.
Nota:  estoy haciendo las pruebas en un windows 7 de 32bits

Desconectado alperez

  • PIC18
  • ****
  • Mensajes: 255
Re: Ayuda envio datos de pc a pic18f4550 con jpic
« Respuesta #1 en: 16 de Marzo de 2014, 15:11:04 »
Prueba con:

Código: [Seleccionar]
usb_task();                            //habilita periférico usb e interrupciones
Yo lo hago con VC++ emulando un puerto serie de forma muy sencilla y funciona sin problemas

Desconectado jhuaraya

  • PIC10
  • *
  • Mensajes: 6
Re: Ayuda envio datos de pc a pic18f4550 con jpic
« Respuesta #2 en: 16 de Marzo de 2014, 15:48:52 »
Ya modifiqué de esta manera mi codigo:
Código: [Seleccionar]
#include <18f4550.h>
#fuses hspll,nowdt,nomclr,noprotect,nolvp,nodebug,usbdiv,pll1,cpudiv1,vregen
#use delay(clock=48M)                                // clock  a 48Mhz
#define USB_CON_SENSE_PIN PIN_C6                    // pin para reconcer conexion por hardware


/*******************************************************************************************/
#DEFINE USB_HID_DEVICE TRUE                      // Vamos a utilizar el protocolo HID.
#define USB_EP1_TX_ENABLE USB_ENABLE_INTERRUPT // Definición del tamaño del buffer de salida.
#define USB_EP1_TX_SIZE 32
#define USB_EP1_RX_ENABLE USB_ENABLE_INTERRUPT // Definición del tamaño del buffer de entrada.
#define USB_EP1_RX_SIZE 32

/*************************************************************************************************/
// Librerías utilizadas.

#include <pic18_usb.h>                 // Drivers's USB del PIC18F2550.
#include <usb_desc_hid_cus.h>              // Descriptores USB.
#include <usb.c>   

int8 recbuf[32];
//int8 sndbuf[32];

void main()
{       
   output_low(PIN_B6);
   output_high(PIN_B7);
   usb_init();
   usb_task();
   output_low(PIN_B7);
   output_high(PIN_B6);
   while(TRUE){
      usb_task();
      if(usb_enumerated()){
         output_low(PIN_B7);
         output_high(PIN_B6); 
         if (usb_kbhit(1)){
            usb_get_packet(1, recbuf, 32);           
            Output_Toggle(PIN_D0);             
 
         }
      }     
   }   
}
Pero aun nada, no puedo enviar datos al pic con java. Adicionalmente usé este software "INTERFAZ GRAFICA USB - HERMELINDO CAMPOSECO" y con ese software funciona normal mi pic, mas no con jpic

Desconectado C. Andrew

  • PIC10
  • *
  • Mensajes: 11
    • Proyectos de electrónica caseros
Re: Ayuda envio datos de pc a pic18f4550 con jpic
« Respuesta #3 en: 16 de Marzo de 2014, 16:29:35 »
hola...
Revisa si el vip y el pid del codigo en java coincide con el que estableces en usb_desc_hid_cus.h, si es asi, te aconsejo que utilices una terminal usb-hid como el que trae el programa de Mikro C para que envies datos deste esta, si responde el pic significa que el problema esta en el código en java.
Saludos...

Desconectado jhuaraya

  • PIC10
  • *
  • Mensajes: 6
Re: Ayuda envio datos de pc a pic18f4550 con jpic
« Respuesta #4 en: 16 de Marzo de 2014, 16:50:56 »
hola...
Revisa si el vip y el pid del codigo en java coincide con el que estableces en usb_desc_hid_cus.h, si es asi, te aconsejo que utilices una terminal usb-hid como el que trae el programa de Mikro C para que envies datos deste esta, si responde el pic significa que el problema esta en el código en java.
Saludos...
Acabo de probar con el software mencionado y si puedo enviar dato con la opcion send as Number y funciona normal, pero sigo sin poder enviarlos desde java

Desconectado alperez

  • PIC18
  • ****
  • Mensajes: 255
Re: Ayuda envio datos de pc a pic18f4550 con jpic
« Respuesta #5 en: 16 de Marzo de 2014, 17:10:31 »
Yo con java no te puedo ayudar mucho. Con VC++ y CDC es simple:

configuro puerto -> abro puerto-> evio dato -> cierro puerto

Con android envio por tcp/ip y es igual

configuro socket -> abro Socket -> evio dato -> cierro socket


Desconectado jhuaraya

  • PIC10
  • *
  • Mensajes: 6
Re: Ayuda envio datos de pc a pic18f4550 con jpic
« Respuesta #6 en: 17 de Marzo de 2014, 11:59:17 »
Yo con java no te puedo ayudar mucho. Con VC++ y CDC es simple:

configuro puerto -> abro puerto-> evio dato -> cierro puerto

Con android envio por tcp/ip y es igual

configuro socket -> abro Socket -> evio dato -> cierro socket


Tienes algun ejemplo que me puedas facilitar..?

Desconectado alperez

  • PIC18
  • ****
  • Mensajes: 255
Re: Ayuda envio datos de pc a pic18f4550 con jpic
« Respuesta #7 en: 17 de Marzo de 2014, 14:58:59 »
Yo con java no te puedo ayudar mucho. Con VC++ y CDC es simple:

configuro puerto -> abro puerto-> evio dato -> cierro puerto

Con android envio por tcp/ip y es igual

configuro socket -> abro Socket -> evio dato -> cierro socket


Tienes algun ejemplo que me puedas facilitar..?


Para VC++ tienes aquí como comunicarte con el PIC:
http://www.todopic.com.ar/foros/index.php?topic=35608.0

En Android todas las operaciones que puedan bloquear el hilo principal por más de 5 segundos, hay que realizarlas en otro hilo, bien manejando nostros mismos un nuevo hilo con Trhead o bien utilizando la clase Asynctask

Código: [Seleccionar]

tempSocketCliente = new Socket();
tempSocketCliente.connect(sockaddr, timeoutMs);

salida = new PrintWriter(tempSocketCliente.getOutputStream(),true);
entrada = new BufferedReader(new InputStreamReader(tempSocketCliente.getInputStream()));

salida.write(x);
salida.println(x);

String respuesta = entrada.readLine();
if (respuesta != null) {

}
            

Para cerrar el socket:

Código: [Seleccionar]

salida.close();
entrada.close();
tempSocketCliente.close();


Ten en cuenta que ninguna de estas formas es como quieres hacerlo tu, puesto que como verás, aquí no influye para nada ni el VID ni el PID

Espero que te sirva de ayuda.

Desconectado jhuaraya

  • PIC10
  • *
  • Mensajes: 6
Re: Ayuda envio datos de pc a pic18f4550 con jpic
« Respuesta #8 en: 19 de Marzo de 2014, 12:39:06 »
Ahora estoy tratando de enviar en modo cdc.
mi en pcw es:
Código: [Seleccionar]
#include <18f4550.h>
//#fuses HSPLL,MCLR,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL1,CPUDIV1,VREGEN,NOPBADEN
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL3,CPUDIV1,VREGEN
#use delay(clock=48M)                                // clock  a 48Mhz
#define USB_CON_SENSE_PIN PIN_C6                    // pin para reconcer conexion por hardware

#include <usb_cdc.h>
#include <usb_desc_cdc_cus.h>              // Descriptores USB.



void main()
{
   usb_cdc_init();
   usb_init();
   delay_us(10);
   while(!usb_cdc_connected()){
      output_high(PIN_B6);
      output_low(PIN_B7);
   }
   do{
      usb_task();
      if(usb_enumerated()){
         output_high(PIN_B7);
         output_low(PIN_B6);
      }     
   }
   WHILE(TRUE);
}
en el archivo usb_desc_cdc_cus solo modifiqué le vid y pid a 0x04d8 y 0x000b respectivamente
y mi esquema esta adjunto, estoy queriendo utilizar el driver de microchip mchpcdc.inf pero no me reconoce el driver.. me podrian indicar en que estoy mal?

Desconectado BEXTIXTOX

  • PIC16
  • ***
  • Mensajes: 108
Re: Ayuda envio datos de pc a pic18f4550 con jpic
« Respuesta #9 en: 20 de Marzo de 2014, 02:01:20 »
mmmmm amigo tengoun error similar al tuyo
 lo ise fue tomar TU CODIGO y ensamblarlo y lo  que yo note es lo de la imagenn

me gustaria que consultaras tu aver si cooinciden los errores

Desconectado jhuaraya

  • PIC10
  • *
  • Mensajes: 6
Re: Ayuda envio datos de pc a pic18f4550 con jpic
« Respuesta #10 en: 20 de Marzo de 2014, 09:50:17 »
Efectivamente es el mismo error que me sale, pese a que en el descriptor tengo configurado el vid y pid correctamente

Desconectado imagoxi

  • PIC10
  • *
  • Mensajes: 3
Re: Ayuda envio datos de pc a pic18f4550 con jpic
« Respuesta #11 en: 28 de Agosto de 2014, 18:38:49 »
Hola buenas a tod@s :), me podrian confirmar si pudieron hacer andar en java el codigo este, yo tambien trate con la libreria jPicUsb y no puedo configurarlo, la pc reconoce el pic, el vid&pid son correctos pero no puedo enviar ni recibir nada por medio de este modo HID, he visto que a muchos le funciona pero yo soy otro de los que no me anda jaja, estoy probando con el protocolo CDC pero con la libreria giovynet tambien es un tema poder hacer algo ...