Vous êtes sur la page 1sur 49

ANTONIO CARLOS SILVA

HEMERSON CHARLES SIQUEIRA


JOAO PAULO CARVALHO AMORIM
PEDRO HENRIQUE PEREIRA
NEY DA SILVA VENTILARI

MICROCONTROLADOR DA FAMLIA ATMEGA

Manaus

11111111

2015ANTONIO CARLOS SILVA


HEMERSON CHARLES SIQUEIRA
JOAO PAULO CARVALHO AMORIM
PEDRO HENRIQUE PEREIRA
NEY DA SILVA VENTILARI

MICROCONTROLADOR DA FAMLIA ATMEGA

Trabalho referente a disciplina de Microcontroladores


e Microprocessadores , apresentado Universidade
Paulista UNIP como exigncia parcial para
concluso do 4 Perodo do Curso Superior
Tecnolgico em Automao Industrial.
rea de Concentrao:
Automao Industrial
Orientador:
Prof. Srgio Costa Martins de Alencar

Manaus
2015

21111111

RESUMO
Os avanos tecnolgicos atingidos com o desenvolvimento dos circuitos Integrados
demandam cada vez mais dispositivos eletrnicos e a cada dia so criados componentes mais
versteis e poderosos. Nesta categoria, esto os microcontroladores que apresentam uma excelente
performance. Permitem o projeto relativamente rpido e fcil de novos equipamentos, devido a sua
facilidade de uso em ampla faixa de aplicaes.
Portanto, faz-se uma introduo das principais caractersticas de um microcontrolador, sua
arquitetura e recursos importantes para o desenvolvimento de projetos de automao e controle. Em
seguida apresenta-se as caractersticas do microcontrolador da famlia Atmel, o atmega 8.

Palavras-chave: Microcontrolador, Atmel, Atmega8.

31111111

ABSTRACT
Technological advances achieved with the development of integrated circuits require
increasingly electronic devices and every day are created most versatile and powerful components .
In this category , are microcontrollers that feature an excellent performance. Allow relatively quick
and easy design of new equipment due to its ease of use in a wide range of applications.
Therefore, it is an introduction of the main features of a microcontroller , its architecture
and important resources for the development of automation and control projects . Then it presents
the characteristics of the Atmel microcontroller family, ATMega 8.

Keywords: Microcontroller, Atmel, Atmega8.

41111111

Que fora esta, eu no sei; tudo o que sei que existe, e


est disponvel apenas quando algum est em um estado em
que sabe exatamente o que quer, e est totalmente determinado
a no desistir at conseguir.
51111111

Alexander Graham Bell

61111111

SUMRIO
1 .INTRODUO............................................................................................................................8
1.1 JUSTIFICATIVA................................................................................................................................8
1.2 Microcontrolador................................................................................................................................8
1.3 O Microcontrolador AVR.................................................................................................................12
1.4 A FAMLIA AVR...............................................................................................................................13

2 .O ATMEGA.................................................................................................................................17
2.1 AS MEMRIAS................................................................................................................................22
2.2 O STACK POINTER........................................................................................................................24
2.2.1 DESCRIO DOS PINOS.............................................................................................................26
2.3 SISTEMA DE CLOCK.....................................................................................................................27
2.3.1 O RESET........................................................................................................................................29
2.4 .GERENCIAMENTO DE ENERGIA E O MODO SLEEP...........................................................30

3 .COMEANDO O TRABALHO...............................................................................................31
3.1 CRIANDO UM PROJETO NO AVR STUDIO..............................................................................31
3.2 SIMULANDO NO PROTEUS (ISIS)..............................................................................................33

4 .PORTAS DE ENTRADA E SADA (I/Os)...............................................................................36


4.1 LENDO UM BOTO E LIGANDO UM LED...............................................................................37
4.1.1 FLUXOGRAMA.............................................................................................................................37
4.1.2 ROTINA SIMPLES DE ATRASO..................................................................................................41

5 .CONCLUSES...........................................................................................................................42
6 .BIBLIOGRAFIA........................................................................................................................43
6.1 Stios:.................................................................................................................................................43

LISTA DE FIGURAS
Figura 1.1. Arquiteturas Clssicas de processadores: Von-Neuman.................................................12
Figura 2.1. Registradores de trabalho da CPU do ATmega..............................................................19
Figura 2.2. Diagrama em blocos da CPU do ATmega8....................................................................20
Figura 2.3. Diagrama em blocos do ATmega8..................................................................................21
Figura 2.4. Memria de dados e memria SRAM.............................................................................22
Figura 2.5. Organizao da memria de programa..........................................................................23
Figura 2.6. Detalhamento dos registradores do Stack Pointer.........................................................24
Figura 2.7. Encapsulamentos PDIP e TQFP para o ATmega8.........................................................26
Figura 2.9. Sistema de clock do AVR e sua distribuio...................................................................28
Figura 2.8. Opes de clock externo para o AVR: a) cristal, b) rede RC e c) sinal externo.............28
Figura 2.10. Diagrama do circuito de reset do AVR.........................................................................29
Figura 3.1. Menu Project..................................................................................................................31
Figura 3.3. Definindo o tipo de programao e o nome do projeto..................................................32
Figura 3.2. Janela do Project Wizard................................................................................................31
Figura 3.4. Definindo o Microcontrolador e a ferramenta de Debug..............................................32
Figura 3.5. Projeto novo com arquivo pronto para incio da Programao.....................................33
Figura 3.6. Criando um circuito Microcontrolado no PROTEUS.....................................................33
Figura 3.7. Encontrando os componentes eletrnicos no PROTEUS...............................................34
Figura 3.8. Janela de procura de componentes do PROTEUS.........................................................34
Figura 3.9.cones para o terra, a alimentao e fio de conexo.......................................................35

Figura 4.1. Esquema geral dos pinos de I/0 (PXn)...........................................................................36


Figura 4.2. Fluxograma do programa para ligar e apagar um led com um boto...........................39
Figura 4.3. Circuito para ligar e apagar um led com um boto.......................................................39

1 .INTRODUO

O grande avano e o potencial que encontramos hoje na rea dos microcontroladores teve
seu incio com o desenvolvimento da tecnologia dos circuitos integrados. Esse desenvolvimento
tornou possvel a integrao de centenas de milhares de transistores em uma nica pastilha
semicondutora - chip. Esse poder de integrao foi um pr-requisito para a produo dos
processadores e possibilitou o surgimento dos primeiros computadores mediante adio de alguns
perifricos, tais como: memria, linhas de entrada-sada, timers e outros. Posteriormente, com o
avano cada vez mais da microeletrnica, foi possvel colocar no mesmo circuito integrado, o
processador e os perifricos. Surgiram ento os microcontroladores.

1.1 JUSTIFICATIVA

Os microcontroladores so dispositivos corriqueiros em nossos dia-a-dia, presentes em


inmeras aplicaes, muitas vezes de forma transparente aos seus usurios, para gerenciar, controlar
ou automatizar algum processo ou sistema.
Praticamente qualquer sistema eletrnico moderno possui um ou mais microcontroladores
em seu interior. Para que um engenheiro, tcnico ou qualquer outro interessado possa criar ou
desenvolver solues desse tipo, imprescindvel o conhecimento desses sistemas e de suas
aplicaes tpicas ou potenciais.

1.2 MICROCONTROLADOR

Um microcontrolador contm um processador, acesso a memria e perifricos de


entrada/sada. Est comprovada sua eficincia para pequenos prottipos que necessitem de baixa
velocidade de processamento e pouca memria.
Basicamente, o uso de um microcontrolador consiste no processamento de dados obtidos em
um de seus perifricos, tendo como sada outro conjunto de dados. Por exemplo, envio de dados via
porta serial, acender um LED (sada) como reao a uma informao de entrada, etc.
10

Os microcontroladores tm agregado inmeras funcionalidades, tais como: gerador interno


independente de clock; memria SRAM, EEPROM e FLASH; conversores A/D, D/A; vrios
temporizadores/contadores; comparadores analgicos; PWM; diferentes tipos de interface de
comunicao, incluindo USB, UART, I2C, CAN, SPI, JTAG; relgios de tempo real; circuitos para
gerenciamento de energia no chip; circuitos para controle de reset, alguns tipos de sensores;
interface para LCD; e outras funcionalidades de acordo com o fabricante.
Apresenta-se na Tab. 1, uma lista das vrias famlias dos principais fabricantes. A coluna
Ncleo indica o tipo de arquitetura ou unidade de processamento que constitui a base do
microcontrolador, a coluna IDE lista o nome dos ambientes de desenvolvimento que podem ser
baixados do site da internet de cada fabricante.
Tabela 1.1. Principais fabricantes de microcontroladores

(fonte: revista Elektor 02/2006)

A arquitetura de um microcontrolador em geral consiste em um ncleo de processamento,


barramento e perifricos:

Ncleo de processamento consiste no processador de dados (clculos, controle de


11

fluxo de programa, etc) e na administrao dos perifricos;

Barramento dividido em dados e endereos, consiste nas linhas de comunicao


entre o processador e os perifricos;

Perifricos caracterizam o conjunto de funcionalidades disponveis pelo


microcontrolador e so controlados pelo processador. Por exemplo, memria, porta serial,
porta paralela e conversor A/D.
Quando se fala em barramentos em processadores, existem dois tipos de arquitetura, a VonNeuman e a arquitetura Harvard.
A arquitetura Harvard (figura 1-a direita) possui os barramentos separados para instrues
e dados, permitem larguras diferentes, com isso o barramento de instrues otimizado para uma
palavra de comprimento nico. O nmero de bits do barramento de instrues depende de
quantas instrues so implementadas e do nmero de registradores disponveis em cada
famlia de microcontroladores.
A arquitetura Von-Neumman (tradicional) (figura1-a esquerda) utiliza o mesmo barramento
para fazer a busca instrues na memria de programa e para acessar (escrever ou ler) na memria
de dados.
Pode-se dizer que a primeira uma arquitetura paralela e a segunda serial. A arquitetura
Von-Neumann permite produzir um conjunto complexo de cdigo de instrues para o processador
(CISC Complex Instructions Set Computer), com um tempo de execuo por instruo de vrios
ciclos de clock; mais simples, com menor nmero de portas lgicas, entretanto, sua velocidade
menor que a Havard.
A arquitetura Havard produz um conjunto simples de cdigos de instrues e, devido ao
paralelismo de sua estrutura, capaz de executar uma instruo por ciclo de clock. A arquitetura
Havard necessita de mais linhas de cdigo para executar a mesma tarefa que uma arquitetura VonNeumann, a qual possui muito mais tipos de instrues.
Nos dias atuais, nas modernas arquiteturas de microcontroladores h

um domnio da

Harvard, a qual evoluiu para a chamada arquitetura Harvard estendida ou avanada. Sendo
composta por um grande nmero de instrues e ainda com a reduo da quantidade necessria de
portas lgicas, produz um ncleo de processamento compacto, veloz e com programao eficiente
(menor nmero de linhas de cdigo).
Devido s questes de desempenho, compatibilidade eletromagntica e economia de energia,
hoje praticamente inaceitvel que um microcontrolador no execute a maioria das instrues em
poucos ciclos de clock (o que diminui o consumo e a dissipao de energia).

12

Figura 1.1. Arquiteturas Clssicas de processadores: Von-Neuman

Fonte: Apostila atmega -SC

Microcontroladores so geralmente utilizados em automao e controle de produtos e


perifricos, como sistemas de controle de motores automotivos, controles remotos, mquinas de
escritrio e residenciais, brinquedos, sistemas de superviso, embarcados, robtica, etc.

1.3 O MICROCONTROLADOR AVR

Os Microcontroladores AVR foram desenvolvidos na Noruega em 1995 e so produzidos


pela ATMEL, apresentam tima eficincia de processamento e ncleo compacto (poucos milhares
de portas lgicas). Com uma estrutura RISC avanada, apresentam mais de uma centena de
instrues e uma arquitetura voltada programao C, a qual permite produzir cdigos compactos.
Tambm, dado sua arquitetura, o desempenho do seu ncleo de 8 bits equivalente ao
desenvolvido por microcontroladores de 16bits.
As principais caractersticas dos Microcontroladores AVR so:
Executam poderosas instrues em um simples ciclo de clock e operam com tenses entre
1,8 e 5,5 V, com velocidades de at 20 MHz. Sendo disponveis em diversos
encapsulamentos (de 8 at 64 pinos).
Alta integrao e grande nmero de perifricos com efetiva compatibilidade entre toda a
13

famlia AVR.

14

Possuem vrios modos para reduo do consumo de energia e caractersticas adicionais


(picoPower) para sistemas crticos.
Possuem 32 registradores de propsito geral, memria de acesso load-store e a maioria
das instrues de 16 bits.
Memria de programao FLASH programvel in-system, SRAM e EEPROM, para
desenvolvimentos rpidos e flexibilidade de projeto.
Facilmente programados e com debug in-system via interface simples, ou com interfaces
JTAG compatvel com 6 ou 10 pinos.
Um conjunto completo e gratuito de softwares.
Preo acessvel.
Existem Microcontroladores AVR especficos para diversas reas, tais como: automotiva,
controle de LCDs, redes de trabalho CAN, USB, controle de motores, controle de lmpadas,
monitorao de bateria, 802.15.4/ZigBee e controle por acesso remoto.

1.4 A FAMLIA AVR

Dentre os principais componentes da famlia AVR podemos citar:


TinyAVR - ATtiny
Microcontroladores de propsito geral de at 8 kbytes de memria Flash, 512 bytes de
SRAM e EEPROM.
MegaAVR - ATmega
Microcontroladores de alto desempenho com multiplicador por hardware, com at 256
kbytes de memria Flash, 4 kbytes de EEPROM e 8 kbytes de SRAM.
PicoPower AVR
Microcontroladores com caractersticas especiais para economia de energia.

15

XMEGA ATxmega
Os novos Microcontroladores XMEGA 8/16-bit dispem de novos e avanados
perifricos com aumento de desempenho, DMA (Direct Memory Access) e sistema de
eventos.
AVR32 (no pertence s famlias acima)
Microcontroladores de 32 bits com arquitetura RISC projetada para maior processamento
por ciclos de clock, com eficincia de 1,3 mW/MHz e at 210 DMIPS (Dhrystone Million
Instructions per Second) a 150 MHz, conjunto de instrues para DSP (Digital Signal Processing)
com SIMD (Single Instruction, Multiple Data) com solues SoC (System-on-a-chip) e completo
suporte ao Linux.
As Tabelas. 1.2 e 1.3 apresentam as principais caractersticas dos AVRs ATmega e ATtiny.

16

17

Tabela 1.2. Comparao entre os ATmega (04/2009)

18

Tabela 1.3. Comparao entre os ATtiny (04/2009).

Para aplicaes que exijam outras funcionalidades de hardware que as apresentadas pelos
controladores das tabelas acima, o stio do fabricante deve ser consultado.

19

2 .O ATMEGA
Neste trabalho ser abordado o ATmega8 por ser um Microcontrolador que apresenta a
maioria das caractersticas da famlia AVR e ser compacto (28 pinos PDIP), apresentando uma
memria Flash de tamanho razovel. O importante saber que ao programar este Microcontrolador,
os conceitos de programao de qualquer outro da famlia AVR so aprendidos dada a similaridade
entre as famlias. As pequenas mudanas de hardware e software so resolvidas com uma busca ao
referido Datasheet.
As caractersticas do ATmega8 so:

Microcontrolador de baixa potncia e alto desempenho, com arquitetura RISC avanada.

130 instrues, a maior parte executada em um nico ciclo de relgio.

328 registradores de trabalho de propsito geral

Operao de at 16 MIPS (milhes de instrues por segundo) a 16 MHz (ATmega88


20MHz)

Multiplicao por hardware em 2 ciclos de relgio.

8 kbytes de memria de programa Flash de auto programao In-System


(16K, 32K, 64K, 128K nos respectivos ATmega16, ATmega32,
ATmega64 e ATmega128).

512 bytes de memria EEPROM.

1 kbyte de memria SRAM.

Ciclos de escrita e apagamento: memria FLASH 10.000 vezes, EEPROM 100.000


vezes.

Seo opcional para cdigo de Boot com bits de bloqueio para programao In-System
por Boot Loader.

Bits de bloqueio para proteo do software.

Possui os seguintes perifricos:


23 entradas e sadas (I/Os) programveis.
2 Temporizadores/Contadores de 8 bits com Prescaler separado, 1 modo de

20

comparao;
1 Temporizador/Contador de 16 bits com Prescaler separado, modo de comparao
e captura;
Contador de tempo real (com cristal externo de 32.768 Hz conta precisamente 1s);
3 canais PWM;
8 canais A/D com preciso de 10 bits na verso TQFP, 6 canais na verso PDIP;
Interface serial para dois fios orientada a byte (TWI), compatvel com o protocolo
I2C;
Interface serial USART;
Interface serial SPI Master/Slave;
Watchdog Timer com oscilador interno separado;
1

Comparador analgico.

Caractersticas especiais:

Power-on Reset e deteco Brown-out programvel;


Oscilador interno RC (no h a necessidade do uso de cristal externo ou de outra

fonte de clock);
Fontes de interrupes internas e externas;
5 modos de Sleep: Idle, Reduo de rudo do A/D, Power-down, Power-save e

Standby;

Tenso de operao: 2,7-5,5 V (ATmega8L), 4,5-5,5 V (ATmega8);

Consumo de potncia a 4 MHz (3V, 25C): ativo = 3,6 mA, Idle= 1 mA e Power-down

= 0,5 A.
O ncleo AVR combina um rico conjunto de instrues com 32 registradores de trabalho, os
quais esto diretamente conectados Unidade Lgico-Aritmtica (ALU), permitindo que dois
registradores independentes sejam acessados com uma simples instruo em um nico ciclo de
clock. Seis dos 32 registradores podem ser usados como registradores de endereamento indireto de
16 bits (ponteiros para o acesso de dados). Um destes ponteiros de dados pode tambm ser usado
para acessar tabelas na memria flash.
Estes registradores de 16 bits so denominados X, Y e Z. A Fig. 2.1 ilustra esses

21

registradores e seus respectivos endereos na memria de dados.

Figura 2.2. Registradores de trabalho da CPU do ATmega


A funo principal da Unidade de Processamento Central (CPU) garantir a correta
execuo do programa, sendo capaz de acessar as memrias, executar clculos, controlar os
perifricos e tratar interrupes. Um diagrama em blocos mais detalhado da CPU do AVR pode ser
visto na Fig. 2.2 e outro mais geral, incluindo os perifricos, na Fig. 2.3.
Da arquitetura Harvard percebe-se a existncia de barramento de dados para programa e
para dados. O paralelismo permite que uma instruo seja executada enquanto a prxima buscada
na memria de programa, o que produz a execuo de uma instruo por ciclo de clock.

22
Figura 2.3. Diagrama em blocos da CPU do ATmega8

23

Figura 2.4. Diagrama em blocos do ATmega8

24

2.1 AS MEMRIAS

25

3
A memria de dados e memria SRAM do ATmega8 pode ser vista na Fig. 2.4. A memria
linear comeando no endereo 0 e indo at o endereo 1119 (0x045F). Destas 1120 posies de
memria, 32 pertencem aos registradores de uso geral (Fig. 2.1), 64 aos registradores de entrada e
sada (0x0020 at 0x0005F) e 1024 bytes pertencem memria SRAM (0x0060 at 0x045F).

Figura 2.5. Memria de dados e memria SRAM

A organizao da memria de programa pode ser vista na Fig. 2.5.

Figura 2.6. Organizao da memria de programa.

26

A maioria das instrues do AVR emprega 16 bits (algumas, 32), ou seja, 2 bytes. Portanto,
como o ATmega8 possui 8 kbytes de memria de programa, existem 4096 endereos (0x000 at
0xFFF). Pode-se escrever at 4096 linhas de cdigo em Assembly.
O contador do programa (PC) de 12 bits, endereando todas as 4096 posies de memria
(2

12

= 4096). A memria flash suporta no mnimo 10.000 ciclos de escrita e apagamento.


A memria EEPROM de 512 bytes e organizada separadamente. Cada byte individual

pode ser lido ou escrito.


Um ponto importantssimo so os registradores de entrada e sada, os quais possuem todas
as informaes referentes ao processamento da CPU. Permitem configurar e acessar todos os
perifricos. com esses registradores que o programador ter que se familiarizar para poder
trabalhar com os perifricos (as chaves que ligam e desligam tudo). Dada a sua importncia, os
mesmos so apresentados na Tab. 2.1 (observar seus endereamentos na Fig. 2.4). Os registradores
de entrada e sada sero vistos com detalhes posteriormente

27

3.1 O STACK POINTER


O Stack Pointer (SP, ponteiro de pilha) usado principalmente para armazenagem
temporria de dados: variveis locais e endereos de retorno aps chamadas de sub-rotinas e
interrupes. O SP sempre aponta para o topo da pilha, crescendo dos endereos mais altos da
memria para os mais baixos. Isto implica que o comando POP aumenta o SP e o comando PUSH o
diminui. O SP implementado na memria SRAM, devendo ter seu espao definido por
programao e apontar acima do endereo 0x60. Na Fig. 2.6 so apresentados os dois registradores
do Stack Pointer (endereos 0x5E e 0x5D da memria de dados), onde se gravam os endereos da
parte alta e baixa do incio da pilha (SPH e SPL respectivamente).

Figura 2.7. Detalhamento dos registradores do Stack Pointer

28

Tabela 2.4. Registradores de entrada e sada da memria de dados

29

3.1.1 DESCRIO DOS PINOS


Na Fig. 2.7 os nomes dos pinos do ATmega8 so apresentados para os encapsulamentos
PDIP (Plastic Dual Inline Package) e TQFP (Thin profile plastic Quad Flat Package). As siglas nos
pinos resumem as funcionalidades destes e sero abordadas em momento oportuno. A Tab. 2.2
contm a descrio sucinta dos referidos pinos.

Figura 2.8. Encapsulamentos PDIP e TQFP para o ATmega8

Tabela 2.5. Descrio sucinta dos pinos do Atmega8.


VCC
GND
Port B
(PB7..PB0)
XTAL1/X
TAL2
/TOSC1/
TOSC2

Tenso de alimentao.
Terra.
A Port B uma porta bi-direcional de I/O de 8 bits com resistores
internos
debit).
pull-up
(selecionvel
para
cada
Os buffers
de sada possuem caractersticas
simtricas
com alta Como
capacidade
de fornecer
e
receber corrente.
entradas,
os pinos que forem
externamente
colocados
em
zero
fornecero
corrente se os resistores de pull-up estiverem habilitados. Os pinos
ficaro em tri-state quando uma condio de reset estiver ativa,
fusveis de ajuste do clock, PB6 pode ser usado como entrada para
o amplificador
e
entrada paraoscilador
o circuitoinversor
interno de clock. Da mesma forma,
PB7 pode seroscilador
usado como
sada
amplificador
inversor.
Sedo
o oscilador RC calibrado
internamente
forempregado
fonte
de
clock, PB7..6
usado comocomo
entrada
TOSC2..1 para o
Temporizador/Contador2
assncrono
se
o
bit
AS2 no registrador ASSR estiver ativo.
Dentre as outras funcionalidades da Port B esto: a interface SPI
Master Input/Slave Output, MOSI - Master Output/Slave Input, SS
-(Timer/Counter1
Master Slave Select),
OutputOC1B
Compare Match B Output), OC1A
(Timer/Counter1
Compare
Match
A Output), Output
ICP1 (Timer/Counter1
Input Capture Pin). Os
ltimos
podem
ser utilizados para
gerar
sinais
PWM.

30

Port C
(PC5..
PC0)

PC6/RESE
T

Port D
(PD7..
PD0)

AVCC

AREF
ADC7..6

A Port C uma porta bi-direcional de I/O de 7 bits com resistores


internos de pull-up (selecionvel para cada bit). Os buffers de
sada possuem caractersticas simtricas com alta capacidade de
fornecer e receber corrente. Como entradas, os pinos que forem
externamente colocados em zero fornecero corrente se os
resistores de pull-up estiverem habilitados. Os pinos ficaro em
tri-state quando uma condio de reset estiver ativa, mesmo que
o clock no esteja rodando.
Estes pinos so as entradas do conversor Analgico/Digital (ADCx)
Se o fusvel RSTDISBL for programado, PC6 usado com um pino
de I/O, sendo que suas caractersticas eltricas diferem dos outros
pinos da Port C. Caso contrrio, PC6 usado com entrada de
reset. Um nvel de tenso baixo neste pino por um perodo maior
que uma determinada largura de pulso produzir um reset,
mesmo
o clock
no
esteja rodando.
A
Port Dque
uma
porta
bi-direcional
de I/O de 8 bits com resistores
internos de pull-up (selecionvel para cada bit). Os buffers de
sada possuem caractersticas simtricas com alta capacidade de
fornecer e receber corrente. Como entradas, os pinos que forem
externamente colocados em zero fornecero corrente se os
resistores de pull-up estiverem habilitados. Os pinos ficaro em
tri-state quando uma condio de reset estiver ativa, mesmo que
o clock no esteja rodando.
Dentre as outras funcionalidades da Port D esto: AIN1 (Analog
Comparator Negative Input), AIN0 (Analog Comparator Positive
Input), T1 (Timer/Counter 1 External Counter Input), XCK (USART
Pino para a tenso de alimentao do conversor AD. Deve ser
externamente conectado ao VCC, mesmo se o A/D no estiver
sendo utilizado. Se o A/D for usado deve ser empregado um filtro
passabaixas
entrede
este
pino e oanalgica
VCC.
Pino para
a tenso
referncia
do conversor AD.
Disponvel nos encapsulamentos TQFP e QFN/MLF. ADC7..6
servem como entradas analgicas para o conversor AD.

3.2 SISTEMA DE CLOCK


A Fig. 2.9 apresenta o sistema principal de clock do AVR e sua distribuio. Todos os
clocks precisam ser ativos em algum momento. Para a reduo do consumo de potncia, os
mdulos de clock podem ser suspensos usando diferentes modos de programao. O AVR suporta
as seguintes opes de clock: cristal ou ressonador cermico externo cristal de baixa frequncia
externa, oscilador RC externo, sinal de clock externo e oscilador RC interno, ver Fig. 2.8.
Interessante utilizar o oscilador interno quando o clock no precisa ser preciso, eliminando
a necessidade de componentes externos ao Microcontrolador. O oscilador interno pode ser
programado para operar a 1 MHz, 2 MHz, 4 MHz ou 8 MHz.

Figura 2.9. Opes de clock externo para o AVR: a) cristal, b) rede RC e c) sinal externo. 31

Figura 2.10. Sistema de clock do AVR e sua distribuio

32

3.2.1 O RESET
Durante o reset, todos os registradores de entrada e sada so ajustados aos seus valores
default e o programa comea a ser executado a partir do vetor de reset (endereo 0 da memria de
programa). O diagrama do circuito de reset apresentado na Fig. 2.10.
As portas de I/O so imediatamente inicializadas quando uma fonte de reset ativa. Isto
no exige qualquer fonte de clock. Aps a fonte de reset ficar inativa, efetuado um atraso interno
(configurvel) mantendo o reset por um pequeno perodo de tempo. Assim, a tenso de
alimentao pode alcanar um nvel estvel antes de o Microcontrolador comear a trabalhar.
O ATmega8 possui 4 fontes de reset:

Power-on Reset: ocorre na energizao enquanto a fonte de alimentao estiver abaixo


do limiar de Power-on Reset (VPOT).

Reset externo: ocorre quando um nvel baixo aplicado ao pino de reset por um
determinado perodo de tempo.

Watchdog Reset: ocorre quando o Watchdog est habilitado e o seu temporizador


estoura.

Brown-out Reset: ocorre quando a tenso de alimentao cair abaixo do valor definido para
o Brown-out Reset (VBOT) e o seu detector estiver habilitado.

Figura 2.11. Diagrama do circuito de reset do AVR.

33

3.3 .GERENCIAMENTO DE ENERGIA E O MODO SLEEP


O modo sleep habilita o desligamento de mdulos no utilizados pelo Microcontrolador para a
economia de energia, necessria no uso de baterias. Esse modo to importante que existe um cdigo
de instruo para ele, o SLEEP. O AVR possui 5 modos possveis de sleep:

Idle: a CPU parada, mas SPI, USART, comparador analgico, AD, Interface Serial 2
Fios, Contadores/Temporizadores, Watchdog e o sistema de interrupo continuam
operando.

Reduo de Rudo do AD: a CPU parada, mas continuam operando o AD, as


interrupes externas, o Temporizador/Contador2 e o Watchdog (se habilitado). Este
modo empregado para reduzir o rudo para o A/D e garantir sua alta resoluo.

Power-down: o oscilador externo parado, mas continuam operando a Interface Serial 2


Fios, as interrupes externas e o Watchdog (se habilitado).

Power-save: igual ao Power-down com exceo que o Contador/Temporizador2


trabalha assincronamente.

Standby: idntico ao Power-down com exceo que o oscilador mantido funcionando


(vlido para oscilador externo a cristal ou ressonante cermico). O Microcontrolador
acorda do sleep em 6 ciclos de clock.

34

4 .COMEANDO O TRABALHO

Para programar o AVR necessrio o programa AVR Studio obtido gratuitamente do stio da
ATMEL (www.atmel.com). Para programao em C no AVR Studio, pode-se utilizar o programa
WinAVR (http://winavr.sourceforge.net/), tambm gratuito. Outra opo para a linguagem C o
eficiente compilador IAR; por ser pago no ser abordado neste trabalho. Para a gravao dos
Microcontroladores deve-se adquirir hardware especfico, para tal, existem esquemas disponveis na
internet. A ATMEL, por exemplo, produz o AVR Dragon, com capacidade de emulao e Debug in
system possuindo interface JTAG.

4.1 CRIANDO UM PROJETO NO AVR STUDIO


Aps instalado o WinAVR e o AVR Studio, hora de criar o primeiro projeto, o qual conter o
arquivo de programa e todos os demais arquivos necessrios para o trabalho com o Microcontrolador.
Primeiro no menu <Project> clique em <Project Wizard> (Fig. 3.1). Ser aberta uma janela, na qual
se deve clicar em <New Project>, Fig. 3.2.

Figura 3.12. Menu Project.

Figura 3.13. Janela do Project Wizard

Agora, define-se qual tipo de programao ser feita: assembly (Atmel AVR Assembly) ou C
(AVR GCC) d-se nome ao projeto e o nome do programa (no caso da Fig. 3.3,
Primeiro_Programa.asm). Aps essas definies clica-se em <Next>.

35

Figura 3.14. Definindo o tipo de programao e o nome do projeto.


A ltima definio o modelo do Microcontrolador que ser empregado e qual a plataforma
para o Debug. No caso somente de simulao: AVR Simulator (Fig. 3.4). Clica-se em <Finish>, o
arquivo de programao criado (Fig. 3. 5), agora s basta escrever as linhas de cdigo!
Figura 3.15. Definindo o Microcontrolador e a ferramenta de Debug

36

Figura 3.16. Projeto novo com arquivo pronto para incio da Programao

4.2 SIMULANDO NO PROTEUS (ISIS)

Analisar a programao utilizando o Debug do AVR Studio vlido para achar erros no
programa, mas avaliar o comportamento real do Microcontrolador exige a montagem do hardware.
Outra sada, menos custosa e de rpido desenvolvimento empregar um software capaz de simular o
hardware. O PROTEUS (ISIS schematic capture) produzido pela Labcenter Electronics
(www.labcenter.co.uk) simula inmeros Microcontroladores, incluindo vrios ATmegas, e permite o
Debug em conjunto com o AVR Studio. possvel adquirir diferentes licenas para diferentes
Microcontroladores (claro que todas pagas). O PROTEUS tambm possui o ARES PCB Layout,
permitindo a confeco da placa de circuito impresso diretamente do esquema do circuito simulado.
Para criar um circuito Microcontrolado no ISIS clique em <New Design> no menu <File>,
Fig. 3.6

Figura 3.17. Criando um circuito Microcontrolado no PROTEUS

37

Os componentes eletrnicos disponveis podem ser encontrados no cone

(Fig. 3.7) que abre

uma janela com todas as bibliotecas de componentes disponveis (Fig. 3.8). Nesta janela,
apresentado o desenho do componente e seu encapsulamento, se disponvel. Tambm existe um
campo para a procura de componentes por palavras (Fig. 3.8).

Figura 3.18. Encontrando os componentes eletrnicos no PROTEUS

38

No cone da barra lateral esquerda

se encontram os smbolos de terra e de alimentao. A

Figura 3.19. Janela de procura de componentes do PROTEUS.


conexo entre os componentes do circuito feita com o emprego do cone

, ver Fig. 3.9. Aps a

concluso do diagrama esquemtico, basta um duplo click sobre o Microcontrolador para que se abra
uma janela onde se deve indicar a localizao do arquivo *.hex, o qual possui o cdigo a ser
executado (criado na compilao do programa no AVR Studio) e se define a frequncia de trabalho
(Fig. 3.10). Agora, basta clicar no cone

da barra horizontal inferior do canto esquerdo (Fig.

3.11) e o programa contido no arquivo *.hex ser executado. Se tudo estiver correto, nenhuma
mensagem de erro ser gerada e a simulao ocorrer.

Figura 3.20.cones para o terra, a alimentao e fio de conexo.

Fig. 3.10 Janela para definir o arquivo de programas e outros detalhes referentes ao 39
Microcontrolador

Fig. 3.11 Executando a simulao do circuito

40

5 .PORTAS DE ENTRADA E SADA (I/Os)

O ATmega8 possui 3 portas: PORTB, PORTC e PORTD, com seus respectivo pinos:
PB7 .. PB0, PC6.. PC0 e PD7.. PD0. Todos os pinos do AVR possuem a funo L Modifica
Escreve quando utilizados como portas genricas de I/Os. Isto significa que a direo de um pino
pode ser alterada sem mudar a direo de qualquer outro pino da mesma porta (instrues SBI e CBI).
Da mesma forma, os valores lgicos dos pinos, bem como a habilitao dos resistores de pull-up (se
configurado como entrada), podem ser alterados individualmente. O buffer de sada tem
caractersticas simtricas com capacidade de receber ou fornecer corrente, suficientemente forte para
alimentar LEDs diretamente (40 mA por pino). Todas as portas tm resistores de pull-up e diodos de
proteo para o VCC e o terra, como indicado na Fig. 4.1.

Figura 4.21. Esquema geral dos pinos de I/0 (PXn).

Os registradores responsveis pelos pinos de I/O so:

PORTx: registrador de dados da porta, usado para escrever nos pinos.


DDRx: registrador de direo da porta, usado para definir se os pinos so de entrada ou

sada.
PINx: registrador de entrada da porta, usado para ler o contedo dos pinos.
Em resumo, para uso de um pino de I/O, deve-se primeiro definir no registrador DDRx se ele

ser entrada ou sada. Se o pino for de sada, uma escrita no registrador PORTx altera o estado lgico
do pino, tambm empregado para habilitar os pull-ups. Os estados dos pinos da porta so lidos do
registrador PINx. Detalhe: para a leitura do PINx logo aps uma escrita do PORTx e DDRx, deve
ser

gasto

pelo

menos

um

ciclo

de

mquina

para

sincronizao

dos

dados

pelo

Microcontrolador.
A Tab. 4.1 apresenta as configuraes dos bits de controle dos registradores responsveis pela
definio do comportamento dos pinos (ver Tab. 2.2).

41

Tabela 4.6. Bits de controle dos pinos das PORTs

5.1 LENDO UM BOTO E LIGANDO UM LED

O primeiro programa Microcontrolado o simples e clssico ligar um led e pressionar um


boto. Entretanto, na prtica, botes apresentam o chamado bounce, o rudo produzido pelo contato
eltrico e liberao momentnea do boto que pode ocorrer ao ser pressionado ou solto. Este rudo
produz uma oscilao na tenso proveniente do boto ocasionando sinais lgicos aleatrios. Se
existente, geralmente esse rudo desaparece aps aproximadamente 10 ms (este tempo pode ser
medido na montagem do circuito).
O objetivo desta seo produzir um programa que troque o estado de um led toda vez que
um boto for pressionado e utilizar uma tcnica para eliminar o eventual rudo do boto. A tcnica que
ser empregada para eliminar tal rudo a insero de um atraso aps o boto ser solto, para garantir
que o programa no leia o boto novamente durante a possvel durao do rudo (na prtica o rudo
tambm pode aparecer quando se pressiona o boto). Na Fig. 4.2 apresentado o fluxograma do
programa desenvolvido. O circuito apresentado na Fig. 4.3.

5.1.1 FLUXOGRAMA

O fluxograma uma representao grfica das tarefas de um programa, por meio de smbolos
que fornecem a seqncia de um processo. O fluxograma ajuda a organizar o programa, permitindo o

42

seu delineamento e possibilitando seguir passo a passo o que ser executado nele.
Existem estruturas, definies rigorosas das regras de um fluxograma e uma variedade de
smbolos para a construo do mesmo, o que interessante seguir, principalmente quando se trata de
um projeto complexo. Com um fluxograma bem estruturado fica fcil corrigir eventuais erros que
possam surgir no decorrer do projeto.
O fluxograma no um elemento indispensvel ao desenvolvimento de um programa, porm,
sem ele se torna mais difcil qualquer alterao ou correo. O fluxograma deve ser feito com a
visualizao do problema a ser resolvido passo a passo, e o programa deve ser feito por partes, e
testado a cada parte para que fique mais simples detectar e solucionar qualquer tipo de erro. As
alteraes devem ser bem analisadas porque podero influenciar outras partes do programa.
Essencialmente, o desenvolvimento de um programa deve ter os seguintes procedimentos:
Anlise do problema.
Elaborao do fluxograma.
Escrita do programa em linguagem simblica.
Traduo do programa para linguagem de mquina.
Teste e se necessrio correes.
Na anlise do problema, devem ser determinados de maneira bem clara os objetivos a serem
alcanados, exatamente que tarefa deve ser realizada e definir todo o hardware do sistema. O
fluxograma deve ser dividido em tarefas e a definio da sequncia que estas tarefas devem executar.

43

Figura 4.22. Fluxograma do programa para ligar e apagar um led com um boto

Figura 4.23. Circuito para ligar e apagar um led com um boto


O programa em assembly apresentado abaixo aps a compilao o tamanho do cdigo foi
de 50 bytes (25 instrues).

44

Todo bom programa deve ser adequadamente comentado e organizado. Cdigos eficientes so
resultantes de bons algoritmos, produzindo maior densidade de cdigo.
//============================================================================================= //
//
LIGANDO E DESLIGANDO UM LED QUANDO UM BOTO PRESSIONADO
//
//============================================================================================= //
.include "m8def.inc" //arquivo com as definies dos nomes dos bits e registradores do ATmega8
//DEFINIE
S
.equ LED
.equ BOTAO
.def AUX

= PB0
//LED o substituto de PB0 na programao
= PB7
//BOTAO o substituto de PB7 na programao
=
//R16 tem agora o nome de AUX (nem todos os 32 registradores de
R16;
uso
//geral podem ser empregados em todas as instrues)
//--------------------------------------------------------------------------------------------.ORG 0x000
//endereo de incio de escrita do cdigo
//aps o reset o contador do programa aponta para c
Inicializacoes:
LDI
AUX,0x04
//inicializacao do Stack Pointer na posicao 0x045F da SRAM
(Topo) OUT SPH,AUX //registrador SPH = 0x04
LDI AUX,0x5F
OUT
SPL,AUX
//registrador SPL = 0x5F
LDI
AUX,0b01111111
//carrega AUX com o valor 63 (1 saida 0 entrada)
OUT
DDRB,AUX
//configura porta B, PB0 .. PB6 sadas e PB7
entrada LDI
AUX,0b10000001
//habilita o pull-up para o boto e apaga o
LED
OUT PORTB,AUX
NOP
//sincronizao dos dados da porta para leitura imediata
//--------------------------------------------------------------------------------------------//LAO PRINCIPAL
//--------------------------------------------------------------------------------------------Principal:
SBIC PINB,BOTAO
//verifica se o botao foi pressionado,
seno RJMP
Principal //volta e fica preso no lao Principal
Esp_Soltar:
SBIS PINB,BOTAO //se o boto no foi solto, espera soltar
RJMP Esp_Soltar
RCALL Atraso
//aps o boto ser solto gasta um tempo para eliminar
//o rudo proveniente do mesmo
SBIC
PINB,LED
//se o LED estiver apagado liga e viceversa RJMP Liga
S
B
RJ
MP
Liga:

PORTB,LE
D
Principa
l

//apaga o LED
//volta ler
boto

C
PORTB,LE
//liga LED
B
D
RJ
Principa
//volta ler
//--------------------------------------------------------------------------------------------//SUB-ROTINA DE ATRASO - Aprox. 25 ms a 8 MHz
//--------------------------------------------------------------------------------------------Atraso:
DEC
R3
//decrementa R3, comea com 0x00
BRNE Atraso
//enquanto R3 > 0 fica decrementando R3
DEC R2
BRNE Atraso
//enquanto R2 >0 volta decrementar R3
RET
//=============================================================================================

Outra variante da leitura de botes executar o que necessita ser feito imediatamente aps o
boto ser pressionado e avaliar se o boto j foi solto aps isso. Quando se deseja incrementar uma
varivel enquanto o boto mantido pressionado pode ser acrescida uma rotina de atraso adequada no
lao de leitura do boto.

45

5.1.2 ROTINA SIMPLES DE ATRASO

Rotinas de atraso so muito comuns na programao de Microcontroladores. So realizadas


fazendo-se a CPU gastar ciclos de mquina em alguns laos. Para o exemplo do programa acima, para
se calcular o exato nmero de ciclos de mquina gastos na sub-rotina de atraso necessrio saber
quantos ciclos cada instruo consome. A instruo DEC consome 1 ciclo, a instruo BRNE
consome 2 ciclos e na ltima vez, quando no desvia mais, consome 1 ciclo. Como os registradores
R3 e R2 possuem valor zero inicialmente e o decremento de R3 repetido dentro do lao de R2
espera-se que haja 256 decrementos de R3 vezes 256 decrementos de R2. Se considerarmos 3 ciclos
entre DEC e BRNE temos aproximadamente 3256256 ciclos, ou seja, 196.608 ciclos. Entretanto,
BRNE no consome 2 ciclos no ltimo decremento, assim, o clculo preciso mais complexo:
(((3 ciclos 255) + 2 ciclos) + 3 ciclos) 255 + 769 ciclos = 197.119 ciclos.
Para a melhor compreenso desse clculo, observar a Fig. 4.4.
Se considerarmos os ciclos gastos pela instruo RCALL (3 ciclos) e os ciclos da instruo
RET (4 ciclos), temos um gasto total da chamada da sub-rotina at seu retorno de 197.126 ciclos.

Fig. 4.4 Clculo preciso da sub-rotina de atraso


O tempo gasto pelo Microcontrolador depender da frequncia de trabalho utilizada. Como no
AVR um ciclo de mquina equivale ao inverso da frequncia do clock (perodo), o tempo gasto ser:
Tempo Gasto = N de Ciclos X 1/Frequncia de trabalho [4,1].
Logo, do nosso exemplo, para um clock de 8 MHZ (perodo de 0,125 s), da chamada da sub-rotina
at seu retorno, resulta:
Tempo Gasto = 197.126 0,125 s = 24,64075 ms

46

6 .CONCLUSES

Um resumo sobre o ATmega8 foi apresentado.


A economia de energia no Microcontrolador fundamental quando se empregam baterias de
alimentao. Para se aprofundar e entender as possibilidades que o ATmega possui, o catlogo do
fabricante deve ser consultado.
Os projetos propostos apenas ilustram algumas possibilidades de emprego do ATmega. Circuitos
reais precisam agregar mais componentes e detalhes que no so necessrios na simulao. Circuitos
complexos esto longe do que aqui foi posto.
Importante lembrar que um bom projeto implica em um cdigo eficiente e no emprego do
menor nmero de componentes possvel, mantendo a qualidade do resultado desejado. Um bom
projetista e programador s feito com anos de experincia. Alm disso, de nada adianta ter um bom
programa e circuito se o projeto da placa de circuito impresso no for bem feito.
Dada a portabilidade do cdigo C, bem como a necessidade de no reescrever cdigos j
desenvolvidos, altamente recomendado que sejam criadas bibliotecas prprias de funes, como,
por exemplo, para o uso do LCD. No estudo de rotinas prontas, fundamental a completa
compreenso dessas, caso contrrio, a habilidade de programao no se desenvolve.
Na rea de Microcontroladores atualizar-se questo de sobrevivncia. No se deve ficar
preso a uma nica tecnologia. O mercado muda constantemente, as aplicaes sem fio so cada vez
mais comuns e que a interface USB est em voga.

47

7 .BIBLIOGRAFIA

ATMEGA8(L): Manual do fabricante (doc2486.pdf)


VILLAA, Marcos V. M. Introduo aos Microcontroladores Apostila. Instituto Federal de
Santa Catarina, 2 ed., Departamento de Eletrnica, 2007.
7.1 STIOS:
www.atmel.com
Application Notes:

Software Universal Serial Bus (USB)

Dallas 1-Wire master

Efficient C Coding for AVR

AVR Hardware Design Considerations.

48

Vous aimerez peut-être aussi