Você está na página 1de 23

Faculdade de Engenharia de Ilha Solteira- Departamento de Engenharia Eltrica

TEEE I- Projeto de Robs Mveis- Profs. Nobuo Oki e Suely Cunha Amaro Mantovani. 1o.sem / 2013

TEEEIProjetodeRobsMveis

Microcontrolador

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.

1. Aspectos gerais

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.
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.
Tab. 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 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 Von-Neuman 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 Von-Neumann, 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 moicrocontrolador no execute a maioria das
instrues em poucos ciclos de clock (o que diminui o consumo e a dissipao
de energia).
Figura 1 Arquiteturas Clssicas de processadores: Von-Neuman x Harvard.

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, robotica, etc.

2. Os Microcontroladores 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), possuem uma
estrutura RISC avanada, com mais de uma centena de instrues e uma
arquitetura voltada programao C, a qual permite produzir cdigos
compactos. Por causa de 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. Esto
disponveis em diversos encapsulamentos (de 8 at 64 pinos);

Alta integrao e grande nmero de perifricos com efetiva


compatibilidade entre toda a famlia AVR ;

Possuem vrios modos para reduo do consumo de energia;

Possuem 32 registradores de propsito geral, memria de acesso load-


store e a maioria das instrues de 16bits;

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;

Preo acessvel e um conjunto completo e gratuito de softwares;

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.
2.1 A famlia AVR

Os principais componentes da famlia AVR so:


tinyAVR - ATtiny - controladores 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.

XMEGA ATxmega- 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, 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 2 e 3 apresentam as principais caractersticas dos AVRs


ATmega e ATtiny.
Tabela 2- Comparao entre os ATmega (04/2009)
Tabela 3- Comparao entre os ATtiny (04/2009)

3. ATmega8

O ATmega 8 apresenta a maioria das caractersticas da famlia AVR.


um microcontrolador de 8-bits com baixo consumo, de tecnologia CMOS e
arquitetura RISC (Reduced Instruction Set Computer), cuja pinagem
mostrada na figura 2. Apresenta a capacidade de executar uma instruo por
ciclo de clock devido conexo direta de seus 32 registradores gerais com a
unidade lgica aritmtica e uma frequncia de funcionamento na faixa de 0 a
20MHz. Alm disso, apesar de ser RISC, possui um grande nmero de
instrues, permitindo uma otimizao do cdigo de alto nvel em linguagem C.
Ao programar este microcontrolador, devido as similaridades entre as
famlias, os conceitos de programao so vlidos para qualquer outro da
famlia AVR. As pequenas mudanas, de hardware e software podem ser
consultadas em seus respectivos Datasheets.
Figura 2 - Pinagem do Microcontrolador AVR ATmega8.

Fonte: Atmel (2004)

.
3.1.Caractersticas do ATmega8

Apresenta baixa potncia e alto desempenho, com arquitetura RISC


avanada;

130 instrues, a maior parte executada em um nico ciclo de clock;

328 registradores de trabalho de propsito geral;

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

Multiplicao por hardware em 2 ciclos de clock;

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;

Bits de bloqueio para proteo do software;


Perifricos embutidos:

23 entradas e sadas (I/Os) programveis;

2 Temporizadores/Contadores de 8 bits com Prescaler separado, 1


modo de comparao;

Um Temporizador/Contador de 16 bits com Prescaler (divisor)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 (Universal Synchronous Asynchronous Receiver


Transmitter);

Interface serial SPI Master/Slave;

Watchdog Timer com oscilador interno separado;

Um 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).


Outra caracterstica que permite a maximizao do desempenho nestes
_

microcontroladores o paralelismo - a arquitetura Harvard e a tcnica do


pipeline.
A tcnica em pipeline sobrepe busca e execuo, tornando a
execuo de instrues possvel de se realizar em um nico ciclo de mquina.
Qualquer instruo de desvio (tais como GOTO, CALL, ou escrever no PC)
leva dois ciclos de mquina.
A memria de programa executada em pipeline de dois estgios-
enquanto uma instruo est sendo executada, a prxima instruo
previamente buscada da memria de programa. Esse conceito habilita a
execuo de instrues em todo ciclo de clock. Esta memria do tipo
FLASH, e com as instrues relativas de jump e call, todo o espao de
endereamento de 8k diretamente acessado. A maioria das instrues AVR
tem um nico formato de palavra de 16-bits. Todo endereo da memria de
programa contm uma instruo de 32-bits.
Com a arquitetura RISC so necessrios menos instrues que, por
exemplo, a tradicional arquitetura CISC, permitindo que os sistemas nela
baseados, possam rodar mais rpidos porque o processador tem funes
limitadas, em benefcio de seu desempenho.

3.2. Memrias EEPROM e FLASH

A EEPROM presente no AVR possui 512 bytes e est ligada ao


barramento de dados de 8-bits interno permitindo que possa ser escrita
diretamente sobre o microcontrolador durante o processo de gravao ou que o
prprio microcontrolador escreva os dados nas posies desta memria. O
tempo de acesso de gravao em mdia de 2,5 a 4ms, dependendo da
tenso a qual submetida.
A memria FLASH ou FLASH ROM uma EEPROM que utiliza baixas
tenses de apagamento, e em um tempo reduzido. O apagamento da memria
FLASH extremamente rpido e, ao contrrio da EEPROM, no possvel
reprogramar apenas um nico endereo, isto , quando a memria apagada,
todos os seus endereos so zerados. O AVR apresenta 8k bytes de memria
FLASH Programvel on-chip para armazenamento de programas.

3.3. Memria SRAM

As informaes existentes em uma memria RAM (Random Access


Memory) caso no sejam salvas fisicamente, so perdidas ao se desligar o
computador. Os 608 endereos baixos pertencem s alocaes da Memria de
Dados do Register File, Memria de I/O e a SRAM interna, desses os
primeiros 96 endereos representam o Register File + Memria de I/O, e os
512 endereos restantes so da SRAM interna.

3.4. Registradores do AVR

Uma caracterstica bsica a presena de um grupo de registradores


internos. A arquitetura AVR, apresenta 32 registradores de 8 bits, que podem
ser manipulados para leitura / escrita, como 16 palavras de 16 bits H tambm
os registradores de I/O, os quais so em nmero de 64 e podem ser
endereados diretamente em instrues de apenas um ciclo de clock.

3.5. Registradores e Comandos I/O

Os microcontroladores AVR possuem mltiplos registradores, mas a


maior parte deles utilizada para entrada/sada. Outros possuem funes
especiais e alguns para acesso de dados na memria do microcontrolador.
Alm disso, h registradores exclusivos em alguns modelos de AVR. Os
nomes dos registradores so definidos nos header files para os tipos
apropriados de AVR, por exemplo, #include<avr/io.h> includo na programao.
Os registradores de I/O so bastante utilizados para as diversas funes
de controle no AVR. Eles controlam os acessos s portas e s interfaces com o
microcontrolador. Deve-se ressaltar que h diferenciao entre os registradores
de 8-bits e os de 16-bits.
3.6. Acesso s portas do AVR

H trs endereos de memria (registradores) que so alocados para


cada uma das portas do AVR: PORTx (Data Register), DDRx (Data Direction
Register) e PINx (Port Inputs Pins). Este ltimo s utilizado para leitura
enquanto que os outros dois podem ser utilizados tanto para leitura como
escrita. Estes esto detalhados na figura 3.

Figura 3 - Registradores para direcionar as portas do AVR

Fonte: Atmel (2004).


#include <avr/io.h>
#include <util/delay.h>
int main (void)
{
PORTD = 0x00;/* ativa o resistor pull-up nos pinos PIND*/
DDRD = 0x0C;/* seta os pinos PIND 2 e 3 como saida */
unsigned int d;
d = 10000;
for (;;)//loop infinito
{
PORTD = 0x04;
_delay_ms(d);
PORTD = 0x08;
_delay_ms(d);
}
}

O ncleo AVR combina um conjunto de instrues com 32 registradores


de trabalho, os quais esto diretamente conectados Unidade Lgica e
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 (ponteiro para o acesso de dados ).
A CPU garante a correta execuo do programa, sendo capaz de
acessar as memrias, executar clculos, controlar os perifricos e tratar
interrupes . Na Figura 5 mostra-se um diagrama de blocos da CPU do AVR.
Seguindo a arquitetura Harvard percebe-se apresenta o barramento de dados
para programa e para dados . O paralelismo permite que uma instruo seja
executada enquanto a prxima buscada na memria de programa,
produzindo a execuo de uma instruo por ciclo de clock.
Figura 5 Diagrama em Blocos da CPU do ATmega8
Figura 6 Diagrama em Blocos do ATmega8
4 . Gravao do Programa

Na programao do microcontrolador ATmega8 da famlia AVR utiliza-se


dois programas, so eles AVR Studio 4 e o PonyProg 2000.
A programao pode ser feita em linguagem C (...). Utiliza o software
AVR Studio 4 (Figura 7), onde possvel fazer a compilao e depurao do
de um programa Esta ferramenta til para a deteco de erros no programa.
Ao compilar o programa, o software cria um arquivo em hexadecimal, que
salvo na pasta padro do projeto e este ser utilizado no software PonyProg
para a gravao do microcontrolador.

Figura 7 Tela do AVR Studio

Fonte: Prpria do autor.

Para a efetiva queima do microcontrolador necessrio o software


PonyProg (Figura 8) e um circuito de gravao, o gravador, Figura 9. O
programa salvo na memria FLASH do microcontrolador, opo de escolha
presente no software.
Figura 8- Interface do programa PonyProg.

Fonte: Prpria do autor

Figura 92 - Gravador do AVR ATmega8

Fonte: Prpria do autor


A gravao dos dados e controles, originados de um computador e a
comunicao com o microcontrolador feita por meio de um flat cable ligados
porta serial do PC atravs do conector DB-9, atravs dos pinos MISO, MOSI
, RESET, SCLK, presentes no microcontrolador, conforme especificados na
tabela 4 .

Tabela 4 - Ligaes SPI(Serial Peripheral Interface Bus) ou SSI (Synchronous


Serial Interface ) dos microcontroladores AVR

Nome da conexo Funo

MISO Serial Out Sada de dados

MOSI Serial In Entrada de dados

SCLK Serial Clock Clock de sincronismo

RESET Controle do Reset

Fonte: Prpria do autor


5. Criando um projeto no AVR Studio 4

5.1 Em assembly
1) Project-> new Project (colocar o nome , a pasta e o simulador
No AVR Simulator -> escolhe-se ATmega8
Digitar o projeto ( no esquecer o include )
Projeto exemplo:

Include 8515def.inc
deftemp=16
Reset:
ldi temp,0x0FF
out DDRB,temp
ldi temp, 0x01
Loop:
out portb,temp
rol temp
rjmp Loop
2) Simular -> (debug)
Clicar em Build-> build -. (deve aparece na tela o arquivo anterior )
3) Simular AVR Simulator para testar o projeto. Verificar os I/O view
Obs: degug (seleciona o chip e a plataforma AVR Simulator .
4) Selecionar Debug\Start Debugging

6. Roteiro de Gravao com o ATmel-Pony Prog 2000.

Pony Program 2000.


1) Abrir o arq. .hex (teste) do aTmega 8 . Em seguida (build ) deve-se
compilar .
2) Por default-> tem o . hex
3) Levar para o Pony program 2000
Dicas para programao em C

Leitura de um registrador de I/O

Para leitura, podem-se acessar os registradores de I/O como simples variveis. Em


cdigos fonte, o acesso de leitura feito pela funo inp(). Em verses mais atuais do
compilador o acesso pode ser feito de forma direta e a funo inp() no mais necessria,
como observa-se a seguir:
#include <arv/io.h>
Uint8_t foo;
...
int main(void)
{
// Copia o status dos pinos da porta B na variavl foo
foo = PINB
...
}

Leitura de um bit

A biblioteca do AVR possui funes para averiguao de um bit


individual do registrador:

bit_is_set (<Register>, <Bitnumber>):

A funo examina se um bit foi ativado, retornando um valor diferente de 0.

bit_is_clear (<Register>, <Bitnumber>):

A funo examina se o bit foi desativado, retornando um valor diferente de 0.

Escrevendo em um registrador I/O

Para escrita, podem-se acessar os registradores de I/O como simples variveis. Em


cdigos fonte o acesso a escrita feito pela funo outp(). Em verses mais atuais do
compilador o acesso pode ser feito de forma direta e a funo outp() no mais necessria,
como observa-se a seguir,
#include <arv/io.h>
...
int main(void)
{
DDRA = 0xff; // Define todos os pintos como sada
PORTA = 0x03 // Define o nvel lgico de cada sada
.....
}

Você também pode gostar