Un-Brick an AVR® Xplained Board

Fuse settings that disable the ISP programming interface and most likely brick the device.

SPIEN

Configuring the “SPIEN” fuse to disable the ISP programming interface (fuse bit set to "1")

Unless you are an experienced AVR user it might not be obvious that the ISP interface actually utilizes the main SPI port as a programming interface. Although this fuse is labeled as the “SPIEN” fuse it doesn’t actually enable/disable the standard SPI peripheral. It enables or disables the ISP programming interface (which uses the SPI port). By default, ISP is enabled (fuse bit set to "0").

RECOVERY
If it’s disabled the only recovery option is the JTAG interface (if it has one and it’s accessible) or the HVPP or HVSP interface which is most likely not accessible.

If you can remove the MCU from your board, there are a couple of programmers capable of performing the HVPP/HVSP procedure:

RSTDSBL

Configuring the “RSTDSBL” fuse to disable the Reset pin (fuse bit set to "0")

Unless you are an experienced AVR user it might not be obvious that the ISP programming interface uses three of the SPI pins (SCK, MISO, MOSI) along with the Reset pin. Therefore, disabling the Reset pin effectively disables the ISP interface. By default, the RESET pin function is enabled (fuse bit set to "1").

RECOVERY
If the RESET pin becomes disabled, the only recovery option is the JTAG interface (if it has one and it’s accessible) or the HVPP or HVSP interface which is most likely not accessible.

CKSELx

Configuring the “CKSELx” fuses to select an external clock source that is not present

Unless you are an experienced AVR user it might not be obvious that the ISP programming interface will not function unless the MCU is being driven by an active clock source. Therefore if an invalid clock source (for instance an external clock that is not present) is selected the ISP interface will not function. By default, the internal 8 MHz RC oscillator is the clock source.

RECOVERY
If an invalid source is selected the only recovery option is the JTAG interface (if it has one and it’s accessible) or the HVPP or HVSP interface which is most likely not accessible. Neither the JTAG, HVPP, or HVSP interface require a valid clock to operate.

If an external clock is selected but not present it’s possible to temporarily wire a clock to the appropriate pin to allow access to reprogram the fuses via the ISP interface.

DWEN

Configuring the “DWEN” fuse to enable the debugWIRE interface on the Reset pin

This is a confusing, but RECOVERABLE condition.

Unless you are an experienced AVR user it might not be obvious that the one-wire debugWIRE interface utilizes the Reset pin. Enabling the debugWIRE interface disables the use of the Reset pin. The ISP interface requires access to the Reset pin so it’s no longer functional when debugWIRE is enabled. By default, debugWIRE is disabled (fuse bit is set to "1"). It is enabled whenever a debug session is started in Studio.

RECOVERY
If it’s enabled it can’t be disabled through the standard Device Programming window option in Studio because that option requires a functional ISP interface. There is, however, a trick to disabling the debugWIRE interface without having to use the HVPP or HVSP interface. A project must be created in Studio targeting the specific Tiny or Mega device being used. Then a "debug" session needs to be started by selecting Debug > Attach to Target, then exited by choosing the Debug > Disable debugWire and Close option, as shown:

debugclose.png

TIP: When you're finished with a debug session in Studio, select the Debug > Disable debugWire and Close option in order to enable device ISP programming.


Fuse settings that disable the JTAG programming interface and most likely brick the device

JTAGEN

Configuring the “JTAGEN” fuse to disable the JTAG port

The JTAG port doesn’t rely on the device Reset pin, nor does it require a valid clock source feeding the MCU, so disabling Reset or selecting an invalid clock source will not affect its operation. The one way it can be disabled is through the JTAGEN fuse.

RECOVERY
If it’s disabled, the only recovery option is the ISP interface (if it has one and it’s accessible) or the HVPP or HVSP interface which is most likely not accessible.


Fuse Change Warnings

Studio IDE now provides warnings when the user is about to make a change to a critical fuse setting. Below are examples of some of those warnings that pop-up in the Device Programming window.

Here is the Device Programming window with the Fuses section selected:

device-programming-fuses-window.png


Here is the warning window that opens if SPIEN is disabled:

spien-disabled-warning-window.png


Here is the warning window that opens if JTAGEN is disabled:

jtagen-disabled-warning-window.png


Here is the warning window that opens if CKSEL is changed:

cksel-disabled-warning-window.png


Here is the warning window that opens if RSTDISBL is enabled:

rstdisbl-disabled-warning-window.png
© 2018 Microchip Technology, Inc.
Notice: ARM and Cortex are the registered trademarks of ARM Limited in the EU and other countries.
Information contained on this site regarding device applications and the like is provided only for your convenience and may be superseded by updates. It is your responsibility to ensure that your application meets with your specifications. MICROCHIP MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND WHETHER EXPRESS OR IMPLIED, WRITTEN OR ORAL, STATUTORY OR OTHERWISE, RELATED TO THE INFORMATION, INCLUDING BUT NOT LIMITED TO ITS CONDITION, QUALITY, PERFORMANCE, MERCHANTABILITY OR FITNESS FOR PURPOSE. Microchip disclaims all liability arising from this information and its use. Use of Microchip devices in life support and/or safety applications is entirely at the buyer's risk, and the buyer agrees to defend, indemnify and hold harmless Microchip from any and all damages, claims, suits, or expenses resulting from such use. No licenses are conveyed, implicitly or otherwise, under any Microchip intellectual property rights.