Escolar Documentos
Profissional Documentos
Cultura Documentos
Manaus
11111111
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.
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.
41111111
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
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
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
1.2 MICROCONTROLADOR
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
famlia AVR.
14
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
18
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:
Seo opcional para cdigo de Boot com bits de bloqueio para programao In-System
por Boot Loader.
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:
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;
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
22
Figura 2.3. Diagrama em blocos da CPU do ATmega8
23
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).
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
27
28
29
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
Figura 2.9. Opes de clock externo para o AVR: a) cristal, b) rede RC e c) sinal externo. 31
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:
Reset externo: ocorre quando um nvel baixo aplicado ao pino de reset por um
determinado perodo de tempo.
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.
33
Idle: a CPU parada, mas SPI, USART, comparador analgico, AD, Interface Serial 2
Fios, Contadores/Temporizadores, Watchdog e o sistema de interrupo continuam
operando.
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.
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
36
Figura 3.16. Projeto novo com arquivo pronto para incio da Programao
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
37
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).
38
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
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.
Fig. 3.10 Janela para definir o arquivo de programas e outros detalhes referentes ao 39
Microcontrolador
40
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.
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
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
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
46
6 .CONCLUSES
47
7 .BIBLIOGRAFIA
48