En un microcontrolador como el ATmeaga32u4, esas clavijas USB están conectadas a un poco de hardware especial para manejar la señalización USB. Pero ese hardware hace prácticamente la electrónica, no controla qué datos se envían o reciben.
Y los datos deben enviarse y recibirse para identificar el dispositivo y enumerar. Si no hay software en el chip, no se envían datos y el chip no se enumera. Es probable que Windows informe que "uno de los dispositivos USB conectados a esta computadora ha funcionado mal", pero es posible que ni siquiera lo detecte.
Pero los chips generalmente vienen de fábrica con un gestor de arranque DFU en ellos (aunque también hay chips completamente en blanco y programados de manera diferente). El gestor de arranque DFU se identifica a sí mismo como un dispositivo de clase DFU y también le otorga a la PC un Id. De proveedor (VID) y un Id. De producto (PID). Luego, la PC revisa su lista de controladores para encontrar uno que dice ser compatible con ese VID y PID. Probablemente haya instalado Atmel Flip, que incluye un controlador, y el controlador sabe que VID / PID significa un ATmega32u4 con el cargador de arranque DFU. Así que Windows carga ese controlador, y el controlador le dice a Windows que es un ATmega32u4.
Presumiblemente, quieres hacer otra cosa con el chip a largo plazo. Así que tendrás que programarlo con tu propia aplicación. No puede (y no querría) ejecutar el gestor de arranque y su aplicación al mismo tiempo. Pero puede dejarlos en el chip, y alternarlos con algún código especial, configuración de fusibles o tirando de un pin a tierra durante el reinicio. Esto es excelente para el desarrollo, ya que ese cargador de arranque puede usarse para cargar una nueva copia de su aplicación. También es útil si desea que los clientes realicen actualizaciones de firmware en el futuro.
Pero mientras su aplicación se está ejecutando, el gestor de arranque no lo está. Así que el gestor de arranque no puede hacer la enumeración, no puede pasar el VID / PID a la computadora, etc. En su lugar, su aplicación tendrá que hacer todo eso. Y es complicado. Pero la buena noticia es que hay bibliotecas que hacen la mayor parte por usted. El más común se llama LUFA . También deberá comprar / elegir su propio VID / PID y escribir un controlador para que vaya con su dispositivo.