Estoy intentando colocar los fusibles en un ATMega16U4 con avrdude. El primer problema que encontré es que avrdude versión 5.11.1 no parece ser compatible con ATMega16U4. Alguien mencionó en avrfreaks que debería copiar el bloque ATMega32U4 en avrdude.conf y cambiar la firma, la descripción y los tamaños de memoria para que se ajusten al ATMega16U4 y eso es lo que hice, aquí está mi avrdude.conf: enlace
Esto parece funcionar pero no estoy 100% convencido.
El problema real es que avrdude no puede configurar los fusibles (estoy usando mi buspirate como programador de ISP):
avrdude -c buspirate -p m16u4 -P / dev / ttyUSB0 -U lfuse: w: 0xe2: m -U > hfuse: w: 0xd8: m -Utilizado: w: 0xf8: m
Detectando BusPirate ... **
** Bus Pirate v3a ** Firmware v5.10 (r559) Cargador de arranque v4.4 ** DEVID: 0x0447 REVID: 0x3046 (24FJ64GA002 B8) ** enlace ** BusPirate: utilizando el modo BINARIO Avrdude: dispositivo AVR inicializado y listo para aceptar instruccionesLectura | ################################################## | 100% 0.02s
avrdude: firma del dispositivo = 0x1e9488 Avrdude: leyendo el archivo de entrada "0xe2" Avrdude: escribiendo lfuse (1 bytes):
Escritura | | 0% 0.00s > *** falló;
Escribiendo | ################################################## | 100% 0.07savrdude: 1 bytes de lfuse escrito avrdude: verificando la memoria lfuse contra 0xe2: avrdude: carga datos lfuse datos desde el archivo de entrada 0xe2: Avrdude: el archivo de entrada 0xe2 contiene 1 bytes Avrdude: lectura de datos lfuse en chip:
Lectura | ################################################## | 100% 0.00s
avrdude: verificando ... Avrdude: error de verificación, primera falta de coincidencia en el byte 0x0000 0xe2! = 0x5e avrdude: error de verificación; desajuste de contenido
avrdude: safemode: lfuse cambiado! Era e2, y ahora es 5e. ¿Te gustaría que este fusible se cambie de nuevo? [y / n] y
Parece ser capaz de leer bien el microcontrolador, lee la firma correcta y lee los fusibles correctos (predeterminados) pero no los cambia.
Aquí hay una impresión de avrdude más detallada con -vvv: enlace
Estoy usando un cristal de 12MHz con 22p de cerámica y tengo una resistencia de pull-up de 4.7kohm en el reinicio.
¿Alguien tiene alguna idea de por qué no funciona? He pasado por las conexiones con un multímetro, etc. varias veces y todas están bien. También dudo que la lectura del dispositivo funcionaría incluso si las conexiones tuvieran algún problema. El ATMega es nuevo, nunca usado, nunca programado (por lo tanto, los fusibles de bloqueo no están configurados), etc.