Estoy experimentando mucho con ATtiny AVR 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í y 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 importaba.
EDIT1 : utilizo un Arduino Duemanilove alimentado por ATmega168 con un boceto ArduinoISP, que emula stk500v1, para programar mis dispositivos. No se admite la programación de alto voltaje.
EDIT2 : Logré desbloquear con éxito mi ATtiny45 con mi Arduino también usando la información en http://www.rickety.us/2010/03/arduino-avr-high-voltage-serial-programmer/
Ahora la pregunta es la siguiente: la secuencia de comandos de copia de seguridad parece funcionar según lo diseñado, pero antes de "bloquear" mi AVR, ¿la programación de los archivos resultantes devolverá el AVR a los valores predeterminados de fábrica?
Según su secuencia de comandos, parece que está utilizando una placa STK500. Puede usar el STK500 para hacer programación de alto voltaje con los chips attiny, por lo que siempre puede restablecer la mcu a los valores predeterminados de fábrica.
Hay ciertas cosas que no podrá arreglar con su secuencia de comandos, por ejemplo, si configura DWEN o desactiva la funcionalidad de reinicio, no podrá usar la interfaz ISP.
AndrejaKo