Cargador de arranque de stock (de fábrica) en ATmega16U2

Tengo un problema con ATmega16U2 que incluye compatibilidad con hardware USB. Como la hoja de datos describe:

Los mega AVR de 8 bits con dispositivos de interfaz USB están configurados de fábrica con un cargador de arranque USB ubicado en la sección de arranque flash en el chip del controlador.

Así que creé una placa de circuito impreso con ATmega16U2 y la conecté a mi PC. Para iniciarlo en el modo de cargador de arranque, corté RESET y HWB a tierra, luego liberé RESET y HWB después de eso (ambos pines están levantados). Desafortunadamente, mi PC no puede comunicarse con el dispositivo conectado, dejando el siguiente error:

ingrese la descripción de la imagen aquí

Para asegurarme de que no sea un problema de hardware (circuito defectuoso: acoplamiento, rutas largas, alta impedancia, cortocircuitos, etc.), lo conecté con un programador ISP. Pude leer la firma del chip, los bits de fusible/bloqueo. Limpié todo el chip y lo actualicé con el software Arduino (el primer archivo hexadecimal fácil de encontrar en Internet que se me ocurrió). Funciona, reconocido como dispositivo de comunicación en serie, que recibió su enumeración COM. Luego soldé otro chip ATmega16U2 a bordo y lo conecté nuevamente, pero aún no puedo comunicarme con el cargador de arranque del chip de fábrica. Lo único que cambió es el chip: de un chip de stock flasheado a un stock puro.

Aquí está el esquema de mi circuito. Estoy usando cristal de 16 MHz en este momento, también tengo cristal de prueba de 8 MHz:

ingrese la descripción de la imagen aquí

Gracias por leer y comparta su experiencia si ha trabajado con esos microcontroladores.

¿Se ha asegurado de que la frecuencia del cristal coincida con lo que espera el cargador de arranque y de que ha configurado correctamente los fusibles para usar el cristal?
Mire en esta nota de la hoja de datos, dice que los cristales de 8 o 16 MHz están bien: atmel.com/Images/doc7618.pdf
Probé ambos cristales de 8/16 MHz. Además, el chip viene con bits de bloqueo programados de fábrica que bloquean el cambio de bits de fusibles. Solo después del borrado completo del chip, puedo cambiar los bits de fusible/bloqueo, pero todo el programa en flash (cargador de arranque) se ha ido.
Interesante....
Me pregunto una cosa, en el sitio de Atmel, en la descripción del producto ATmega16U2, se refiere a la hoja de datos del cargador de arranque USB DFU. En esta hoja de datos, el ATmega16U2 no aparece en ninguna parte, solo la versión U4. Sin embargo, al principio, como cité en mi pregunta, se refiere a todos los mega AVR de 8 bits. ATmega16U4 parece ser ATmega16U2 + ADC + JTAG y tal vez algo más
Encontré un buen artículo en el que el autor se comunicó con éxito con el chip: fab.cba.mit.edu/classes/863.14/people/andrew_mao/week11
¿Son realmente esas resistencias de 1M en línea con las señales del puerto USB? Si es así, deberían ser 22R-ish
no lo son, error de copiar y pegar, son 22 Ohm +- 5% como especifica la hoja de datos

Respuestas (1)

Después de un tiempo trabajando en otro proyecto, decidí rehacer mi PCB. Hice algunos cambios, acorté las trazas, moví los componentes THT en la otra capa, etc.

Y funcionó. Mi uC se reconoce y enumera como "ATmega16U2". Esto me hace sentir confundido, porque mi primer PCB parecía ser lo suficientemente bueno.

Gracias por las respuestas. Ahora es el momento de implementar la funcionalidad, voy a usar LUFA para hacer la comunicación COM.