{"id":2558,"date":"2022-12-29T22:09:13","date_gmt":"2022-12-29T21:09:13","guid":{"rendered":"https:\/\/fotografeer.nl\/?p=2558"},"modified":"2025-10-07T22:16:09","modified_gmt":"2025-10-07T20:16:09","slug":"programming-attiny85-from-arduino-nano-the-bootloader","status":"publish","type":"post","link":"https:\/\/fotografeer.nl\/?p=2558","title":{"rendered":"Programming ATtiny85 from Arduino Nano &#8211; The Bootloader"},"content":{"rendered":"<style>.kb-table-of-content-nav.kb-table-of-content-id2558_ce9e48-66 .kb-table-of-content-wrap{padding-top:var(--global-kb-spacing-sm, 1.5rem);padding-right:var(--global-kb-spacing-sm, 1.5rem);padding-bottom:var(--global-kb-spacing-sm, 1.5rem);padding-left:var(--global-kb-spacing-sm, 1.5rem);}.kb-table-of-content-nav.kb-table-of-content-id2558_ce9e48-66 .kb-table-of-contents-title-wrap{padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.kb-table-of-content-nav.kb-table-of-content-id2558_ce9e48-66 .kb-table-of-contents-title{font-weight:regular;font-style:normal;}.kb-table-of-content-nav.kb-table-of-content-id2558_ce9e48-66 .kb-table-of-content-wrap .kb-table-of-content-list{font-weight:regular;font-style:normal;margin-top:var(--global-kb-spacing-sm, 1.5rem);margin-right:0px;margin-bottom:0px;margin-left:0px;}<\/style>\n\n\n<h2 class=\"wp-block-heading\">Programming ATtiny85 and Burn the Bootloader<\/h2>\n\n\n\n<p>In the previous post in this <a href=\"?s=Arduino%2CATtiny85%2CNano&amp;lang=en\">series of blog posts<\/a>, we installed the <a href=\"https:\/\/en.wikipedia.org\/wiki\/In-system_programming\" target=\"_blank\" rel=\"noreferrer noopener\">programmer software<\/a> on the <a href=\"https:\/\/docs.arduino.cc\/hardware\/nano\" target=\"_blank\" rel=\"noreferrer noopener\">Nano<\/a> and placed the last components to be able to program an <a href=\"https:\/\/en.wikipedia.org\/wiki\/AVR_microcontrollers\" target=\"_blank\" rel=\"noreferrer noopener\">ATtiny85<\/a> chip. New <a href=\"https:\/\/en.wikipedia.org\/wiki\/AVR_microcontrollers\" target=\"_blank\" rel=\"noreferrer noopener\">ATtiny85<\/a> chips need to be prepared to take Arduino sketches by burning a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Bootloader\" target=\"_blank\" rel=\"noreferrer noopener\">bootloader<\/a>. In this post, we go through the steps of configuring the <a href=\"https:\/\/www.arduino.cc\/en\/software\" target=\"_blank\" rel=\"noreferrer noopener\">Arduino IDE<\/a> for programming <a href=\"https:\/\/en.wikipedia.org\/wiki\/AVR_microcontrollers\" target=\"_blank\" rel=\"noreferrer noopener\">ATtiny85<\/a> and burning the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Bootloader\" target=\"_blank\" rel=\"noreferrer noopener\">bootloader<\/a> to <a href=\"https:\/\/en.wikipedia.org\/wiki\/AVR_microcontrollers\" target=\"_blank\" rel=\"noreferrer noopener\">ATtiny85<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"678\" height=\"400\" src=\"https:\/\/fotografeer.nl\/wp-content\/uploads\/2022\/12\/Burn-Bootloader-Menu-Option.png\" alt=\"\" class=\"wp-image-2569\" srcset=\"https:\/\/fotografeer.nl\/wp-content\/uploads\/2022\/12\/Burn-Bootloader-Menu-Option.png 678w, https:\/\/fotografeer.nl\/wp-content\/uploads\/2022\/12\/Burn-Bootloader-Menu-Option-300x177.png 300w\" sizes=\"auto, (max-width: 678px) 100vw, 678px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Step-by-Step Guide<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Verify ATtiny85 Placement<\/h3>\n\n\n\n<p>Verify the ATtiny85 is installed, according to the design, with pin 1 top right. Check for the notch and the dot at pin 1.<\/p>\n\n\n\n<p>TODO Put macro image here<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Connect Nano and Start Arduino GUI<\/h3>\n\n\n\n<p>Connect the Nano via USB to your computer for the Arduino GUI to be able to find its COM port. Note the slowly pulsing green LED to indicate the programmer software ArduinoISP.ino is running.<\/p>\n\n\n\n<figure class=\"wp-block-video\"><video height=\"1080\" style=\"aspect-ratio: 1920 \/ 1080;\" width=\"1920\" controls src=\"https:\/\/fotografeer.nl\/wp-content\/uploads\/2022\/12\/20221226-203731.mp4\"><\/video><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Configure for ATtiny85<\/h3>\n\n\n\n<p>We need to set the appropriate settings in the Arduino GUI for programming the ATtiny85. For the purpose of these blog posts, we will leave most settings on their default value.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Select the ATtiny85 Board<\/h3>\n\n\n\n<p><strong>Tools <\/strong>-&gt; <strong>Board<\/strong> -&gt; <strong>ATtiny Microcontrollers<\/strong> -&gt; <strong>ATtiny25\/45\/85<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"511\" src=\"https:\/\/fotografeer.nl\/wp-content\/uploads\/2022\/12\/Select-ATtiny25-45-85-1024x511.png\" alt=\"\" class=\"wp-image-2575\" srcset=\"https:\/\/fotografeer.nl\/wp-content\/uploads\/2022\/12\/Select-ATtiny25-45-85-1024x511.png 1024w, https:\/\/fotografeer.nl\/wp-content\/uploads\/2022\/12\/Select-ATtiny25-45-85-300x150.png 300w, https:\/\/fotografeer.nl\/wp-content\/uploads\/2022\/12\/Select-ATtiny25-45-85-768x383.png 768w, https:\/\/fotografeer.nl\/wp-content\/uploads\/2022\/12\/Select-ATtiny25-45-85.png 1425w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Note that the Tools menu now has additional items, related to the ATtiny:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Clock<\/li>\n\n\n\n<li>Processor<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"685\" height=\"828\" src=\"https:\/\/fotografeer.nl\/wp-content\/uploads\/2022\/12\/Menu-items-clock-processor.png\" alt=\"\" class=\"wp-image-2577\" srcset=\"https:\/\/fotografeer.nl\/wp-content\/uploads\/2022\/12\/Menu-items-clock-processor.png 685w, https:\/\/fotografeer.nl\/wp-content\/uploads\/2022\/12\/Menu-items-clock-processor-248x300.png 248w\" sizes=\"auto, (max-width: 685px) 100vw, 685px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Port<\/h3>\n\n\n\n<p>First select the correct COM port.<\/p>\n\n\n\n<p><strong>Tools<\/strong> -&gt; <strong>Port<\/strong> -&gt; <strong>COM<\/strong><em>&lt;x&gt;<\/em><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"926\" height=\"828\" src=\"https:\/\/fotografeer.nl\/wp-content\/uploads\/2022\/12\/Select-COM-port-2.png\" alt=\"\" class=\"wp-image-2579\" srcset=\"https:\/\/fotografeer.nl\/wp-content\/uploads\/2022\/12\/Select-COM-port-2.png 926w, https:\/\/fotografeer.nl\/wp-content\/uploads\/2022\/12\/Select-COM-port-2-300x268.png 300w, https:\/\/fotografeer.nl\/wp-content\/uploads\/2022\/12\/Select-COM-port-2-768x687.png 768w\" sizes=\"auto, (max-width: 926px) 100vw, 926px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Verify Board Selection<\/h3>\n\n\n\n<p>Make sure you have the correct board selected. It should show ATtiny25\/45\/85.<\/p>\n\n\n\n<p><strong>Tools<\/strong> -&gt; <strong>Get Board Info<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"683\" height=\"825\" src=\"https:\/\/fotografeer.nl\/wp-content\/uploads\/2022\/12\/Menu-Get-Board-Info.png\" alt=\"\" class=\"wp-image-2581\" srcset=\"https:\/\/fotografeer.nl\/wp-content\/uploads\/2022\/12\/Menu-Get-Board-Info.png 683w, https:\/\/fotografeer.nl\/wp-content\/uploads\/2022\/12\/Menu-Get-Board-Info-248x300.png 248w\" sizes=\"auto, (max-width: 683px) 100vw, 683px\" \/><\/figure>\n\n\n\n<pre class=\"wp-block-preformatted\">BN: ATtiny25\/45\/85\nVID: N\/A\nPID: N\/A\n<\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"638\" height=\"320\" src=\"https:\/\/fotografeer.nl\/wp-content\/uploads\/2022\/12\/Board-Info.png\" alt=\"\" class=\"wp-image-2584\" srcset=\"https:\/\/fotografeer.nl\/wp-content\/uploads\/2022\/12\/Board-Info.png 638w, https:\/\/fotografeer.nl\/wp-content\/uploads\/2022\/12\/Board-Info-300x150.png 300w\" sizes=\"auto, (max-width: 638px) 100vw, 638px\" \/><\/figure>\n\n\n\n<p>Select <strong>OK<\/strong> to close the popup window.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Clock<\/h3>\n\n\n\n<p><strong>Tools<\/strong> -&gt; <strong>Clock<\/strong> -&gt; <strong>Internal 8 MHz<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"973\" height=\"896\" src=\"https:\/\/fotografeer.nl\/wp-content\/uploads\/2022\/12\/Select-8-MHz.png\" alt=\"\" class=\"wp-image-2586\" srcset=\"https:\/\/fotografeer.nl\/wp-content\/uploads\/2022\/12\/Select-8-MHz.png 973w, https:\/\/fotografeer.nl\/wp-content\/uploads\/2022\/12\/Select-8-MHz-300x276.png 300w, https:\/\/fotografeer.nl\/wp-content\/uploads\/2022\/12\/Select-8-MHz-768x707.png 768w\" sizes=\"auto, (max-width: 973px) 100vw, 973px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Processor<\/h3>\n\n\n\n<p><strong>Tools<\/strong> -&gt; <strong>Processor<\/strong> -&gt; <strong>ATtiny85<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"902\" height=\"827\" src=\"https:\/\/fotografeer.nl\/wp-content\/uploads\/2022\/12\/Select-Processor-ATtiny85.png\" alt=\"\" class=\"wp-image-2588\" srcset=\"https:\/\/fotografeer.nl\/wp-content\/uploads\/2022\/12\/Select-Processor-ATtiny85.png 902w, https:\/\/fotografeer.nl\/wp-content\/uploads\/2022\/12\/Select-Processor-ATtiny85-300x275.png 300w, https:\/\/fotografeer.nl\/wp-content\/uploads\/2022\/12\/Select-Processor-ATtiny85-768x704.png 768w\" sizes=\"auto, (max-width: 902px) 100vw, 902px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Programmer<\/h3>\n\n\n\n<p>Select the programmer for <a href=\"https:\/\/en.wikipedia.org\/wiki\/In-system_programming\" target=\"_blank\" rel=\"noreferrer noopener\">ISP<\/a> you want to use. You may still have this selected from when it was set in the last blog post.<\/p>\n\n\n\n<p><strong>Tools<\/strong> &#8211; <strong>Programmer<\/strong> -&gt; <strong>Arduino as ISP<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"883\" src=\"https:\/\/fotografeer.nl\/wp-content\/uploads\/2022\/12\/Select-Programmer-Arduino-as-ISP-1-1024x883.png\" alt=\"\" class=\"wp-image-2590\" srcset=\"https:\/\/fotografeer.nl\/wp-content\/uploads\/2022\/12\/Select-Programmer-Arduino-as-ISP-1-1024x883.png 1024w, https:\/\/fotografeer.nl\/wp-content\/uploads\/2022\/12\/Select-Programmer-Arduino-as-ISP-1-300x259.png 300w, https:\/\/fotografeer.nl\/wp-content\/uploads\/2022\/12\/Select-Programmer-Arduino-as-ISP-1-768x662.png 768w, https:\/\/fotografeer.nl\/wp-content\/uploads\/2022\/12\/Select-Programmer-Arduino-as-ISP-1.png 1145w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Burn the Bootloader<\/h3>\n\n\n\n<p>Note that you only have to burn the bootloader once on a newly arrived chip. You have prepared the configuration and can now burn the bootloader.<\/p>\n\n\n\n<p><strong>Tools<\/strong> -&gt; <strong>Burn Bootloader<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"680\" height=\"820\" src=\"https:\/\/fotografeer.nl\/wp-content\/uploads\/2022\/12\/Select-Burn-Bootloader.png\" alt=\"\" class=\"wp-image-2592\"\/ style=\"object-position: 23% 100%;\" srcset=\"https:\/\/fotografeer.nl\/wp-content\/uploads\/2022\/12\/Select-Burn-Bootloader.png 680w, https:\/\/fotografeer.nl\/wp-content\/uploads\/2022\/12\/Select-Burn-Bootloader-249x300.png 249w\" sizes=\"auto, (max-width: 680px) 100vw, 680px\" \/><\/figure>\n\n\n\n<p>The output window shows the technical details of erasing the chip, installing the bootloader and the verification.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">avrdude: Version 6.3-20201216\n         Copyright (c) 2000-2005 Brian Dean, <a href=\"http:\/\/www.bdmicro.com\/\">http:\/\/www.bdmicro.com\/<\/a>\n         Copyright (c) 2007-2014 Joerg Wunsch\n... detailed info  ...\navrdude: Device signature = 0x1e930b (probably t85)\navrdude: Send: Q [51]   [20] \navrdude: Recv: . [14] \navrdude: Recv: . [10] \navrdude done.  Thank you.<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">ATtiny85 Prepared<\/h3>\n\n\n\n<p>The ATtiny85 is now prepared with the bootloader and is ready to receive sketches. Sketches that work on e.g. Uno, will not automatically work on ATtiny85. They need to be adapted in a process called <a href=\"https:\/\/en.wikipedia.org\/wiki\/Porting\" target=\"_blank\" rel=\"noreferrer noopener\">porting<\/a>. More on that in the next blog post.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">DISCLAIMER<\/h2>\n\n\n\n<p>THIS BLOG POST IS PROVIDED &#8220;AS IS&#8221;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THIS HOWTO OR SOFTWARE OR THE USE OR OTHER DEALINGS IN THIS BLOG POST.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>How to program an ATtiny85 chip from a Arduino Nano 5\/8<\/p>\n","protected":false},"author":2,"featured_media":2595,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"categories":[69],"tags":[102,104,106,138],"class_list":["post-2558","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog___en","tag-arduino___en","tag-attiny85___en","tag-nano___en","tag-programming___en"],"lang":"en","translations":{"en":2558,"nl":2565},"pll_sync_post":{},"_links":{"self":[{"href":"https:\/\/fotografeer.nl\/index.php?rest_route=\/wp\/v2\/posts\/2558","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fotografeer.nl\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fotografeer.nl\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fotografeer.nl\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/fotografeer.nl\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2558"}],"version-history":[{"count":20,"href":"https:\/\/fotografeer.nl\/index.php?rest_route=\/wp\/v2\/posts\/2558\/revisions"}],"predecessor-version":[{"id":2761,"href":"https:\/\/fotografeer.nl\/index.php?rest_route=\/wp\/v2\/posts\/2558\/revisions\/2761"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fotografeer.nl\/index.php?rest_route=\/wp\/v2\/media\/2595"}],"wp:attachment":[{"href":"https:\/\/fotografeer.nl\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2558"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fotografeer.nl\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2558"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fotografeer.nl\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2558"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}