{"id":615,"date":"2019-09-15T22:55:05","date_gmt":"2019-09-15T22:55:05","guid":{"rendered":"http:\/\/visiorob.com.br\/?p=615"},"modified":"2019-09-15T22:55:05","modified_gmt":"2019-09-15T22:55:05","slug":"introducao-ao-microcontrolador-atmega328p","status":"publish","type":"post","link":"https:\/\/visiorob.com.br\/index.php\/2019\/09\/15\/introducao-ao-microcontrolador-atmega328p\/","title":{"rendered":"Introdu\u00e7\u00e3o ao Microcontrolador ATMega328P"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\" style=\"text-align:left\">A demanda por aparatos tecnol\u00f3gicos de boa qualidade, alto desempenho, baixo custo e de f\u00e1cil acesso tem tomado conta de todo o mundo. Contudo a utiliza\u00e7\u00e3o de microcontroladores tem favorecido a realiza\u00e7\u00e3o destes projetos por oferecer equipamentos de alta qualidade que alteram o seu comportamento ao alterar o seu programa.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dessa forma, os microcontroladores t\u00eam possibilitado o desenvolvimento de equipamentos que atendam as necessidades de projetos e que sejam facilmente manipul\u00e1veis para atender cada necessidade, para isso a tecnologia apresenta, todos os dias, vers\u00f5es melhores de diversos produtos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Isso n\u00e3o poderia ser diferente na fam\u00edlia&nbsp;Arduino, j\u00e1 que \u00e9 uma ferramenta excelente e popular capaz de executar instru\u00e7\u00f5es com diversos graus de complexidade, gra\u00e7as ao microprocontrolador que est\u00e1 acoplado na placa.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O Arduino do tipo, principalmente, Uno e Nano conta com um microcontrolador chamado ATmega328P, que podemos classific\u00e1-lo como o processador central da placa, ele \u00e9 pertencente a fam\u00edlia AVR lan\u00e7ada pela Atmel e possui uma arquitetura de 8 bits CMOS com arquitetura.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ele conta com 23 entradas\/sa\u00eddas program\u00e1veis, sendo capaz de executar programas dos mais simples, como por exemplo piscar um LED, at\u00e9 programas complexos, como sistemas aut\u00f4nomos e rob\u00f4s. Al\u00e9m disso, esse microcontrolador possui \u00e9 a capacidade de operar com baixo consumo de pot\u00eancia<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Pinos do ATmega328P<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A pinagem do microcontrolador descreve as conex\u00f5es que ele possui a fim de interagir com o est\u00edmulos externos, tanto recebendo sinais como emitindo sinais. A Figura 1 apresenta uma imagem ilustrativa do ATmega328P e seus pinos:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"803\" height=\"527\" src=\"https:\/\/visiorob.com.br\/wp-content\/uploads\/2019\/06\/Atmega328p-1.jpg\" alt=\"Ilustra\u00e7\u00e3o do ATMega328P e a descri\u00e7\u00e3o de todos os seus pinos\" class=\"wp-image-637\"\/><figcaption>Figura 1 &#8211; Descri\u00e7\u00e3o da pinagem do ATMega328P.<br>Fonte: <a href=\"http:\/\/ww1.microchip.com\/downloads\/en\/DeviceDoc\/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf\">http:\/\/ww1.microchip.com\/downloads\/en\/DeviceDoc\/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf<\/a><\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Entendendo cada pino:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>VCC:<\/strong> Alimenta\u00e7\u00e3o do microcontrolador, aceita valores de 2,7V a 5,5V.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>GND:<\/strong> Terra.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>AREF:<\/strong> Pino de refer\u00eancia de tens\u00e3o m\u00e1xima para o conversor de sinais anal\u00f3gico para digital (ADC).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>AVCC:<\/strong> Pino de alimenta\u00e7\u00e3o do conversor ADC deste microcontrolador, deve ser ligado ao VCC.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>PORTB:<\/strong> Porta bidirecional de 8 bits. Os pinos correspondentes s\u00e3o o PB0 (14), PB1 (15), PB2 (16), PB3 (17), PB4 (18), PB5(19), PB6 (9) e PB7(10).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>PORTC:<\/strong> Porta bidirecional de 7 bits. Os pinos correspondentes s\u00e3o o PC0 (23), PC1 (24), PC2 (25), PC3 (26), PC4 (27), PC5 (28) e PC6 (1).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>PORTD:<\/strong> Porta bidirecional de 8 bits. Os pinos correspondentes s\u00e3o o PD0 (2), PD1 (3), PD2 (4), PD3 (5), PD4 (6), PD5 (11), PD6 (12) e PD7 (13).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Visualiza\u00e7\u00e3o real de sua posi\u00e7\u00e3o na placa Arduino Uno.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"790\" height=\"607\" src=\"http:\/\/visiorob.com.br\/wp-content\/uploads\/2019\/09\/arduino-uno-pinout.jpg\" alt=\"Descri\u00e7\u00e3o da placa Arduino Uno, realcionando os conectores da placa com os pinos do ATMega328P\" class=\"wp-image-808\"\/><figcaption>Figura 2 &#8211; ATmega328P na placa Arduino Uno.<br>Fonte: Adaptado de <a rel=\"noreferrer noopener\" href=\"https:\/\/i1.wp.com\/www.elecrom.com\/wp-content\/uploads\/2017\/01\/arduino-uno-pinout-pin-mapping.jpg?fit=848%2C637\" target=\"_blank\">https:\/\/i1.wp.com\/www.elecrom.com\/wp-content\/uploads\/2017\/01\/arduino-uno-pinout-pin-mapping.jpg?fit=848%2C637<\/a> <\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Mem\u00f3rias do microcontrolador<\/strong> ATMega328P <\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Este microcontrolador possui uma mem\u00f3ria Flash com 32 kB reprogram\u00e1vel. Como as instru\u00e7\u00f5es do ATMega328P s\u00e3o ou de 16 bites ou de 32 bites a mem\u00f3ria foi organizada em 16.000 blocos de 16 bits. Dessa forma, pode-se dizer que o maior programa suportado pelo ATMega328P \u00e9 de 16 quilo instru\u00e7\u00f5es.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A fim de fornecer seguran\u00e7a ao software a mem\u00f3ria flash \u00e9 dividida em duas partes, sendo uma parte de 0,5 kB para a cria\u00e7\u00e3o de um boot loader e o restante para o software principal (o que deve ser executado). Al\u00e9m da mem\u00f3ria flash este microcontrolador tamb\u00e9m possui uma mem\u00f3ria SRAM de 2kB e uma EEPROM de 1kB.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A SRAM pode ser entendida como o equivalente a mem\u00f3ria RAM de um computador, pois \u00e9 nela que as vari\u00e1veis do software ser\u00e3o armazenadas.  Al\u00e9m disso, algumas posi\u00e7\u00f5es de da mem\u00f3ria SRAM t\u00eam fun\u00e7\u00f5es especiais como controlar os pinos do microcontrolador. Ela \u00e9 dividida da seguinte forma:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Banco de registro, com 32 bytes;<\/li><li>Mem\u00f3ria de entrada\/sa\u00edda, de 64 bytes;<\/li><li>Mem\u00f3ria de entrada\/sa\u00edda estendida, de 160 bytes;<\/li><li>SRAM de dados, de 2048 bytes.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Todas as posi\u00e7\u00f5es da SRAM podem ser acessadas atrav\u00e9s de endere\u00e7amentos, que podem ser:  endere\u00e7amento direto, endere\u00e7amento indireto com deslocamento, endere\u00e7amento indireto, endere\u00e7amento indireto com pr\u00e9-decremento, endere\u00e7amento indireto com p\u00f3s-incremento.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por fim, a mem\u00f3ria EEPROM. Essa mem\u00f3ria tem a capacidade de guardar os dados mesmo depois de ter desligado o microcontrolador, por isso ela \u00e9 muitas vezes utilizada para guardar valores referentes a, por exemplo, calibra\u00e7\u00f5es. Entretanto a EEPROM n\u00e3o deve ser utilizada para armazenar vari\u00e1veis, pois ela tem uma limita\u00e7\u00e3o de que, cada posi\u00e7\u00e3o, permite 100.000 ciclos de grava\u00e7\u00e3o\/apagamento, al\u00e9m disso ela n\u00e3o garante o armazenamento dos dados.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A divis\u00e3o da mem\u00f3ria \u00e9 ilustrada na Figura 3.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"720\" height=\"450\" src=\"https:\/\/visiorob.com.br\/wp-content\/uploads\/2019\/06\/memoria-atmega328p-arduino.jpg\" alt=\"Ilustra\u00e7\u00e3o da distribui\u00e7\u00e3o da mem\u00f3ria do ATMega328P em: Mem\u00f3ria de programa, Mem\u00f3ria SRAM e mem\u00f3ria EEPROM\" class=\"wp-image-644\"\/><figcaption>Figura 3 &#8211; Mem\u00f3rias do ATmega328P.<br>Fonte: <a href=\"https:\/\/www.tecdicas.com\/40\/como-fazer-arduino-standalone\">https:\/\/www.tecdicas.com\/40\/como-fazer-arduino-standalone<\/a><\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Arquitetura interna do microcontrolador<\/strong> ATMega328P<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Tendo como base a arquitetura de Harvard, esse microcontrolador possui as mem\u00f3rias separadas, o que o torna capaz de executar a t\u00e9cnica Pipeline, que consiste na ideia de que enquanto uma instru\u00e7\u00e3o est\u00e1 sendo executada, a pr\u00f3xima j\u00e1 come\u00e7a a ser analisada. Desse modo o ATMega328P consegue execute suas instru\u00e7\u00f5es em um \u00fanico ciclo clock, atingindo o m\u00e1ximo de 20 MIPS (20 Milh\u00f5es de Instru\u00e7\u00f5es por Segundo) quando possui uma fonte de clock de 20 MHz.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Interrup\u00e7\u00f5es no microcontrolador<\/strong> ATMega328P <\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Em casos de mudan\u00e7a no estado de um pino, se um byte chegou na porta serial, se um temporizador transbordou e etc., s\u00e3o casos que provocam interrup\u00e7\u00f5es no microcontrolador, ou seja, ele sai do programa principal e acompanha a interrup\u00e7\u00e3o.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">As interrup\u00e7\u00f5es externas s\u00e3o desencadeadas pelo&nbsp;aumento da borda, queda da borda ou baixo n\u00edvel e s\u00e3o acionadas pelos pinos INT0 ou INT1 e os pinos  PCINT, mesmo que eles estejam configurados como sa\u00edda. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Refer\u00eancias Bibliogr\u00e1ficas: <\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/www.microchip.com\/wwwproducts\/en\/ATmega328p\">https:\/\/www.microchip.com\/wwwproducts\/en\/ATmega328p<\/a> <\/li><li><a rel=\"noreferrer noopener\" href=\"https:\/\/www.tecdicas.com\/40\/como-fazer-arduino-standalone\" target=\"_blank\">https:\/\/www.tecdicas.com\/40\/como-fazer-arduino-standalone<\/a><\/li><li><a rel=\"noreferrer noopener\" href=\"https:\/\/pt.wikipedia.org\/wiki\/ATmega328\" target=\"_blank\">https:\/\/pt.wikipedia.org\/wiki\/ATmega328<\/a><\/li><li><a rel=\"noreferrer noopener\" href=\"http:\/\/www.baudaeletronica.com.br\/microcontrolador-atmega328p.html\" target=\"_blank\">http:\/\/www.baudaeletronica.com.br\/microcontrolador-atmega328p.html<\/a>&nbsp; <\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<div class=\"mh-excerpt\"><p>A demanda por aparatos tecnol\u00f3gicos de boa qualidade, alto desempenho, baixo custo e de f\u00e1cil acesso tem tomado conta de todo o mundo. A utiliza\u00e7\u00e3o de microcontroladores tem favorecido a realiza\u00e7\u00e3o destes projetos por oferecer equipamentos de alta qualidade que alteram o seu comportamento ao alterar o seu programa.<\/p>\n<\/div>","protected":false},"author":12,"featured_media":643,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[12],"tags":[34,10,8],"class_list":["post-615","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-microprocessadores","tag-arduino","tag-atmega328p","tag-microprocessadores"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/visiorob.com.br\/index.php\/wp-json\/wp\/v2\/posts\/615","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/visiorob.com.br\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/visiorob.com.br\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/visiorob.com.br\/index.php\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/visiorob.com.br\/index.php\/wp-json\/wp\/v2\/comments?post=615"}],"version-history":[{"count":36,"href":"https:\/\/visiorob.com.br\/index.php\/wp-json\/wp\/v2\/posts\/615\/revisions"}],"predecessor-version":[{"id":832,"href":"https:\/\/visiorob.com.br\/index.php\/wp-json\/wp\/v2\/posts\/615\/revisions\/832"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/visiorob.com.br\/index.php\/wp-json\/wp\/v2\/media\/643"}],"wp:attachment":[{"href":"https:\/\/visiorob.com.br\/index.php\/wp-json\/wp\/v2\/media?parent=615"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/visiorob.com.br\/index.php\/wp-json\/wp\/v2\/categories?post=615"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/visiorob.com.br\/index.php\/wp-json\/wp\/v2\/tags?post=615"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}