You are on page 1of 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 apresentase 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

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 loadstore 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-ona-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 avanada; baixa potncia e alto desempenho, com arquitetura RISC

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, Powersave 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 estgiosenquanto 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 MISO MOSI SCLK RESET Serial Out Serial In Serial Clock Funo Sada de dados Entrada de dados Clock de sincronismo 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 ..... }

You might also like