Excellent. Let's get to work...
I will be using this fuse calculator... http://www.engbedded.com/fusecalc/
We'll change the key and name to something that more accurately reflects the board...
attiny24at16.name=ATtiny24 @ 16 MHz (external crystal; BOD disabled)
attiny24at16.upload.using=arduino:arduinoisp
attiny24at16.upload.maximum_size=2048
I went with these fuse settings...
Ext. Crystal Osc.; Frequency 8.0- MHz; Start-up time PWRDWN/RESET: 16K CK/14 CK + 65 ms; [CKSEL=1111 SUT=11]
Brown-out detection disabled; [BODLEVEL=111]
Preserve EEPROM memory through the Chip Erase cycle; [EESAVE=0]
Serial program downloading (SPI) enabled; [SPIEN=0]
Which gives us these...
attiny24at16.bootloader.low_fuses=0xFF
attiny24at16.bootloader.high_fuses=0xD7
attiny24at16.bootloader.extended_fuses=0xFF
attiny24at16.bootloader.path=empty
attiny24at16.bootloader.file=empty24at16.hex
A few more small changes...
attiny24at16.build.mcu=attiny24
attiny24at16.build.f_cpu=16000000L
attiny24at16.build.core=tiny
And that should do it for the boards.txt entry.
The "bootloader" is really an empty stub. It's purpose is to satisfy the IDE so we can change the fuse settings without having to leave the comfort of the IDE. To create a stub for the ATtiny24, we...
• Ensure the Arduino IDE is not running
• Temporarily switch to the "empty" core by making this change to the boards.txt file...
attiny24at16.build.core=empty
• Start the Arduino IDE
• Ensure our board is selected
• Click Verify
• Navigate to the %TEMP% directory
• Locate the dot-HEX file
• Copy it to the hardware/tiny/bootloaders/empty directory
• Rename it to empty24at16.hex
• Close the Arduino IDE
• Restore the boards.txt file...
attiny24at16.build.core=tiny
At this point, we should be able to...
• Start the Arduino IDE
• Ensure our board is selected
• Execute Tools / Burn Bootloader / Arduino ISP
The fuses should now be set so the target runs from an external high frequency crystal.
This is the boards.txt entry I used...
###########################################################################
attiny24at16.name=ATtiny24 @ 16 MHz (external crystal; BOD disabled)
# The following do NOT work...
# attiny24at16.upload.using=avrispv2
# attiny24at16.upload.using=Pololu USB AVR Programmer
# The following DO work (pick one)...
attiny24at16.upload.using=arduino:arduinoisp
# attiny24at16.upload.protocol=avrispv2
# attiny24at16.upload.using=pololu
attiny24at16.upload.maximum_size=2048
# Ext. Crystal Osc.; Frequency 8.0- MHz; Start-up time PWRDWN/RESET: 16K CK/14 CK + 65 ms; [CKSEL=1111 SUT=11]
# Brown-out detection disabled; [BODLEVEL=111]
# Preserve EEPROM memory through the Chip Erase cycle; [EESAVE=0]
# Serial program downloading (SPI) enabled; [SPIEN=0]
attiny24at16.bootloader.low_fuses=0xFF
attiny24at16.bootloader.high_fuses=0xD7
attiny24at16.bootloader.extended_fuses=0xFF
attiny24at16.bootloader.path=empty
attiny24at16.bootloader.file=empty24at16.hex
attiny24at16.build.mcu=attiny24
attiny24at16.build.f_cpu=16000000L
attiny24at16.build.core=tiny
###########################################################################
I've attached empty24at16.hex to this post.
I do not have an ATtiny24 so I cannot test my work. You should carefully review what I've done before executing Burn Bootloader. If you find any mistakes, please reply so others can avoid the mistakes.
empty24at16.hex (173 Bytes)