Prevent USBTinyISP from erasing EEPROM?

I've been working on a little project with my Arduino Nano V3 board that does quite a bit with EEPROM. To avoid the annoying bootloader delay, I'm trying to write the sketch with my USBTinyISP. That works.

However, something the USBTinyISP does that the bootloader-based sketch writing never did is reset my EEPROM. Crap! The project relies on the EEPROM starting a certain way, and I have a separate sketch designed to format the EEPROM correctly before the main sketch is written. If the EEPROM is being erased when I write the main sketch, the main sketch won't work properly.

Is there any way to write a sketch via USBTinyISP without erasing EEPROM?

The problem is very likely the processor fuse settings.

[quote author=Coding Badly link=topic=75424.msg569501#msg569501 date=1318659123]

The problem is very likely the processor fuse settings.

[/quote] Could you elaborate on this? I just spent the last few hours troubleshooting the exact same problem until I realized the USBTinyISP sets the EEPROM values to 0xFF. Here's a copy of the settings I'm using in the boards.txt file:

##############################################################

usbtiny328gps.name=[usbtinyisp]ATmega328gps_with_bootloader_8MHz

usbtiny328gps.upload.using=usbtinyisp
usbtiny328gps.upload.maximum_size=32768

usbtiny328gps.bootloader.low_fuses=0xFF
usbtiny328gps.bootloader.high_fuses=0xDA
usbtiny328gps.bootloader.extended_fuses=0x05
usbtiny328gps.bootloader.path=atmega
usbtiny328gps.bootloader.file=ATmegaBOOT_168_atmega328_pro_8MHz.hex
usbtiny328gps.bootloader.unlock_bits=0x3F
usbtiny328gps.bootloader.lock_bits=0x0F

usbtiny328gps.build.mcu=atmega328p
usbtiny328gps.build.f_cpu=8000000L
usbtiny328gps.build.core=arduino

##############################################################

Certainly...

Go to our favourite fuse calculator... http://www.engbedded.com/fusecalc/

Towards the bottom, under the [u]Current settings[/u] section, enter the three fuse values ([u]FF[/u], [u]DA[/u], [u]05[/u]). Click the [u]Apply values[/u] button to ensure the webpage is up-to-date.

Towards the top, under the [u]Feature configuration[/u] section, ensure [u]Preserve EEPROM memory through the Chip Erase cycle; [EESAVE=0][/u] is checked. Click the [u]Apply feature settings[/u] button to ensure the webpage is up-to-date.

The [u]Current settings[/u] section has the new fuse values. Once those fuse values are applied, the EEPROM will not be erased except when you explicitly erase it.

Sweet. I'll give it a try. Thanks.