Control de dispositivos a través del módulo USB del PIC18F45/2550

Muchas gracias Moyano,
Para la primera opción, no me queda claro dónde ubicar la carpeta WOW64 de windows?
No obstante voy a probar de recompilarlo en la máquina de 64 bits.
Cordiales saludos,
Elflamen.
 
Ref. proyecto de comunicación por USB usando HID
-------------------------------------------------
Hola Moyano,
Finalmente, seguí ambas indicaciones y en la máquina con Windows7 de 64 bits no funcionó...
Primeramente puse la dll en la carpeta syswow64, sin resultados y después instalé el Visual Studio 2008, compilé el proyecto para 64 bits y tampoco funcionó.
La excepción que salta se refiere al código: pHostWin = hidConnect(FWinHandle) en la función:

-------------------------------------------------------------------
Public Function ConnectToHID(ByRef targetForm As Form) As Boolean
' Activa las notificaciones de windows para recibir mensajes del controlador HID,
' luego nos conectamos a dicho controlador.

Dim pHostWin As Integer = targetForm.Handle.ToInt32
FWinHandle = pHostWin
pHostWin = hidConnect(FWinHandle)
FPrevWinProc = DelegateSetWindowLong(FWinHandle, GWL_WNDPROC, Ref_WinProc)
HostForm = targetForm
End Function
-------------------------------------------------------------------

Me tiene bastante desorientado.

Hice otra prueba cargando el proyecto PicUSB que publicó J1M en otro foro, que utiliza transferencia tipo Bulk empleando el driver "mchpusb" y la dll "mpusbapi" proporcionada por Microchip y tampoco funciona bajo 64 bits, me salta una excepción parecida.
Me pregunto ahora si estas dll's pueden funcionar bajo 64 bits, o de lo contrario si existe alguna forma de hacerlas funcionar. S.O.S. Please!
 
Hice otra prueba cargando el proyecto PicUSB que publicó J1M en otro foro, que utiliza transferencia tipo Bulk empleando el driver "mchpusb" y la dll "mpusbapi" proporcionada por Microchip y tampoco funciona bajo 64 bits, me salta una excepción parecida.
Me pregunto ahora si estas dll's pueden funcionar bajo 64 bits, o de lo contrario si existe alguna forma de hacerlas funcionar. S.O.S. Please!

A mi se me solucionó recompilando el proyecto en la máquina que tenía windows de 64 bits...la verdad me tiene preocupado el tema de esta librería...quizás haya que aprender a usar algo más genérico.
 
Hola Moyano,
Te comento que al final pude correr la aplicación HID que había sido compilada en una máquina de 32 bits, desde una máquina de 64 bits !! Para ello tuve que setear el compilador en la opción x86 y santo remedio!
En la máquina de 64 bits pegué el ejecutable junto con la dll en una carpeta única y funcionó.
También probé de colocar la dll en la carpeta syswow64 y también funcionó.
El detalle era setear la opción x86 en el compilador del visual studio.
Ahora respiro hondo, muchas gracias y a seguir con los proyectos!! Abrazo.
 
Buenos dias a todos.

Estoy intentantado realizar un proyecto basado en el pic 18f2550.
se trata de conectarlo mediante usb a un pc y desde el pc poder controlar el duty_cicle del modulo pwm del pic.
Solo me hace falta que sea el pc el que envie las comuncaciones, no necesito respuesta del pic.
El montage ya lo tengo realizado, con un cristal de 20mhz, los condensadores resistencias y demas... tengo el monage preparado para poder debugear por ICD3, ya que podre disponer de uno.

Estube buscando mucha información y ralice una primera versión del codigo en C para el pic:


#include<18f2550.h>

#fuses NOMCLR,NOWDT,NOPROTECT,NOLVP,DEBUG,CPUDIV1,NOPBADEN,HSPLL,PLLDIV5,USBDIV2,
VREGEN,UPUEN

/*Fuses utilizados
NOMCLR: Reset por software
NOWDT: Desactivamos el watchdog
NOPROTECT: desactivamos la protección del codigo
NOLVP: Desactivamos la programación a bajo voltage
DEBUG: Activamos modo debug para icd3
NOPBADEN: PortB entradas o slaidas digitales
HSPLL: Cristal High Speed
PLLDIV5: Dividimos entre 5 la frecuencia del cristal, para conseguir los
96Mhz en el PLL, ya que los da a una entrada de 4Mhz
USBDIV2: Como queremos usb High-speed (48Mhz) dividimos el PLL/2
CPUDIV1:96 Mhz del PLL/ 2
VREGEN: Activamos el regulador de 3.3V para el módulo USB
UPUEN: Activamos las resistencias internas de PULL-UP
*/

#use delay(clock=48000000)//Frecuencia maxima de trabajo

#include"usb_cdc.h" // funciones del usb
#include"usb_desc_cdc.h" //descriptores del usb
#include "pwm.h" // funciones del pwm

void main() {

char periodo=00;
unsigned char outputconfig=0,outputmode=0,config=0;
unsigned int duty_cycle=0;

usb_cdc_init(); // Configuramos al puerto virtual.
usb_init(); // Inicializamos el stack USB.
OpenTimer2(TIMER_INT_OFF & T2_PS_1_4 & T2_POST_1_1); // Habilitamos y configuramos
periodo = 95;
OpenPWM1(periodo);//inicializacion pwm

while(!usb_cdc_connected()) {}
// espera a detectar una transmisión del PC (Set_Line_Coding).
do{
usb_task();
if (usb_enumerated()){ //Espera a que el dispositivo sea enumerado por el host.
if(usb_cdc_kbhit()){//En espera de nuevos caracteres en el buffer de recepción.
duty_cycle = get_int_usb() // duty_cycle = 10 bits (0 -1024) %
}
}
SetDCPWM1(duty_cycle); // configura el duty_cycle
outputconfig = SINGLE_OUT;
outputmode = PWM_MODE_1;
SetOutputPWM1( outputconfig, outputmode); //output PWM
}
while (true); //bucle infinito.
}




El problema esta en que estaba trabajando con MPLAB en C18, pero las librerias que incluyo en mi proyecto para el manejo del usb no son compatibles con C18. Al parecer son de CCS.

Me he descargado la ultima versión del CCS desde su pagina web, pero no se como funciona... y no se como haria funcionar luego el ICD3 desde CCS.

El siguiente paso, que tampoco tengo muy calro, es el tema de los drivers para que el pc recnozca mi dispositivo.

Alguien que sepa mas que yo (cosa muy facil) podria horientarme un poco en como realizar mi proyecto con CCS, como utilizar ICD3 y el tema de los drivers.

De antemano muchas gracias.
 
hola moyano una pregunta a ver si me puedes ayudar en algo
estoy programando el usb de un pic 18f4550 en mikrobasic v.5.4.0 y he tratado de probar el ejemplo que se encuentra en la libreria del programa, lo he montado igual a la sugerencia del ejemplo pero la computadora no me reconoce el cable usb ni siquiera por el HID TERMINAL del mikrobasic.
tienes idea a que se deba este error?
 
El problema esta en que estaba trabajando con MPLAB en C18, pero las librerias que incluyo en mi proyecto para el manejo del usb no son compatibles con C18. Al parecer son de CCS.

Me he descargado la ultima versión del CCS desde su pagina web, pero no se como funciona... y no se como haria funcionar luego el ICD3 desde CCS.

Si ya sabes usar C18, no tiene sentido que migres al CCS por el USB. En este link se explica como realizar una aplicación con USB usando C18: http://www.micros-designs.com.ar/aplicaciones-avanzadas-en-c18/

El siguiente paso, que tampoco tengo muy claro, es el tema de los drivers para que el pc recnozca mi dispositivo.

Si lo haces con el protocolo HID, no te van a hacer falta los drivers.

hola moyano una pregunta a ver si me puedes ayudar en algo
estoy programando el usb de un pic 18f4550 en mikrobasic v.5.4.0 y he tratado de probar el ejemplo que se encuentra en la libreria del programa, lo he montado igual a la sugerencia del ejemplo pero la computadora no me reconoce el cable usb ni siquiera por el HID TERMINAL del mikrobasic.
tienes idea a que se deba este error?

En cuanto a software no te puedo ayudar por que nunca he usado Mikrobasic. En cuanto al hardware puede ser por problemas de hardware...posteá el hardware que estás usando así vemos donde puede estar el problema.

Saludos !
 
Hola Jonathan:

Después de estar un tiempo alejado del foro por cuestiones laborales retomo nuevamente el proyecto usb pic trainer, te comento, el único problema que tenía era el conector USB-B de la placa, en realidad yo puse un conector USB-A cambiando la distribución de pines porque no tenía otro, ahora ya esta solucionado y se conecta perfectamente.
Tengo dos salvedades para hacerte:), en el PCB no figuran dos jumper, es decir del lado serigráfico, la primera es la alimentación de los dos potes multivueltas y la segunda es la masa también de los mismos.
Por otro lado, todo funciona OKaaaaaaaa!!!!!(y)



Por ultimo, al utilizar una conexión USB con la PC ¿que tipo de protocolo es mas rápido el USB-HID o USB-CDC? por favor corrígeme si me equivoco.

Cordiales Saludos
Fabian
 
Última edición:
Por ultimo, al utilizar una conexión USB con la PC ¿que tipo de protocolo es mas rápido el USB-HID o USB-CDC? por favor corrígeme si me equivoco.

Ese dato no lo tengo muy en claro nunca he realizado pruebas específicas para medir la velocidad de transmisión de datos..la velocidad te va a afectar dependiendo de la aplicación..para mi nunca ha sido un factor determinante.

Saludos !
 
Muchachos creo que esto es un poco Off-Topic...
Alguno sabe si existen cxtos rf para transmitir datos directamente desde el puero USB para poder conectar el pic al usb atraves de ese enlace RF...

Por ejempro asi como esos mouses inalambricos que trean un disposotivo que se conecta el puerto usb y hace un vinculo rf con el mouse...

Seria bueno trabajar los uC de esa manera....
O no???....
 
Hola Jona:

Estuve probando el pic trainer y encontré lo siguiente:
Cuando deslizas cualquiera de los dos o, los dos controles PWM al máximo y presionas cualquiera de los botones de entrada digital, los leds PWM se apagan.
Cordiales Saludos
Fabian
 
Hola Jona:

Estuve probando el pic trainer y encontré lo siguiente:
Cuando deslizas cualquiera de los dos o, los dos controles PWM al máximo y presionas cualquiera de los botones de entrada digital, los leds PWM se apagan.
Cordiales Saludos
Fabian

Si, eso ocurre por que el control de los PWM es por software y corre en el mismo hilo que el algoritmo de detección de botón pulsado...por lo tanto si apretas un botón el ciclo de control de los PWM no se ejecuta y apaga los leds.

Para que eso no suceda, tendrías que usar PWM por hardware usando los módulos CCP.

Un saludo !
 
Hola jona:

tengo un problema con la instalación vstudio 2008 y ya estoy con las bls llenas, "el error es por la carga de un ensamblado que no se carga, se entiende? Microsoft.Buil.Engine, deberia encontrarse en c:\Windows\Assembly y no lo tengo, te pido por favor si puedes pasarme de alguna manera ese bendito archivo. Todo comenzó por un formateo forzado que tuve que hacer producto de un virus que mssecurity no detecto y me daño la tabla de ubicacion de ficheros, para cuando reinicié ya era tarde, no pude hacer un fix del mbr, perdí algo de archivos, al igual que el sistema en desarrollo, es decir, las ultimas actualizaciones, porque en otro disco tengo un backup de archivos importantes.
Te agradecería enormemente si me pudieras pasar ese bendito archivo.

Cordiales Saludos
Fabian
 

Adjuntos

  • VS2008_Error_1.png
    VS2008_Error_1.png
    272.7 KB · Visitas: 35
  • VS2008_Error_2.png
    VS2008_Error_2.png
    148.3 KB · Visitas: 25
Última edición:
Atrás
Arriba