Ich experimentiere intensiv mit ATtiny AVRs und kann es mir nicht leisten, für jedes Experiment einen neuen AVR zu kaufen, also habe ich mir ein Backup-Skript ausgedacht. Die Idee ist, dass ich meinen AVR auf die Werkseinstellungen zurücksetzen kann, nachdem ich sie verwendet habe. Besonders Sicherungen und Kalibrierung sind hier schwierig, die ich wiederherstellen möchte, da sie die „Boot“-Parameter, die Taktrate und die Energieeffizienz verändern können.
Die Idee ist, meinen AVR mit dem folgenden Skript zu sichern:
#!/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
Die einzige Ausnahme ist der fuseN-Speicher, aber ich benutze kein ATxmega und das war mir einfach egal.
EDIT1 : Ich verwende einen ATmega168-betriebenen Arduino Duemanilove mit ArduinoISP-Sketch, der stk500v1 emuliert, um meine Geräte zu programmieren. Hochspannungsprogrammierung wird nicht unterstützt.
EDIT2 : Es ist mir gelungen, meinen ATtiny45 auch mit meinem Arduino erfolgreich zu entmauern, indem ich die Informationen unter http://www.rickety.us/2010/03/arduino-avr-high-voltage-serial-programmer/ verwendet habe.
Nun stellt sich die Frage wie folgt: Das Backup-Skript scheint wie vorgesehen zu funktionieren, aber bevor ich meinen AVR "bricke", wird die Programmierung der resultierenden Dateien den AVR auf die Werkseinstellungen zurücksetzen?
Aus Ihrem Skript sieht es so aus, als würden Sie ein STK500-Board verwenden. Sie können den STK500 verwenden, um Hochspannungsprogrammierung mit den Attiny-Chips durchzuführen, sodass Sie die MCU jederzeit auf die Werkseinstellungen zurücksetzen können.
Es gibt bestimmte Dinge, die Sie mit Ihrem Skript nicht beheben können. Wenn Sie beispielsweise DWEN festlegen oder die Reset-Funktion deaktivieren, können Sie die ISP-Schnittstelle nicht verwenden.
AndrejaKo