{"id":403,"date":"2017-06-19T21:01:39","date_gmt":"2017-06-19T19:01:39","guid":{"rendered":"https:\/\/arduinoforlammers.wordpress.com\/?p=403"},"modified":"2025-07-03T17:31:42","modified_gmt":"2025-07-03T15:31:42","slug":"programujemy-atmega328-przez-arduino-uno","status":"publish","type":"post","link":"https:\/\/arduino.net.pl\/index.php\/programujemy-atmega328-przez-arduino-uno\/","title":{"rendered":"Programujemy procesor Atmega328 przez Arduino UNO"},"content":{"rendered":"\n<h3 class=\"wp-block-heading\">Cz\u0119\u015b\u0107 pierwsza &#8211; wgrywanie bootloadera<\/h3>\n\n\n\n<p>Artyku\u0142 by nie powsta\u0142 gdyby nie strona&nbsp;<a href=\"http:\/\/www.gammon.com.au\/breadboard\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/www.gammon.com.au\/breadboard.<br><\/a>Facet, kt\u00f3ry to napisa\u0142 nazywa si\u0119&nbsp;<a href=\"http:\/\/www.gammon.com.au\/forum\/bbshowbio.php?bbuser_id=1\" target=\"_blank\" rel=\"noopener noreferrer\">Nick Gammon<\/a> i dzi\u0119ki niemu pierwszy raz wgra\u0142em bootloader-a do Atmegi 328. Wcze\u015bniej przejrza\u0142em dziesi\u0105tki film\u00f3w i nic. Tak jak mn\u00f3stwo ludzi (s\u0105dz\u0105c po komentarzach) nie dawa\u0142em rady wgra\u0107 boota do Atmegi przez Arduino IDE. Facet pokaza\u0142 po\u0142\u0105czenie p\u0142ytki z procesorem i napisa\u0142 program, kt\u00f3ry bardzo w tym pomaga. I chwa\u0142a mu za to!<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Podstawowe po\u0142\u0105czenie umo\u017cliwiaj\u0105ce wgranie bootloadera i programowanie procesora przez Arduino:<\/h4>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"492\" src=\"http:\/\/yarogniew.net\/arduino\/wp-content\/uploads\/2019\/01\/Zrzut-ekranu-2018-10-03-o-21.29.41-1-1024x492.png\" alt=\"\" class=\"wp-image-2187\" srcset=\"https:\/\/arduino.net.pl\/wp-content\/uploads\/2019\/01\/Zrzut-ekranu-2018-10-03-o-21.29.41-1-1024x492.png 1024w, https:\/\/arduino.net.pl\/wp-content\/uploads\/2019\/01\/Zrzut-ekranu-2018-10-03-o-21.29.41-1-300x144.png 300w, https:\/\/arduino.net.pl\/wp-content\/uploads\/2019\/01\/Zrzut-ekranu-2018-10-03-o-21.29.41-1-768x369.png 768w, https:\/\/arduino.net.pl\/wp-content\/uploads\/2019\/01\/Zrzut-ekranu-2018-10-03-o-21.29.41-1-440x211.png 440w, https:\/\/arduino.net.pl\/wp-content\/uploads\/2019\/01\/Zrzut-ekranu-2018-10-03-o-21.29.41-1.png 1059w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Znalaz\u0142em przy okazji\u00a0<a href=\"http:\/\/avrproject.ru\/publ\/instrument\/stikery_dlja_mikrokontrollerov_avr\/3-1-0-56\">stron\u0119 z naklejkami na procesory.<\/a><br>Mo\u017ce si\u0119 przyda\u0107 przy pod\u0142\u0105czaniu.<br><\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-photo is-provider-flickr wp-block-embed-flickr\"><div class=\"wp-block-embed__wrapper\">\n<a href=\"https:\/\/flic.kr\/p\/VX6gDM\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/live.staticflickr.com\/4232\/35410344195_291b2fe516_z.jpg\" alt=\"Label_mega328full\" width=\"640\" height=\"119\" \/><\/a>\n<\/div><\/figure>\n\n\n\n<!--more-->\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Wypalanie bootloader-a:<\/strong><\/h4>\n\n\n\n<p>\u015aci\u0105gamy od Nicka kody:<br><a href=\"https:\/\/github.com\/nickgammon\/arduino_sketches\">https:\/\/github.com\/nickgammon\/arduino_sketches<\/a><\/p>\n\n\n\n<p>Najpierw wgrywamy do Arduino UNO program <em><strong>Atmega_Board_Detector<\/strong><\/em>. Ustawiamy serial monitor na 115200 baud-\u00f3w. W oknie serial monitora powinni\u015bmy (je\u015bli chip nie ma wgranego Bootloadera) zobaczy\u0107 to:<\/p>\n\n\n\n<div class=\"codetag\">\n<pre><code>Atmega chip detector.\nWritten by Nick Gammon.\nVersion 1.19\nCompiled on Oct  3 2018 at 22:19:48 with Arduino IDE 10802.\nAttempting to enter ICSP programming mode ...\nEntered programming mode OK.\nSignature = 0x1E 0x95 0x0F \nProcessor = ATmega328P\nFlash memory size = 32768 bytes.\nLFuse = 0x62 \nHFuse = 0xD9 \nEFuse = 0xFF \nLock byte = 0xFF \nClock calibration = 0x9C \nBootloader in use: No\nEEPROM preserved through erase: No\nWatchdog timer always on: No\nBootloader is 4096 bytes starting at 7000\n.....\nMD5 sum of bootloader = 0x6A 0xE5 0x9E 0x64 0x85 0x03 0x77 0xEE 0x54 0x70 0xC8 0x54 0x76 0x15 0x51 0xEA \nNo bootloader (all 0xFF)\n....<\/code><\/pre>\n<\/div>\n\n\n\n<p>Nast\u0119pnie wgrywamy&nbsp;<strong><em>Atmega_Board_Programmer<\/em><\/strong><\/p>\n\n\n\n<div class=\"codetag\">\n<pre><code>Atmega chip programmer.\nWritten by Nick Gammon.\n<b>Entered programming mode OK.\nSignature = 0x1E 0x95 0x0F \nProcessor = ATmega328P<\/b>\nFlash memory size = 32768 bytes.\nLFuse = 0xFF \nHFuse = 0xDA \nEFuse = 0xFD \nLock byte = 0xFF \nBootloader address = 0x7E00\nBootloader length = 512 bytes.\nMD5 sum of current bootloader = DE 03 FE 65 A6 76 5C AA 8C 91 34 3A CC 62 CF FC \n<b>Type 'L' to use Lilypad (8 MHz) loader, or 'U' for Uno (16 MHz) loader ...<\/b>\n<\/code><\/pre>\n<\/div>\n\n\n\n<p>Mamy dwie opcje do wyboru:&#8217;L&#8217; lub 'U&#8217;.<br>W oknie serial monitora wpisujemy: <strong>L<\/strong> , je\u015bli chcemy wgra\u0107 bootloader wykorzystuj\u0105cy wewn\u0119trzny rezonator 8 MHz. W uk\u0142adzie z rysunku powy\u017cej tylko taki jest mo\u017cliwy<br><strong>U<\/strong> &#8211; je\u015bli mamy wpi\u0119ty zewn\u0119trzny kwarc 16 MHz i chcemy by nasza Atmega328 pracowa\u0142a dok\u0142adnie tak, jak w Arduino UNO<\/p>\n\n\n\n<p>Po wyborze opcji wpisujemy 'G&#8217; i bootloader si\u0119 wypala. Po wypaleniu mo\u017cemy zweryfikowa\u0107 efekt programem <em>Atmega_Board_Detector<\/em><\/p>\n\n\n\n<h6 class=\"wp-block-heading\">Po\u0142\u0105czenie z zewn\u0119trznym oscylatorem, opcja 'U&#8217;<\/h6>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"http:\/\/yarogniew.net\/arduino\/wp-content\/uploads\/2018\/10\/Zrzut-ekranu-2018-10-04-o-19.17.45.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"492\" src=\"http:\/\/yarogniew.net\/arduino\/wp-content\/uploads\/2018\/10\/Zrzut-ekranu-2018-10-04-o-19.17.45-1024x492.png\" alt=\"Schemat po\u0142\u0105czenia z oscylatorem zewn\u0119trznym\" class=\"wp-image-1877\" srcset=\"https:\/\/arduino.net.pl\/wp-content\/uploads\/2018\/10\/Zrzut-ekranu-2018-10-04-o-19.17.45-1024x492.png 1024w, https:\/\/arduino.net.pl\/wp-content\/uploads\/2018\/10\/Zrzut-ekranu-2018-10-04-o-19.17.45-300x144.png 300w, https:\/\/arduino.net.pl\/wp-content\/uploads\/2018\/10\/Zrzut-ekranu-2018-10-04-o-19.17.45-768x369.png 768w, https:\/\/arduino.net.pl\/wp-content\/uploads\/2018\/10\/Zrzut-ekranu-2018-10-04-o-19.17.45-440x211.png 440w, https:\/\/arduino.net.pl\/wp-content\/uploads\/2018\/10\/Zrzut-ekranu-2018-10-04-o-19.17.45.png 1039w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<h5 class=\"wp-block-heading\">Uwaga!<\/h5>\n\n\n\n<p>Wgra\u0107 bootloader wykorzystuj\u0105cy wewn\u0119trzny rezonator 8 MHz mo\u017cemy r\u00f3wnie\u017c w uk\u0142adzie z zewn\u0119trznym oscylatorem. Nie musimy go wypina\u0107, wystarczy przy wgrywaniu wcisn\u0105\u0107 liter\u0119 'L&#8217;, potem 'G&#8217;. Podobnie wgrywanie zasadniczego programu, korzystaj\u0105c z ArduinoISP, mo\u017cna przeprowadzi\u0107 na p\u0142ytce z kwarcem zewn\u0119trznym, trzeba pami\u0119ta\u0107 jedynie, \u017ce wybieramy <strong>Board: LilyPad Arduino<\/strong>, <strong>Processor: ATmega328P<\/strong><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Cz\u0119\u015b\u0107 druga &#8211; wgrywanie programu do Atmegi<\/h3>\n\n\n\n<p>Tu musz\u0119 podzi\u0119kowa\u0107 Elektro Marasowi za <a href=\"https:\/\/www.youtube.com\/watch?v=HSBUnXQN120\">ten film<\/a> na YouTube.<\/p>\n\n\n\n<p>1. Wchodzimy do Arduino IDE, odszukujemy<br><em>File -&gt; Examples -&gt; ArduinoISP<\/em><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/live.staticflickr.com\/4267\/34570824564_30992fe238.jpg\" alt=\"ArduinoISP_2\"\/><\/figure>\n\n\n\n<p><br>2. Wysy\u0142amy kod do Arduino.<br>3. Otwieramy okno z kodem, kt\u00f3ry chcemy wgra\u0107 do naszego procesora. (Na przyk\u0142ad nie\u015bmierteln\u0105 migaj\u0105c\u0105 diod\u0119. Pami\u0119tajmy jednak \u017ceby zmieni\u0107 PIN 13 [LED_BUILTIN], zaj\u0119ty przez programator, na powiedzmy PIN 9-ty).<br>W zak\u0142adce Tools wybieramy Programmer: &#8222;Arduino as ISP&#8221;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/arduino.net.pl\/wp-content\/uploads\/2017\/06\/Tools-arduino_as_ISP.png\"><img loading=\"lazy\" decoding=\"async\" width=\"543\" height=\"355\" src=\"https:\/\/arduino.net.pl\/wp-content\/uploads\/2017\/06\/Tools-arduino_as_ISP.png\" alt=\"\" class=\"wp-image-6571\" srcset=\"https:\/\/arduino.net.pl\/wp-content\/uploads\/2017\/06\/Tools-arduino_as_ISP.png 543w, https:\/\/arduino.net.pl\/wp-content\/uploads\/2017\/06\/Tools-arduino_as_ISP-300x196.png 300w, https:\/\/arduino.net.pl\/wp-content\/uploads\/2017\/06\/Tools-arduino_as_ISP-440x288.png 440w\" sizes=\"auto, (max-width: 543px) 100vw, 543px\" \/><\/a><\/figure>\n\n\n\n<p><br>4. Zn\u00f3w wchodzimy do Arduino IDE, odszukujemy<br><em>Sketch -&gt; Upload Using Programmer<\/em><\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-photo is-provider-flickr wp-block-embed-flickr\"><div class=\"wp-block-embed__wrapper\">\n<a href=\"https:\/\/flic.kr\/p\/VKRnhF\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/live.staticflickr.com\/4198\/35283150131_11afa22326_n.jpg\" alt=\"ArduinoISP_1\" width=\"320\" height=\"138\" \/><\/a>\n<\/div><\/figure>\n\n\n\n<p class=\"has-large-font-size\">Sumuj\u0105c. <strong>Uwaga! To bardzo wa\u017cne!<\/strong> <br>Najpierw wgrywamy program <strong><em>ArduinoISP.ino<\/em><\/strong> do Arduino UNO. Potem wgrywamy nasz skecz wybieraj\u0105c programator <strong><em>&#8222;Arduino as ISP&#8221;, <\/em><\/strong>a nast\u0119pnie wysy\u0142amy skecz na ATmega328 u\u017cywaj\u0105c polecenia: <strong><em>Sketch -> Upload Using Programmer! <\/em><\/strong>Inaczej wy\u015blemy nasz skecz do Arduino UNO i nic nie b\u0119dzie na programowanym <strong>ATmega328 <\/strong>miga\u0107.<\/p>\n\n\n\n<p>I to wszystko. Je\u015bli nie wyrwali\u015bmy przez nieuwag\u0119 \u017cadnego kabelka, dioda powinna na programowanym ATMega328P mruga\u0107.<\/p>\n\n\n\n<p>LINKI<\/p>\n\n\n\n<figure class=\"wp-block-embed\"><div class=\"wp-block-embed__wrapper\">\nhttp:\/\/www.notesandvolts.com\/2013\/01\/fun-with-arduino-arduino-as-isp.html\n<\/div><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Cz\u0119\u015b\u0107 pierwsza &#8211; wgrywanie bootloadera Artyku\u0142 by nie powsta\u0142 gdyby nie strona&nbsp;http:\/\/www.gammon.com.au\/breadboard.Facet, kt\u00f3ry to napisa\u0142 nazywa si\u0119&nbsp;Nick Gammon i dzi\u0119ki niemu pierwszy raz wgra\u0142em bootloader-a do Atmegi 328. Wcze\u015bniej przejrza\u0142em&#8230;<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[2,3],"tags":[10,30],"class_list":["post-403","post","type-post","status-publish","format-standard","hentry","category-arduino","category-atmega328","tag-atmega328p","tag-tutorial"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/posts\/403","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/comments?post=403"}],"version-history":[{"count":25,"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/posts\/403\/revisions"}],"predecessor-version":[{"id":6580,"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/posts\/403\/revisions\/6580"}],"wp:attachment":[{"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/media?parent=403"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/categories?post=403"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/tags?post=403"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}