Table of Contents

Introdução

ATmega128 em encapsulamento SMD (TQFP64)

O AVR é uma série de microcontroladores 8-bit RISC produzidos pela Atmel. Este microcontrolador é baseado na arquitetura de Harvard e como tal contém um conjuntos de memória separados para dados e programa. Para o programa, este inclui uma memória flash que pode ser reescrita. No caso dos dados, este inclui uma memória estática SRAM e uma memória EEPROM. A frequência de funcionamento deste microcontrolador é geralmente de 16 MHz e a sua performance aproxima-se à de 1 MIPS por cada ciclo de 1-megahertz.

A produção de microcontroladores AVR iniciou-se no ano de 1997 e atualmente o AVR é uma das séries de microcontroladores mais populares entre engenheiros e amadores de eletrónica, graças às suas ferramentas de desenvolvimento gratuitas, à diversidade de periféricos incluídos e ao seu baixo consumo energético. Nos dias que correm existe uma outra razão para a preferência de microcontroladores AVR, a inúmera quantidade de informação e tutoriais de projetos que foram desenvolvidos ao longo dos anos. A tecnologia AVR é inevitavelmente antiga, mas para se manter em competição, a Atmel tem introduzido novas versões dos microcontroladores AVR com periféricos mais atuais e com barramentos de 16 e 32-bits, sendo que as versões de 16-bit constituem a natural evolução das séries compatíveis de microcontroladores de 8-bits XMega e os de 32-bit pertencem à nova família da série AVR32.

Baseado no tipo de aplicação, existem variados tipos de microcontroladores AVR, cada um com a sua diferente configuração. A maioria dos AVRs pertencem à série megaAVR, que possuem uma vasta memória de programa. Para complementar a série megaAVR, existe também a série tinyAVR, que possuem um tamanho mais reduzido e consequentemente menos funcionalidades. A adicionar a estas, existem também diferentes séries de microcontroladores desenhados especificamente com o suporte de comunicações USB, CAN, ZigBee e controlo de automação, iluminação e dispositivos portáteis com baixo consumo energético.

O texto que se segue descreve as principais características da série megaAVR de microcontroladores, servindo-se como exemplo do mais popular microcontrolador nesta série, o ATmega128. Este microcontrolador é também a base de funcionamento do nosso HomeLab kit. Geralmente, em toda a série de microcontroladores AVR, os nomes de registos, o seu significado e princípio de funcionamento são organizados de maneira a que os exemplos aqui descritos sejam facilmente traduzidos e utilizados em outras versões destes microcontroladores com o mínimo de modificações. Contudo a principal diferença entre estes, está nos periféricos que cada um possui. Os exemplos aqui descritos estão escritos nas linguagens de programação Assembly e C, utilizando a biblioteca AVR LibC.

Aspeto físico

ATmega32 em encapsulamento 40-pin DIP

Tal como todos os outros microcontroladores, também o AVR é distribuído num encapsulamento standard. O encapsulamento mais tradicional é o DIP (Dual in-line package) (também às vezes chamado de DIL). Este tipo de encapsulamento é vulgarmente apelidado de “encapsulamento com patas” - isto é, todos os pinos estão extrudidos do chip com patas com cerca de 5 mm de comprimento. Esta é a escolha mais sensata para aplicações e protótipos de amadores, isto porque existem sockets disponíveis para a sua aplicação, por forma a tornar a sua substituição simples, em caso de dano ou mal funcionamento. Por outro lado, as patas são também a maior desvantagem deste tipo de encapsulamento, porque estas requerem que sejam realizados furos numa placa de circuito para a sua montagem.

Os encapsulamentos de montagem em superfície (SMT, ou também chamado de SMD) são muito mais compactos, porque os seus pinos foram construídos e desenhados por forma a serem diretamente soldados na placa sem necessidade deste a penetrar. Os chips SMT são finos, em formatos retangulares do tamanho de pequenas moedas e com pinos com aproximadamente 1 mm de comprimento. Para tal, são necessárias habilidades e ferramentas mais técnicas para a sua montagem.

Os AVRs estão assim disponíveis tanto em encapsulamentos DIP como SMT. O layout dos pinos foi desenhado a torná-lo o mais lógico eletricamente possível. Por exemplo, nos encapsulamentos maiores, os pinos de massa e alimentação estão dispostos nas várias laterais do microcontrolador, os pinos do oscilador externo estão situados junto ao pino de massa, os pinos de barramento estão dispostos em ordem numérica, os pinos das várias interface de comunicação estão agrupados, etc. Os pinos dos AVRs são compatíveis com os níveis de tensão lógicos TTL/CMOS. Com a alimentação a 5 V, os valores de 0 a 1 V correspondem ao valor lógico 0, que também é chamado de zero, null, low, massa ou GND. Com a mesma alimentação, os valores entre 3 até 5.5 V correspondem ao valor lógico 1, também chamado de high. Esta larga gama de nível de tensão apenas se aplica às entradas do microcontrolador. A tensão de saída de um pino sem carga apenas possui os valores 0 V ou de tensão de alimentação, dependendo do estado do pino. Correspondentemente os valores de tensão tolerados para os canais de ADC vão de 0 a 5.5 V.

ATmega128

Para melhor compreensão dos exemplos que se seguem, apresenta-se o esquemático do pinout de um ATmega128 (encapsulamento SMT). Junto a cada pino, existe um texto com o seu número correspondente, função principal e funções secundárias entre parêntesis. Os pinos de alimentação são o GND e o VCC. O AVCC e o AREF são os pinos de alimentação do conversor analógico-digital (ADC) e de referência respetivamente. O XTAL1 e XTAL2 servem para a ligação de um cristal oscilador externo, um ressonador ou um gerador de clock. Os pinos PB0 a PG4 correspondem aos vários bits dos barramentos de entrada/saída (I/O). As funções secundárias atribuídas a cada pino serão descritas nos seus capítulos correspondentes.

Pinout do ATmega128