I am having an issue with getting my PIC18F46J50 device enumerated. I think this is the problem because when I plug in my device, I get the "USB device not recognized error". Also, PID and VID are both 0000 even though in FW I have set them to be otherwise. I was under the impression that the USB SIE takes care of config and enumeration stuffs.

Not sure what other info to give you guys to be more useful, but if you need any other info let me know and I will happily post it.


In response to Chris Stratton. It is a custom board. Using FW that can be obtained for PIC18F14K50, but modified for PIC18F46J50. I have verified that the PIC is being programmed via some stuff that I am asking the board to do (I am adding USB functionality last to the board and there is alot of other stuff that can be run and is working). I have configured pullups, reciever correctly (UCON register = 0x16).

I'm not sure if the chip is getting a reset when powered. How would I check that?

  • \$\begingroup\$ Eval board or custom? Can you try a known good firmware or board? Have you verified the chip is programmed, ie, can you toggle an I/O to watch with an LED or scope? Is the chip getting a reset when powered? Do you have the appropriate USB line pulled up with the appropriate receiver? \$\endgroup\$ Dec 10, 2012 at 22:37
  • \$\begingroup\$ look at my edit Chris. Answers your questions. \$\endgroup\$
    – moesef
    Dec 10, 2012 at 22:53
  • \$\begingroup\$ There is a very good chance this could be a schematic or code error, but to verify that we really need your schematic and code :) \$\endgroup\$
    – Kortuk
    Dec 10, 2012 at 23:03

1 Answer 1


You really need to read the datasheet. When you do, you will see that the SIE doesn't "take care" of enumeration at all. It basically sends and receives packets. What those packets mean and what you do about them is up to the firmware. A significant amount of code is required to receive and respond to enumeration requests.

You can install and then look around in the source code to my PIC 18 USB framework, available from http://www.embedinc.com/pic/dload.htm. The code modules with "USB0" in their name deal with handling endpoint 0, which is where enumeration is done.

  • \$\begingroup\$ I am using Microchip USB device framework for low pin count devices. I am assuming that this has the majority of my needs in terms of code used to enumerate. \$\endgroup\$
    – moesef
    Dec 17, 2012 at 23:48
  • \$\begingroup\$ You need to stop guessing and read the documentation. Before you were under the impression that the SIE took care of "config and enumeration stuff", and now you are assuming that the Microchip firmware does certain things. This is no way to do engineering! \$\endgroup\$ Dec 18, 2012 at 12:46

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.