{"id":941,"date":"2015-03-17T19:52:20","date_gmt":"2015-03-17T19:52:20","guid":{"rendered":"http:\/\/blog.xbot.es\/?p=941"},"modified":"2015-03-18T17:50:29","modified_gmt":"2015-03-18T17:50:29","slug":"atmelstudio-y-attiny-ectiny841-2-programacion","status":"publish","type":"post","link":"http:\/\/blog.xbot.es\/?p=941","title":{"rendered":"AtmelStudio y Attiny &#8211; ecTiny841 (2-programacion)"},"content":{"rendered":"<p>Como hacer un programa para Attiny con <a href=\"http:\/\/www.atmel.com\/tools\/atmelstudio.aspx\" target=\"_blank\">Atmel Studio<\/a> no es tan complicado como pudiera parecer, es lo que tiene haber trabajado con PICs durante tant\u00edsimos a\u00f1os.<\/p>\n<p>Esta es una actualizaci\u00f3n de la \u00abguia-burro\u00bb que me hice cuando aprend\u00ed, en este caso basandonos en este circuito con <a href=\"http:\/\/blog.xbot.es\/?p=913\" target=\"_blank\">ecTiny841<\/a>.<\/p>\n<p><a href=\"http:\/\/blog.xbot.es\/wp-content\/uploads\/2015\/03\/IMG_20150314_2017021.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-958\" src=\"http:\/\/blog.xbot.es\/wp-content\/uploads\/2015\/03\/IMG_20150314_2017021.jpg\" alt=\"IMG_20150314_201702\" width=\"600\" height=\"450\" srcset=\"http:\/\/blog.xbot.es\/wp-content\/uploads\/2015\/03\/IMG_20150314_2017021.jpg 600w, http:\/\/blog.xbot.es\/wp-content\/uploads\/2015\/03\/IMG_20150314_2017021-300x225.jpg 300w, http:\/\/blog.xbot.es\/wp-content\/uploads\/2015\/03\/IMG_20150314_2017021-400x300.jpg 400w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/a><\/p>\n<p>Microcontrolador: Attiny841 (oscilador interno)<br \/>\nPines A0,A1,A2,A3 &#8211; leds<br \/>\nPin A7 &#8211; pulsador.<br \/>\nAlimentacion: 3.3V<\/p>\n<hr \/>\n<p>&nbsp;<\/p>\n<p>Abrimos Atmel Studio<br \/>\n<a href=\"http:\/\/blog.xbot.es\/wp-content\/uploads\/2015\/03\/AtmelStudio62.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-944\" src=\"http:\/\/blog.xbot.es\/wp-content\/uploads\/2015\/03\/AtmelStudio62.png\" alt=\"AtmelStudio62\" width=\"108\" height=\"74\" \/><\/a><\/p>\n<p>Creamos un nuevo proyecto.<br \/>\n<a href=\"http:\/\/blog.xbot.es\/wp-content\/uploads\/2015\/03\/AtmelStudio62_01.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-945\" src=\"http:\/\/blog.xbot.es\/wp-content\/uploads\/2015\/03\/AtmelStudio62_01.png\" alt=\"AtmelStudio62_01\" width=\"738\" height=\"636\" srcset=\"http:\/\/blog.xbot.es\/wp-content\/uploads\/2015\/03\/AtmelStudio62_01.png 738w, http:\/\/blog.xbot.es\/wp-content\/uploads\/2015\/03\/AtmelStudio62_01-300x259.png 300w, http:\/\/blog.xbot.es\/wp-content\/uploads\/2015\/03\/AtmelStudio62_01-348x300.png 348w\" sizes=\"auto, (max-width: 738px) 100vw, 738px\" \/><\/a><\/p>\n<p>Elegimos el tipo de proyecto, le damos nombre y carpeta donde guardarlo.<br \/>\n<a href=\"http:\/\/blog.xbot.es\/wp-content\/uploads\/2015\/03\/AtmelStudio62_02.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-946\" src=\"http:\/\/blog.xbot.es\/wp-content\/uploads\/2015\/03\/AtmelStudio62_02.png\" alt=\"AtmelStudio62_02\" width=\"800\" height=\"660\" srcset=\"http:\/\/blog.xbot.es\/wp-content\/uploads\/2015\/03\/AtmelStudio62_02.png 800w, http:\/\/blog.xbot.es\/wp-content\/uploads\/2015\/03\/AtmelStudio62_02-300x248.png 300w, http:\/\/blog.xbot.es\/wp-content\/uploads\/2015\/03\/AtmelStudio62_02-364x300.png 364w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/p>\n<p>Ahora elegimos microcontrolador.<br \/>\n<a href=\"http:\/\/blog.xbot.es\/wp-content\/uploads\/2015\/03\/AtmelStudio62_03.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-947\" src=\"http:\/\/blog.xbot.es\/wp-content\/uploads\/2015\/03\/AtmelStudio62_03.png\" alt=\"AtmelStudio62_03\" width=\"766\" height=\"531\" srcset=\"http:\/\/blog.xbot.es\/wp-content\/uploads\/2015\/03\/AtmelStudio62_03.png 766w, http:\/\/blog.xbot.es\/wp-content\/uploads\/2015\/03\/AtmelStudio62_03-300x208.png 300w, http:\/\/blog.xbot.es\/wp-content\/uploads\/2015\/03\/AtmelStudio62_03-433x300.png 433w\" sizes=\"auto, (max-width: 766px) 100vw, 766px\" \/><\/a><\/p>\n<p>Ya tenemos un programa en blanco.<br \/>\n<a href=\"http:\/\/blog.xbot.es\/wp-content\/uploads\/2015\/03\/AtmelStudio62_04.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-948\" src=\"http:\/\/blog.xbot.es\/wp-content\/uploads\/2015\/03\/AtmelStudio62_04.png\" alt=\"AtmelStudio62_04\" width=\"738\" height=\"636\" srcset=\"http:\/\/blog.xbot.es\/wp-content\/uploads\/2015\/03\/AtmelStudio62_04.png 738w, http:\/\/blog.xbot.es\/wp-content\/uploads\/2015\/03\/AtmelStudio62_04-300x259.png 300w, http:\/\/blog.xbot.es\/wp-content\/uploads\/2015\/03\/AtmelStudio62_04-348x300.png 348w\" sizes=\"auto, (max-width: 738px) 100vw, 738px\" \/><\/a><\/p>\n<p>En el que sustituiremos todo el c\u00f3digo fuente por este otro:<\/p>\n<hr \/>\n<p>&nbsp;<\/p>\n<p>#include &lt;avr\/io.h&gt;<br \/>\n#define F_CPU 8000000UL\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/clock frequency<br \/>\n#include &lt;util\/delay.h&gt;<\/p>\n<p>int main(void)<br \/>\n{<br \/>\n\/\/A0-A5 salida A6 y A7 entrada<br \/>\nDDRA = 0b00111111;<\/p>\n<p>while(1)<br \/>\n{<br \/>\nif (bit_is_clear(PINA,7)) \/\/ mientras PINA7 a nivel bajo<br \/>\n{ PORTA = 0b00000000; } \/\/ apago todo<br \/>\nelse<br \/>\n{\u00a0 \/\/ secuencia \u00abcoche fantastico\u00bb<br \/>\nPORTA = 0b00000001;<br \/>\n_delay_ms(150);<br \/>\nPORTA = 0b00000010;<br \/>\n_delay_ms(150);<br \/>\nPORTA = 0b00000100;<br \/>\n_delay_ms(150);<br \/>\nPORTA = 0b00001000;<br \/>\n_delay_ms(150);<br \/>\nPORTA = 0b00000100;<br \/>\n_delay_ms(150);<br \/>\nPORTA = 0b00000010;<br \/>\n_delay_ms(150);<br \/>\n}<br \/>\n}<br \/>\n}<\/p>\n<hr \/>\n<p>&nbsp;<\/p>\n<p>Una vez pegado, compilamos (Built Solution) y revisamos la secci\u00f3n \u00aboutput\u00bb para verificar que la compilaci\u00f3n ha sido correcta.<br \/>\n<a href=\"http:\/\/blog.xbot.es\/wp-content\/uploads\/2015\/03\/AtmelStudio62_05.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-949\" src=\"http:\/\/blog.xbot.es\/wp-content\/uploads\/2015\/03\/AtmelStudio62_05.png\" alt=\"AtmelStudio62_05\" width=\"738\" height=\"636\" srcset=\"http:\/\/blog.xbot.es\/wp-content\/uploads\/2015\/03\/AtmelStudio62_05.png 738w, http:\/\/blog.xbot.es\/wp-content\/uploads\/2015\/03\/AtmelStudio62_05-300x259.png 300w, http:\/\/blog.xbot.es\/wp-content\/uploads\/2015\/03\/AtmelStudio62_05-348x300.png 348w\" sizes=\"auto, (max-width: 738px) 100vw, 738px\" \/><\/a><\/p>\n<p>En este momento ya tenemos un fichero .HEX ubicado en la carpeta donde creamos el programa (ver primeros pasos de este tutorial)\u00a0 que podemos grabar en el microcontrolador, para grabarlo existen diversas opciones ya sea por que tengamos un grabador integrado con el IDE de AtmelStudio o si por el contrario tenemos un grabador externo, como ejemplo:<\/p>\n<p>&#8211; Externo: <a href=\"http:\/\/blog.xbot.es\/?p=921\" target=\"_blank\">Grabaci\u00f3n con AVRDudeSS y ArduinoISP<\/a>.<br \/>\n&#8211; Integrado:<a href=\"http:\/\/blog.xbot.es\/?p=952\" target=\"_blank\"> Grabaci\u00f3n con MKII y AtmelStudio<\/a>.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Como hacer un programa para Attiny con Atmel Studio no es tan complicado como pudiera parecer, es lo que tiene haber trabajado con PICs durante tant\u00edsimos a\u00f1os. Esta es una actualizaci\u00f3n de la \u00abguia-burro\u00bb que me hice cuando aprend\u00ed, en &hellip; <a href=\"http:\/\/blog.xbot.es\/?p=941\">Sigue leyendo <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[33,31,35],"tags":[],"class_list":["post-941","post","type-post","status-publish","format-standard","hentry","category-atmel","category-attiny","category-ectiny841"],"_links":{"self":[{"href":"http:\/\/blog.xbot.es\/index.php?rest_route=\/wp\/v2\/posts\/941","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.xbot.es\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.xbot.es\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.xbot.es\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.xbot.es\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=941"}],"version-history":[{"count":8,"href":"http:\/\/blog.xbot.es\/index.php?rest_route=\/wp\/v2\/posts\/941\/revisions"}],"predecessor-version":[{"id":961,"href":"http:\/\/blog.xbot.es\/index.php?rest_route=\/wp\/v2\/posts\/941\/revisions\/961"}],"wp:attachment":[{"href":"http:\/\/blog.xbot.es\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=941"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.xbot.es\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=941"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.xbot.es\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=941"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}