Modo ATMega8U2 y DFU

Hice una placa simple con el microcontrolador ATMega8U2 para mi experimentación USB (me gustaría hacer dispositivos MIDI, HID, ...). Me inspiré en Arduino Uno. Si observa el esquema a continuación, puede ver que es casi lo mismo que Uno.

Programé 8U2 con firmware del proyecto Arduino: UNO-dfu_and_usbserial_combined.hex . Ahora, si conecto la placa al USB, obtengo un puerto serie y funciona como Arduino, por lo que está perfectamente bien.

Mi problema es: ¿cómo puedo poner 8U2 en modo DFU, para poder cambiar el firmware sin un programador externo? Si observa la imagen, conecté HWB (pin PD7) a tierra, por lo que debería ser simple: simplemente presione el botón de reinicio. Desafortunadamente, no está funcionando.

¿Me estoy perdiendo de algo? ¿Puede ser un problema en las picaduras de fusibles incorrectas?

Editar: Mis fusibles son lfuse=0xff hfuse=0xd9 efuse=0xf4

Edit2:

Revisé los fusibles en el chip

$ avrdude -p at90usb82 -P /dev/tty.usbmodem411 \
> -F -c arduino \
> -U lfuse:r:low:h \
> -U hfuse:r:high:h
$ cat high low
0x00
0x00

Para programar, estoy usando Arduino Uno como ISP y este comando (en Mac):

$ avrdude -p at90usb82 -F -P /dev/tty.usbmodem411 \
> -c arduino \
> -U flash:w:UNO-dfu_and_usbserial_combined.hex \
> -U lfuse:w:0xFF:m \
> -U hfuse:w:0xD9:m \
> -U efuse:w:0xF4:m \
> -U lock:w:0x0F:m
.......
avrdude: verifying ...
avrdude: verification error, first mismatch at byte 0x0000
  0xff != 0x00
avrdude: verification error; content mismatch

Así que supongo que avrdude no programó los fusibles y todavía están en blanco. ¿Es posible? Porque la placa funciona correctamente, excepto el modo DFU después del reinicio.

Esquema ATMega8U2

Respuestas (1)

¿Está configurado el bit HWBE (HardWare Boot Enable) en sus fusibles?

El bit HWBE se borra (= cero). Mis fusibles son: lfuse=0xff hfuse=0xd9 efuse=0xf4
Ok, entonces el problema estaba en los fusibles. No sé por qué, pero hfuseno se estableció.
Entonces, ¿cuáles deberían ser los fusibles después de configurar el bit HWBE?