No escribir los fusibles ATMega16U4 con avrdude

5

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 instrucciones

     

Lectura | ################################################## | 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.07s

     

avrdude: 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.

    
pregunta Dago

1 respuesta

6

LO RESUELTO! ¿Por alguna razón el AVR se envía con los bits de bloqueo habilitados? De acuerdo a la hoja de datos, así es como se especifica. Borrar el chip desactiva los bits de bloqueo y me permitió programar los fusibles.

    
respondido por el Dago

Lea otras preguntas en las etiquetas