Tutorial AVR   ATmega 8
39 pág.

Tutorial AVR ATmega 8


DisciplinaProj de Pesq de Eletronic3 materiais4 seguidores
Pré-visualização8 páginas
Tutorial \u2013 Microcontroladores AVR \u2013 Atmega8 
Instrumentação \u2013 UnBall 
Engenharia Mecatrônica \u2013 Universidade de Brasília 
 
 
 
Integrantes: José Oniram Limaverde 
 João Vitor Vilela 
 David Bevilaqua 
 Heyder Araújo 
 Tiago Silva 
 
12 de Abril de 2010 
 
 
Sumário 
1. Introdução 
2. Microcontrolador Atmel AVR ATmega8 
2.1 Arquitetura AVR RISC 
2.2 Memória EEPROM 
2.3 Memória Flash 
2.4 Memória SRAM 
2.5 Registradores do Avr 
3. Tipos de Variáveis 
4. Arquitetura de um Programa 
4.1 Estrutura Fundamental de um Programa 
4.2 Códigos Exemplos 
5. Registradores e Comandos I/O 
5.1 Registradores I/O 
5.2 Acesso às portas 
6. Interrupções 
6.1Funcionamento Básico 
6.2 Registradores de Controle 
6.3 Códigos Exemplos 
7. Timers/Counters 
7.1Características dos Temporizadores 
7.2 Códigos Exemplos 
8. USART 
8.1 Registradores de Controle 
8.2 Códigos Exemplos 
9. Conclusões 
10. Bibliografia 
 
1. Introdução 
Na área de Controle e Automação, a necessidade de alguma unidade de processamento se tornou 
algum imprescindível nas mais diversas aplicações. Dentre essas, os microcontroladores se destacam 
como uma alternativa de menor custo, confiabilidade satisfatória, simplicidade, menor consumo de 
energia, no entanto, com limitada capacidade de memória e processamento. 
Um microcontrolador contém um processador, acesso a memória e periféricos de entrada/saída. 
É um microprocessador que pode ser programado para funções específicas, em contraste com outros 
microprocessadores de propósito gerais (como os utilizados nos PCs). Basicamente, o uso de um 
microcontrolador consiste no processamento de dados obtidos em um de seus periféricos, tendo como 
saída outro conjunto de dados. Por exemplo, envio de dados via porta serial ou gerar uma reação no 
sistema como acender um led. 
A arquitetura de um microcontrolador em geral consiste em um núcleo de processamento, 
barramento e periféricos: 
\uf0b7 Núcleo de processamento consiste no processador de dados (cálculos, controle de fluxo 
de programa, etc) e na administração dos periféricos. 
\uf0b7 Barramento é dividido em dados e endereços, consiste nas linhas de comunicação entre o 
processador e os periféricos. 
\uf0b7 Periféricos caracterizam o conjunto de funcionalidades disponíveis pelo microcontrolador 
e são controlados pelo processador. Por exemplo, memória, porta serial, porta paralela e 
conversor AD. 
Microcontroladores são geralmente utilizados em automação e controle de produtos e 
periféricos, como sistemas de controle de motores automotivos, controles remotos, máquinas de 
escritório e residenciais, brinquedos, sistemas de supervisão, etc. Dentre os disponíveis no mercado, 
destaca-se a família de microcontroladores AVR da Atmel, em especial o modelo ATmega8, o qual 
vai ser utilizado nos projetos do grupo de Instrumentação da UnBall. 
 
 
 
 
 
 
 
 
 
2. Microcontrolador Atmel AVR ATmega8 
O ATmega8 é um microcontrolador de 8-bit com baixo consumo de tecnologia CMOS e 
arquitetura RISC. Apresenta a capacidade de executar uma instrução por ciclo de relógio devido à 
conexão direta de seus 32 registradores gerais com a unidade lógica aritmética e uma freqüência de 
funcionamento numa faixa de 0 a 20 MHz. Além disso, apesar de ser RISC, possui um grande 
número de instruções, o que permite melhor otimização do código de alto nível em linguagem C. 
Outras características que permitem a maximização do desempenho e do paralelismo são a 
arquitetura Harvard e a técnica do pipeline Além disso, destacam-se a presença de memórias Flash, 
EEPROM e SRAM, de três temporizadores/contadores e acionar interrupções. \ 
2.1 A Arquitetura AVR RISC 
A arquitetura RISC, (Reduced Instruction Set Computer), requer menos instruções que, por 
exemplo, a tradicional arquitetura CISC, permitindo que os sistemas, nela baseados, possam rodar 
mais rápido porque o microprocessador tem funções limitadas, em benefício de seu desempenho. 
O AVR utiliza o conceito de arquitetura Harvard na qual os barramentos de dados e de 
instruções são fisicamente separados. A memória de programa é executada em pipeline de dois 
estágios. Enquanto uma instrução está sendo executada, a próxima instrução é previamente buscada 
da memória de programa. Esse conceito habilita a execução de instruções em todo ciclo de clock. 
A memória de programa é do tipo flash, ou seja, com as instruções relativas de \u201cjump\u201d e \u201ccall\u201d, 
todo o espaço de endereçamento de 8 K é diretamente acessado. A maioria das instruções AVR tem 
um único formato de palavra de 16-bit. Todo endereço da memória de programa contém uma 
instrução de 32-bit. 
2.2 Memória EEPROM 
A EEPROM presente no AVR possui 512 bytes e está ligada ao barramento de dados 8-bit 
interno permitindo que possa ser escrita diretamente sobre o microcontrolador durante o processo de 
gravação ou que o próprio microcontrolador escreva os dados nas posições desta memória. O tempo 
de acesso de gravação é em média de 2,5 a 4ms, dependendo da tensão a qual é submetida. 
2.3 Memória Flash 
A memória flash ou flash ROM pode ser definida como uma EEPROM que utiliza baixas 
tensões de apagamento, e este é feito em um tempo reduzido. O apagamento da memória flash é 
extremamente rápido e, ao contrário da EEPROM, não é possível reprogramar apenas um único 
endereço, isto é, quando a memória é apagada, todos os seus endereços são zerados. O AVR 
apresenta 8 Kbytes de memória Flash Programável on-chip para armazenamento de programas. 
2.4 Memória SRAM 
As informações existentes em uma memória RAM (Random Access Memor) não são estáveis 
e, caso não sejam salvas fisicamente, são perdidas ao se desligar o computador. Os 608 endereços 
baixos pertencem às alocações da Memória de Dados do Register File, à Memória de I/O e a SRAM 
interna. Os primeiros 96 endereços representam o Register File + Memória de I/O, e os próximos 512 
endereços a SRAM interna. 
2.5 Registradores do AVR 
Uma característica básica é a presença de um grupo de registradores internos. A arquitetura 
AVR, apresenta 32 registradores de 8 bits, que podem ser manipulados tanto para leitura como para 
escrita, como 16 palavras de 16-bit. Há também os registradores de I/O, os quais são em número de 
64 e podem ser endereçados diretamente em instruções de apenas um ciclo de clock. 
O grupo de instrumentação propõem o desenvolvimento de um tutorial sobre as diversas 
funcionalidades que o ATmega8 pode oferecer para o usuário. Além disso, introduzir alguns 
conhecimentos básicos sobre a arquitetura de um programa e sobre comandos de entrada/saída. 
A partir desse tutorial, o grupo acredita ser possível que os próximos integrantes do mesmo 
possam adquirir informações importantes para manter a continuação dos projetos em 
desenvolvimento. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3. Tipos de Variáveis 
Para fazer o processamento, muitas vezes é necessário uso de variáveis para armazenar valores a 
serem usados posteriormente. Como a memória é limitada, é interessante que o compilador saiba o 
tanto de espaço na memória para reservar em relação a cada tipo de variável, e que o programador 
saiba utilizá-las de forma a otimizar o uso de memória. 
O compilador gcc-avr nos permite a criação dessas variáveis através de funções que alocam 
essas variáveis em endereços na memória do microcontrolador. A biblioteca referenciada pelo 
cabeçalho inttypes.h, define os seguintes tipos: 
typedef signed char int8_t; 
typedef unsigned char uint8_t; 
typedef short int16_t; 
typedef unsigned short uint16_t; 
typedef long int32_t; 
typedef unsigned