|
|
View previous topic :: View next topic |
Author |
Message |
chilense
Joined: 11 May 2010 Posts: 3
|
USB CDC 32 vs 64 bits |
Posted: Tue May 11, 2010 7:54 am |
|
|
I have a USB CDC hardware that works ok when plugged in a PC with Windows XP 32 bits, but when I plug it into a XP 64 bits, it won't even enumerate (so this is even before getting the driver to work).
When you check on Device Manager and view the ID of the hardware it says unknown..... it also says VID_0000\PID_0000
Has anyone had this issue? |
|
|
PICoHolic
Joined: 04 Jan 2005 Posts: 224
|
|
Posted: Tue May 11, 2010 9:34 am |
|
|
Use the driver provided by Microchip and modify the inf file for CCS.
inf file:
Code: |
; Windows USB CDC ACM Setup File
; Copyright (c) 2000 Microsoft Corporation
; Copyright (C) 2007 Microchip Technology Inc.
[Version]
Signature="$Windows NT$"
Class=Ports
ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318}
Provider=%MFGNAME%
LayoutFile=layout.inf
CatalogFile=%MFGFILENAME%.cat
DriverVer=11/15/2007,5.1.2600.0
[Manufacturer]
%MFGNAME%=DeviceList, NTamd64
[DestinationDirs]
DefaultDestDir=12
;------------------------------------------------------------------------------
; Windows 2000/XP/Vista-32bit Sections
;------------------------------------------------------------------------------
[DriverInstall.nt]
include=mdmcpq.inf
CopyFiles=DriverCopyFiles.nt
AddReg=DriverInstall.nt.AddReg
[DriverCopyFiles.nt]
usbser.sys,,,0x20
[DriverInstall.nt.AddReg]
HKR,,DevLoader,,*ntkern
HKR,,NTMPDriver,,%DRIVERFILENAME%.sys
HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider"
[DriverInstall.nt.Services]
AddService=usbser, 0x00000002, DriverService.nt
[DriverService.nt]
DisplayName=%SERVICE%
ServiceType=1
StartType=3
ErrorControl=1
ServiceBinary=%12%\%DRIVERFILENAME%.sys
;------------------------------------------------------------------------------
; Vista-64bit Sections
;------------------------------------------------------------------------------
[DriverInstall.NTamd64]
include=mdmcpq.inf
CopyFiles=DriverCopyFiles.NTamd64
AddReg=DriverInstall.NTamd64.AddReg
[DriverCopyFiles.NTamd64]
%DRIVERFILENAME%.sys,,,0x20
[DriverInstall.NTamd64.AddReg]
HKR,,DevLoader,,*ntkern
HKR,,NTMPDriver,,%DRIVERFILENAME%.sys
HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider"
[DriverInstall.NTamd64.Services]
AddService=usbser, 0x00000002, DriverService.NTamd64
[DriverService.NTamd64]
DisplayName=%SERVICE%
ServiceType=1
StartType=3
ErrorControl=1
ServiceBinary=%12%\%DRIVERFILENAME%.sys
;------------------------------------------------------------------------------
; Vendor and Product ID Definitions
;------------------------------------------------------------------------------
; When developing your USB device, the VID and PID used in the PC side
; application program and the firmware on the microcontroller must match.
; Modify the below line to use your VID and PID. Use the format as shown below.
; Note: One INF file can be used for multiple devices with different VID and PIDs.
; For each supported device, append ",USB\VID_xxxx&PID_yyyy" to the end of the line.
;------------------------------------------------------------------------------
[SourceDisksFiles]
[SourceDisksNames]
[DeviceList]
%DESCRIPTION%=DriverInstall, USB\VID_0461&PID_0033
[DeviceList.NTamd64]
%DESCRIPTION%=DriverInstall, USB\VID_0461&PID_0033
;------------------------------------------------------------------------------
; String Definitions
;------------------------------------------------------------------------------
;Modify these strings to customize your device
;------------------------------------------------------------------------------
[Strings]
MFGFILENAME="mchpcdc"
DRIVERFILENAME ="usbser"
MFGNAME="Microchip Technology, Inc."
INSTDISK="Microchip Technology, Inc. Installation Disc"
DESCRIPTION="Communications Port"
SERVICE="USB RS-232 Emulation Driver"
|
Get the usb framework first: http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2651¶m=en534494
Good luck |
|
|
chilense
Joined: 11 May 2010 Posts: 3
|
|
Posted: Wed May 12, 2010 12:23 pm |
|
|
I am using the supplied driver but the issue is even before getting to install it since the device is not recognized by the OS.
If I take a look at the device VID and PID in the device manager, I get 0000 id's. |
|
|
PICoHolic
Joined: 04 Jan 2005 Posts: 224
|
|
Posted: Wed May 12, 2010 4:35 pm |
|
|
Anyway, the driver supplied by CCS does not support 64-bit. |
|
|
ariel.vollmann
Joined: 23 Jul 2009 Posts: 7 Location: Córdoba - Argentina
|
|
Posted: Sun Aug 01, 2010 1:13 am |
|
|
I have the same problem with Windows 7 64bits.
When the PIC is trying to enumerate it looks that an error happens and the device disconnects and connects again... The VID & PID are zeroed in the device manager.
Did you find a solution for this issue?
On XP 32 bits there is no problems and the PIC is recognized as an serial port.
Can someone help me?
Thanks a lot in advance! _________________ Greetings from Argentina! |
|
|
lucasromeiro
Joined: 27 Mar 2010 Posts: 167
|
HID |
Posted: Sun Aug 01, 2010 9:30 am |
|
|
Hello, I could not solve the problem. I found another solution: Set to use the usb as HID (Human Interface Device). From what I read does not need any driver in the system, because this driver has all systems, it is a driver generico. But I still dont know how to use HID as if by chance anyone knows please help!
It seems that the HID mode is much more versatile and interesting for us!
Thanks |
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19505
|
|
Posted: Mon Aug 02, 2010 4:16 am |
|
|
PICoHolic wrote: | Anyway, the driver supplied by CCS does not support 64-bit. |
Actually it does, but only on recent compilers....
I think it changed at about 4.107, but from then on, the .inf file (not a driver....), includes entries for the 64bit OS's.
Best Wishes |
|
|
ibanitescu
Joined: 19 Aug 2010 Posts: 1
|
USB CDC 32bits XP |
Posted: Fri Aug 20, 2010 1:18 am |
|
|
Hello,
I have a PIC18F2455 and I am trying to communicate with PC using USB connection. I want my device seen as CDC (USB mass storage, HID don't satisfy myself). I have an 8MHz quartz. I can program it, but when I introduce the device in the USB, the USB host allocates current and voltage for it (I can light up some LEDs), but it displays on taskbar: USB device not recognized.
A friend of mine suggested me to use a 20MHz crystal oscillator, but I believe that settings are important:
Code: |
#FUSES HSPLL //High Speed Crystal/Resonator with PLL enabled
#FUSES PLL2 //Divide By 2(8MHz oscillator input)
#FUSES USBDIV //USB clock source comes from PLL divide by 2
#FUSES CPUDIV2 //System Clock by 2
#FUSES VREGEN //USB voltage regulator enabled
#use delay(clock=48000000)
|
As for HARDWARE, D+, D- are ok connected, VUSB has a capacitor 470nF to GND, D+ has a pull up resistor connected to VUSB.
I believe hardware is OK.
I was presented settings, hardware, as for the code I included:
USB_cdc.h, usb
usb_desc_cdc.h
and before infinite loop I have:
Code: |
#use standard_io(A)
usb_cdc_init();
usb_init();
while(!usb_cdc_connected())
{
}
|
If you have any suggestions, about the code, or the suggestion to move to 20MHz oscillator.
Thank you. |
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19505
|
|
Posted: Fri Aug 20, 2010 7:13 am |
|
|
There is no advantage to using 20MHz over 8MHz.
There are though some problems with your settings.
The first is CPUDIV2. This does not give 48MHz operation.
This is down to an 'oddity' in the hardware, and CCS's nomenclature. The CPU dividers, have different 'meanings', when running off an external clock input, and the internal PLL. So:
Code: |
Division pattern CCS name /x external clock /x PLL
00 CPUDIV1 /1 /2
01 CPUDIV2 /2 /3
10 CPUDIV3 /3 /4
11 CPUDIV4 /4 /6
|
So, to get /2, when using the internal PLL, requires you to use CPUDIV1, not CPUDIV2.....
The CCS 'names' are the divisions given when using the external clock, not the divisions given when using the internal PLL. You must use the data sheet, and translate to get the required values. :(
You then talk about using an external pull-up resistor. Have you turned off the internal resistors?. The CCS driver defaults to enabling the internal pull-ups. You need to either modify the code to turn these off, or remove your external resistor.
Best Wishes |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|