Microcontrolador: O microcontrolador pode ser denominado como um computador com chip único que inclui vários periféricos como RAM, EEPROM, temporizadores etc., necessários para executar alguma tarefa predefinida.
Figura 1: Diagrama de blocos mostrando a arquitetura do microcontrolador AVR
Isso significa que microcontrolador é outro nome para computador…? A resposta é não!
O computador, por um lado, é projetado para executar todas as tarefas de uso geral em uma única máquina, como você pode usar um computador para executar um software para realizar cálculos ou pode usar um computador para armazenar algum arquivo multimídia ou para acessar a Internet através do navegador, enquanto os microcontroladores se destinam a executar apenas tarefas específicas, por exemplo, desligar automaticamente o AC quando a temperatura ambiente cai para um determinado limite definido e ligá-lo novamente quando a temperatura sobe acima do limite definido.
Existem várias famílias populares de microcontroladores que são usados em diferentes aplicações de acordo com sua capacidade e viabilidade para executar a tarefa desejada, os mais comuns são 8051, AVR e microcontroladores PIC. Neste artigo apresentaremos a você AVR família de microcontroladores.
História do AVR
AVR foi desenvolvido no ano de 1996 pela Atmel Corporation. A arquitetura de AVR foi desenvolvido por Alf-Egil Bogen e Vegard Wollan. AVR deriva seu nome de seus desenvolvedores e significa AI-Egil Bogen VEgard Wollan RMicrocontrolador ISCtambém conhecido como Aavançado Vvirtual RISC. O AT90S8515 foi o primeiro microcontrolador baseado em Arquitetura AVR entretanto, o primeiro microcontrolador a chegar ao mercado comercial foi o AT90S1200 no ano de 1997.
Microcontroladores AVR estão disponíveis em três categorias:
1. TinyAVR – Menos memória, tamanho pequeno, adequado apenas para aplicações mais simples
2. MegaAVR – São os mais populares, com boa quantidade de memória (até 256 KB), maior número de periféricos embutidos e adequados para aplicações moderadas a complexas.
3. XmegaAVR – Utilizado comercialmente para aplicações complexas, que requerem grande memória de programa e alta velocidade.
A tabela a seguir compara a série de microcontroladores AVR mencionada acima:
Nome da série
|
Alfinetes
|
Memória flash
|
Característica especial
|
TinyAVR
|
6-32
|
0,5-8KB
|
Pequeno em tamanho
|
MegaAVR
|
28-100
|
4-256 KB
|
Periféricos estendidos
|
XmegaAVR
|
44-100
|
16-384 KB
|
DMA, sistema de eventos incluído
|
Importância do AVR
O que há de especial no AVR?
Eles são rápidos: Microcontrolador AVR executa a maioria das instruções em um único ciclo de execução. Os AVRs são cerca de 4 vezes mais rápidos que os PICs, consomem menos energia e podem ser operados em diferentes modos de economia de energia. Vamos fazer a comparação entre as três famílias de microcontroladores mais utilizadas.
|
8051
|
FOTO
|
AVR
|
VELOCIDADE
|
Lento
|
Moderado
|
Rápido
|
MEMÓRIA
|
Pequeno
|
Grande
|
Grande
|
ARQUITETURA
|
CISC
|
RISC
|
RISC
|
ADC
|
Não presente
|
Embutido
|
Embutido
|
Temporizadores
|
Embutido
|
Embutido
|
Embutido
|
Canais PWM
|
Não presente
|
Embutido
|
Embutido
|
AVR é um microcontrolador de 8 bits pertencente à família de computadores com conjunto de instruções reduzido (RISC). Na arquitetura RISC, o conjunto de instruções do computador não é apenas em menor número, mas também mais simples e rápido em operação. O outro tipo de categorização é CISC (Complex Instruction Set Computers). Clique para descobrir as diferenças entre RISC e CISC. Exploraremos mais sobre isso quando aprendermos sobre a arquitetura dos microcontroladores AVR na seção seguinte.
Vamos ver o que tudo isso significa. O que é 8 bits? Isso significa que o microcontrolador é capaz de transmitir e receber dados de 8 bits. Os registradores de entrada/saída disponíveis são de 8 bits. Os controladores da família AVR possuem arquitetura baseada em registradores, o que significa que tanto os operandos de uma operação são armazenados em um registrador quanto o resultado da operação também é armazenado em um registrador. A figura a seguir mostra um exemplo simples executando a operação OR entre dois registradores de entrada e armazenando o valor no registrador de saída.
Figura 2: Diagrama de blocos mostrando um exemplo simples de execução de operação OR entre dois registros de entrada e armazenamento de valor no registro de saída
A CPU obtém valores de dois registradores de entrada INPUT-1 e INPUT-2, executa a operação lógica e armazena o valor no registrador OUTPUT. Tudo isso acontece em 1 ciclo de execução.
Em nossa jornada com o AVR estaremos trabalhando no microcontrolador Atmega16, que é um IC de 40 pinos e pertence à categoria megaAVR de AVR família. Alguns dos recursos do Atmega16 são:
· 16 KB de memória Flash
· 1 KB de SRAM
· 512 bytes de EEPROM
· Disponível em DIP de 40 pinos
· ADC de 8 canais e 10 bits
· Dois temporizadores/contadores de 8 bits
· Um temporizador/contador de 16 bits
· 4 canais PWM
· Programador de sistema (ISP)
· Série USART
· Interface SPI
· Comparador digital para analógico.
Arquitetura do AVR
Os microcontroladores AVR são baseados na arquitetura RISC avançada e consistem em registros de trabalho de uso geral de 32 x 8 bits. Dentro de um único ciclo de clock, o AVR pode receber entradas de dois registradores de uso geral e colocá-las na ALU para realizar a operação solicitada, e transferir de volta o resultado para um registrador arbitrário. A ALU pode realizar operações aritméticas e lógicas
sobre as entradas do registrador ou entre o registrador e uma constante. Operações de registro único, como obter um complemento, também podem ser executadas na ALU. Podemos ver que o AVR não possui nenhum registro como acumulador como na família de microcontroladores 8051; as operações podem ser realizadas entre qualquer um dos registros e podem ser armazenadas em qualquer um deles.
O AVR segue o formato da Arquitetura Harvard, no qual o processador é equipado com memórias e barramentos separados para informações do Programa e dos Dados. Aqui, enquanto uma instrução está sendo executada, a próxima instrução é pré-buscada da memória do programa.
Figura 3: Diagrama de blocos da arquitetura de memória no AVR
Como o AVR pode executar a execução de ciclo único, isso significa que o AVR pode executar 1 milhão de instruções por segundo se a frequência do ciclo for 1MHz. Quanto maior for a frequência de operação do controlador, maior será a sua velocidade de processamento. Precisamos otimizar o consumo de energia com a velocidade de processamento e, portanto, selecionar a frequência operacional de acordo.
Existem dois sabores para o microcontrolador Atmega16:
1. Atmega16:- A faixa de frequência operacional é de 0 a 16 MHz.
2. Atmega16L:- A faixa de frequência operacional é de 0 a 8 MHz.
Se estivermos usando um cristal de 8 MHz = 8 x 106 Hertz = 8 milhões de ciclos, então o AVR pode executar 8 milhões de instruções.
Convenção de nomes.!
O NO refere-se à Atmel, o fabricante, Mega significa que o microcontrolador pertence à categoria MegaAVR, 16 significa a memória do controlador, que é de 16 KB.
Figura 4: Convenção de nomenclatura do microcontrolador AVR
Diagrama de Arquitetura: Atmega16
Os pontos a seguir explicam os blocos de construção do Arquitetura Atmega16:
· Portas de E/S: Atmega16 possui quatro (PORTA, PORTB, PORTC e PORTD) 8 bits portas de entrada-saída.
· Oscilador Calibrado Interno: O Atmega16 está equipado com um oscilador interno para acionar seu relógio. Por padrão, o Atmega16 está configurado para operar com oscilador interno calibrado de 1 MHz. A frequência máxima do oscilador interno é 8Mhz. Alternativamente, o ATmega16 pode ser operado usando um oscilador de cristal externo com frequência máxima de 16MHz. Neste caso você precisa modificar os bits do fusível. (Fuse Bits serão explicados em um tutorial separado).
· Figura 5: Diagrama de blocos explicando a arquitetura AVR
Interface ADC: Atmega16 está equipado com um ADC de 8 canais (Conversor analógico para digital) com resolução de 10 bits. O ADC lê a entrada analógica, por exemplo, uma entrada de sensor e a converte em informação digital que é compreensível pelo microcontrolador.
· Temporizadores/Contadores: Atmega16 consiste em dois temporizadores/contadores de 8 bits e um de 16 bits. Os temporizadores são úteis para gerar ações de precisão, por exemplo, criar atrasos entre duas operações.
· Temporizador de vigilância: O temporizador Watchdog está presente com oscilador interno. O temporizador Watchdog monitora e redefine continuamente o controlador se o código ficar preso em qualquer ação de execução por mais do que um intervalo de tempo definido.
· Interrupções: O Atmega16 consiste em 21 fontes de interrupção, das quais quatro são externas. O restante são interrupções internas que suportam periféricos como USART, ADC, Timers etc.
· USART: Receptor e transmissor universal síncrono e assíncrono interface está disponível para interface com dispositivo externo capaz de se comunicar serialmente (transmissão de dados bit a bit).
·
Arquitetura Continuada
Registros de uso geral: O Atmega16 é equipado com 32 registradores de uso geral que são acoplados diretamente à Unidade Lógica Aritmética (ALU) da CPU.
· Memória: Atmega16 consiste em três seções de memória diferentes:
1. Flash EEPROM: Flash EEPROM ou memória flash simples é usada para armazenar o programa despejado ou gravado pelo usuário no microcontrolador. Pode ser facilmente apagado eletricamente como uma única unidade. A memória flash não é volátil, ou seja, retém o programa mesmo se a energia for cortada. Atmega16 está disponível com 16 KB de EEPROM Flash programável no sistema.
2. EEPROM endereçável por byte: Esta também é uma memória não volátil usada para armazenar dados como valores de certas variáveis. Atmega16 possui 512 bytes de EEPROM, esta memória pode ser útil para armazenar o código de fechadura se estivermos projetando uma aplicação como fechadura eletrônica.
3. SRAM: Memória estática de acesso aleatório, esta é a memória volátil do microcontrolador, ou seja, os dados são perdidos assim que a energia é desligada. Atmega16 está equipado com 1 KB de SRAM interna. Uma pequena porção da SRAM é reservada para registros de uso geral usados pela CPU e outra parte para os subsistemas periféricos do microcontrolador.
· ISP: A família de controladores AVR tem Em sistema programável Memória Flash que pode ser programada sem retirar o IC do circuito, o ISP permite reprogramar o controlador enquanto ele está no circuito de aplicação.
· IPS: Interface periférica serial, A porta SPI é usada para comunicação serial entre dois dispositivos em uma fonte de relógio comum. A taxa de transmissão de dados do SPI é maior que a do USART.
· TWI: Interface de dois fios (TWI) pode ser usado para configurar uma rede de dispositivos, muitos dispositivos podem ser conectados através da interface TWI formando uma rede, os dispositivos podem transmitir e receber simultaneamente e ter seu próprio endereço exclusivo.
· DAC: Atmega16 também está equipado com um Conversor Digital para Analógico (DAC) que pode ser usada para ação reversa executada pelo ADC. O DAC pode ser usado quando há necessidade de converter um sinal digital em sinal analógico.
Família MegaAVR
Vários microcontroladores da série MegaAVR:
ATmega8 e Atmega32 são outros membros dos controladores da série MegaAVR. Eles são bastante semelhantes ao ATmega16 em arquitetura. Os controladores MegaAVR da versão de baixo consumo também estão disponíveis nos mercados. A tabela a seguir mostra a comparação entre os diferentes membros da família MegaAVR:
Nome da peça
|
ROM
|
BATER
|
EEPROM
|
Pinos I/0
|
Cronômetro
|
Interrupções
|
Operação Tensão
|
Frequência de operação
|
Embalagem
|
ATmega8
|
8 KB
|
1 KB
|
512B
|
23
|
3
|
19
|
4,5-5,5 V
|
0-16MHz
|
28
|
ATmega8L
|
8 KB
|
1 KB
|
512B
|
23
|
3
|
19
|
2,7-5,5V
|
0-8MHz
|
28
|
ATmega16
|
16 KB
|
1 KB
|
512B
|
32
|
3
|
21
|
4,5-5,5 V
|
0-16MHz
|
40
|
ATmega16L
|
16 KB
|
1 KB
|
512B
|
32
|
3
|
21
|
2,7-5,5V
|
0-8MHz
|
40
|
ATmega32
|
32 KB
|
2 KB
|
1 KB
|
32
|
3
|
21
|
4,5-5,5V
|
0-16MHz
|
40
|
ATmega32L
|
32 KB
|
2 KB
|
1 KB
|
32
|
3
|
21
|
2,7-5,5V
|
0-8MHz
|
40
|