Go Down

Topic: Can FUSE programming "lock" the programming access to the ATmega chip? (Read 1 time) previous topic - next topic


Scenario: I use AVR Studio 4 to upload my final code in customized boards. The reason: I want to get rid of the Arduino bootloader for the final deployment in order to save Flash space and to avoid the delay at the boot.

Problem: when I was programming the FUSES of an ATmega1280, I committed a mistake and receive the message "...you will not have access to JTAG...". And I confirmed... After that point I can no more upload program to that chip. Using the same environment, I can upload program to other chips.

Request: I would like to know if there is a way to revert the issue. I tried many options at the AVR Studio, such as "Erase Device" but all the time I receive an error message.

Thanks for any help :)


What hardware are you using for programming?

If it is a JTAG programmer, you will have to reprogram the part another way, like using the SPI pins and an AVR-ISP programmer (or a high-voltage programmer). AVR-ISP is definitely easier, as long as you have not disabled the reset fuse or the SPI programming fuse.

The Flexible MIDI Shield: MIDI IN/OUT, stacking headers, your choice of I/O pins


I am using a AVR ICSP clone (Profilic USB-Serial device). I select STK500 platform and a COM port at the Connections window of the AVR Studio.

I never used JTAG... So i do not mind in having lost this functionality for that chip. Actually, I just want to recover my ability to upload code to the chip. If not, I will have to exchange it from its board (a customized one).

I am not sure what were the wrong options of FUSE when i programmed it... I was sleepy...


High-voltage serial programming (hvsp) is mostly the backup mode on smaller AVRs. An 8-pin AVR package doesn't leave many unique signal combinations to place the AVR into a programming mode. A 12 volt signal, however, is something the AVR should only see during programming and never during normal operation.



OK...so you are using an ISP programmer and not JTAG then. The most common mistake for losing programming ability is setting a clock fuse setting that indicates an external clock, but not providing an external clock.

If that is what you did (can you go back and look at what fuse settings you tried to set?), then you can fix it by temporarily applying an external clock to the XTAL1 pin of the processor. You can either use a real oscillator, or if you have a function generator, just set that to 1 MHz or so and use a 330 ohm resistor (value is not critical) to connect to the XTAL1 pin (make a common ground connection too). Reprogram the fuses with this temporary clock to go back to using an internal clock, then try again.

The MegaRAM shield: add 128 kilobytes of external RAM to your Arduino Mega/Mega2560

Go Up