Attiny84 Reset Pin - Just A Quick Check

Hey folks,

I have a special application that requires the use of the reset pin as a GPIO on an ATTiny84. Currently, I have a shield I built specifically for programming a large number ATTiny84's through the Arduino IDE. I would like to use this to program another batch of ATTiny84s with the reset pin disabled.

It's not entirely clear to me how to do this without the aid of a HVSP and AVR Studio. I do not need to reprogram these chips once programmed. Can I upload my sketch via ISP and then burn the reset disable fuse? What is the easiest way to do this? (I have both ATTiny library and the HLT Tiny library available running on Arduino 1.5.1.r2 and Arduino 1.0.5, respectively).

I am also familiar with the various "rescue" shields available for resetting fuses to default values in case one accidentally bricks a tiny. In my case, I just want to program it once and leave it alone!

Thanks!

tms8c8:
I have a special application that requires the use of the reset pin as a GPIO on an ATTiny84.

Just in case you don't already know (emphasis added)...

The RESET pin must tolerate high voltages when entering and operating in programming modes and, as a consequence,
has a weak drive strength as compared to regular I/O pins.

Can I upload my sketch via ISP and then burn the reset disable fuse?

According to the datasheet, yes.

What is the easiest way to do this?

"Easiest"? Don't you want the "safest" so you don't brick too many processors?

I am aware of the "weak drive strength" and it won't be a problem in this application but thank you for pointing that out!

And yes, I suppose "easiest" is maybe not the best term. I am looking for the most economical method - i.e. one that requires the least new hardware, the least amount of time and the best through-put.

:slight_smile:

Assuming it's the same as the ATtinyx5 program the RSTDISBL fuse bit to 0.
If you want to undo it, here's a nice little fuse resetter desgin:
http://www.simpleavr.com/avr/hvsp-fuse-resetter

IDE version?

Target fuse settings (e.g. which clock option)?

I gave the IDE version in my initial post. I have either 1.0.5 running the HLT core or 1.5.1.r2 running the tiny core.

The clock speed is negotiable :slight_smile: I plan on running them with the internal oscillator at 8 MHz, i.e. the default value with the following:

Low Fuse 0b1100010
High Fuse 0b11011111
Extended Fuse 0b11111111

(if I'm reading the data sheet correctly).

If you won't pick then I'll pick for you...

...or 1.5.1.r2 running the tiny core.

Add this to boards.txt for the Tiny Core...

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

attiny84at8.name=ATtiny84 @ 8 MHz (internal oscillator; BOD disabled; RESET DISABLED)

attiny84at8.upload.tool=arduino:arduinoisp

attiny84at8.upload.maximum_size=8192
attiny84at8.upload.maximum_data_size=512

# Default clock (slowly rising power; long delay to clock; 8 MHz internal)
# Int. RC Osc. 8 MHz; Start-up time PWRDWN/RESET: 6 CK/14 CK + 64 ms; [CKSEL=0010 SUT=10]; default value
# Brown-out detection disabled; [BODLEVEL=111]
# Reset Disabled (Enable PB3 as i/o pin); [RSTDISBL=0]

attiny84at8.bootloader.low_fuses=0xE2
attiny84at8.bootloader.high_fuses=0x5F
attiny84at8.bootloader.extended_fuses=0xFF

attiny84at8.bootloader.path=empty
attiny84at8.bootloader.file=empty84at8.hex
attiny84at8.bootloader.tool=arduino:avrdude

attiny84at8.build.mcu=attiny84
attiny84at8.build.f_cpu=8000000L
attiny84at8.build.core=tiny

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

No guarantees!

Thanks! I've used both versions with success and I wasn't sure what the preferred version was. I'll give it a shot and see what happens!