{"id":512,"date":"2012-05-29T22:05:55","date_gmt":"2012-05-29T19:05:55","guid":{"rendered":"http:\/\/www.dinux.lt\/blog\/?p=512"},"modified":"2015-01-25T16:57:06","modified_gmt":"2015-01-25T13:57:06","slug":"pirmi-zinksniai-su-atmega16","status":"publish","type":"post","link":"http:\/\/www.dinux.lt\/blog\/?p=512","title":{"rendered":"Pirmi \u017einksniai su ATmega16"},"content":{"rendered":"<p>Apie \u0161it\u0105 g\u0117r\u012f skai\u010diau jau senokai, bet niekaip neprisiruo\u0161davau. Bet i\u0161au\u0161o ta diena.<\/p>\n<p>Pirmiausia u\u017esisakiau programatori\u0173. Kainavo pilnai su siuntimu ~28LTL. Pirktas i\u0161 ebay, USBasp klonas (<a href=\"http:\/\/www.fischl.de\/usbasp\/\">http:\/\/www.fischl.de\/usbasp\/<\/a>). Atkeliavus programatoriui jau gumos netempiau, nes labai nor\u0117josi i\u0161bandyti kaip viskas veikia. Susipirkau ko reikia ir susilitavau schem\u0105 pateikta <a href=\"http:\/\/www.elektronika.lt\/schemos\/mikrovaldikliai\/4537\/pirmi-zingsniai-atmel-avr-pradedantiesiems\/\" target=\"_blank\">elektronika.lt puslapyje<\/a>.<\/p>\n<p>Pora pakeitim\u0173, tai \u0161viesos diodai jungti ne per 1&#8230;2K kaip parodyta schemoje, o per 330\u03a9 Dar vienas ma\u017eas nukrypimas, kad a\u0161 ned\u0117jau jokio mygtuko. Pirmoji mintis ir u\u017eduotis buvo i\u0161mokti jungin\u0117ti diodus.<\/p>\n<p><a href=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2012\/05\/IMGP2932.jpg\" rel=\"lightbox[512]\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2012\/05\/IMGP2932-300x199.jpg\" alt=\"\" title=\"IMGP2932\" width=\"300\" height=\"199\" class=\"alignnone size-medium wp-image-515\" srcset=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2012\/05\/IMGP2932-300x199.jpg 300w, http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2012\/05\/IMGP2932.jpg 800w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><a href=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2012\/05\/IMGP2934.jpg\" rel=\"lightbox[512]\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2012\/05\/IMGP2934-300x199.jpg\" alt=\"\" title=\"IMGP2934\" width=\"300\" height=\"199\" class=\"alignnone size-medium wp-image-516\" srcset=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2012\/05\/IMGP2934-300x199.jpg 300w, http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2012\/05\/IMGP2934.jpg 800w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><a href=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2012\/05\/IMGP2936.jpg\" rel=\"lightbox[512]\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2012\/05\/IMGP2936-300x199.jpg\" alt=\"\" title=\"IMGP2936\" width=\"300\" height=\"199\" class=\"alignnone size-medium wp-image-517\" srcset=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2012\/05\/IMGP2936-300x199.jpg 300w, http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2012\/05\/IMGP2936.jpg 800w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><a href=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2012\/05\/IMGP2937.jpg\" rel=\"lightbox[512]\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2012\/05\/IMGP2937-300x199.jpg\" alt=\"\" title=\"IMGP2937\" width=\"300\" height=\"199\" class=\"alignnone size-medium wp-image-518\" srcset=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2012\/05\/IMGP2937-300x199.jpg 300w, http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2012\/05\/IMGP2937.jpg 800w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Nepaslaptis, kad naudoju Archlinux, to pasekoje programos kodas pateiktas ank\u0161\u010diau min\u0117tam elektronika.lt puslapyje netiko &#8211; nesikompiliavo. Su programa Gnome-avrdude \u012fra\u0161ius HEX&#8217;\u0105 diodai mirks\u0117jo. Taigi mano supratimu problema buvo tame, kad gcc-avr kompiliatorius veikia truputi kitaip nei winavr ir\/ar kiti windows&#8217;iniai.<\/p>\n<p>Padraugavus su Google pavyko para\u0161yti ir sukompiliuoti \u0161tai tok\u012f kod\u0105:<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">#define F_CPU 1000000UL\r\n#include &lt;inttypes.h&gt;\r\n#include &lt;avr\/io.h&gt;\r\n#include &lt;util\/delay.h&gt;\r\n\r\nvoid sleep()\r\n{\r\n   _delay_ms(50);\r\n\r\n}\r\n\r\nint main(){\r\n\r\nDDRD = 0b11111111;\r\n\r\nwhile (1) {\r\n PORTD = 0b10000001;\r\n sleep();\r\n PORTD = 0b01000010;\r\n sleep();\r\n PORTD = 0b00100100;\r\n sleep(); \r\n PORTD = 0b00011000;\r\n sleep(); \r\n PORTD = 0b00011000;\r\n sleep(); \r\n PORTD = 0b00100100;\r\n sleep(); \r\n PORTD = 0b01000010;\r\n sleep(); \r\n }\r\n}<\/pre>\n<p>Program\u0105 kompiliavau \u0161tai tokiomis komandomis (programos kodas para\u0161ytas test.c byloje):<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">avr-gcc -mmcu=atmega16 -Os test.c -o test.o\r\navr-objcopy -j .text -j .data -O ihex  test.o  test.hex<\/pre>\n<p>C kod\u0105 ra\u0161au su Geany (<a href=\"http:\/\/www.geany.org\/\">http:\/\/www.geany.org\/<\/a>)<br \/>\nGnome-avrdude konfiguracija USBasp programatoriui yra tokia:<br \/>\n<a href=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2012\/05\/gnome-avrdude_konfiguracija.jpg\" rel=\"lightbox[512]\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2012\/05\/gnome-avrdude_konfiguracija.jpg\" alt=\"\" title=\"gnome-avrdude_konfiguracija\" width=\"614\" height=\"489\" class=\"alignnone size-full wp-image-527\" srcset=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2012\/05\/gnome-avrdude_konfiguracija.jpg 614w, http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2012\/05\/gnome-avrdude_konfiguracija-300x238.jpg 300w\" sizes=\"(max-width: 614px) 100vw, 614px\" \/><\/a><\/p>\n<p><em>Programmer<\/em> laukelyje USBasp pasirinkimo nebuvo, tod\u0117l j\u012f \u012fved\u017eiau ranka.<br \/>\nSpustelnam <em>Open<\/em>, pasirenkame paruo\u0161ta HEX byl\u0105 ir j\u0105 atveriame. Atv\u0117rus spustelnam mygtuk\u0105 kur parodyta mikroschma su rodykle nukreipta \u012f ja. Jei viskas gerai sujungta turite pamatyti \u0161tai tok\u012f (ar pana\u0161\u0173) rezultat\u0105:<br \/>\n<a href=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2012\/05\/gnome-avrdude_uzprogramuotas.jpg\" rel=\"lightbox[512]\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2012\/05\/gnome-avrdude_uzprogramuotas.jpg\" alt=\"\" title=\"gnome-avrdude_uzprogramuotas\" width=\"573\" height=\"484\" class=\"alignnone size-full wp-image-528\" srcset=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2012\/05\/gnome-avrdude_uzprogramuotas.jpg 573w, http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2012\/05\/gnome-avrdude_uzprogramuotas-300x253.jpg 300w\" sizes=\"(max-width: 573px) 100vw, 573px\" \/><\/a><\/p>\n<p>Programa i\u0161karto pradeda veikti. Auk\u0161\u010diau pateiktas kodo rezultatas youtubo filmuke (atsipra\u0161au u\u017e kokybe, neturiu jokio geriau filmuojan\u010dio aparato):<br \/>\n<iframe loading=\"lazy\" width=\"480\" height=\"360\" src=\"http:\/\/www.youtube.com\/embed\/mQ-wxJlkEoE\" frameborder=\"0\" allowfullscreen><\/iframe><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Apie \u0161it\u0105 g\u0117r\u012f skai\u010diau jau senokai, bet niekaip neprisiruo\u0161davau. Bet i\u0161au\u0161o ta diena. Pirmiausia u\u017esisakiau programatori\u0173. Kainavo pilnai su siuntimu ~28LTL. Pirktas i\u0161 ebay, USBasp klonas (http:\/\/www.fischl.de\/usbasp\/). Atkeliavus programatoriui jau gumos netempiau, nes labai nor\u0117josi i\u0161bandyti kaip viskas veikia. Susipirkau ko reikia ir susilitavau schem\u0105 pateikta elektronika.lt puslapyje. Pora pakeitim\u0173, tai \u0161viesos diodai jungti ne &#8230; <a title=\"Pirmi \u017einksniai su ATmega16\" class=\"read-more\" href=\"http:\/\/www.dinux.lt\/blog\/?p=512\" aria-label=\"More on Pirmi \u017einksniai su ATmega16\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_mi_skip_tracking":false},"categories":[11],"tags":[],"_links":{"self":[{"href":"http:\/\/www.dinux.lt\/blog\/index.php?rest_route=\/wp\/v2\/posts\/512"}],"collection":[{"href":"http:\/\/www.dinux.lt\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.dinux.lt\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.dinux.lt\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.dinux.lt\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=512"}],"version-history":[{"count":15,"href":"http:\/\/www.dinux.lt\/blog\/index.php?rest_route=\/wp\/v2\/posts\/512\/revisions"}],"predecessor-version":[{"id":543,"href":"http:\/\/www.dinux.lt\/blog\/index.php?rest_route=\/wp\/v2\/posts\/512\/revisions\/543"}],"wp:attachment":[{"href":"http:\/\/www.dinux.lt\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=512"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.dinux.lt\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=512"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.dinux.lt\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=512"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}