{"id":287,"date":"2008-09-23T01:24:02","date_gmt":"2008-09-23T08:24:02","guid":{"rendered":"http:\/\/mightyohm.com\/blog\/?p=287"},"modified":"2015-09-26T11:11:12","modified_gmt":"2015-09-26T18:11:12","slug":"i-programmed-the-rstdisbl-fuse","status":"publish","type":"post","link":"https:\/\/mightyohm.com\/blog\/2008\/09\/i-programmed-the-rstdisbl-fuse\/","title":{"rendered":"I programmed the RSTDISBL fuse."},"content":{"rendered":"<p><a href=\"http:\/\/www.atmel.com\/products\/AVR\/\">AVR microcontrollers<\/a> use &#8220;<a href=\"http:\/\/www.engbedded.com\/cgi-bin\/fc.cgi\">fuse bits<\/a>&#8221; to set various operational parameters of the device, such as the speed of the internal oscillator or the watchdog timer settings.<\/p>\n<p>Most fuse bits can be set or reset without worry, that is, they can be flashed into one state and then flashed back again using an <a href=\"http:\/\/en.wikipedia.org\/wiki\/Serial_Peripheral_Interface_Bus\">SPI<\/a> programmer like the <a href=\"http:\/\/ladyada.net\/make\/usbtinyisp\/\">USBTinyISP<\/a>.<\/p>\n<p>However, some fuse bits are irreversable or at least awkward to change, similar to the code protection bits on a <a href=\"http:\/\/www.microchip.com\">PIC<\/a> microcontroller.<\/p>\n<p>One example is the RSTDISBL fuse.\u00a0 This fuse allows bit 6 of PORTC to be used as a general purpose I\/O pin instead of the RESET pin.\u00a0 Well, it turns out that SPI programmers <strong>need<\/strong> the RESET pin to flash the device.\u00a0 (RESET is set as part of the routine to enter serial programming mode.)\u00a0 Once the RSTDISBL fuse is set, no more SPI flashing is possible.\u00a0 The only way to recover is with a high voltage programmer like the <a href=\"http:\/\/www.atmel.com\/dyn\/Products\/tools_card.asp?tool_id=2735\">STK500<\/a>, which I don&#8217;t have.<a href=\"http:\/\/www.atmel.com\/dyn\/Products\/tools_card.asp?tool_id=2735\"><br \/>\n<\/a><\/p>\n<p>Too bad I didn&#8217;t realize that beforehand.<\/p>\n<p>At least I&#8217;m not the only person who has done this before: <a href=\"http:\/\/support.atmel.no\/bin\/customer?=&amp;action=viewKbEntry&amp;id=13\">http:\/\/support.atmel.no\/bin\/customer?=&amp;action=viewKbEntry&amp;id=13<\/a><\/p>\n<p><strong>Update:<\/strong> It&#8217;s alive!!!\u00a0 I made a high voltage parallel programmer out of an <a href=\"http:\/\/www.arduino.cc\">Arduino<\/a>, flashed the fuses back again, and the AVR came back to life.\u00a0 The parallel programming protocol is well documented in the datasheet for the part and pretty straightforward.\u00a0 I think I&#8217;ll transfer the circuit onto a perfboard just in case I ever need to do this again!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>AVR microcontrollers use &#8220;fuse bits&#8221; to set various operational parameters of the device, such as the speed of the internal oscillator or the watchdog timer settings. Most fuse bits can be set or reset without worry, that is, they can be flashed into one state and then flashed back again using an SPI programmer like &hellip; <a href=\"https:\/\/mightyohm.com\/blog\/2008\/09\/i-programmed-the-rstdisbl-fuse\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">I programmed the RSTDISBL fuse.<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[10],"tags":[62,63,61,502],"class_list":["post-287","post","type-post","status-publish","format-standard","hentry","category-microcontrollers","tag-annoying","tag-arduino","tag-avr","tag-microcontrollers"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/pioCd-4D","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":1419,"url":"https:\/\/mightyohm.com\/blog\/2009\/03\/introducing-the-avr-hv-rescue-shield\/","url_meta":{"origin":287,"position":0},"title":"Introducing the AVR HV Rescue Shield","author":"Jeff","date":"March 11, 2009","format":false,"excerpt":"This all started last year, when I was playing with an ATmega168 microcontroller and did something silly.\u00a0 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,\u00a0 I decided to\u2026","rel":"","context":"In &quot;Electronics&quot;","block_context":{"text":"Electronics","link":"https:\/\/mightyohm.com\/blog\/category\/electronics\/"},"img":{"alt_text":"AVR HV Rescue Shield with ATmega168 target ","src":"https:\/\/i0.wp.com\/mightyohm.com\/blog\/wp-content\/uploads\/2009\/03\/rescue-shield-with-atmega2_scaled-500x375.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":294,"url":"https:\/\/mightyohm.com\/blog\/2008\/09\/arduino-based-avr-high-voltage-programmer\/","url_meta":{"origin":287,"position":1},"title":"Arduino-based AVR High Voltage Programmer","author":"Jeff","date":"September 24, 2008","format":false,"excerpt":"Update 01\/02\/09: A PCB version of this circuit is in the design stages - some preliminary information is here. Update 03\/11\/09: Kits based on this design are now for sale! Update 12\/14\/10: The original AVR HV Rescue Shield kit has been replaced by the new and improved HV Rescue Shield\u2026","rel":"","context":"In &quot;Kits&quot;","block_context":{"text":"Kits","link":"https:\/\/mightyohm.com\/blog\/category\/kits\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/mightyohm.com\/blog\/wp-content\/uploads\/2008\/09\/hvfuse_fixed.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/mightyohm.com\/blog\/wp-content\/uploads\/2008\/09\/hvfuse_fixed.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/mightyohm.com\/blog\/wp-content\/uploads\/2008\/09\/hvfuse_fixed.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/mightyohm.com\/blog\/wp-content\/uploads\/2008\/09\/hvfuse_fixed.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/mightyohm.com\/blog\/wp-content\/uploads\/2008\/09\/hvfuse_fixed.png?resize=1050%2C600&ssl=1 3x"},"classes":[]},{"id":5599,"url":"https:\/\/mightyohm.com\/blog\/2014\/01\/rescue-your-bricked-avr-micro-with-the-rescue-shield-now-back-in-stock\/","url_meta":{"origin":287,"position":2},"title":"Rescue your bricked AVR micro with the Rescue Shield, now back in stock!","author":"Jeff","date":"January 12, 2014","format":false,"excerpt":"Rescue Shield kits are (finally!) back in stock. The Rescue Shield is a 100% open source, Arduino-based high voltage mode fuse programmer for AVR microcontrollers. It allows you bring \u00a0an otherwise \"bricked\" or misconfigured AVR back to life by editing the configuration fuses that control the operation of the RESET\u2026","rel":"","context":"In &quot;Kits&quot;","block_context":{"text":"Kits","link":"https:\/\/mightyohm.com\/blog\/category\/kits\/"},"img":{"alt_text":"AVR HV Rescue Shield","src":"https:\/\/i0.wp.com\/mightyohm.com\/blog\/wp-content\/uploads\/2011\/12\/hvrescue21.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":15985,"url":"https:\/\/mightyohm.com\/blog\/2024\/03\/hv-rescue-shield-kit-blowout-kits-are-now-50-off-at-amazon-com\/","url_meta":{"origin":287,"position":3},"title":"HV Rescue Shield Kit Blowout! Kits are now 50% off at Amazon.com","author":"Jeff","date":"March 29, 2024","format":false,"excerpt":"For a limited time, my AVR HV Rescue Shield kit is on sale for 50% off at Amazon.com. These kits are handy for modifying the fuse bytes on many popular Atmel Microchip AVR microcontrollers. The Rescue Shield works even when traditional serial programmers can't talk to the AVR. This can\u2026","rel":"","context":"In &quot;Announcements&quot;","block_context":{"text":"Announcements","link":"https:\/\/mightyohm.com\/blog\/category\/announcements\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/mightyohm.com\/blog\/wp-content\/uploads\/2010\/12\/HVRescue211-418x500.jpg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":2063,"url":"https:\/\/mightyohm.com\/blog\/2009\/07\/atmel-retiring-atmega4888168-microcontrollers\/","url_meta":{"origin":287,"position":4},"title":"Atmel retiring ATmega48\/88\/168 microcontrollers","author":"Jeff","date":"July 3, 2009","format":false,"excerpt":"Has anyone else noticed that the ATmega48\/88\/168 family of 8-bit AVR microcontrollers recently joined Atmel's \"mature devices\" list, shown above? Truthfully, I was not surprised to see this, having been tipped off by an Atmel sales rep earlier this year at ESC in San Jose. The good news is that\u2026","rel":"","context":"In &quot;Microcontrollers&quot;","block_context":{"text":"Microcontrollers","link":"https:\/\/mightyohm.com\/blog\/category\/microcontrollers\/"},"img":{"alt_text":"Atmel AVR Microcontrollers - Mature Devices","src":"https:\/\/i0.wp.com\/mightyohm.com\/blog\/wp-content\/uploads\/2009\/07\/avr_mature.png?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":3519,"url":"https:\/\/mightyohm.com\/blog\/2010\/12\/issue-with-rescue-shield-and-targets-with-sut-0ms\/","url_meta":{"origin":287,"position":5},"title":"Issue with Rescue Shield and targets with SUT = 0ms","author":"Jeff","date":"December 21, 2010","format":false,"excerpt":"HV Rescue Shield 2.0 customer Matthew Beckler has uncovered an issue that affects all variants of the Rescue Shield. Long story short, if the target AVR is configured for a fast internal clock and zero\u00a0startup time (eg. LFUSE=0x62 on the ATtiny13A gives a 9.6MHz clock with 14CK +0ms startup delay),\u2026","rel":"","context":"In &quot;Microcontrollers&quot;","block_context":{"text":"Microcontrollers","link":"https:\/\/mightyohm.com\/blog\/category\/microcontrollers\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/mightyohm.com\/blog\/wp-json\/wp\/v2\/posts\/287","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mightyohm.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mightyohm.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mightyohm.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mightyohm.com\/blog\/wp-json\/wp\/v2\/comments?post=287"}],"version-history":[{"count":7,"href":"https:\/\/mightyohm.com\/blog\/wp-json\/wp\/v2\/posts\/287\/revisions"}],"predecessor-version":[{"id":296,"href":"https:\/\/mightyohm.com\/blog\/wp-json\/wp\/v2\/posts\/287\/revisions\/296"}],"wp:attachment":[{"href":"https:\/\/mightyohm.com\/blog\/wp-json\/wp\/v2\/media?parent=287"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mightyohm.com\/blog\/wp-json\/wp\/v2\/categories?post=287"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mightyohm.com\/blog\/wp-json\/wp\/v2\/tags?post=287"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}