Introducing the AVR HV Rescue Shield

March 11th, 2009 by Jeff

AVR HV Rescue Shield with ATmega168 target

This all started last year, when I was playing with an ATmega168 microcontroller and did something silly.  I programmed the RSTDISBL fuse bit, which effectively makes it impossible to reflash the chip using an ordinary (serial) programmer.

Instead of giving up and throwing out the “dead” chip,  I decided to try to revive it using an obscure high voltage parallel programming mode that isn’t supported by most AVR programmers.  Armed with my Arduino and the ATmega168 datasheet, I quickly designed and constructed a programmer using parts I already had on my workbench.

A few hours later, I tested my new programmer and it worked!  I revived my “dead” AVR by using spare parts and a few lines of Arduino code.  That week I published the schematics and Arduino sketch to the site and called it my Arduino-based AVR High Voltage Programmer.

The response was overwhelming.  Since I first posted the design, many people have built their own and used it to fix their “dead” AVR microcontrollers by restoring the fuse bits to sane values.  I even received several requests for a PCB and/or kit based on the design, which got me thinking…

Today I’m proud to introduce:

The AVR HV Rescue Shield

The AVR HV Rescue Shield is a high voltage parallel mode fuse programmer for Atmel AVR microcontrollers.

It currently supports the ATmega48/88/168/328 series and the ATtiny2313.  The Rescue Shield does everything my original AVR High Voltage Programmer does, and a lot more.  I think the new features make this a really useful tool for anyone working with AVR microcontrollers.

New features include:

  • Custom 2-layer PCB with silkscreen and soldermask.  No more hacking and modifying perfboards to fit Arduino’s nonstandard pin spacing!
  • Onboard 12V DC-DC boost converter eliminates the need for an external 12V power supply
  • Support for two of the most common families of AVR microcontrollers, the ATmega48/88/168 and ATtiny2313
  • Support for programming the extended fuse (EFUSE) byte.
  • A new interactive mode, where desired fuses can be entered using the Arduino’s serial port.
  • Separate Ready and Burn indicators
  • Protection resistors on every single data, control, and supply line to the target AVR, meaning that your Arduino and AVR should survive any mishaps during programming, including inserting the AVR backwards or off by 1 pin.

I spent considerable time testing each new feature and documenting the Arduino sketch.  I hope that you’ll find that the finished product was worth the wait!

Ordering instructions:

To purchase bare PCBs and kits, head over to the AVR HV Rescue Shield product page.

rescue-burn-ready_scaled

rescue-mightyohm_scaled

Tags: , , , , , , ,

11 Responses to “Introducing the AVR HV Rescue Shield”

  1. tim says:

    Nice work!

  2. [...] much makes the chip useless in most cases. [Jeff] didn’t want to give up on it though, so he built a system to program it using the rarely used high voltage parallel programming mode. He used an Arduino, a few lines of code and a few spare parts to make it. After sharing the idea [...]

  3. Matt says:

    I wonder how much effort it would take to get this to work with the AT85 and AT45 as those often intentional program that fuse to get the extra IO and it would be nice to reset them to start from scratch.

  4. Jeff says:

    The lower pincount ATtiny’s use a high voltage serial programming mode. There isn’t any reason why this couldn’t be implemented, I just ran out of board space for a socket.

  5. Jeremy says:

    Hi, I was wondering id the arduino programming would work for an atmega16 if I was to make my own protoboard? Thanks for any advice.

    Thanks
    Jeremy

    • Jeff says:

      Jeremy,

      Based on the ATmega16 datasheet, that should work, but I haven’t tested it. There is a slight chance that some very minor tweaks to the Arduino sketch might be needed. I would say there is a reasonable chance that it will “just work” once you get the pins wired correctly.

      • Jeremy says:

        OK, Thanks Jeff. I will give it a go and let you know what I find out.

        • Jeremy says:

          Hi Jeff,

          I wondered if you might answer a couple more questions I have concerning the atmega16.

          First, I am in the process of designing a shield using the schematic you posted for your first shield. I am not sure which of the functions you are accessing on several of the pins. The first one I had a question on was the trace that comes from between T1 and R2. Does it go to the Reset pin on the Atmega16 or PC6?

          Secondly on all of the other pins, are you using the PBx,PCx and PDx or are you using the other functions of those pins. The reason I ask is that the secondary functions are different on the Atmega16 than the Mega48/88/168.

          Thanks for your help thus far!!!
          Jeremy

          • Jeff says:

            The node connected to T1/R2 goes to !RESET (pin 1).

            Regarding the other pins, I recommend downloading the datasheets for the ATmega16 as well as the 48/88/168 and taking a close look at the section on “Memory Programming”. Everything you need to know is pretty clearly outlined there.

            I would also look at the Arduino sketch for the HV programmer, the comments should be very helpful in understanding how the program (and the circuit) works.

  6. Jeremy says:

    Very good, thanks for the reply!


www.flickr.com
mightyohm More of mightyohm

%d bloggers like this: