PORTS Forum
Ports and Interfaces => USB => Topic started by: 866JR on December 04, 2011, 08:40:40 am
-
I am working on a new product that uses a PIC32 processor and HID. Each time I program the chip, I disconnect the USB from the PC then reconnect after programming. The board uses a PIC32MX534, and is not a starter kit or development device. Everything seems to work fine and I am deeply into the firmware, I do have successful USB communication using Microchip's USB framework; I am working on communicating with an external flash memory chip and an audio DAC.
After just a few disconnects and reconnects, the PC thinks the USB is still connected when I unplug it. My PC program sees the device as connected because windows has the driver open and device manager thinks the board is there even though it is disconnected. I cannot do anything to close the PC HID driver, including driver uninstall. The driver uninstall just locks up and I have to restart the computer. (The computer functions normally except the driver won't close). I am running XP and programming in VC. net. I am working on both programs (VC.net and PIC32) at the same time so I am running the VC program from within the development environment. Stopping the program does not seem to help.
This really slows development down and any suggestions would be greatly appreciated.
-
Does the host application use device notifications to detect when the device detaches and then close the handle?
In my example code, see the DeviceManagement modules and WndProc function.
http://www.lvr.com/hidpage.htm#MyExampleCode
Jan
-
Thanks for your help.
I think you may be right because of the way it acts. If close program before detaching it never locks up. I am using Microchip's HID example because it is in C.net and I have just started using C. I have not dug very deeply into how the handle is opened and closed. The port status is reported by polling with a timer -MCHPHIDClass::USBHIDIsConnected () - on Microchips form and I used similar code to show the status on the forms and code that I created. When the device is detached it shows that it is detached but sometimes it does not detect it. I wonder if it is because there is more than one form open at the same time, I think it was doing it before I started in with my own programming though.
I really appreciate your comment it got me started on where I need to look. I am not going to work on the problem right now because, I may change to another USB class in place of HID because I have quite a lot of data to write to a 32MBit flash chip along with all of the other low throughput control functions.