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

Temas similares

07/05/2014 #2201

Avatar de fife89

Buenas Gente
estoy intentando dar mis primeros pasos con el pic 18f2550 + usb estoy utilizando el programa microcode studio y el easyHID usb wizard
ya genere el codigo y todo bien compila el circuito basico del condensador y el cable usb conectado todo bien, al conectarlo al usb del pc no pasa nada no lo reconoce el pc
dandole me acorde que no configure los fuses para este pic al ver la cantidad de fuses a configurar con el programador he quedado loco





estoy usando un oscilador externo de 20mhz con 2 condensadores de 33pf
por el momento solo quiero que el pc lo reconozca para luego continuar
aqui esta el codigo
Código:
include	"DESCUSBProject.bas"

DEFINE OSC 20
DEFINE LOADER_USED 1
b   VAR BYTE	' Declarar la variable b como byte
d   VAR BYTE	' Declarar la variable d como byte
TRISB=0		' Configurar el puerto B como salida

USBBufferSizeMax   con 8  ' maximum buffer size
USBBufferSizeTX    con 8  ' input
USBBufferSizeRX    con 8  ' output

' the USB buffer...
USBBuffer        Var Byte[USBBufferSizeMax] 
USBBufferCount   Var Byte 

' ************************************************************
' * main program loop - remember, you must keep the USB      *
' * connection alive with a call to USBService every couple  *
' * of milliseconds or so...                                 *
' ************************************************************
usbinit ' initialise USB...
ProgramStart: 
   gosub DoUSBIn
   b=USBBuffer[4]	' Leer el buffer(4) y almacenarlo en b
	PORTB=b		' El valor de b mostrarlo por el puerto B
	Pause 100	' Pausa de 100 milisegundos
	USBService	' Mantener la conexión USB habilitada
	USBBuffer[6]=d	' Almacenar d en el buffer(6) 
   gosub DoUSBOut
   goto ProgramStart  

' ************************************************************
' * receive data from the USB bus                            *
' ************************************************************
DoUSBIn:
   USBBufferCount = USBBufferSizeRX              ' RX buffer size
   USBService                                    ' keep connection alive
   USBIn 1, USBBuffer, USBBufferCount, DoUSBIn   ' read data, if available
   return
    
' ************************************************************
' * wait for USB interface to attach                         *
' ************************************************************
DoUSBOut:
   USBBufferCount = USBBufferSizeTX              ' TX buffer size
   USBService                                    ' keep connection alive
   USBOut 1, USBBuffer, USBBufferCount, DoUSBOut ' if bus available, transmit data
   return
adjunto dejo los archivos
gracias
08/05/2014 #2202
Moderador

Avatar de D@rkbytes

fife89 dijo: Ver Mensaje
Estoy intentando dar mis primeros pasos con el PIC18F2550 + USB.
Estoy utilizando el programa MicroCode Studio y el EasyHID USB Wizard.
Ya generé el código y todo bien, compila el circuito básico.
Del condensador y el cable usb conectado todo bien, al conectarlo al USB del pc no pasa nada, no lo reconoce el PC.
Dándole, me acordé que no configuré los fuses para este pic.
Al ver la cantidad de fuses a configurar con el programador he quedado loco
Si vas a trabajar el PIC con USB necesitas que corra a 48MHz, no a 20MHz como lo declaraste.
Cambia la frecuencia a 48MHz.
Ejemplo: Define OSC 48

La palabra de configuración que tomará el compilador será la del archivo 18F2550.INC.
Esa palabra está escrita para trabajar con un cristal de 20MHz, pero tiene los fuses BOREN y WDTE activos, también tiene en OFF el fuse PWRTE y es bueno usarlo, aparte ya es obsoleta esa forma de escribirla.

Esta es la palabra de configuración del archivo 18F2550.INC:
Código:
        __CONFIG    _CONFIG1L, _PLLDIV_5_1L & _CPUDIV_OSC1_PLL2_1L & _USBDIV_2_1L
        __CONFIG    _CONFIG1H, _FOSC_HSPLL_HS_1H & _FCMEN_OFF_1H & _IESO_OFF_1H
        __CONFIG    _CONFIG2L, _PWRT_OFF_2L & _BOR_ON_2L & _BORV_3_2L & _VREGEN_ON_2L
        __CONFIG    _CONFIG2H, _WDT_ON_2H & _WDTPS_512_2H
        __CONFIG    _CONFIG3H, _CCP2MX_ON_3H & _PBADEN_OFF_3H & _LPT1OSC_OFF_3H & _MCLRE_ON_3H
        __CONFIG    _CONFIG4L, _STVREN_ON_4L & _LVP_OFF_4L & _XINST_OFF_4L
Te recomiendo que sustituyas esa palabra de configuración por esta otra:
Código:
    config FOSC = HSPLL_HS, PLLDIV = 5, USBDIV = 2, CPUDIV = OSC1_PLL2
    config PWRT = ON, WDT = OFF, PBADEN = OFF, LVP = OFF, BOR = OFF
    config FCMEN = OFF, IESO = OFF, VREGEN = ON
También se pueden usar otros cristales para alcanzar los 48MHz necesarios. (Por ejemplo, uno de 4MHz.)

Con esa palabra de configuración podrás compilar y grabar el PIC para usarlo con USB y un cristal de 20MHz.

Suerte.
08/05/2014 #2203

Avatar de fife89

D@rkbytes dijo: Ver Mensaje
Si vas a trabajar el PIC con USB necesitas que corra a 48MHz, no a 20MHz como lo declaraste.
Cambia la frecuencia a 48MHz.
Ejemplo: Define OSC 48

La palabra de configuración que tomará el compilador será la del archivo 18F2550.INC.
Esa palabra está escrita para trabajar con un cristal de 20MHz, pero tiene los fuses BOREN y WDTE activos, también tiene en OFF el fuse PWRTE y es bueno usarlo, aparte ya es obsoleta esa forma de escribirla.

Esta es la palabra de configuración del archivo 18F2550.INC:
Código:
        __CONFIG    _CONFIG1L, _PLLDIV_5_1L & _CPUDIV_OSC1_PLL2_1L & _USBDIV_2_1L
        __CONFIG    _CONFIG1H, _FOSC_HSPLL_HS_1H & _FCMEN_OFF_1H & _IESO_OFF_1H
        __CONFIG    _CONFIG2L, _PWRT_OFF_2L & _BOR_ON_2L & _BORV_3_2L & _VREGEN_ON_2L
        __CONFIG    _CONFIG2H, _WDT_ON_2H & _WDTPS_512_2H
        __CONFIG    _CONFIG3H, _CCP2MX_ON_3H & _PBADEN_OFF_3H & _LPT1OSC_OFF_3H & _MCLRE_ON_3H
        __CONFIG    _CONFIG4L, _STVREN_ON_4L & _LVP_OFF_4L & _XINST_OFF_4L
Te recomiendo que sustituyas esa palabra de configuración por esta otra:
Código:
    config FOSC = HSPLL_HS, PLLDIV = 5, USBDIV = 2, CPUDIV = OSC1_PLL2
    config PWRT = ON, WDT = OFF, PBADEN = OFF, LVP = OFF, BOR = OFF
    config FCMEN = OFF, IESO = OFF, VREGEN = ON
También se pueden usar otros cristales para alcanzar los 48MHz necesarios. (Por ejemplo, uno de 4MHz.)

Con esa palabra de configuración podrás compilar y grabar el PIC para usarlo con USB y un cristal de 20MHz.

Suerte.
gracias por responder.
ya modifique el archivo a como me lo planteaste el archivo esta ubicado en C:\PBP
correcto compilado y montado al pic
el pc no detecta nada al conectar el usb, al mover el fuse de cristal el pc si lo reconoce pero dice este dispositivo no funciona correctamente, estoy trabajando con el qlprogren
este programador permite modificar los fuses y alguno los toma y otros no.
que debo colocar en los fuses para que lo reconozca el pc
ya cambie el codigo a 48, el cristal que uso afuera es de 20mhz
08/05/2014 #2204
Moderador

Avatar de D@rkbytes

fife89 dijo: Ver Mensaje
Gracias por responder.
Ya modifiqué el archivo a como me lo planteaste, el archivo esta ubicado en C:\PBP
Correcto, compilado y montado al pic.
El pc no detecta nada al conectar el usb, al mover el fuse del cristal el pc si lo reconoce pero dice, este dispositivo no funciona correctamente, estoy trabajando con el qlprogren.
Este programador permite modificar los fuses y algunos los toma y otros no.
¿Qué debo colocar en los fuses para que lo reconozca el pc?
Ya cambie el código a 48, el cristal que uso afuera es de 20mhz.
Esa palabra de configuración está bien, al parecer es porque estás definiendo que se usará BootLoader.
¿Estás usando un BootLoader?
Si no lo estás usando, elimina esto del código: DEFINE LOADER_USED 1

En dado caso que tu programa siga sin funcionar, prueba con este que adjunto. (Incluye interfaz para la PC)
Este programa está funcionando correctamente con PBP 2.60 y compilado con MPASM.

Suerte.
Archivos Adjuntos
Tipo de Archivo: rar 18F2550 USB_Demo.rar (282,2 KB (Kilobytes), 70 visitas)
08/05/2014 #2205

Avatar de fife89

este programador toca programarle los fuses por codigo si no no los toma :S ya probe tu configuracion de usb el pc no lo reconoce el cable esta bueno y el pic tambien, errores de conexiones no hay es una tarjeta entrenadora ql200
los fuses debo configurarlos por codigo o manual desde el programador

gracias por tu colaboracion D@rkbytes
08/05/2014 #2206
Moderador

Avatar de D@rkbytes

fife89 dijo: Ver Mensaje
Ya probé tu configuración de usb, el pc no lo reconoce, el cable esta bueno y el pic también, errores de conexiones no hay, es una tarjeta entrenadora ql200.
Suele suceder que cuando un dispositivo USB HID no es bien reconocido por la PC, puede presentar problemas.
Si ya volviste a grabar el PIC con el código correcto y la palabra de configuración adecuada, entonces tienes que desinstalar el controlador HID y reiniciar la PC para que vuelva a tratar de reconocer el dispositivo.

Eso lo haces en el administrador de dispositivos.
Yo uso Windows XP y cuando conecto el PIC aparece un nuevo dispositivo HID en la ventana del administrador de dispositivos.

En otros sistemas debe aparecer también algo similar a esto:


Si logras ver esta rama, desinstala los controladores dando doble click sobre los dispositivos.
Seleccionar pestaña (Controlador)

Después reinicia la PC asegurándote de no tener conectado el PIC al puerto USB.
Cuando ya estés dentro de Windows, espera un tiempo hasta que todo esté estable y conecta el PIC.
Si todo está bien, nuevamente la PC tratará de reconocer el dispositivo y lo verás en los Pop-ups.
Imágenes Adjuntas
Tipo de Archivo: jpg ADD HID 001.jpg (13,7 KB (Kilobytes), 381 visitas)
Tipo de Archivo: jpg ADD HID 002.jpg (6,3 KB (Kilobytes), 372 visitas)
08/05/2014 #2207

Avatar de fife89

D@rkbytes dijo: Ver Mensaje
Suele suceder que cuando un dispositivo USB HID no es bien reconocido por la PC, puede presentar problemas.
Si ya volviste a grabar el PIC con el código correcto y la palabra de configuración adecuada, entonces tienes que desinstalar el controlador HID y reiniciar la PC para que vuelva a tratar de reconocer el dispositivo.

Eso lo haces en el administrador de dispositivos.
Yo uso Windows XP y cuando conecto el PIC aparece un nuevo dispositivo HID en la ventana del administrador de dispositivos.

En otros sistemas debe aparecer también algo similar a esto:
http://www.forosdeelectronica.com/at...1&d=1399588002

Si logras ver esta rama, desinstala los controladores dando doble click sobre los dispositivos.
Seleccionar pestaña (Controlador)
http://www.forosdeelectronica.com/at...1&d=1399588570
Después reinicia la PC asegurándote de no tener conectado el PIC al puerto USB.
Cuando ya estés dentro de Windows, espera un tiempo hasta que todo esté estable y conecta el PIC.
Si todo está bien, nuevamente la PC tratará de reconocer el dispositivo y lo verás en los Pop-ups.
Hola, eso fue lo primero que intente. pero no funciona, como comente mi programador toca ponerles los fuses por codigo o individual. no logro que funcione
podrias pasarme los fuses en codigo
algo como esto
Código:
@ DEVICE pic16f628A, INTRC_OSC_NOCLKOUT 'Reloj interno solo.-
@ DEVICE pic16f628A, WDT_OFF            ' Watchdog Timer desconectado.-
@ DEVICE pic16f628A, PWRT_OFF           ' Power-On Timer conectado.- 
@ DEVICE pic16f628A, BOD_ON             ' Brown-Out Detect conectado.- 
@ DEVICE pic16f628A, MCLR_ON            ' Master Clear Externo desconectado.-
@ DEVICE pic16f628A, LVP_OFF            ' Low-Voltage Programming desconectado.-
@ DEVICE pic16f628A, CPD_OFF            ' Data Memory Code Protect desconectado.-
09/05/2014 #2208
Moderador

Avatar de D@rkbytes

fife89 dijo: Ver Mensaje
Hola, eso fue lo primero que intenté, pero no funciona, como comenté, mi programador toca ponerles los fuses por código o individual. No logro que funcione.
¿Podrías pasarme los fuses en código?
Al parecer no estás entendiendo nada acerca de la palabra de configuración.

En el post #2202 la puse.
D@rkbytes dijo: Ver Mensaje
Te recomiendo que sustituyas esa palabra de configuración por esta otra:
Código:
    config FOSC = HSPLL_HS, PLLDIV = 5, USBDIV = 2, CPUDIV = OSC1_PLL2
    config PWRT = ON, WDT = OFF, PBADEN = OFF, LVP = OFF, BOR = OFF
    config FCMEN = OFF, IESO = OFF, VREGEN = ON
Con esa palabra de configuración podrás compilar y grabar el PIC para usarlo con USB y un cristal de 20MHz.
Esa es la palabra de configuración por código.
Si estuvieras usando PBP3, sí la podrías poner directamente en la cabecera del programa, de esta forma:
Código:
#Config
    config FOSC = HSPLL_HS, PLLDIV = 5, USBDIV = 2, CPUDIV = OSC1_PLL2
    config PWRT = ON, WDT = OFF, PBADEN = OFF, LVP = OFF, BOR = OFF
    config FCMEN = OFF, IESO = OFF, VREGEN = ON
#EndConfig
Si estás utilizando una versión inferior a MicroCode Studio 5, entonces tienes que usar la palabra de configuración que está en el archivo 18F2550.INC, como ya te había mencionado, por eso es que ese archivo se tiene que editar, para que el compilador tome la palabra de configuración de ese archivo.

Para poder poner la palabra de configuración en tu código, tienes que comentar o eliminar las líneas de la palabra del archivo 18F2550.INC.

Quedaría de esta forma:
Código:
        NOLIST
    ifdef PM_USED
        LIST
        "Error: PM does not support this device.  Use MPASM."
        NOLIST
    else
        LIST
        LIST p = 18F2550, r = dec, w = -311, w = -230, f = inhx32
        INCLUDE "P18F2550.INC"    ; MPASM  Header
;        __CONFIG    _CONFIG1L, _PLLDIV_5_1L & _CPUDIV_OSC1_PLL2_1L & _USBDIV_2_1L
;        __CONFIG    _CONFIG1H, _FOSC_HSPLL_HS_1H & _FCMEN_OFF_1H & _IESO_OFF_1H
;        __CONFIG    _CONFIG2L, _PWRT_OFF_2L & _BOR_ON_2L & _BORV_3_2L & _VREGEN_ON_2L
;        __CONFIG    _CONFIG2H, _WDT_ON_2H & _WDTPS_512_2H
;        __CONFIG    _CONFIG3H, _CCP2MX_ON_3H & _PBADEN_OFF_3H & _LPT1OSC_OFF_3H & _MCLRE_ON_3H
;        __CONFIG    _CONFIG4L, _STVREN_ON_4L & _LVP_OFF_4L & _XINST_OFF_4L
        NOLIST
    endif
        LIST
EEPROM_START    EQU    0F00000h
BLOCK_SIZE    EQU    32
Entonces en la cabecera de tu programa ya puedes añadir la palabra de configuración de esta forma:
Código:
Asm
    config FOSC = HSPLL_HS, PLLDIV = 5, USBDIV = 2, CPUDIV = OSC1_PLL2
    config PWRT = ON, WDT = OFF, PBADEN = OFF, LVP = OFF, BOR = OFF
    config FCMEN = OFF, IESO = OFF, VREGEN = ON
EndAsm
Notas:
Así como pretendes escribir la palabra de configuración, no es posible.
El PIC18F2550 necesita ser compilado con MPASM porque el compilador PM de PBP no lo hace.
Por eso está declarada la sentencia para mostrar un error si se usa PM con este PIC.
PM Compiler dijo:
"Error: PM does not support this device. Use MPASM."
El @ Device y la sintaxis que se usa en la palabra de configuración para los PIC12 y los PIC16, no es reconocida por MPASM y es por eso que se debe usar la palabra de configuración como mencioné.

Según las fotos que pusiste, tienes bien los fuses, y el programa que subí funciona perfectamente.
Ese programa está escrito para usar MicroCode Studio Plus u otra versión inferior al 5.

No sé que problema tengas, pero ya no es debido a la palabra de configuración.

Inténtalo así ahora, pero es lo mismo que si la palabra de configuración estuviera en el archivo 18F2550.INC.

Suerte.
10/05/2014 #2209

Avatar de fife89

D@rkbytes dijo: Ver Mensaje
No sé que problema tengas, pero ya no es debido a la palabra de configuración.

Inténtalo así ahora, pero es lo mismo que si la palabra de configuración estuviera en el archivo 18F2550.INC.

Suerte.
Hola Muchisimas gracias por tu ayuda, ya logre que funcionara
no tomaba bien la configuracion, como antes de modificar el archivo de pbp hice una copia la restaure y volvi a modificar como me dijiste. y ahi si lo reconocio pero no del todo, subi el condensador a un electrolitico de 1uf y ahi si lo reconocio muy bien el pic ya funciona con mi codigo gracias!
11/05/2014 #2210

Avatar de fife89

tengo otra duda, necesito comunicar un pic 16f877a con el pic18f2550, y que este envie los datos por usb, para hacer pruebas intento enviar datos desde el 18f2550 al pc por medio de el xbee xplorer y el x-ctu, pero no recibo nada. con el 16f877a si transmito datos y llegan al pc perfecto pero con el 18f2550 no se manda nada.
aqui esta el codigo
Código:
Define OSC 48   ; Definir frecuencia de 48MHz.
Include "USB_Desc.inc"  ; Archivo con los descriptores HID (Human Interfaz Device)

; Variables para el buffer USB
USBBufferSizeMax    Con 8   ; Tamaño máximo del buffer
USBBufferSizeTX     Con 8   ; Para la entrada
USBBufferSizeRX     Con 8   ; Para la salida
USBBuffer           Var Byte[USBBufferSizeMax] 
USBBufferCount      Var Byte

; Configuración del oscilador interno en caso de falla.
b   Var Byte                ; Declarar la variable b como byte
d   Var Byte
X   VAR Byte                ; Declarar la variable d como byte
TRISB = 0 
X=0 
;*******************************************************************************
; * main program loop - remember, you must keep the USB
; * connection alive with a call to USBService every couple
; * of milliseconds or so.
;*******************************************************************************
USBInit ; Inicializar la comunicación USB
ProgramStart:
    ADCON1 = $0F           ; Puertos A y B Digital I/O
	GoSub DoUSBIn           ; Ir hacia la rutina de recepción de datos
    b = USBBuffer[4]        ; Leer el buffer(4) y almacenarlo en b
    PORTB = b               ; El valor de b mostrarlo por el puerto D
    USBService              ; Mantener la conexión USB habilitada
'    d = PORTA
'    POT PORTA.0, 255, X
X=1 
    SEROUT2 PORTC.6,84,[X]              ; El valor del puerto A almacenarlo en d
    USBBuffer[6] = X       ; Almacenar d en el buffer(6) 
    GoSub DoUSBOut          ; Ir hacia la rutina de transmisión de datos
    GoTo ProgramStart  

;*******************************************************************************
; Recibir los datos del bus USB
;*******************************************************************************
DoUSBIn:
	USBBufferCount = USBBufferSizeRX   ; Especificar el tamaño del buffer
	USBService             ; Mantener siempre la conexión
   	USBIn 1, USBBuffer, USBBufferCount, DoUSBIn ; Leer los datos (Si existen)
	Return   
;*******************************************************************************
; Esperar hasta que el dispositivo sea conectado al puerto USB
;*******************************************************************************
DoUSBOut:
	USBBufferCount = USBBufferSizeTX   ; Especificar el tamaño del buffer
	USBService             ; Mantener siempre la conexión
	USBOut 1,USBBuffer,USBBufferCount,DoUSBOut ; Si el bus está disponible, transmitir.
	Return
	
    End
11/05/2014 #2211
Moderador

Avatar de D@rkbytes

fife89 dijo: Ver Mensaje
tengo otra duda, necesito comunicar un pic 16f877a con el pic18f2550, y que este envie los datos por usb, para hacer pruebas intento enviar datos desde el 18f2550 al pc por medio de el xbee xplorer y el x-ctu, pero no recibo nada. con el 16f877a si transmito datos y llegan al pc perfecto pero con el 18f2550 no se manda nada.
Aquí existe algo que debes tener en cuenta.
Estás trabajando el CPU-Core a 48MHz y con esa frecuencia no puedes trabajar con RS-232.
Entonces lo que tienes que hacer, es que el módulo USB trabaje a 48MHz, pero el CPU a 4 u 8MHz.
Yo así logré hacer un proyecto para recuperación del valor OSCCAL en PIC's 12 por RS-232, usando USB.
11/05/2014 #2212

Avatar de fife89

D@rkbytes dijo: Ver Mensaje
Aquí existe algo que debes tener en cuenta.
Estás trabajando el CPU-Core a 48MHz y con esa frecuencia no puedes trabajar con RS-232.
Entonces lo que tienes que hacer, es que el módulo USB trabaje a 48MHz, pero el CPU a 4 u 8MHz.
Yo así logré hacer un proyecto para recuperación del valor OSCCAL en PIC's 12 por RS-232, usando USB.
ok , entiendo en eso fue lo primero que pense pero estoy trabajando a 9600 segun eso debo trabajar a 8 MHZ intentare revisar.
12/05/2014 #2213

Avatar de gongonni

fife89, te han dicho que utilices un cristal externo de 4Mhz o lo que corresponda. Con 20Mhz no podrás tener USB. Creo haber entendido y que se os ha pasado por alto.
14/05/2014 #2214

Avatar de fife89

me tome unos dias para sacarme el estres y ya estoy de vuelta
el motivo? se quemo un xbee por un corto, esos pequeños retasos que quedan de cortar las patas de los componentes en fin ya pedí otro xbee me debe estar llegando uno nuevo mañana.
como se me complico esto de HID.
la comunicación serial lo tomare en cuenta después, ahora tengo un problema mayor ya que tengo el pic funcionando en USB HID gracias a la ayuda de D@rkbytes funcionando con el programa demo que me mando aparentemente todo bien, necesito interpretar los datos con C# integrado en unity 3D.
no he logrado que se entienda el pic con unity 3D todavía, alguien sabe como seria?
la otra forma seria convertir el 18f2550 en un joystick usb de esta manera lo interpretaria muy facil en el unity3D pero nos e como hacerlo en el pic, necesito muchos ejes y pocos botones,
en pbp
gracias
21/05/2014 #2215

Avatar de fife89

nadie sabe del tema? yo encontre algo mas o menos
hice los pasos el pc lo reconoce como un dispositivo hid pero en los joystick no esta
Archivos Adjuntos
Tipo de Archivo: pdf Create a HID USB Device.pdf (188,8 KB (Kilobytes), 72 visitas)
21/05/2014 #2216

Avatar de fife89

Buenas Noches
antes que todo estoy desarrollando un proyecto en el que debo leer 21 datos adc y trasmitirlos inalambricamente al pc el cual va a interpretar los datos
dispongo de:
1 pic 18f2550
4 pics 16f877A
2 xbee s1
esquemático pues no tengo, es el circuito basico usb que funciona bien,con un cristal de 20mhz
deseo comunicarlos via usb convirtiendo todos estos datos en varios analogos(joystick)
segui paso a paso los datos de el pdfhttp://www.forosdeelectronica.com/at...7&d=1400706122 para generar un codigo ejemplo con 2 ejes (x,Y) y 4 botones con el fin de entender como funciona y asi poder desarrollar mi proyecto.
segun el pdf debo modificar un archivo para colocar los archivos descriptores
Código:
RETLW 0x05  
RETLW 0x01                     ; USAGE_PAGE (Generic Desktop) 
RETLW 0x09  
RETLW 0x04                     ; USAGE (Joystick) 
RETLW 0xa1  
RETLW 0x01                     ; COLLECTION (Application) 
RETLW 0x09  
RETLW 0x04                     ;   USAGE (Joystick) 
RETLW 0xa1  
RETLW 0x00                     ;   COLLECTION (Physical) 
RETLW 0x09  
RETLW 0x30                     ;     USAGE (X) 
RETLW 0x09  
RETLW 0x31                     ;     USAGE (Y) 
RETLW 0x75  
RETLW 0x08                     ;     REPORT_SIZE (8) 
RETLW 0x95  
RETLW 0x02                     ;     REPORT_COUNT (2) 
RETLW 0x35  
RETLW 0x00                     ;     PHYSICAL_MINIMUM (0) 
RETLW 0x46  
RETLW 0xff  RETLW 0x00               ;     PHYSICAL_MAXIMUM (255) 
RETLW 0x81  
RETLW 0x03                     ;     INPUT (Cnst Var Abs) 
RETLW 0x05  
RETLW 0x09                     ;     USAGE_PAGE (Button) 
RETLW 0x19  
RETLW 0x01                     ;     USAGE_MINIMUM (Button 1) 
RETLW 0x29  
RETLW 0x04                     ;     USAGE_MAXIMUM (Button 4) 
RETLW 0x15  
RETLW 0x00                     ;     LOGICAL_MINIMUM (0) 
RETLW 0x25  
RETLW 0x01                     ;     LOGICAL_MAXIMUM (1) 
RETLW 0x75  
RETLW 0x01                     ;     REPORT_SIZE (1) 
RETLW 0x95  
RETLW 0x08                     ;     REPORT_COUNT (8) 
RETLW 0x81  
RETLW 0x03                     ;     INPUT (Cnst Var Abs) 
RETLW 0xc0  
;   END_COLLECTION 
RETLW 0xc0 
; END_COLLECTION
luego de generarlo dice que lo copie dentro de un archivo .asm y editar unas cosas en el archivo principal, bueno todo bien hasta el momento, al compilarlo lo hace todo bien reviso el archivo .asm y que encuentro? nada de lo que copie anteriormente, al compilar crea denuevo ese asm y borra todo. entonces lo trate de colocar los datos en el archivo .bas que genera el asm en el descriptor y no lo compila tira error, no entiendo por que.
adjunto dejo todos los archivos
Archivos Adjuntos
Tipo de Archivo: zip programa para generar descriptores.zip (99,2 KB (Kilobytes), 44 visitas)
Tipo de Archivo: rar usb de prueba.rar (115,7 KB (Kilobytes), 44 visitas)
Tipo de Archivo: rar descriptores.rar (595 Bytes, 31 visitas)
28/05/2014 #2217


Buenos días

quisiera saber como en el Descriptor_easyHID.h es posible variar la corriente entregada por el puerto, desde el form en C#.

gracias

//************************************************** ************************

#ifndef USB_CONFIG_BUS_POWER
// El rango válido es 0...500.
#define USB_CONFIG_BUS_POWER 100 // 100mA, corriente máxima que entregará el puerto.
#endif

/************************************************** ***************************

#if USB_CONFIG_BUS_POWER
0x80, //bit 6=1 if self powered, bit 5=1 if supports remote wakeup (we don't), bits 0-4 unused and bit7=1 ==8
#else
0xC0, //bit 6=1 if self powered, bit 5=1 if supports remote wakeup (we don't), bits 0-4 unused and bit7=1 ==8
#endif
USB_CONFIG_BUS_POWER/2, //maximum bus power required (maximum milliamperes/2) (0x32 = 100mA)
14/06/2014 #2218


Hola buenas tardes a todos gracias por sus aportes me han ayudado mucho bueno... he leído casi todo el post, y me di cuenta que la mayoría de veces se hace comunicación con visual Studio, c# y c++, alguien sabe como realizar la comunicación vía matlab usando un pic 18f en modo HID?? donde tengo la mayor duda es en la comunicación del host al pic.
03/10/2014 #2219


Disculpen, alguno sabe como modificar la libreria usb_desc_cdc.h en CCS v4.y104 ?

pruebo este programa que encontre en youtube, pero me da una seguidilla de errores.

Código:
#include <18F4550.h>             //PIC a emplear
#device adc=10;                  //Conversor A/D de 10 bits
#fuses HSPLL,NOWDT,NOLVP,USBDIV,PLL5,CPUDIV1,VREGEN
#use delay(clock=20000000)
include <usb_cdc.h>


void main(){
    unsigned long int fefe;
    usb_cdc_init();
    usb_init();
    while(!usb:cdc_connected()){}
    do{
       usb_task();
       if (usb_enumerated()){
            printf(usb_cdc_putc,"BARDXP: %Lu\r\n",fefe);
            fefe=fefe+1;
       }}while(TRUE);
       
}
Adjunto una imagen con los errores
Imágenes Adjuntas
Tipo de Archivo: png 123.png (12,6 KB (Kilobytes), 16 visitas)
03/10/2014 #2220
Moderador

Avatar de D@rkbytes

Falta poner un # en include <usb_cdc.h>
Así: #include <usb_cdc.h>

Existen dos puntos ":" en while(!usb:cdc_connected())
Debe ser así: while(!usb_cdc_connected())

Ya no veo otra cosa extraña.

Suerte.
¿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.