Skip to main content
added 177 characters in body
Source Link
jippie
  • 33.6k
  • 18
  • 97
  • 162

I'm heavily experimenting with ATtiny AVR's and I can't afford to buy a new AVR for every experiment, so I thought up a backup script. The idea is that I can bring my AVR back to factory defaults after I've used them. Especially fuses and calibration are tricky here I want to be able to recover, as they may change 'boot' parameters, clock speed and power efficiency.

The idea is to backup my AVR with the following 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

The only exeption is the fuseN memory, but I don't use ATxmega and I just didn't care about that.

EDITEDIT1: I use an ATmega168 powered Arduino Duemanilove with ArduinoISP sketch, which emulates stk500v1, to program my devices. High voltage programming is not supported.

EDIT2: Managed to succesfully unbrick my ATtiny45 with my Arduino too using the information at http://www.rickety.us/2010/03/arduino-avr-high-voltage-serial-programmer/

Now the question is as follows: The backup script seems to work as designed, but before I 'brick' my AVR, will programming the resulting files bring the AVR back to factory defaults?

I'm heavily experimenting with ATtiny AVR's and I can't afford to buy a new AVR for every experiment, so I thought up a backup script. The idea is that I can bring my AVR back to factory defaults after I've used them. Especially fuses and calibration are tricky here I want to be able to recover, as they may change 'boot' parameters, clock speed and power efficiency.

The idea is to backup my AVR with the following 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

The only exeption is the fuseN memory, but I don't use ATxmega and I just didn't care about that.

EDIT: I use an ATmega168 powered Arduino Duemanilove with ArduinoISP sketch, which emulates stk500v1, to program my devices. High voltage programming is not supported.

Now the question is as follows: The backup script seems to work as designed, but before I 'brick' my AVR, will programming the resulting files bring the AVR back to factory defaults?

I'm heavily experimenting with ATtiny AVR's and I can't afford to buy a new AVR for every experiment, so I thought up a backup script. The idea is that I can bring my AVR back to factory defaults after I've used them. Especially fuses and calibration are tricky here I want to be able to recover, as they may change 'boot' parameters, clock speed and power efficiency.

The idea is to backup my AVR with the following 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

The only exeption is the fuseN memory, but I don't use ATxmega and I just didn't care about that.

EDIT1: I use an ATmega168 powered Arduino Duemanilove with ArduinoISP sketch, which emulates stk500v1, to program my devices. High voltage programming is not supported.

EDIT2: Managed to succesfully unbrick my ATtiny45 with my Arduino too using the information at http://www.rickety.us/2010/03/arduino-avr-high-voltage-serial-programmer/

Now the question is as follows: The backup script seems to work as designed, but before I 'brick' my AVR, will programming the resulting files bring the AVR back to factory defaults?

added 26 characters in body
Source Link
jippie
  • 33.6k
  • 18
  • 97
  • 162

I'm heavily experimenting with ATtiny AVR's and I can't afford to buy a new AVR for every experiment, so I thought up a backup script. The idea is that I can bring my AVR back to factory defaults after I've used them. Especially fuses and calibration are tricky here I want to be able to recover, as they may change 'boot' parameters, clock speed and power efficiency.

The idea is to backup my AVR with the following 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

The only exeption is the fuseN memory, but I don't use ATxmega and I just didn't care about that.

EDIT: I use an ATmega168 powered Arduino Duemanilove with ArduinoISP sketch, which emulates stk500v1, to program my devices. High voltage programming is not supported.

Now the question is as follows: The backup script seems to work as designed, but before I 'brick' my AVR, will programming the resulting files bring the AVR back to factory defaults?

I'm heavily experimenting with ATtiny AVR's and I can't afford to buy a new AVR for every experiment, so I thought up a backup script. The idea is that I can bring my AVR back to factory defaults after I've used them. Especially fuses and calibration are tricky here I want to be able to recover, as they may change 'boot' parameters, clock speed and power efficiency.

The idea is to backup my AVR with the following 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

The only exeption is the fuseN memory, but I don't use ATxmega and I just didn't care about that.

EDIT: I use an ATmega168 powered Arduino Duemanilove with ArduinoISP sketch to program my devices. High voltage programming is not supported.

Now the question is as follows: The backup script seems to work as designed, but before I 'brick' my AVR, will programming the resulting files bring the AVR back to factory defaults?

I'm heavily experimenting with ATtiny AVR's and I can't afford to buy a new AVR for every experiment, so I thought up a backup script. The idea is that I can bring my AVR back to factory defaults after I've used them. Especially fuses and calibration are tricky here I want to be able to recover, as they may change 'boot' parameters, clock speed and power efficiency.

The idea is to backup my AVR with the following 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

The only exeption is the fuseN memory, but I don't use ATxmega and I just didn't care about that.

EDIT: I use an ATmega168 powered Arduino Duemanilove with ArduinoISP sketch, which emulates stk500v1, to program my devices. High voltage programming is not supported.

Now the question is as follows: The backup script seems to work as designed, but before I 'brick' my AVR, will programming the resulting files bring the AVR back to factory defaults?

added 149 characters in body
Source Link
jippie
  • 33.6k
  • 18
  • 97
  • 162

I'm heavily experimenting with ATtiny AVR's and I can't afford to buy a new AVR for every experiment, so I thought up a backup script. The idea is that I can bring my AVR back to factory defaults after I've used them. Especially fuses and calibration are tricky here I want to be able to recover, as they may change 'boot' parameters, clock speed and power efficiency.

The idea is to backup my AVR with the following 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

The only exeption is the fuseN memory, but I don't use ATxmega and I just didn't care about that.

EDIT: I use an ATmega168 powered Arduino Duemanilove with ArduinoISP sketch to program my devices. High voltage programming is not supported.

Now the question is as follows: The backup script seems to work as designed, but before I 'brick' my AVR, will programming the resulting files bring the AVR back to factory defaults?

I'm heavily experimenting with ATtiny AVR's and I can't afford to buy a new AVR for every experiment, so I thought up a backup script. The idea is that I can bring my AVR back to factory defaults after I've used them. Especially fuses and calibration are tricky here I want to be able to recover, as they may change 'boot' parameters, clock speed and power efficiency.

The idea is to backup my AVR with the following 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

The only exeption is the fuseN memory, but I don't use ATxmega and I just didn't care about that.

Now the question is as follows: The backup script seems to work as designed, but before I 'brick' my AVR, will programming the resulting files bring the AVR back to factory defaults?

I'm heavily experimenting with ATtiny AVR's and I can't afford to buy a new AVR for every experiment, so I thought up a backup script. The idea is that I can bring my AVR back to factory defaults after I've used them. Especially fuses and calibration are tricky here I want to be able to recover, as they may change 'boot' parameters, clock speed and power efficiency.

The idea is to backup my AVR with the following 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

The only exeption is the fuseN memory, but I don't use ATxmega and I just didn't care about that.

EDIT: I use an ATmega168 powered Arduino Duemanilove with ArduinoISP sketch to program my devices. High voltage programming is not supported.

Now the question is as follows: The backup script seems to work as designed, but before I 'brick' my AVR, will programming the resulting files bring the AVR back to factory defaults?

edited tags
Link
jippie
  • 33.6k
  • 18
  • 97
  • 162
Loading
Source Link
jippie
  • 33.6k
  • 18
  • 97
  • 162
Loading