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.
¿Está configurado el bit HWBE (HardWare Boot Enable) en sus fusibles?
vasco
vasco
hfuse
no se estableció.Amer Sawan