Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

04/11/2011 #1841

Avatar de Deego

Tengo varias inquietudes, en realidad ahora estoy algo confundido acerca de la dll mcHID.dll, y es que, pues veo que esta es generada por el esayHID pero, esa que genera el easyHID no es para visual basic 6?? o también sirve para visual basic.net??, ahora, esta no sirve para utilizarla con C# cierto??, entonces si no sirve con C#, como hicieron para modificarla?? En que lenguaje está esta dll?? Estaría muy agradecido por sus respuestas, la verdad, estudiar esta librería es parte importante para el trabajo que estoy desarrollando, y googleando solo se encuentra que esta es generada por el esayHID, no mas.
10/11/2011 #1842

Avatar de phenix

Hola moyano disculpa la molestia, para saber si es posible que puedas hacer una aplicación con usb para vb 2008, estoy tratando de enviar datos al pic desde vb 2008 y no logra conectar o un pequeño ejemplo para poder guiarme ya que estoy haciendo mi tesi dirigida a un laboratorio de instrumentación y control.
10/11/2011 #1843

Avatar de Moyano Jonathan

Hola moyano disculpa la molestia, para saber si es posible que puedas hacer una aplicación con usb para vb 2008, estoy tratando de enviar datos al pic desde vb 2008 y no logra conectar o un pequeño ejemplo para poder guiarme ya que estoy haciendo mi tesi dirigida a un laboratorio de instrumentación y control.
La segunda parte de mi manual habla de como comunicarse con USB usando el PIC18F2550 en VB.net ...pero todavía no la termino. Calculo que para diciembre estará lista...pero no puedo adelantarte nada por que no está terminado...y el programa todavía tiene algunos bugs importantes.

Un saludo !
11/11/2011 #1844

Avatar de Jhon5191

Hola a todos, hace rato que no paso por este hilo. Queria saber si alguien me podría ayudar con un inconveniente al usar el protocolo HID y el pic 18f4550. Busqué a través de todo el hilo, y lo único que encontré fue alguien con la misma inquietud...

QuimCri dijo: Ver Mensaje
Gracias por la colaboración.

Cuando me refiero a llenar el buffer es que, según entiendo, easyHID crea en VB una clase de array que define el número de Bytes que se pueden enviar en un paquete (máx 64). Yo utilicé el buffer de 8 bytes que pone easyHID. Si se fija en el programa, lo que se hace es ubicar un dato en cada uno de los bloques o posiciones del array BufferOut[i] con 1<= i <= 8, y eviarlo al PIC. En el pic hay otro array DatoRx[i] que los debe recibir.

Según comprendí, el dato que se envía desde VB se puede leer en el PIC de la siguiente forma:


VB <------------> PIC
BufferOut[0] No se utiliza
BufferOut[1] DatoRx[0]
BufferOut[2] DatoRx[1]
. .
BufferOut[8] DatoRx[7]

Y de la misma forma al leer en VB lo que se envía del PIC. Sin embargo, como mencioné antes, no coinciden las lecturas que hago en el PIC con los datos que envío del PC (solo coinciden los datos de BufferOut(1) y DatoRx(0)). Espero haber aclarado alguna duda que permita su colaboración.

Agradecimientos
Al igual que en la cita anterior, cuando yo envio un paquete de 8 bytes hacia el pic, el micro solo lee los primeros 2, y los demas son nulos, ya intenté usar la funcion usb_gets() pero sigo teniendo los mismos resultados.

De antemano muchas gracias
11/11/2011 #1845

Avatar de Moyano Jonathan

Al igual que en la cita anterior, cuando yo envio un paquete de 8 bytes hacia el pic, el micro solo lee los primeros 2, y los demas son nulos, ya intenté usar la funcion usb_gets() pero sigo teniendo los mismos resultados.

De antemano muchas gracias
Tenés que usar la versión 4.114 del compilador CCS...los descriptores de versiones viejas no funcionan con las últimas versiones del compilador...además hay muchas funciones que se han mejorado i/o modificado...por lo que tenés que revisar el código.

Un saludo !
11/11/2011 #1846

Avatar de Jhon5191

Muchas gracias Jonathan, ya cambie por la versión 4.114, sin embargo, ahora el problema que presenta es que los bytes a partir del 3ro son números al azar, cuando envio 8 bytes en 0 hacia el pic, el parece recibir otra cosa. Adjunto una porción del código:

Código:
/*********************************************************************************************************/
/*                                        Definición de funciónes                                        */
/*********************************************************************************************************/


void Settings (void){
   set_tris_a(0x2F);
   set_tris_b(0xFF);
   set_tris_c(0x00);
   set_tris_d(0x00);
   set_tris_e(0x9);
   usb_init();
}

void get_data_axis_motion (void){
   usb_get_packet(1,data_in,8);
   x_axis = data_in[1];
   y_axis = data_in[3];
   z_axis = data_in[5];
   FLAGS = data_in[0];
   X_MSB = data_in[2];
   Y_MSB = data_in[4];
   Z_MSB = data_in[6];
   JOG = data_in[7];
   x=0;
   y=0;
   z=0;
   output_bit(SPINDLE_ENABLE,FLAGS.spindle);
   output_bit(PIN_D6,FLAGS.enable_x);
   output_bit(PIN_D7,FLAGS.enable_y);
   output_bit(PIN_E2,FLAGS.enable_z);
   output_bit(X_AXIS_DIR,bit_test(X_MSB,7));
   output_bit(Y_AXIS_DIR,bit_test(X_MSB,7));
   output_bit(Z_AXIS_DIR,bit_test(X_MSB,7));
   
   while(!((x_axis == 0) & (y_axis == 0) & (z_axis == 0))){
      if(x_axis != 0){
         output_toggle(X_AXIS_PULSE);
         x += 1;
         x_axis -= 1;
      }
      if(y_axis != 0){
         output_toggle(Y_AXIS_PULSE);
         y += 1;
         y_axis -= 1;
      }
      if(z_axis != 0){
         output_toggle(Z_AXIS_PULSE);
         z += 1;
         z_axis -= 1;
      }
      delay_ms(200);
   }
}
la unica información correcta que recibo es la de FLAGS y x_axis

Muchas gracias de antemano

A proposito, el main del programa es el siguiente

Código:
#include <18F4550.h>                                     // Definición de registros internos del PIC18F4550.
#fuses HSPLL,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN,NOWDT,NOMCLR
#device adc = 8
#use delay(clock=48000000)

#define SPINDLE_ENABLE PIN_E1

#define USB_HID_DEVICE TRUE                              //Utilizamos el protocolo HID de USB

#define USB_EP1_TX_ENABLE USB_ENABLE_INTERRUPT 
#define USB_EP1_TX_SIZE 8                                // Definición del tamaño del buffer de salida.

#define USB_EP1_RX_ENABLE USB_ENABLE_INTERRUPT 
#define USB_EP1_RX_SIZE 8                                // Definición del tamaño del buffer de entrada.

/*********************************************************************************************************/
// Definición de las librerías utilizadas.
#include <pic18_usb.h>                                   // Drivers's USB del PIC18F4550.
#include "USB_easyHID.h"                                 // Descriptores protocolo HID USB
#include <usb.c>                                         // Funciones del USB.
#include "CNC_settings.c"

/*********************************************************************************************************/
/*                                           Programa principal                                          */
/*********************************************************************************************************/

void main(){

   Settings();                                           //Llamamos a settings
   while(1){
      usb_task();                                        // Configuramos el puerto USB.
      if (usb_enumerated()){                             // Si el puerto es enumerado y configurado por el host..
         if (usb_kbhit(1)){                              //Si hay datos esperando en el buffer de entrada...
            get_data_axis_motion();
         }
      }
   }  //Fin del while
}  //Fin del main
12/11/2011 #1847

Avatar de Moyano Jonathan

La verdad no veo razón para que no te funcione. Fijate aumentando el buffer de recepción y de envío haber que sucede...también puede ser que estes teniendo problema con el archivo de descriptores.

Un saludo !
12/11/2011 #1848

Avatar de Jhon5191

^ Muchas Gracias por el consejo Jonathan, la verdad aun así no funcionó. Aumenté el tamaño de los buffers, revise los descriptores detalladamente, revisé el proyecto VB6 que genera el EasyHID, y no encontré solución. Yo sospecho que puede ser por el software de visual, ya que estoy casi seguro que el programa del pic está en orden. Sin embargo, pude recibir los 8 bytes provenientes del PC con un pequeño arreglo en ambos programas...

Código:
while(i<5){
            if (usb_kbhit(1)){
               usb_get_packet(1,data_in,2);
               switch (i) {
                  case 1    :   FLAGS = data_in[0];
                                x_axis = data_in[1];
                  break;
     
                  case 2    :   X_MSB = data_in[0];
                                y_axis = data_in[1];
                  break;
     
                  case 3    :   Y_MSB = data_in[0];
                                z_axis = data_in[1];
                  break;
     
                  case 4    :   Z_MSB = data_in[0];
                                JOG = data_in[1];
                  break;
               }
               i += 1;
            }
         }
Y en visual...

Código:
BufferOut(1) = na
BufferOut(2) = CByte(Text1.Text)
WriteSomeData
BufferOut(1) = CByte(Text5.Text)
BufferOut(2) = CByte(Text2.Text)
WriteSomeData
BufferOut(1) = CByte(Text6.Text)
BufferOut(2) = CByte(Text3.Text)
WriteSomeData
BufferOut(1) = CByte(Text7.Text)
BufferOut(2) = CByte(Text4.Text)
WriteSomeData
Disculpenme otra vez, es posible que este problema se deba a estos Warnings del Pic c a la hora de compilar?

Código:
Interrupts disabled during call to prevent re-entracy (usb_token_reset)
Interrupts disabled during call to prevent re-entracy (usb_flush_out)
Interrupts disabled during call to prevent re-entracy (usb_tbe)
Interrupts disabled during call to prevent re-entracy (usb_flush_in)
ya que las funciones que se listan ahi, segun lo que leí en la documentación de los descriptores de pic c (usb.h, usb.c, pic18_usb.h, usb_hw_layer.h) estas funciones son indispensables para preparar los buffers antes y/o despues de enviar o recibir datos. Es posible que al ser deshabilitados, esto me impida recibir y/o enviar paquetes de datos de 2 o mas bytes?

De ante mano muchas gracias por su opinion
23/11/2011 #1849

Avatar de cristian76

hola moyano gracias por tu esfuerzo , me llegue ah armar la placa que se encuentra en el primer post
Control de dispositivos por USB [ HID + Visual C# ].part01.rar... me baje las 11 partes pero a la hora de grabar el hex al pic me sale error , es necesario grabarlo con el pickit? yo uso un grabador jdm , estare agradecido con los consejos que me des , mañana subo una foto de la placa .
24/11/2011 #1850

Avatar de Moyano Jonathan

a la hora de grabar el hex al pic me sale error , es necesario grabarlo con el pickit? yo uso un grabador jdm , estare agradecido con los consejos que me des , mañana subo una foto de la placa
Hola como estás. El programador puede ser cualquiera que soporte el PIC18F2550, en si mismo el error que te aparece puede ser de hardware...intentá probar con otro grabador haber que sucede.

Un saludo !
24/11/2011 #1851

Avatar de cristian76

hola moyano ,gracias por la respuesta tan rapida, intente grabarlo con un pickit que un amigo mio tiene y me da un mensaje (error level voltaje)pese ah que el pickit reconoce el pic , el grabador jdm con el que cuento logre grabar varias cosas en el pic 18f2550 sin ningun problema pero a la hora de grabar el hex del proyecto me sale error, quise compilarlo yo mismo usando las librerias que dejastes yo uso la v 4.114 y me da 9 errores mejor dicho warning, alo mejor sera eso oh quizas no pero aun haci dejo estos datos . y si en el peor de los casos fuera el hardware tendrias la amabilidad de pasarnos los archivos para poder armarnos un grabador jdm eh buscado en el foro y hay una gran cantidad de aportes , entonces creo que mejor seria una recomendacion si tubieras tiempo q grabador jdm me recomendarias.
24/11/2011 #1852

Avatar de Jhon5191

^ yo tuve el mismo problema la primera vez, y tuve que hacer un downgrade del CCS, intenta compilarlo con un 4.088
24/11/2011 #1853

Avatar de bondadoso

que VID y PID debo poner en los descriptores para que el driver de la pc lo reconosca? en modo bulk transfer, tengo puesto VID 0461 y PID 0003 pero el driver de microchip no reconoce el pic y la pc si. que sera?
24/11/2011 #1854

Avatar de cristian76

gracias por el dato jhon5191 , estare bajando esa version y la compilare , bueno soy muy novato en lo que es programacion pero quiero aprender . mi pregunta seria como hago un downgrade del CCS , igualmente gracias .

este es el mensaje que me da el programa a la hora de grabarlo , alguien me podria decir que significa ese mensaje .



y una ultima consulta ,en esta imagen hay algun error en la configuracion?,aun haci muchas gracias a los que desinteresadamente me dan sus consejos


24/11/2011 #1855

Avatar de INSERT64

Hola amigos, espero y me puedan ayudar con un problema que tengo, estoy haciendo comunicación USB con LabVIEW y puedo activar 4 salidas del pic18f4550 las salidas van a un optoacoplador 4N25 y del otro lado los opto transistores activan 4 relevadores de CD a 5v ( hasta este punto puedo energizar y desenergizar cada rele las veces que quiera desde LabVIEW el problema empieza cuando) en los contactores de un rele conecto otro relevador de 24V pero de CA y en los contactores de este rele se conecta un motor trifásico de 330V, ahora el problema surge cuando activo este rele el motor funciona correctamente 2 ó 5 paros y arranques pero en un momento dado la secuencia en el pic se cógela y no puedo accionar más este rele y ninguno de los otros 3, esto solo pasa al conectar el rele de 24v de CA antes de eso los 4 rele de CD se activan y desactivan desde LabVIEW las veces que se desee.
27/11/2011 #1856


Disculpen no tienen algun programa en c++ para el uso de comunicacion de pc con puerto ya sea serie, paralelo o de preferencia usb, si lo tienes y de mas preferencia que sea de control y monitoreo, como el que mencionaste en el post anterior sobre uno de usb.

Soy algo nuevo en esto de programar, asi en C++, se lo basico pero hasta ahi, encuanto a programar el pic o lo que se ocupe, tambien cuento con una GAL, nose si eso ayude, asi mismo, un programador tambien para tal cosa, el cual lo ocupamos en la universidad, de momento mañana les digo que marca es el programador y si es usable para tal funcion.
27/11/2011 #1857


Hola amigos,
he estado visitando las 93 apasionantes páginas de este foro con todo este excelente material acerca del usb y les hago llegar mis mas sinceras felicitaciones por tratar este tema con altura y excelente nivel profesional. Muchas gracias por las colaboraciones principalmente de los amigos Jonathan y Meta entre otros. Cordiales saludos desde Uruguay. Elflamen
28/11/2011 #1858


hola amigo moyano estaba leyendo bastante de tu material de usb+pic18f2550 .....bueno la duda o problema que tengo es que en el ejemplo numero 1 el sofware de control no me funciona o esque tengo que instalar algo antes............. gracias de antemano
28/11/2011 #1859


Consulta a Jonathan
Buenas tardes.
Te consulto acerca de los pic32mx, tuvistes alguna experiencia.?
Por favor si la tuviste, me indicarías donde las publicastes.?
Gracias.
Atte
Fernando Lizarraga
28/11/2011 #1860


Bueno el programador que tengo es TOP2007 nose si sirva para programar el PIC para el uso mediante la comunicacion mediante USB. Saludos.
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.