La escritura de los bits de fusible con el programador HV no funciona

-2

Compré 40 chips attiny13a de China, pero después de recibirlos, no pude programarlos con mi programador USBasp. Los probé todos con el mismo resultado: los chips no respondieron al programador. Rápidamente construí un programador de alto voltaje basado en Arduino usando un grupo de resistencias y un transistor basado en este enlace para que pueda leer los fusibles. No están configurados a valores predeterminados: RSTDISL y ambos bits BOD están configurados, por lo que el fusible alto es 0xF8.

El problema es que no puedo cambiar esos fusibles con el mismo programador a pesar de que puede leer la firma del chip correctamente y los valores de los fusibles también parecen sanos. Al tratar de cambiar los fusibles no pasa nada, el microcontrolador parece estar ignorando los comandos.

Sin embargo, exactamente la misma configuración funciona para mis chips más antiguos (puedo cambiar los fusibles sin problemas), así que creo que mi programador de bricolaje sí funciona. El vendedor afirma que los chips están bien y que mi circuito tiene que ser defectuoso. ¿Me estoy perdiendo algo aquí o las 40 fichas están rotas de esta manera extraña?

    

1 respuesta

1

Como se señaló en los comentarios a mi pregunta, los lockbits pueden evitar cambiar los fusebits. Attiny13a tiene 2 bits de este tipo y su significado se describe en la hoja de datos en 17.1 Program And Data Memory Lock Bits . Si alguno de ellos está configurado:

Further programming of the Flash and EEPROM is disabled in
High-voltage and Serial Programming mode. Fuse bits are
locked in both Serial and High-voltage Programming mode.

La única forma de desbloquear el chip es ejecutar el comando Chip Erase , ya sea usando el programador SPI (descrito en 17.6 en la hoja de datos, se puede hacer con avrdude usando la opción -e ) o el programador de alto voltaje (descrito en 17.7 en la hoja de datos). En mi caso, desde que se estableció RSTDISL fusebit, la programación SPI no estaba disponible y la programación HV era la única opción. Creé un programador basado en Arduino y modifiqué algunos códigos que leen / configuran fusibles para llamar también al comando Chip erase según la tabla 17-13 de la hoja de datos.

Aquí está el programa Arduino que he usado para borrar el chip.

    
respondido por el Krzysztof Adamski

Lea otras preguntas en las etiquetas