Estoy experimentando mucho con los AVR de ATtiny y no puedo permitirme comprar un nuevo AVR para cada experimento, así que pensé en un script de respaldo. La idea es que pueda devolver mi AVR a los valores predeterminados de fábrica después de haberlos usado. Especialmente los fusibles y la calibración son complicados aquí. Quiero poder recuperarlos, ya que pueden cambiar los parámetros de 'arranque', la velocidad del reloj y la eficiencia energética.
La idea es hacer una copia de seguridad de mi AVR con el siguiente script:
#!/bin/bash
baud=115200
avr=attiny45
dst=$avr.'date +"%Y%m%d_%H%M%S"'
port=/dev/ttyUSB0
# calibration One or more bytes of RC oscillator calibration data.
# eeprom The EEPROM of the device.
# efuse The extended fuse byte.
# flash The flash ROM of the device.
# fuse The fuse byte in devices that have only a single fuse byte.
# hfuse The high fuse byte.
# lfuse The low fuse byte.
# lock The lock byte.
# signature The three device signature bytes (device ID).
# fuseN The fuse bytes of ATxmega devices, N is an integer number for each fuse supported by the device.
# application The application flash area of ATxmega devices.
# apptable The application table flash area of ATxmega devices.
# boot The boot flash area of ATxmega devices.
# prodsig The production signature (calibration) area of ATxmega devices.
# usersig The user signature area of ATxmega devices.
for memory in calibration eeprom efuse flash fuse hfuse lfuse lock signature application apptable boot prodsig usersig; do
avrdude -p $avr -c stk500v1 -P $port -b $baud -U $memory:r:/dev/stdout:i > ./$dst.$memory.hex ||
rm ./$dst.$memory.hex
done
La única excepción es la memoria fuseN, pero no uso ATxmega y eso no me importó.
EDIT1 : uso un Arduino Duemanilove de Armino168 de ATmega168 con un croquis ArduinoISP, que emula stk500v1, para programar mis dispositivos. La programación de alto voltaje no es compatible.
EDIT2 : Logré desbloquear con éxito mi ATtiny45 con mi Arduino usando también la información en enlace
Ahora la pregunta es la siguiente: el script de copia de seguridad parece funcionar como se diseñó, pero antes de "bloquear" mi AVR, ¿la programación de los archivos resultantes hará que el AVR vuelva a los valores predeterminados de fábrica?