Vous êtes sur la page 1sur 60

CENTRO UNIVERSITRIO POSITIVO NCLEO DE CINCIAS EXATAS E TECNOLGICAS ENGENHARIA DA COMPUTAO

JOGO DA MEMRIA EMBARCADO

Luis Fabiano Canteri

Monografia apresentada disciplina de Projeto Final como requisito parcial concluso do Curso de Engenharia da Computao, orientada pela prof Adriana Thom.

UNICENP/NCET Curitiba 2007

RESUMO Este projeto consiste na construo de um jogo da memria embarcado composto por um microcontrolador que gera uma seqncia aleatria de nmeros binrios que mostrada atravs das luzes indicativas (leds) e que devem ser repetidas precionando-se os botes (push-buttons) existentes na parte externa do equipamento.

Palavras chave: Microcontrolador ATmega16, Jogo Memria, GENIUS, SIMON

-2-

EMBEDED MEMORY GAME

ABSTRACT

This project is based on the construction of a embedded memory game using a microcontroller to build a random sequence of binary number that is showed using indicative lights (led) and must be replayed pressing the buttons that exist at the external part of equipment.

Key words: ATmega16 Microcontroller, Memory Game, Genius, Simon

-3-

SUMRIO Pg. CAPTULO 1 - INTRODUO.............................................................................................. 9 CAPTULO 2 FUNDAMENTAO TERICA.................................................................. 10 2.1- Assembly ............................................................................................................ 10 2.2- Teoria dos jogos.................................................................................................. 11 2.3- Microcontrolador ............................................................................................... 12 2.3.1- Os microcontroladores AVR Atmel ...................................................... 14 2.3.2- Gravador Atmel AVR ........................................................................... 16 2.3.3- Programa para gravao........................................................................ 18 2.4- AVR ATmega16 - caractersticas ....................................................................... 18 2.5- Diodo semicondutor ........................................................................................... 21 2.5.1- Polarizao Direta .................................................................................. 22 2.5.2- Polarizao Reversa ............................................................................... 22 2.6- LED (Diodo Emissor de Luz) ............................................................................. 23 CAPTULO 3 ESPECIFICAO DO PROJETO................................................................. 24 3.1- Funcionamento ................................................................................................... 24 3.2- Hardware ........................................................................................................... 25 3.3- Software ............................................................................................................. 27 3.3.1- Linguagem de programao .................................................................. 27 3.4- Fluxograma ........................................................................................................ 28 CAPTULO 4 DESENVOLVIMENTO E IMPLEMENTAO........................................... 29 4.1- Cronograma ....................................................................................................... 29 4.2- Definio do microcontrolador............................................................................ 29 4.3- Gravador do microcontrolador ............................................................................ 29 4.4- Desenvolvimento do software ............................................................................. 30 4.5- Exemplos de cdigos .......................................................................................... 30 4.6- placa de circuito impresso ................................................................................... 32 4.7- Produto final ....................................................................................................... 33 CAPTULO 5 VALIDAO E RESULTADOS .................................................................. 34
-4-

5.1- resultados obtidos................................................................................................ 35 CAPTULO 6 - CONCLUSO ............................................................................................... 36 CAPTULO 7 - REFERNCIAS BIBLIOGRFICAS ............................................................ 37 APNDICE A - GLOSSRIO................................................................................................. 38 ANEXO A LISTAGEM DO PROGRAMA .......................................................................... 39

-5-

LISTA DE FIGURAS

Figura. 1 Gnius da Estrela .......................................................................................... 11 Figura. 2 - RISC e CISC ................................................................................................. 14 Figura. 3 - Circuito interno do 74HC244......................................................................... 16 Figura. 4 - Circuito eltrico do gravador ......................................................................... 17 Figura. 5 - ATmega16..................................................................................................... 19 Figura. 6 - Diagrama em blocos ATmega16.................................................................... 20 Figura. 7 - Diagrama em blocos do hardware .................................................................. 26 Figura. 8 - Diagrama eletrnico do hardware .................................................................. 26 Figura. 9 - Prottipo do jogo ........................................................................................... 27 Figura. 10 - Fluxograma de funcionamento..................................................................... 28 Figura. 11 - Layout da placa de circuito impresso............................................................ 32 Figura. 12 - Placa de circuito impresso (vista superior) ................................................... 32 Figura. 13 - Projeto montado em caixa de acrlico........................................................... 33 Figura. 14 - Viso do boto de reset e dos conectores de energia..................................... 33 Figura. 15 - Fonte de alimentao adaptada..................................................................... 34 Figura. 16 - Crianas jogando durante o evento no colgio Positivo Junior ..................... 35

-6-

LISTA DE SIGLAS

UNICENP Centro Universitrio Positivo EEPROM Electrically Erasable Programmable Read-Only Memory. EPROM IDE JTAG RAM CISC RISC LED AVR SPI Erasable Programmable Read-Only Memory. Integrated Development Environment. Joint Test Action Group. Random Access Memory. - Complex Instruction Set Computer - Reduced Instruction Set Computer - Light Emission Diode - Advanced Virtual RISC - Serial Peripheral Interface

-7-

LISTA DE SMBOLOS

Hz MHz V A Mb

Ohm. Hertz. Mega Hertz. Volts. Ampere. Mega Bytes.

-8-

CAPTULO 1 - INTRODUO

O curso de Engenharia da Computao possui muitas reas de atuao como o ramo cientfico, acadmico, industrial, educacional, entretenimento entre outros. A rea educacional e de entretenimento est crescendo muito ao longo dos anos, graas aos avanos cientficos tecnolgicos. e

Este projeto baseia-se no jogo da memria GENIUS da Estrela S.A. comercializado na dcada de 80 originalmente desenvolvido nos EUA com o nome SIMON. O projeto composto por um microcontrolador ATmega16 da ATMEL, responsvel por toda a lgica do jogo. Possui tambm quatro leds onde uma seqncia binria aleatria gerada pelo microcontrolador ser mostrada e possui push-buttons para que o jogador possa tentar executar a mesma seqncia apresentada pelo jogo.

O software, desenvolvido em assembly, responsvel por toda atuao do microcontrolador bem como pela gerao da seqncia aleatria, temporizao, visualizao dos dados gerados, verificao das aes do jogador e verificao dos dados de entrada para comparao dentro da lgica do jogo e aes que precisam ser executadas.

- 9-

CAPTULO 2 FUNDAMENTAO TERICA

O trabalho apresentado baseado em tecnologia de eletrnica digital utilizando microcontrolador e componentes externos como leds, chaves e resistores e tambm software como a linguagem de programao Assembly. A seguir so tratados os fundamentos tericos a respeito de alguns destes componentes.

2.1 Assembly

Assembly uma linguagem de programao onde os programas so escritos em forma de texto. Usando um editor de texto criamos o chamado cdigo fonte (Hyde, 2003). Este cdigo fonte transformado pelo compilador e pelo linker num programa que gravado na memria de programa do microcontrolador para ser executado.

A linguagem Assembly considerada de baixo nvel. Isto no significa que seja menos importante ou eficiente que uma linguagem chamada de alto nvel, so apenas modos diferentes de se programar e nveis diferentes de atuao. Com uma linguagem de baixo nvel como a Assembly, pode-se controla diretamente o microcontrolador, ou seja, nada de intermedirios.

Uma das caractersticas da Assembly que cada linha do cdigo fonte possui apenas uma instruo para o processador. Por exemplo, MOV R15,R16 ir copiar o contedo do registrador R16 para o registrador R15. Neste caso, a instruo MOV chamada de mnemnico. Os mnemnicos so os "apelidos" das instrues, mais fceis de guardar na memria do que seu valor hexadecimal exigido pelo processador. O resultado um programa enxuto, rpido e altamente eficiente. Os componentes da linguagem assembly so as instrues para o processador. E podem ser divididos nas seguintes categorias: Instrues de registradores Instrues de pilha Instrues de execuo Instrues de memria Instrues de flag Declaraes de memria Diretivas para o assembly Comentrios
- 10-

2.2. Teoria dos jogos A teoria de jogos (matemtica), um ramo da economia (Mendes, 2007), visualiza qualquer ambiente multiagente como um jogo, desde que o impacto de cada agente sobre os outros seja significativo, no importando se os agentes so cooperativos ou competitivos. Os jogos ocuparam as faculdades intelectuais dos seres humanos chegando algumas vezes a um grau alarmante desde que surgiu a civilizao.

Como uma parte dos jogos podemos citar os jogos educativos, mais explicitamente os do tipo computadorizados. Os jogos educativos computadorizados possuem, como uma de suas principais vantagens, um grande potencial para o processo de ensino e aprendizagem (Silveira, 1998), por despertarem naturalmente o interesse dos alunos. Os jogos podem ser empregados em uma variedade de propsitos dentro do contexto de aprendizado. Um dos usos bsicos e muito importante a possibilidade de construir-se a autoconfiana. Outro, o incremento da motivao. (...) um mtodo eficaz que possibilita uma prtica significativa daquilo que est sendo aprendido. At mesmo o mais simplrio dos jogos pode ser empregado para proporcionar informaes factuais e praticar habilidades, conferindo destreza e competncia.

Um exemplo de jogo educativo computadoriza o jogo GNIUS da fabricante brasileira de brinquedos Estrela S/A. Este jogo tem como objetivo desenvolver a capacidade de utilizao da memria. Na Fig.1 abaixo podemos ver uma imagem do mesmo.

Fig. 1 Gnius da Estrela

Os jogos desempenham um papel importante no desenvolvimento da criana. O jogo representa esforo e conquista, uma necessidade vital. O jogo possibilita o equilbrio entre o mundo interno e o externo, canalizando as energias das crianas e transformando em prazer suas angstias.
- 11-

O jogo estimula a vida e representa, efetivamente, uma contribuio na aprendizagem da criana, por ser uma atividade rica e desafiadora, contribuindo para o crescimento intelectual e afetivo. Os jogos educativos podem despertar no aluno: motivao, estmulo, curiosidade, interesse em aprender e cabe ao professor aproveitar-se destas caractersticas como estratgias pedaggicas. O aluno constri seu conhecimento de maneira ldica e prazerosa.

A influncia do brinquedo no desenvolvimento da criana muito grande. Atravs deste, a criana aprende a agir cognitivamente, sendo livre para determinar suas aes. O brinquedo estimula a curiosidade, a iniciativa e a autoconfiana, proporcionando o desenvolvimento da linguagem, do pensamento e da concentrao da ateno.

"Desde muito cedo o jogo na vida da criana de fundamental importncia, pois quando ela brinca, explora e manuseia tudo aquilo que est sua volta, atravs de esforos fsicos e mentais...".

O jogo tem uma relao estreita com a construo da inteligncia e possui uma efetiva influncia como instrumento incentivador e motivador no processo de ensino e aprendizagem.

Os jogos devem possuir as seguintes caractersticas bsicas: estimular a imaginao infantil, auxiliar no processo de integrao grupal, liberar a emoo infantil, facilitar a construo do conhecimento e auxiliar na aquisio da auto-estima.

2.3. Microcontrolador

Um microcontrolador um componente que possui, num nico chip, alm de uma CPU, elementos tais como memrias ROM e RAM, temporizadores, contadores, canais de comunicao e conversores analgico-digitais (Ziler, 2007). Esta caracterstica diferencia os sistemas baseados em microcontroladores daqueles baseados em microprocessadores, onde

normalmente se utilizam vrios componentes para implementar essas funes. Com isso, os microcontroladores permitem a implementao de sistemas mais compactos e baratos do que aqueles baseados em microprocessadores.

- 12-

Em contrapartida, as CPUs dos microcontroladores so, em geral, menos poderosas do que os microprocessadores. Seu conjunto de instrues costuma se limitar s instrues mais simples encontradas nestes, sua freqncia de clock mais baixa e o espao de memria enderevel costuma ser bem menor. V-se da que o campo de aplicao dos microcontroladores diferente daquele dos microprocessadores, e que um sistema que possa ser controlado por um microcontrolador tende a ter menor complexidade e menor custo do que um sistema que exija a capacidade de processamento de um microprocessador.

Exemplos de sistemas onde os microcontroladores encontram aplicao incluem controle de semforos, balanas eletrnicas, micro terminais, telefones pblicos, controle de veiculao de comerciais de TV, controle de carregadores de baterias, inversores, controles de acesso, taxmetros, sistemas de aquisio de dados de manufatura e eletrodomsticos em geral.

A programao dos microcontroladores , em geral, mais simples do que a dos microprocessadores, ao menos no que diz respeito s exigncias de conhecimento dos componentes perifricos. Isto acontece porque os perifricos on-chip dos microcontroladores so acessados de uma forma padronizada e integrada na prpria linguagem de programao, dispensando o conhecimento de detalhes externos.

No se deve pensar, porm, que isto simplifique a tarefa do programador em todos os nveis: necessrio que ele conhea bem o hardware conectado ao microcontrolador para poder produzir programas que funcionem corretamente.

Cabe citar ainda uma vantagem particular dos microcontroladores que possuem memria ROM, que a possibilidade de armazenar programas internamente, dificultando sensivelmente a cpia ilcita do cdigo.

- 13-

2.3.1 Os microcontroladores AVR Atmel


Os microcontroladores AVR da fabricante Atmel (Fig. 1) so microcontroladores de 8 bits (Soares, 2006), desenvolvidos sobre a tecnologia RISC Reduced Instruction Set Computer (Computador com Set de Instrues Reduzido). Esta tecnologia baseada na arquitetura HARWARD, que separa a memria de dados da memria de programa. Desta forma, um microcontrolador AVR tem um barramento para dados e outro para programa. Esta separao de barramentos permite uma maior velocidade no tratamento dos dados e do programa.

Apenas para efeito de comparao, o microcontrolador 8051 Intel, por exemplo, foi desenvolvido sob tecnologia CISC Complex Instruction Set Computer (Computador com Set de Instrues Complexo) e arquitetura Van Neuman, onde a memria de dados e programa no so separadas (trafegam por um mesmo barramento). Na Fig. 2 temos um demonstrativo entre as duas tecnologias descritas.

Fig. 2 RISC e CISC (Fonte: Soares, 2006) Um outro detalhe muito importante sobre a famlia AVR diz respeito quantidade de ciclos de mquina necessrios para executar uma instruo. Esse fator determina a quantidade de MIPS (milhes de instrues por segundo) que um microcontrolador pode alcanar.

Na famlia AVR um pulso de clock equivale a um ciclo de mquina (Soares, 2006). Como necessrio apenas um nico ciclo de mquina para executar a maioria das instrues pertencentes ao seu instruction set, um AVR operando com um oscilador de 4 MHZ estar operando exatamente a 4 MIPS.

- 14-

Essa informao bastante interessante e deve ser levada em conta caso seja necessrio executar operaes a grandes velocidades com um microcontrolador. Se compararmos um AVR a um microcontrolador 8051 e a um microcontrolador PIC (sem o uso do PLL interno, presente na famlia 18F), ambos com oscilador de 12 MHZ, teramos as seguintes velocidades, em MIPS, indicadas na Tabela 1. (Soares, 2006)

Como pode ser visto na Tabela 1, a velocidade dos microcontroladores AVR grande.
Microcontrolador com cristal externo de 12 MHZ AVR Atmel PIC Microchip 8051 Intel

MIPS 12 03 01

Tabela 1 Comparativo de velocidade entre microcontroladores (Fonte: Soares, 2006) Uma outra facilidade muito interessante da famlia AVR diz respeito aos modos de gravao possveis. Alguns microcontroladores AVR admitem at trs modos de gravao: ISP in System, paralela e depurao de debug via interface JTEG.

No modo ISP so necessrias apenas quatro ligaes com o microcontrolador para a sua gravao, leitura ou verificao. Veja estas ligaes na Tabela 2.

Observando os nome das ligaes necessrias, fcil concluir que o protocolo de transferncia de dados segue o protocolo SPI, bastante comum em outros CIs.
Nome da conexo MISO MOSI SCLK RESET Serial Out Serial In Serial Clock Funo Sada de dados Entrada de dados Clock de sincronismo Controle de Reset

Tabela 2 Ligaes ISP (Fonte: Soares, 2006)

- 15-

No modo ISP no preciso nenhuma tenso especfica em qualquer dos pinos do microcontrolador para efetuar a gravao. Uma outra grande vantagem deste modo, que o mesmo feito In-System, ou seja, diretamente onde o microcontrolador est instalado (respeitando-se algumas regras). Desta forma no necessrio retirar o microcontrolador do circuito para grav-lo. Essa vantagem refere-se diretamente na velocidade de desenvolvimento. A grande maioria dos compiladores do mercado aceitam gravadores ISP e trazem o devido suporte aos mesmos.

No modo paralelo so necessrias outras ligaes e o padro de comunicao entre o gravador e o microcontrolador feito de uma maneira diferente. Gravadores neste formato so mais caros, pois so exigidos componentes complexos (como um microcontrolador com o algoritmo necessrio a gravao) em seus circuitos. O modo de depurao de debug atravs de uma interface JTEG permite que o programa seja depurado diretamente no microcontrolador.

Os microcontroladores AVR tambm oferecem uma srie de perifricos como Timers, Conversores Analgicos, Canais para PWM, portas de comunicao USART, SPI e I2C, alm de rede CAN, memrias EEPROM, e muitos outros perifricos. 2.3.2 Gravador Atmel AVR

O circuito do gravador mostrado na Fig. 4. Tem-se um nico CI que atua como buffer para a porta paralela. Trata-se do CI 74HC244. Seu circuito interno pode ser visto na Fig. 3. Este circuito integrado basicamente um buffer com oito portas TTL. Na Fig. 4 pode-se ver o diagrama de blocos do mesmo, assim como a distribuio de sua pinagem e na Tabela 3 seu modo de operao (tabela verdade).

Fig. 3 Circuito interno do 74HC244 (Fonte: Soares, 2006)

- 16-

Fig. 4 Circuito eltrico do gravador

Entradas /G L L H A L H X

Sadas Y L H Z L low ou 0 lgico H High ou 1 lgico X nvel lgico no importa Z Alta impedncia

Tabela 3 Modo de operao para o 74HC244 (Fonte: Soares, 2006) Observando atentamente a Tabela 3, podemos notar que qualquer nvel lgico (0 ou 1) inserido nas entradas A so refletidos nas sadas Y, desde que o pino de habilitao /G seja levado ao nvel lgico 1, as sadas so colocadas em alta impedncia, independente do nvel lgico presente nas entradas do CI. Os pinos /G (1 e 19) do CI so controlados pelos pinos 4 e 5 da porta paralela, ou seja, as sadas so colocadas em tri-state (alta-impedncia) sempre que o gravador no estiver em operao. Esta caracterstica permite o uso do gravador diretamente ligado ao microcontrolador, instalado no circuito (In-System).

- 17-

O gravador retira a alimentao do circuito onde o microcontrolador estiver inserido. O LED est ligado ao VCC e ao pino 4 da porta paralela. Sempre que este pino for levado ao nvel lgico 0, para habilitar o CI, o LED acende indicando. Desta forma tem-se a indicao de que o gravador est em operao (gravao, leitura ou verificao).

O capacitor C1 um capacitor de desacoplamento para o CI, servindo assim como filtro contra transientes. 2.3.3 Programa para gravao Para utilizar o gravador, foi utilizado o programa PonyProg que pode ser obtido gratuitamente no site do desenvolvedor LANCOS. Este programa possui um add-on (tambm disponvel no site) que permite que os menus e as mensagens sejam grafados em lngua portuguesa.

2.4 AVR ATmega16 Caractersticas O ncleo AVR combina um rico conjunto de instrues com 32 registradores de uso geral. Todos os 32 registradores esto ligados diretamente com a Unidade Lgica Aritmtica (ULA), permitindo que dois registradores independentes tenham acesso executando uma nica instruo em um ciclo de clock. A arquitetura resultante possui cdigo mais eficiente enquanto que o throughput pelo menos dez vezes mais rpido que um microcontrolador CISC convencional.

O ATmega16 possui as seguintes caractersticas: 16k bytes de memria FLASH interna de programa com capacidade Ler-Enquanto-Escreve (Read-While-Write), 512 bytes EEPROM, 1kbyte SRAM, 32 linhas gerais de E/S, 32 registradores de uso geral, uma interface JTAG para Boundary-Scan, suporte on-chip para programao e debugging, 3 temporizadores/contadores flexveis com modo de comparao, interrupes internas e externas, USART serial programvel, interface serial two-wire orientada a byte, 8 conversores analgico/digital com 10 bites de resoluo cada, watchdog programvel com oscilador interno, porta serial SPI, gerenciador de energia com 6 modos, Isto permite uma inicializao rpida combinado com baixo consumo de energia. (Atmel, 2007)

O microcontrolador fabricado utilizando uma tecnologia de memria no voltil de alta densidade da Atmel. A memria FLASH ISP interna permite que o dispositivo seja reprogramado atravs de uma interface SPI serial, por um programador convencional de memria no voltil, ou por um programa de boot on-chip executando no ncleo do AVR.
- 18-

Combinando uma CPU RISC de 8-bits com auto-programao interna em um chip monoltico, o ATmega16 da Atmel um microcontrolador poderoso que permite alta flexibilidade e soluo de custo efetivo para muitas aplicaes embarcadas microcontroladas.

O ATmega16 AVR suportado por uma grande variedade de programas e ferramentas de desenvolvimento incluindo: compiladores C, macro assembly, programas simuladores/ debbugers, emuladores in-circuit, e kits didticos. (Atmel, 2007)

O aspecto externo do ATmega16 o da Fig. 5. Os pinos VCC (positivo) e GND (negativo ) so utilizados para a alimentao do microcontrolador que pode varias entre 2,7 V e 5,5 V de tenso contnua. A porta A (PA7..PA0) serve como entrada analgica para o conversor A/D. Ela tambm utilizada como uma porta de E/S bidirecional de 8-bits, se o conversor A/D no for usado.

A porta B (PB7..PB0) uma porta de E/S bidirecional de 8-bits. A porta C (PC7..PC0) uma porta de E/S bidirecional de 8-bits. Ela tambm utilizada para as funes com a interface JTAG. A porta D (PD7..PD0) uma porta de E/S bidirecional de 8-bits. O pino RESET gera a reinicializao do microcontrolador ao receber um sinal com borda de descida. O pino XTAL1 a entrada do amplificador oscilador inversor e sada do circuito interno de clock. O pino XTAL2 a sada do amplificador oscilador inversor. O pino AVCC o pino de alimentao para a porta A e o conversor A/D. Deve ser conectado ao VCC a no ser que o conversor A/D no seja utilizado. AREF o pino de referncia analgico para o conversor A/D. (Atmel, 2007)

Fig. 5 - ATmega16 (Fonte: Atmega16,2007)

- 19-

Fig. 6 Diagrama em blocos ATmega16 (Fonte: Atmega16, 2007)

- 20-

2.5 Diodo semicondutor Conforme (Marques ,2002) o diodo semicondutor constitudo por uma juno PN, ou seja, pela unio fsica de um material tipo P (cujos portadores majoritrios so lacunas) com um tipo N (cujos portadores majoritrios so eltrons).

Efetuado-se esta unio, o excesso de eltrons do material tipo N tende a migrar para o material tipo P, visando tanto o equilbrio eletrnico equilbrio das densidades de eltrons dos dois materiais como a estabilidade qumica cada tomo do material tipo N que perde um eltron fica com oito eltrons na sua camada de valncia, o mesmo acontecendo com cada tomo do material tipo P que tem sua lacuna ocupada por este eltron.

Este fenmeno de ocupao de uma lacuna por um eltron chamado de recombinao. Como o processo de recombinao ocorre inicialmente na regio prxima juno, um fenmeno interessante acontece: a formao de uma camada de depleo. Depleo significa diminuio ou ausncia e, neste caso, esta palavra corresponde ausncia de portadores majoritrios na regio prxima juno PN.

A medida que os tomos do material tipo P prximos juno recebem os primeiros eltrons preenchendo suas lacunas, no lado N forma-se uma regio com ons positivos (falta de eltrons) e, no lado P, uma regio com ons negativos (excesso de eltrons), dificultando ainda mais a passagem de eltrons do material tipo N para o material tipo P.

Assim, a partir de certo momento, este fluxo de eltrons cessa e esta regio ionizada (camada de depleo) fica com ausncia de eltrons e lacunas, que so os responsveis pela corrente eltrica.

Como a camada de depleo fica ionizada, cria-se uma diferena de potencial na juno chamada barreira de potencial. Esta diferena de potencial, a 25C de aproximadamente 0,7V para os diodos de silcio e 0,3V para os diodos de germnio.

Cada lado do diodo semicondutor recebe um nome: o lado P chama-se anodo(A) e o lado N chama-se catodo(K).

Aplicando-se uma tenso nos terminais do diodo, a camada de depleo se modifica, alterando tambm as caractersticas da barreira de potencial. Estas modificaes dependem do sentido de polarizao do diodo.
- 21-

2.5.1 Polarizao Direta A polarizao direta ocorre quando o potencial positivo da fonte encontra-se ligado ao lado P e o potencial negativo ao lado N. Com VCC > Vy, os eltrons do lado N ganham mais energia porque so repelidos pelo terminal negativo da fonte, rompem a barreira de potencial Vy e so atrados para o lado P, atravessando, assim, a juno.

No lado P, eles recombinam-se com as lacunas, tornando-se eltrons de valncia, mas continuam deslocam-se de lacuna em lacuna, pois so atrados pelo terminal positivo da fonte, formando-se uma corrente eltrica de alta intensidade (Id ou If), fazendo com que o diodo semicondutor se comporte como um condutor ou uma resistncia direta Rd muitssimo pequena. (Marques ,2002) 2.5.2 Polarizao Reversa A polarizao reversa ocorre quando o potencial negativo da fonte encontra-se ligado no lado P e o potencial positivo no lado N. Por causa da polarizao reversa, os eltrons do lado N so atrados para o terminal positivo e as lacunas para o terminal negativo da fonte. Com isso formam-se mais ons positivos do lado N e ons negativos no lado P, aumentando assim, a camada de depleo e, consequentemente, a barreira de potencial.

A barreira de potencial aumenta at que sua diferena de potencial se iguale a tenso da fonte de alimentao. Portanto, quanto maior a tenso da fonte, maior a barreira potencial. Desta forma , os portadores majoritrios de cada lado do diodo (lacunas no lado P e eltrons no lado N) no circulam pelo circuito.

Por outro lado, existe uma corrente muito pequena formada pelos portadores minoritrios (eltrons no lado P e lacunas no lado N), muitos deles criados continuamente pela energia trmica a temperatura ambiente. Esta pequena corrente eltrica chamada corrente reversa (Ir) estando limitada aos portadores minoritrios, ou seja, ela no aumenta proporcionalmente tenso reversa aplicada ao diodo, sendo considerada desprezvel na grande maioria dos casos. Assim o diodo se comporta como se fosse um circuito aberto ou uma resistncia reversa Rr altssima. Portanto, o diodo semicondutor um dispositivo que conduz apenas quando polarizado diretamente. Este fato fez com que este dispositivo pudesse substituir a antiga vlvula diodo, com a vantagem de dissipar menos potncia e ter dimenses muito menores.
- 22-

2.6 LED (Diodo Emissor de Luz) Num diodo, quando polarizado diretamente, uma grande quantidade de portadores atravessa a regio de depleo na qual, algum deles, recombinam com tomos ionizados. Nesse processo, os eltrons, perdem energia na forma de radiao. Nos diodos de silcio ou germnio, essa radiao liberada principalmente na forma de calor mas, em compostos de arseneto de (GaAs), existe a liberao de energia na forma de luz.

Esses diodos so chamados de diodos emissores de luz ou, simplesmente, LED (do ingls Light Emitting Diode) e podem emitir luz visvel, infravermelho (freqncia menor ou comprimento de onda maior que a faixa de luz visvel) ou ultravioleta (freqncia maior ou comprimento de onda menor que faixa de luz visvel). Este fenmeno ocorre principalmente quando o tamanho da banda proibida igual ao comprimento das ondas de luz, favorecendo a emisso de ftons (partculas de luz).

Os principais LEDs de luz visvel so feitos a partir de GaAs acrescidos de fsforo que, dependendo da quantidade, podem irradiar luz vermelha, laranja, amarela, verde ou azul e so muito utilizados como sinalizadores em instrumentos eletrnicos ou na fabricao de displays (indicadores numricos de sete segmentos onde cada segmento um LED).

Para a emisso de luz infravermelha, pode-se utilizar InSb (antimoneto de ndio) com aplicaes em alarmes, transmisso de dados por fibras ticas e outras que exijam radiao invisvel ou GaAs acrescida de alumnio que so muito utilizados em aparelhos de disco-laser. Para a radiao ultravioleta, o mais utilizado o diodo a base de sulfato de zinco (ZnS).

Os LEDs tm as mesmas caractersticas dos diodos comuns, ou seja, s conduzem quando polarizados diretamente com tenso maior ou igual a Vy. Comercialmente, eles trabalham normalmente com correntes na faixa de 10mA a 50mA e tenses na faixa de 1,5V a 2,5V.

Assim, para se polarizar um LED, deve-se utilizar um resistor limitador de corrente para que o mesmo no danifique. CAPTULO 3 ESPECIFICAO DO PROJETO Este projeto consiste na construo de um jogo da memria embarcado composto por um microcontrolador ATMega16 da Atmel que gera uma seqncia aleatria de nmeros binrios
- 23-

que mostrada atravs das luzes indicativas (leds) e que devem ser repetidas pelo jogador precionando-se os botes (push-buttons) existentes na parte externa do equipamento.

3.1 Funcionamento

Ao ligar o equipamento, ele apresenta uma seqncia de inicializao que consiste em ligar todos os leds por um tempo e apag-los logo em seguida, apenas para indicar que todos os leds esto funcionando normalmente.

Aps a inicializao, o jogo fica em looping aguardando que um dos botes seja pressionado para selecionar o nvel de dificuldade do jogo, sendo que cada um dos quatro botes corresponde a um nvel de dificuldade. Cada nvel corresponde a uma maior quantidade de posies que precisam ser memorizadas e botes que precisam ser pressionados, e tambm maior a velocidade com que os leds piscam. Os nveis foram definidos internamente no programa, ou seja, para alter-los necessrio alterar o programa e regravar o microcontrolador. So estes os nveis definidos:

Nvel 1 Composto por uma seqncia de 5 luzes e tempo de 1500ms entre elas. Nvel 2 Composto por uma seqncia de 7 luzes e tempo de 1000s entre elas. Nvel 3 Composto por uma seqncia de 10 luzes e tempo de 500ms entre elas. Nvel 4 Composto por uma seqncia de 15 luzes e tempo de 125ms entre elas.

Aps a seleo do nvel de dificuldade, o jogo inicia uma nova seqncia gerando aleatoriamente qual led deve piscar primeiro e armazenando o seu valor na memria, em seguida o jogo pisca o primeiro led e aguarda que seja pressionado um boto, isto feito lendo-se o contedo da porta B do microcontrolador e comparando se o valor diferente de zero.

Assim que um boto pressionado, o seu respectivo valor armazenado na memria do microcontrolador e comparado com o valor respectivo ao led armazenado em memria. Caso os valores sejam diferentes todos os leds ficam piscando indicando que o jogador errou. Caso contrrio o jogo prossegue gerando aleatoriamente um novo led que deve piscar e armazenando o seu valor na memria, na posio seguinte a do led anterior. Ento mostrada a seqncia completa, ou seja, pisca-se um led de cada vez at que todos os que compe a seqncia tenham piscado, ento, o programa aguarda at a quantidade respectiva de botes seja pressionada e faz uma nova comparao.
- 24-

O jogo termina quando o jogador conseguir acertar todas as jogadas atingindo a quantidade prestabelecida na seleo de dificuldade. Para reiniciar o jogo, se faz necessrio apenas pressionar o boto de reset na lateral do jogo.

3.2 Hardware O equipamento desenvolvido composto pelos seguintes componentes:

1 placa de circuito impresso 1 processador ATMEL AVR ATmega16 1 suporte para CI de 40 pinos 2 leds verdes 10mm 2 leds amarelos 10mm 4 resistores de 1k ohm 4 resistores de 220 ohms 5 botes do tipo push-button 1 fonte estabilizada de 5V 1 caixa de acrlico Cabos e conectores 1 buzzer

Na Fig. 7 podemos verificar o diagrama em blocos do equipamento, onde as entradas so os botes (azul e verde) e as sadas so os leds (amarelo).

Na Fig. 8 pode-se observar o diagrama eletrnico do hardware com a ligao de todos os componentes envolvidos no projeto.

- 25-

Fig. 7 - Diagrama em blocos do hardware

Fig. 8 Diagrama eletrnico do hardware

Na Fig. 9 pode-se verificar como ficou o projeto j montado com seus componentes definitivos e pronto para realizao dos testes.

- 26-

Fig. 9 Prottipo do jogo

3.3 Software O software parte fundamental do projeto, sendo que nele est definida toda a lgica do jogo assim como o controle sobre o hardware para efetuar a leitura dos botes pressionados e controlar os leds e o buzzer.

3.3.1 Linguagem de programao

O desenvolvimento do software foi realizado utilizando-se a linguagem de programao assembly e a interface grfica de desenvolvimento AVR Studio da prpria Atmel que fornece a mesma gratuitamente mediante um simples cadastro em seu web site.

Foi utilizado o assembly por trs motivos: primeiro por uma questo pessoal, pois a programao em baixo nvel foi uma das matrias estudadas durante o curso que mais me interessaram. Durante o curso aprendeu-se a programao de microcontroladores com arquitetura CISC ento para o projeto, decidiu-se utilizar um microcontrolador com arquitetura RISC para aumentar os conhecimentos na rea de programao de microcontroladores. Segundo, por ser uma linguagem de baixo nvel permite um maior controle sobre o hardware mesmo tornando a programao um pouco mais complexa e trabalhosa. E por ltimo, com a utilizao do AVR Studio possvel simular todo o comportamento do hardware, passo a passo, facilitando encontrar problemas (bugs) na programao.

- 27-

3.4 Fluxograma

Abaixo na Fig. 10 est o fluxograma de funcionamento do programa do jogo da memria.

Incio

Inicializao (piscam todos os leds)

Aguardar que um boto seja precionado (seleciona nvel dificuldade)

Gerar aleatriamente novo nmero, guardar na memria no fim da fila de nmeros gerados

Mostrar seqncia de nmeros gerados piscando os respectivos leds

Aguardar que o jogador precione os botes na quantidade igual a quantidade mostrada

Armazenar na memria o valor dos botes precionados pelo jogador

Os valores gerados pelo jogo So iguais aos valores dos botes que jogador precionou ?

Sim

Atingiu a quantidade de nmeros definidos no nvel de dificuldade ?

No

No

Sim

Piscar leds em srie indicando que o jogador errou

Piscar leds em srie indicando que o jogador venceu o jogo

FIM

Fig. 10 Fluxograma de funcionamento


- 28-

CAPTULO 4 DESENVOLVIMENTO E IMPLEMENTAO

O desenvolvimento e a implementao envolveram tanto hardware quanto software (prrequisito para o projeto) sendo que a maior parte do tempo de desenvolvimento foi gasta na parte de software em assembly. Cerca de apenas 1/3 do tempo total de desenvolvimento foi utilizado no hardware.

4.1 Definio do microcontrolador

Foi escolhido o microcontrolador ATMega16 da famlia AVR da ATMEL por ser um microcontrolador com arquitetura RISC, que utiliza um ciclo de clock por instruo, tornando assim mais simples o controle de temporizadores. Outras caractersticas que levaram a escolha deste microcontrolador foram as seguintes: Possui 16Kbits de memria FLASH para gravao de programas e dados, no necessitando de componentes externos para armazenar o programa. A programao pode ser feita conectando-se o microcontrolador diretamente ao computador onde o programa foi desenvolvido atravs da porta paralela, com isso possvel desenvolver o projeto em qualquer computador que possua o software de gravao. Possui oscilador interno com clock de 8Mhz evitando assim cristais externos que normalmente so uma fonte de problemas nos projetos. Possui 4 portas de entrada e sada de 8 bits cada que podem fornecer at 20mA de corrente na sada de cada porta conseguindo alimentar sem problemas um led de forma direta ou seja sem necessidade de fonte externa tornando o projeto com arquitetura de hardware bastante otimizada. Toda a documentao sobre o microcontrolador pode ser encontrada no prprio web site da Atmel em forma de documentos pdf que podem ser baixados de forma gratuita. No foi encontrado fornecedor deste microcontrolador em Curitiba, sendo necessrio a compra do mesmo com fornecedor de So Paulo atravs da Internet.

4.3 Gravador do microcontrolador

Um dos problemas encontrados foi que os gravadores existentes para uso no eram compatveis com os microcontroladores da famlia AVR da Atmel. Assim foi necessrio o desenvolvimento de um gravador especfico para o microcontrolador ATMega16. Aps vrios testes foi encontrado um projeto de gravador relativamente simples (Soares, 2006). Utilizando apenas um circuito integrado o 74HC244 (buffer) e um conector DB25 foi construdo o gravador que

- 29-

funcionou j no primeiro teste. O teste foi realizado utilizando o software de gravao PonyProg 2000 que gratuito e fcil utilizao.

4.4 Desenvolvimento do software

Para o desenvolvimento do software, foi utilizado o ambiente de desenvolvimento AVR Studio disponibilizado pela prpria Atmel que fabrica o microcontrolador utilizado. No web site da Atmel encontram-se documentos que mostram de forma detalhada com programar utilizando o AVR Studio e a linguagem de programao assembly. Os principais documentos so o AVR Instruction Set que possui todas as instrues assembly suportadas pelos microcontroladores da famlia AVR e o AVR-Assembler-Guide com exemplos de como comear a programar e controlar os componentes internos dos microcontroladores AVR. A maior dificuldade encontrada durante a programao do jogo, no foi a linguagem assembly como muitos podem pensar, mas sim conhecer o correto funcionamento dos componentes internos do microcontrolador e como acion-los via programao, pois isto no est muito claro na documentao tcnica da Atmel e no h muito material disponvel em livros ou na Internet para os casos especficos do projeto. A simulao do software muito fcil de utilizar e de grande ajuda no desenvolvimento do projeto pois facilita a programao permitindo que a mesma seja feita em qualquer computador no necessitando do hardware para os testes mais bsicos.

4.5 Exemplos de cdigos

Na programao do Atmel Atmega16, uma caracterstica particular que primeiramente necessrio definir como as portas sero utilizadas, se para entrada de dados ou para sada de dados. Isto feito utilizando-se os registradores DDRA, DDRB e DDRD que so os respectivos controladores de entrada/sada das portas A, B e D. No possvel gravar diretamente um valor nas portas de entrada/sada sendo necessrio utilizar um registrador temporrio para isto. O registrador R16 utilizado como registrador temporrio e apelidado de tp para facilitar a programao. O comando ldi (load direct) transfere diretamente o valor fornecido para registrador.
ldi out ldi out out tp,0X00 DDRA,tp tp,0xFF DDRB,tp DDRD,tp // PORTA -> IN // PORTB -> OUT // PORTD -> OUT

- 30-

O cdigo abaixo refere-se ao gerador de nmero aleatrio. Primeiro definimos o valor inicial do contador igual a zero e depois iniciamos o contador que ser incrementado a cada clock do microcontrolador.
ldi ldi out out tp,0x01 tc,0x00 TCNT2,tc TCCR2,tp

// Time Counter2 = 0 // Iniciar Timer2

O programa l o contador e armazena o seu valor no registrador tp, ento aplicada a uma mscara com valor binrio 00000011 e realizada a operao lgica AND para filtrar o valor restando apenas os dois ltimos bits do valor lido anteriormente. Como o valor depende do tempo que a rotina levou para ser executada e esta depende do tempo que o jogador demorou para pressionar os botes na jogada anterior, quase sempre o nmero gerado ser diferente do anterior.

Este resultado pode conter os seguintes valores: 00, 01, 10, 11 sendo que necessrio transform-los em 0001, 0010, 0100, 1000 respectivamente para formar um valor que possa ser enviado para a porta de sada e acender apenas um led de cada vez.
random: // Generate random number using TimeCounter2 NOP in tp,TCNT2 // L o valor do TimeCounter2 e armazena em tp ldi tmp,0x03 // Mscara = 00000011 AND tp,tmp // Mantm somente os dois ltimos bits do contador random0: ldi rnd,0x00 cp tp,rnd brne random1 ldi tp,0x01 ret random1: ldi rnd,0x01 cp tp,rnd brne random2 ldi tp,0x02 ret random2: ldi rnd,0x02 cp tp,rnd brne random3 ldi tp,0x04 ret random3: ldi rnd,0x03 cp tp,rnd ldi tp,0x08 ret

- 31-

4.6 Placa de circuito impresso Na Fig.11, podemos ver o layout da placa de circuito impresso que foi criado utilizando o software gratuito EAGLE (Easily Applicable Graphical Layout Editor) e a placa foi produzida durante o curso de criao de placas de circuito impresso ministrado na Unicenp.

Fig. 11 Layout da placa de circuito impresso

Na Fig.12 pode-se verificar o resultado final da placa de circuito impresso j com seus componentes devidamente soldados. Nota-se que na placa ficam somente o microcontrolador, alguns resistores de pull-up, os resistores dos leds, conectores e um led de luz azul para indicar que o jogo terminou.

Fig. 12 Placa de circuito impresso (vista superior)

- 32-

4.7 Produto final

Nas Fig.13 e Fig.14 podemos observar a aparncia do projeto finalizado. Internamente temos a placa com o microcontrolador e os conectores ligados aos botes e leds. Externamente podemos acionar os botes e ver os leds acendendo.

Fig. 13 Projeto montado em caixa de acrlico

Fig. 14 - Viso do boto de reset e dos conectores de energia

- 33-

A caixa de acrlico foi confeccionada na empresa Pr Acrlico especializada no trabalho com acrlico onde foi montada a caixa e realizadas as furaes para os botes, leds e conectores externos.

CAPTULO 5 VALIDAO E RESULTADOS

Como o projeto possui poucos componentes externos ao microcontrolador, a montagem e testes em protoboard foi realizada sem maiores dificuldades. Aps os testes realizados no ambiente de desenvolvimento de software, o programa foi gravado no ATMega16 que utilizando leds e pushbuttons montados no protoboard respondeu conforme o esperado programao feita. Foi necessria uma grande quantidade de ajuste no software at se obter bons resultados com a temporizao ao piscar os leds e com a resposta ao pressionamento dos botes pois como a leitura das portas de entrada e sada do microcontrolador feita em uma velocidade bastante alta, foi necessrio criar partes especficas de software somente para detectar quando o boto era pressionado e quando o mesmo era solto pelo jogador evitando assim mltiplas leituras repetidas enquanto o boto estava pressionado. A fonte de energia utilizada no projeto, Fig. 15, foi adaptada de um carregador de celular da LG que fornece uma tenso de 5V com uma corrente de at 1A sendo essa capacidade muito maior que a utilizada pelos componentes envolvidos.

Fig. 15 Fonte de energia adaptada

A validao do projeto foi realizada inicialmente em laboratrio com vrios alunos e professores do curso de Engenharia da Computao. Tambm foi realizada validao do projeto no evento Cincias e Criao do colgio Positivo Junior onde houve a oportunidade de testar o projeto com vrias crianas jogando por uma manh inteira, como pode ser visto na Fig. 16.

- 34-

Fig. 16 Crianas jogando durante o evento no colgio Positivo Junior

5.1 Resultados Obtidos Os resultados obtidos foram satisfatrios pois durante toda a validao o jogo funcionou conforme o esperado no apresentando problemas de lgica ou mau funcionamento. A construo do projeto se mostrou bastante robusta no apresentando defeitos fsicos em nenhum dos casos validados. Observou-se que o primeiro nvel de dificuldade relativamente lento para crianas, pois as mesmas se mostraram rapidamente adaptveis ao funcionamento do projeto passando assim para nveis com maior dificuldade e no jogando mais no primeiro nvel. O buzzer localizado internamento na caixa de acrlico apresentou baixa performance para ambientes abertos e ruidosos. Os leds apresentaram baixa luminosidade em ambientes bem iluminados com luz solar. A alimentao de energia do projeto, tambm funcionou como esperado durante todo o tempo.

- 35-

CAPTULO 6 - CONCLUSO

A proposta do projeto foi a construo de um jogo da memria embarcado utilizando um microcontrolador RISC. Dentro do proposto podem citar alguns itens importantes na finalizao do projeto tais como:

Pontos positivos: O microcontrolador mostrou-se bastante robusto e com caractersticas importantes para o bom funcionamento do projeto como oscilador interno, boa capacidade de memria SRAM , grande velocidade de resposta respondendo muito bem as aes dos jogadores, baixo custo. O circuito impresso foi de fcil desenvolvimento e rpida confeco. O ambiente de desenvolvimento muito verstil tornando possvel a simulao completa do programa sem a necessidade do hardware.

Dificuldades encontradas: No foi Encontrado o microcontrolador para compra em Curitiba sendo necessrio encomend-lo em So Paulo. Existem poucas referncias quando ao gravador do ATMega16. Existem poucos exemplos de programao em assembly para os controladores AVR da Atmel pois a maioria dos programadores utiliza a linguagem C.

Possveis melhorias:

Colocao do buzzer na parte externa da caixa de acrlico, alterao do circuito de acionamento dos leds que permitam uma maior luminosidade Instalao de um display de cristal liquido para mostrar os records obtidos e desafiar os prximos jogadores Desenvolver um tocador de msicas no lugar do buzzer para tornar a utilizao mais divertida. Utilizar componentes menores principalmente botes e caixa, alterar o projeto para trabalhar com bateria interna tornando o jogo mvel.

- 36-

CAPTULO 7 - REFERCIAS BIBLIOGRFICAS

(Atmel, 2007) Atmel On-line. Disponvel em: www.atmel.com. Acesso em: Junho de 2007.

(Atmega16, 2007) Atmel On-line. Disponvel em: http://www.atmel.com/dyn/products/product_card.asp?part_id=2010. Acesso em: Junho de 2007.

(AVR, 2007) AVR Freaks - Disponvel em: http://www.avrfreaks.net. Acesso em: Junho de 2007.

(Ziller, 2007) Ziller, Roberto M. Comentrios sobre microcontroladores. Disponvel em: http://eletronica.ipuc.pucminas.br/~databook/8051/tut8051_ufsc.pdf. Acesso em: Junho 2007.

(Marques, 2002) Marques, A.; Cruz, E.; Choueri, S. Dispositivos Semicondutores: DIODOS e TRANSISTORES 7 Edio 2002

(Soares, 2006) Soares, Marcio Jos Os Microcontroladores AVR Atmel - Revista Eletrnica TOTAL - pg. 50 - N. 113 ano 2006

(Hyde, 2003) Hyde, Randall - The Art of Assembly Language, 2003 (Mendes,2007) Mendes , Gilmar de Melo. Disponvel em: http://igc.infonet.com.br/imprimir.asp?codigo=6140&catalogo=5&inicio=30. Acesso em: Julho de 2007

(Silveira, 1998) Silveira, Sidnei Renato e Barone, Dante Augusto Couto - JOGOS EDUCATIVOS COMPUTADORIZADOS UTILIZANDO A ABORDAGEM DE ALGORITMOS GENTICOS - IV Congresso RIBIE, Braslia 1998 - Disponvel em: http://lsm.dei.uc.pt/ribie/docfiles/txt200342421140151.PDF

- 37-

APNDICE A CRONOGRAMA

Mar/07: Pesquisas sobre programao serial do processador 8051 ou similar e componentes de hardwares necessrios, definio da especificao tcnica. Abr/07: Desenvolvimento e testes iniciais do hardware bsico, entrega da especificao tcnica. Mai/07: Desenvolvimento do software e testes iniciais. Jun/07: Entrega do projeto (monografia) e dos testes preliminares do mesmo. Jul/07: Desenvolvimento da placa de circuito impresso do mdulo microcontrolador, instalao do mdulo microcontrolador com os push-buttons e luzes indicativas em prottipo. Ago/07: Realizao dos testes funcionais de todo o sistema. Apresentao prvia da implementao do projeto especificado. Set/07: Correo dos problemas encontrados e melhorias sugeridas. Out/07: Apresentao do projeto implementado; Nov/07: Documentao do projeto. Dez/07: Apresentao e documentao das concluses e resultados finais.

- 38-

CENTRO UNIVERSITRIO POSITIVO - UNICENP NCLEO DE CINCIAS EXATAS E TECNOLGICAS - NCET ENGENHARIA DA COMPUTAO

LUIS FABIANO CANTERI

JOGO DA MEMRIA EMBARCADO


Manual do usurio

CURITIBA 2007

- 39-

LUIS FABIANO CANTERI

JOGO DA MEMRIA EMBARCADO


Manual do usurio

Manual do usurio apresentado disciplina de projeto final, como requisito parcial concluso do curso de Engenharia da Computao. Orientador: Adriana Thom

CURITIBA 2007

- 40-

SUMRIO 1 - Introduo................................................................................................................ 05 2 - Instalao ................................................................................................................ 05 3 Como jogar .............................................................................................................. 05 4 Prossveis problemas.............................................................................................. 06

- 41-

LISTA DE FIGURAS Figura 1 Conectores de alimentao ......................................................................... 05 Figura 2 - Nmeros ao lado dos botes indicam o nvel de dificuldade ........................ 06

- 42-

1.

Introduo Este manual tem por objetivo auxiliar o usurio com relao ao manuseio do equipamento, descrevendo qual a forma correta para se fazer a ligao do equipamento e o funcionamento do jogo.

2. Instalao do equipamento Conectar a fonte de alimentao ao jogo obedecendo as respectivas cores dos conectores da fonte e dos conectores do jogo conforme figura 1 abaixo:

Figura 1 Conectores de alimentao

Assim que o equipamento ligado, automaticamente inicia o processo de inicializao que caracterizado por piscar todos os leds ao mesmo tempo e emitir um bip.

3. Como jogar

a) Aps a inicializao, o jogo fica aguardando que seja precionado um boto para selecionar o nvel de dificuldade desejado. b) Selecione a dificuldade conforme o nmero que aparece ao lado do boto, conforme figura 2, este nmero indica qual a quantidade de posies deve ser memorizada para se ganhar o jogo. Quanto maior o nvel de dificuldade, mais rpidamente os leds iro piscar.

- 43-

Figura 2 Nmeros ao lado dos botes indicam o nvel de dificuldade

c) Aps selecionar um nvel de dificuldade o jogo ser iniciado piscando uma luz aleatriamente, o jogador deve precionar o boto correspondente a luz que acendeu. d) Em seguida, ir piscar novamente a luz que acendeu no incio e mais uma luz, o jogador deve precionar os botes correspondentes s luzes que acenderam mas na ordem em que foram mostradas. e) A cada vez que o jogador consegue repetir a seqncia de luzes apresentada, o jogos ir piscar todos as luzes ao mesmo tempo e emitir um bip indicando que a jogada foi executada com sucesso. f) Caso o jogador consiga repetir as seqncias apresentadas at a quantidade definida na seleo de nvel de dificuldade, o jogo ficar com as luzes piscando e mais uma luz azul piscar dentro do jogo indicando que o jogador ganhou. g) Se em algum momento o jogador precionar os botes de forma diferente do que as luzes piscaram, ento as luzes iro piscar uma de cada vez dando a impresso de girar em sentido anti-horrio e ficar emitindo bips para indicar que o jogador perdeu a partida. h) Aps ganhar ou perder uma partida, necessrio precionar o boto vermelho de reset na lateral do jogo, confome figura 2, para iniciar uma nova partida.

4. Possveis problemas

Caso ao ligar, o jogo no emita nenhum sinal luminoso, verifique se os conectores e os cabos esto bem firmes ou ento remova os conectores e insira-os novamente. Verifique se h energia eltrica na tomada onde o jogo foi ligado.

- 44-

CENTRO UNIVERSITRIO POSITIVO - UNICENP NCLEO DE CINCIAS EXATAS E TECNOLGICAS - NCET ENGENHARIA DA COMPUTAO

LUIS FABIANO CANTERI

JOGO DA MEMRIA EMBARCADO


Manual Tcnico

CURITIBA 2007

- 45-

LUIS FABIANO CANTERI

JOGO DA MEMRIA EMBARCADO


Manual Tcnico

Manual do usurio apresentado disciplina de projeto final, como requisito parcial concluso do curso de Engenharia da Computao. Orientador: Adriana Thom

CURITIBA 2007

- 46-

SUMRIO 1 - Introduo................................................................................................................ 05 2 - Conexes ................................................................................................................ 05 2.1 - Conetor dos botes .................................................................................... 05 2.2 - Conector dos leds ...................................................................................... 06 2.3 - Conector da alimentao ........................................................................... 06 2.4 - Conector do buzzer .................................................................................... 07 3 Possveis problemas............................................................................................... 07

- 47-

LISTA DE FIGURAS Figura 1 Conector dos botes.................................................................................... 05 Figura 2 Conector dos leds........................................................................................ 06 Figura 3 Conector da alimentao ............................................................................. 06 Figura 4 Conector do buzzer ..................................................................................... 07

- 48-

1. Introduo Este manual tem por objetivo mostrar os detalhes tcnicos relacionados com o equipamento, descrevendo a forma correta de interligao dos mdulos do mesmo.

2. Conexes Existem 4 conectores na placa de circuito: - Conector dos botes - Conector dos leds - Conector da alimentao - Conector do buzzer

2.1 Conector dos botes O conector dos botes esta definido conforme a tabela 1 abaixo, seguindo a imagem da figura 1 : Cor do fio Fio preto Fio branco Fio cinza Fio lils Fio azul Fio verde Finalidade fio terra ou negativo boto 3 boto 2 boto 1 boto 0 Alimentao +5V

Tabela 1 tabela do conector dos botes

Figura 1 Conector dos botes

- 49-

2.2 Conector dos leds O conector dos leds est definido conforme a tabela 2 abaixo, seguindo a imagem da figura 2 : Cor do fio Fio preto Fio marrom Fio vermelho Fio laranja Fio amarelo Finalidade boto de reset Led 0 Led 1 Led 2 Led 3

Tabela 2 tabela do conector dos leds

Figura 2 Conector dos leds

2.3 Conector da alimentao O conector de alimentao deve ser ligado respeitando a orientao da figura 3.

Figura 3 Conector de alimentao

- 50-

2.4 Conector do buzzer O conector do buzzer deve ser ligado respeitando a orientao da figura 4.

Figura 4 Conector do buzzer

3. Possveis problemas

Caso ao ligar, o jogo no emita nenhum sinal luminoso, verifique se os conectores e os cabos esto bem firmes ou ento remova os conectores, revise todas as conexes e insira-os novamente na placa de circuito. Verifique se h alimentao chegando no processador.

- 51-

JOGO DA MEMRIA EMBARCADO

Luis Fabiano Canteri fcanteri@gmail.com Centro Universitrio Positivo Unicenp

Resumo. Este projeto consiste na construo de um jogo da memria embarcado composto por um microcontrolador que gera uma seqncia aleatria de nmeros binrios que mostrada atravs das luzes indicativas (leds) e que devem ser repetidas precionando-se os botes (push-buttons) existentes na parte externa do equipamento. Palavras chave: Microcontrolador ATmega16, Jogo Memria, GENIUS, SIMON

2.1 Assembly Assembly uma linguagem de programao onde os programas so escritos em forma de texto. Usando um editor de texto criamos o chamado cdigo fonte (Hyde, 2003). Este cdigo fonte transformado pelo compilador e pelo linker num programa que gravado na memria de programa do microcontrolador para ser executado. A linguagem Assembly considerada de baixo nvel. Isto no significa que seja menos importante ou eficiente que uma linguagem chamada de alto nvel, so apenas modos diferentes de se programar e nveis diferentes de atuao. Com uma linguagem de baixo nvel como a Assembly, pode-se controla diretamente o microcontrolador, ou seja, nada de intermedirios. Uma das caractersticas da Assembly que cada linha do cdigo fonte possui apenas uma instruo para o processador. Por exemplo, MOV R15,R16 ir copiar o contedo do registrador R16 para o registrador R15. Neste caso, a instruo MOV chamada de mnemnico. Os mnemnicos so os "apelidos" das instrues, mais fceis de guardar na memria do que seu valor hexadecimal exigido pelo processador. O resultado um programa enxuto, rpido e altamente eficiente. 2.2. Microcontrolador Um microcontrolador um componente que possui, num nico chip, alm de uma CPU, elementos tais como memrias ROM e RAM, temporizadores, contadores, canais de comunicao e conversores analgico-digitais (Ziler, 2007). Esta caracterstica diferencia os sistemas baseados em microcontroladores daqueles baseados em microprocessadores, onde normalmente se utilizam vrios componentes para implementar essas funes. Com isso, os microcontroladores permitem a implementao de sistemas mais compactos e baratos do que aqueles baseados em microprocessadores. Em contrapartida, as CPUs dos microcontroladores so, em geral, menos poderosas do que os microprocessadores. Seu conjunto de instrues costuma se limitar s instrues mais simples encontradas nestes, sua freqncia de clock - 52-

1. Introduo O curso de Engenharia da Computao possui muitas reas de atuao como o ramo cientfico, acadmico, industrial, educacional, entretenimento entre outros. A rea educacional e de entretenimento est crescendo muito ao longo dos anos, graas aos avanos cientficos e tecnolgicos. Este projeto baseia-se no jogo da memria GENIUS da Estrela S.A. comercializado na dcada de 80 originalmente desenvolvido nos EUA com o nome SIMON. O projeto composto por um microcontrolador ATmega16 da ATMEL, responsvel por toda a lgica do jogo. Possui tambm quatro leds onde uma seqncia binria aleatria gerada pelo microcontrolador ser mostrada e possui push-buttons para que o jogador possa tentar executar a mesma seqncia apresentada pelo jogo. O software, desenvolvido em assembly, responsvel por toda atuao do microcontrolador bem como pela gerao da seqncia aleatria, temporizao, visualizao dos dados gerados, verificao das aes do jogador e verificao dos dados de entrada para comparao dentro da lgica do jogo e aes que precisam ser executadas. 2. Fundamentao Terica O trabalho apresentado baseado em tecnologia de eletrnica digital utilizando microcontrolador e componentes externos como leds, chaves e resistores e tambm software como a linguagem de programao Assembly. A seguir so tratados os fundamentos tericos a respeito de alguns destes componentes.

mais baixa e o espao de memria enderevel costuma ser bem menor. V-se da que o campo de aplicao dos microcontroladores diferente daquele dos microprocessadores, e que um sistema que possa ser controlado por um microcontrolador tende a ter menor complexidade e menor custo do que um sistema que exija a capacidade de processamento de um microprocessador. Exemplos de sistemas onde os microcontroladores encontram aplicao incluem controle de semforos, balanas eletrnicas, micro terminais, telefones pblicos, controle de veiculao de comerciais de TV, controle de carregadores de baterias, inversores, controles de acesso, taxmetros, sistemas de aquisio de dados de manufatura e eletrodomsticos em geral. A programao dos microcontroladores , em geral, mais simples do que a dos microprocessadores, ao menos no que diz respeito s exigncias de conhecimento dos componentes perifricos. Isto acontece porque os perifricos onchip dos microcontroladores so acessados de uma forma padronizada e integrada na prpria linguagem de programao, dispensando o conhecimento de detalhes externos. No se deve pensar, porm, que isto simplifique a tarefa do programador em todos os nveis: necessrio que ele conhea bem o hardware conectado ao microcontrolador para poder produzir programas que funcionem corretamente. Cabe citar ainda uma vantagem particular dos microcontroladores que possuem memria ROM, que a possibilidade de armazenar programas internamente, dificultando sensivelmente a cpia ilcita do cdigo. 2.2.1 Os microcontroladores AVR Atmel Os microcontroladores AVR da fabricante Atmel (Fig. 1) so microcontroladores de 8 bits (Soares, 2006), desenvolvidos sobre a tecnologia RISC Reduced Instruction Set Computer (Computador com Set de Instrues Reduzido). Esta tecnologia baseada na arquitetura HARWARD, que separa a memria de dados da memria de programa. Desta forma, um microcontrolador AVR tem um barramento para dados e outro para programa. Esta separao de barramentos permite uma maior velocidade no tratamento dos dados e do programa. Apenas para efeito de comparao, o microcontrolador 8051 Intel, por exemplo, foi desenvolvido sob tecnologia CISC Complex Instruction Set Computer (Computador com Set de Instrues Complexo) e arquitetura Van Neuman, onde a memria de dados e programa no so separadas (trafegam por um mesmo barramento). Na Fig. 2 temos um demonstrativo entre as duas tecnologias descritas. - 53-

Fig. 2 RISC e CISC (Fonte: Soares, 2006) Um outro detalhe muito importante sobre a famlia AVR diz respeito quantidade de ciclos de mquina necessrios para executar uma instruo. Esse fator determina a quantidade de MIPS (milhes de instrues por segundo) que um microcontrolador pode alcanar. Na famlia AVR um pulso de clock equivale a um ciclo de mquina (Soares, 2006). Como necessrio apenas um nico ciclo de mquina para executar a maioria das instrues pertencentes ao seu instruction set, um AVR operando com um oscilador de 4 MHZ estar operando exatamente a 4 MIPS. Essa informao bastante interessante e deve ser levada em conta caso seja necessrio executar operaes a grandes velocidades com um microcontrolador. Se compararmos um AVR a um microcontrolador 8051 e a um microcontrolador PIC (sem o uso do PLL interno, presente na famlia 18F), ambos com oscilador de 12 MHZ, teramos as seguintes velocidades, em MIPS, indicadas na Tabela 1. (Soares, 2006) Como pode ser visto na Tabela 1, a velocidade dos microcontroladores AVR grande. Microcontrolador com cristal externo de 12 MHZ AVR Atmel PIC Microchip 8051 Intel MIPS 12 03 01

Tabela 1 Comparativo de velocidade entre microcontroladores (Fonte: Soares, 2006) Uma outra facilidade muito interessante da famlia AVR diz respeito aos modos de gravao possveis. Alguns microcontroladores AVR admitem at trs modos de gravao: ISP in System, paralela e depurao de debug via interface JTEG. No modo ISP so necessrias apenas quatro ligaes com o microcontrolador para a sua gravao, leitura ou verificao. Veja estas ligaes na Tabela 2.

Observando os nome das ligaes necessrias, fcil concluir que o protocolo de transferncia de dados segue o protocolo SPI, bastante comum em outros CIs. Nome da conexo Serial MISO Out MOSI SCLK RESET Serial In Serial Clock Funo Sada de dados Entrada de dados Clock de sincronismo Controle de Reset Fig. 3 Circuito interno do 74HC244 (Fonte: Soares, 2006)

Tabela 2 Ligaes ISP (Fonte: Soares, 2006)

No modo ISP no preciso nenhuma tenso especfica em qualquer dos pinos do microcontrolador para efetuar a gravao. Uma outra grande vantagem deste modo, que o mesmo feito In-System, ou seja, diretamente onde o microcontrolador est instalado (respeitando-se algumas regras). Desta forma no necessrio retirar o microcontrolador do circuito para grav-lo. Essa vantagem refere-se diretamente na velocidade de desenvolvimento. A grande maioria dos compiladores do mercado aceitam gravadores ISP e trazem o devido suporte aos mesmos. No modo paralelo so necessrias outras ligaes e o padro de comunicao entre o gravador e o microcontrolador feito de uma maneira diferente. Gravadores neste formato so mais caros, pois so exigidos componentes complexos (como um microcontrolador com o algoritmo necessrio a gravao) em seus circuitos. O modo de depurao de debug atravs de uma interface JTEG permite que o programa seja depurado diretamente no microcontrolador. Os microcontroladores AVR tambm oferecem uma srie de perifricos como Timers, Conversores Analgicos, Canais para PWM, portas de comunicao USART, SPI e I2C, alm de rede CAN, memrias EEPROM, e muitos outros perifricos. 2.2.2 Gravador Atmel AVR O circuito do gravador mostrado na Fig. 4. Tem-se um nico CI que atua como buffer para a porta paralela. Trata-se do CI 74HC244. Seu circuito interno pode ser visto na Fig. 3. Este circuito integrado basicamente um buffer com oito portas TTL. Na Fig. 4 pode-se ver o diagrama de blocos do mesmo, assim como a distribuio de sua pinagem e na Tabela 3 seu modo de operao (tabela verdade).

Fig. 4 Circuito eltrico do gravador

Entradas /G A L L L H H X

Sadas Y L H Z

L low ou 0 lgico H High ou 1 lgico X nvel lgico no importa Z Alta impedncia

Tabela 3 Modo de operao para o 74HC244 (Fonte: Soares, 2006) Observando atentamente a Tabela 3, podemos notar que qualquer nvel lgico (0 ou 1) inserido nas entradas A so refletidos nas sadas Y, desde que o pino de habilitao /G seja levado ao nvel lgico 1, as sadas so colocadas em alta impedncia, independente do nvel lgico presente nas entradas do CI. Os pinos /G (1 e 19) do CI so controlados pelos pinos 4 e 5 da porta paralela, ou seja, as sadas so colocadas em tri-state (altaimpedncia) sempre que o gravador no estiver em operao. Esta caracterstica permite o uso do gravador diretamente ligado ao microcontrolador, instalado no circuito (In-System). O gravador retira a alimentao do circuito onde o microcontrolador estiver inserido. O LED est ligado ao VCC e ao pino 4 da porta paralela. Sempre que este pino for levado ao nvel lgico 0, para habilitar o CI, o LED acende indicando. Desta forma tem-se a indicao de que o gravador est em operao (gravao, leitura ou verificao).

- 54-

O capacitor C1 um capacitor de desacoplamento para o CI, servindo assim como filtro contra transientes. 2.2.3 Programa para gravao Para utilizar o gravador, foi utilizado o programa PonyProg que pode ser obtido gratuitamente no site do desenvolvedor LANCOS. Este programa possui um add-on (tambm disponvel no site) que permite que os menus e as mensagens sejam grafados em lngua portuguesa. 2.3 AVR ATmega16 Caractersticas O ncleo AVR combina um rico conjunto de instrues com 32 registradores de uso geral. Todos os 32 registradores esto ligados diretamente com a Unidade Lgica Aritmtica (ULA), permitindo que dois registradores independentes tenham acesso executando uma nica instruo em um ciclo de clock. A arquitetura resultante possui cdigo mais eficiente enquanto que o throughput pelo menos dez vezes mais rpido que um microcontrolador CISC convencional. O ATmega16 possui as seguintes caractersticas: 16k bytes de memria FLASH interna de programa com capacidade Ler-Enquanto-Escreve (Read-While-Write), 512 bytes EEPROM, 1kbyte SRAM, 32 linhas gerais de E/S, 32 registradores de uso geral, uma interface JTAG para Boundary-Scan, suporte on-chip para programao e debugging, 3 temporizadores/contadores flexveis com modo de comparao, interrupes internas e externas, USART serial programvel, interface serial two-wire orientada a byte, 8 conversores analgico/digital com 10 bites de resoluo cada, watchdog programvel com oscilador interno, porta serial SPI, gerenciador de energia com 6 modos, Isto permite uma inicializao rpida combinado com baixo consumo de energia. (Atmel, 2007) O microcontrolador fabricado utilizando uma tecnologia de memria no voltil de alta densidade da Atmel. A memria FLASH ISP interna permite que o dispositivo seja reprogramado atravs de uma interface SPI serial, por um programador convencional de memria no voltil, ou por um programa de boot on-chip executando no ncleo do AVR. Combinando uma CPU RISC de 8-bits com auto-programao interna em um chip monoltico, o ATmega16 da Atmel um microcontrolador poderoso que permite alta flexibilidade e soluo de custo efetivo para muitas aplicaes embarcadas microcontroladas. O ATmega16 AVR suportado por uma grande variedade de programas e ferramentas de desenvolvimento incluindo: compiladores C, macro

assembly, programas simuladores/ debbugers, emuladores in-circuit, e kits didticos. (Atmel, 2007)

O aspecto externo do ATmega16 o da Fig. 5. Os pinos VCC (positivo) e GND (negativo ) so utilizados para a alimentao do microcontrolador que pode varias entre 2,7 V e 5,5 V de tenso contnua. A porta A (PA7..PA0) serve como entrada analgica para o conversor A/D. Ela tambm utilizada como uma porta de E/S bidirecional de 8bits, se o conversor A/D no for usado. A porta B (PB7..PB0) uma porta de E/S bidirecional de 8-bits. A porta C (PC7..PC0) uma porta de E/S bidirecional de 8-bits. Ela tambm utilizada para as funes com a interface JTAG. A porta D (PD7..PD0) uma porta de E/S bidirecional de 8-bits. O pino RESET gera a reinicializao do microcontrolador ao receber um sinal com borda de descida. O pino XTAL1 a entrada do amplificador oscilador inversor e sada do circuito interno de clock. O pino XTAL2 a sada do amplificador oscilador inversor. O pino AVCC o pino de alimentao para a porta A e o conversor A/D. Deve ser conectado ao VCC a no ser que o conversor A/D no seja utilizado. AREF o pino de referncia analgico para o conversor A/D. (Atmel, 2007)

Fig. 5 - ATmega16 (Fonte: Atmega16,2007) 3. Especificao do Projeto Este projeto consiste na construo de um jogo da memria embarcado composto por um microcontrolador ATMega16 da Atmel que gera uma seqncia aleatria de nmeros binrios que mostrada atravs das luzes indicativas (leds) e que devem ser repetidas pelo jogador precionando-se os botes (push-buttons) existentes na parte externa do equipamento. 3.1 Funcionamento Ao ligar o equipamento, ele apresenta uma seqncia de inicializao que consiste em ligar todos os leds por um tempo e apag-los logo em seguida, apenas para indicar que todos os leds esto funcionando normalmente. - 55-

Aps a inicializao, o jogo fica em looping aguardando que um dos botes seja pressionado para selecionar o nvel de dificuldade do jogo, sendo que cada um dos quatro botes corresponde a um nvel de dificuldade. Cada nvel corresponde a uma maior quantidade de posies que precisam ser memorizadas e botes que precisam ser pressionados, e tambm maior a velocidade com que os leds piscam. Os nveis foram definidos internamente no programa, ou seja, para alter-los necessrio alterar o programa e regravar o microcontrolador. So estes os nveis definidos: Nvel 1 Composto por uma seqncia de 5 luzes e tempo de 1500ms entre elas. Nvel 2 Composto por uma seqncia de 7 luzes e tempo de 1000s entre elas. Nvel 3 Composto por uma seqncia de 10 luzes e tempo de 500ms entre elas. Nvel 4 Composto por uma seqncia de 15 luzes e tempo de 125ms entre elas. Aps a seleo do nvel de dificuldade, o jogo inicia uma nova seqncia gerando aleatoriamente qual led deve piscar primeiro e armazenando o seu valor na memria, em seguida o jogo pisca o primeiro led e aguarda que seja pressionado um boto, isto feito lendo-se o contedo da porta B do microcontrolador e comparando se o valor diferente de zero. Assim que um boto pressionado, o seu respectivo valor armazenado na memria do microcontrolador e comparado com o valor respectivo ao led armazenado em memria. Caso os valores sejam diferentes todos os leds ficam piscando indicando que o jogador errou. Caso contrrio o jogo prossegue gerando aleatoriamente um novo led que deve piscar e armazenando o seu valor na memria, na posio seguinte a do led anterior. Ento mostrada a seqncia completa, ou seja, pisca-se um led de cada vez at que todos os que compe a seqncia tenham piscado, ento, o programa aguarda at a quantidade respectiva de botes seja pressionada e faz uma nova comparao. O jogo termina quando o jogador conseguir acertar todas as jogadas atingindo a quantidade prestabelecida na seleo de dificuldade. Para reiniciar o jogo, se faz necessrio apenas pressionar o boto de reset na lateral do jogo. 3.2 Hardware O equipamento desenvolvido composto pelos seguintes componentes:

2 leds amarelos 10mm 4 resistores de 1k ohm 4 resistores de 220 ohms 5 botes do tipo push-button 1 fonte estabilizada de 5V 1 caixa de acrlico Cabos e conectores 1 buzzer

Na Fig. 7 podemos verificar o diagrama em blocos do equipamento, onde as entradas so os botes (azul e verde) e as sadas so os leds (amarelo). Na Fig. 8 pode-se observar o diagrama eletrnico do hardware com a ligao de todos os componentes envolvidos no projeto.

Fig. 7 - Diagrama em blocos do hardware

Fig. 8 Diagrama eletrnico do hardware Na Fig. 9 pode-se verificar como ficou o projeto j montado com seus componentes definitivos e pronto para realizao dos testes.

Fig. 9 Prottipo do jogo ATmega16 1 placa de circuito impresso 1 processador ATMEL 1 suporte para CI de 40 pinos 2 leds verdes 10mm - 56AVR 3.3 Software O software parte fundamental do projeto, sendo que nele est definida toda a lgica do jogo

assim como o controle sobre o hardware para efetuar a leitura dos botes pressionados e controlar os leds e o buzzer. 3.3.1 Linguagem de programao O desenvolvimento do software foi realizado utilizando-se a linguagem de programao assembly e a interface grfica de desenvolvimento AVR Studio da prpria Atmel que fornece a mesma gratuitamente mediante um simples cadastro em seu web site. Foi utilizado o assembly por trs motivos: primeiro por uma questo pessoal, pois a programao em baixo nvel foi uma das matrias estudadas durante o curso que mais me interessaram. Durante o curso aprendeu-se a programao de microcontroladores com arquitetura CISC ento para o projeto, decidiu-se utilizar um microcontrolador com arquitetura RISC para aumentar os conhecimentos na rea de programao de microcontroladores. Segundo, por ser uma linguagem de baixo nvel permite um maior controle sobre o hardware mesmo tornando a programao um pouco mais complexa e trabalhosa. E por ltimo, com a utilizao do AVR Studio possvel simular todo o comportamento do hardware, passo a passo, facilitando encontrar problemas (bugs) na programao. 4. Desenvolvimento e mplementao O desenvolvimento e a implementao envolveram tanto hardware quanto software (prrequisito para o projeto) sendo que a maior parte do tempo de desenvolvimento foi gasta na parte de software em assembly. Cerca de apenas 1/3 do tempo total de desenvolvimento foi utilizado no hardware. 4.1 Definio do microcontrolador Foi escolhido o microcontrolador ATMega16 da famlia AVR da ATMEL por ser um microcontrolador com arquitetura RISC, que utiliza um ciclo de clock por instruo, tornando assim mais simples o controle de temporizadores. Outras caractersticas que levaram a escolha deste microcontrolador foram as seguintes: Possui 16Kbits de memria FLASH para gravao de programas e dados, no necessitando de componentes externos para armazenar o programa. A programao pode ser feita conectando-se o microcontrolador diretamente ao computador onde o programa foi desenvolvido atravs da porta paralela, com isso possvel desenvolver o projeto em qualquer computador que possua o software de gravao. Possui oscilador interno com clock de 8Mhz evitando assim cristais externos que normalmente so uma fonte de problemas nos projetos. Possui 4 portas de entrada e sada de 8 bits cada que podem fornecer at 20mA de corrente na sada de cada porta conseguindo alimentar sem problemas um led de forma direta ou seja sem - 57-

necessidade de fonte externa tornando o projeto com arquitetura de hardware bastante otimizada. 4.3 Gravador do microcontrolador Um dos problemas encontrados foi que os gravadores existentes para uso no eram compatveis com os microcontroladores da famlia AVR da Atmel. Assim foi necessrio o desenvolvimento de um gravador especfico para o microcontrolador ATMega16. Aps vrios testes foi encontrado um projeto de gravador relativamente simples (Soares, 2006). Utilizando apenas um circuito integrado o 74HC244 (buffer) e um conector DB25 foi construdo o gravador que funcionou j no primeiro teste. O teste foi realizado utilizando o software de gravao PonyProg 2000 que gratuito e fcil utilizao. 4.4 Desenvolvimento do software Para o desenvolvimento do software, foi utilizado o ambiente de desenvolvimento AVR Studio disponibilizado pela prpria Atmel que fabrica o microcontrolador utilizado. A simulao do software muito fcil de utilizar e de grande ajuda no desenvolvimento do projeto pois facilita a programao permitindo que a mesma seja feita em qualquer computador no necessitando do hardware para os testes mais bsicos. 4.5 Exemplos de cdigos Na programao do Atmel Atmega16, uma caracterstica particular que primeiramente necessrio definir como as portas sero utilizadas, se para entrada de dados ou para sada de dados. Isto feito utilizando-se os registradores DDRA, DDRB e DDRD que so os respectivos controladores de entrada/sada das portas A, B e D. No possvel gravar diretamente um valor nas portas de entrada/sada sendo necessrio utilizar um registrador temporrio para isto. O registrador R16 utilizado como registrador temporrio e apelidado de tp para facilitar a programao. O comando ldi (load direct) transfere diretamente o valor fornecido para registrador. ldi tp,0X00 out DDRA,tp ldi tp,0xFF out DDRB,tp out DDRD,tp O cdigo abaixo refere-se ao gerador de nmero aleatrio. Primeiro definimos o valor inicial do contador igual a zero e depois iniciamos o contador que ser incrementado a cada clock do microcontrolador. ldi tp,0x01 ldi tc,0x00 out TCNT2,tc out TCCR2,tp

O programa l o contador e armazena o seu valor no registrador tp, ento aplicada a uma mscara com valor binrio 00000011 e realizada a operao lgica AND para filtrar o valor restando apenas os dois ltimos bits do valor lido anteriormente. Como o valor depende do tempo que a rotina levou para ser executada e esta depende do tempo que o jogador demorou para pressionar os botes na jogada anterior, quase sempre o nmero gerado ser diferente do anterior. Este resultado pode conter os seguintes valores: 00, 01, 10, 11 sendo que necessrio transform-los em 0001, 0010, 0100, 1000 respectivamente para formar um valor que possa ser enviado para a porta de sada e acender apenas um led de cada vez. random: in tp,TCNT2 ldi tmp,0x03 AND tp,tmp random0: ldi rnd,0x00 cp tp,rnd brne random1 ldi tp,0x01 ret random1: ldi rnd,0x01 cp tp,rnd brne random2 ldi tp,0x02 ret random2: ldi rnd,0x02 cp tp,rnd brne random3 ldi tp,0x04 ret random3: ldi rnd,0x03 cp tp,rnd ldi tp,0x08 ret 4.6 Placa de circuito impresso Na Fig.11, podemos ver o layout da placa de circuito impresso que foi criado utilizando o software gratuito EAGLE (Easily Applicable Graphical Layout Editor) e a placa foi produzida durante o curso de criao de placas de circuito impresso ministrado na Unicenp.

Fig. 11 Layout da placa de circuito impresso Na Fig.12 pode-se verificar o resultado final da placa de circuito impresso j com seus componentes devidamente soldados. Nota-se que na placa ficam somente o microcontrolador, alguns resistores de pull-up, os resistores dos leds, conectores e um led de luz azul para indicar que o jogo terminou.

Fig. 12 Placa de circuito impresso (vista superior) 4.7 Produto final Nas Fig.13 e Fig.14 podemos observar a aparncia do projeto finalizado. Internamente temos a placa com o microcontrolador e os conectores ligados aos botes e leds. Externamente podemos acionar os botes e ver os leds acendendo.

Fig. 13 Projeto montado em caixa de acrlico

- 58-

Fig. 14 - Viso do boto de reset e dos conectores de energia A caixa de acrlico foi confeccionada na empresa Pr Acrlico especializada no trabalho com acrlico onde foi montada a caixa e realizadas as furaes para os botes, leds e conectores externos. 5. Validao e Resultados A validao do projeto foi realizada inicialmente em laboratrio com vrios alunos e professores do curso de Engenharia da Computao. Tambm foi realizada validao do projeto no evento Cincias e Criao do colgio Positivo Junior onde houve a oportunidade de testar o projeto com vrias crianas jogando por uma manh inteira, como pode ser visto na Fig. 15.

6. Concluso A proposta do projeto foi a construo de um jogo da memria embarcado utilizando um microcontrolador RISC. Dentro do proposto podem citar alguns itens importantes na finalizao do projeto tais como: Pontos positivos: O microcontrolador mostrou-se bastante robusto e com caractersticas importantes para o bom funcionamento do projeto como oscilador interno, boa capacidade de memria SRAM , grande velocidade de resposta respondendo muito bem as aes dos jogadores, baixo custo. O circuito impresso foi de fcil desenvolvimento e rpida confeco. O ambiente de desenvolvimento muito verstil tornando possvel a simulao completa do programa sem a necessidade do hardware. Dificuldades encontradas: No foi Encontrado o microcontrolador para compra em Curitiba sendo necessrio encomend-lo em So Paulo. Existem poucas referncias quando ao gravador do ATMega16. Existem poucos exemplos de programao em assembly para os controladores AVR da Atmel pois a maioria dos programadores utiliza a linguagem C.

Fig. 15 Crianas jogando durante o evento no colgio Positivo Junior 5.2 Resultados Obtidos Os resultados obtidos foram satisfatrios pois durante toda a validao o jogo funcionou conforme o esperado no apresentando problemas de lgica ou mau funcionamento. A construo do projeto se mostrou bastante robusta no apresentando defeitos fsicos em nenhum dos casos validados. Observou-se que o primeiro nvel de dificuldade relativamente lento para crianas, pois as mesmas se mostraram rapidamente adaptveis ao funcionamento do projeto passando assim para nveis com maior dificuldade e no jogando mais no primeiro nvel. O buzzer localizado internamento na caixa de acrlico apresentou baixa performance para ambientes abertos e ruidosos. Os leds apresentaram baixa luminosidade em ambientes bem iluminados com luz solar. A alimentao de energia do projeto, tambm funcionou como esperado durante todo o tempo.

Possveis melhorias: Colocao do buzzer na parte externa da caixa de acrlico, alterao do circuito de acionamento dos leds que permitam uma maior luminosidade Instalao de um display de cristal liquido para mostrar os records obtidos e desafiar os prximos jogadores Desenvolver um tocador de msicas no lugar do buzzer para tornar a utilizao mais divertida. Utilizar componentes menores principalmente botes e caixa, alterar o projeto para trabalhar com bateria interna tornando o jogo mvel. Refercias Bibliogrficas (Atmel, 2007) Atmel On-line. Disponvel em: www.atmel.com. Acesso em: Junho de 2007. (Atmega16, 2007) Atmel On-line. Disponvel em: http://www.atmel.com/dyn/products/product_card.as p?part_id=2010. Acesso em: Junho de 2007.

- 59-

(AVR, 2007) AVR Freaks - Disponvel em: http://www.avrfreaks.net. Acesso em: Junho de 2007. (Ziller, 2007) Ziller, Roberto M. Comentrios sobre microcontroladores. Disponvel em: http://eletronica.ipuc.pucminas.br/~databook/8051/tut 8051_ufsc.pdf. Acesso em: Junho 2007. (Marques, 2002) Marques, A.; Cruz, E.; Choueri, S. Dispositivos Semicondutores: DIODOS e TRANSISTORES 7 Edio 2002 (Soares, 2006) Soares, Marcio Jos Os Microcontroladores AVR Atmel - Revista Eletrnica TOTAL - pg. 50 - N. 113 ano 2006

(Hyde, 2003) Hyde, Randall - The Art of Assembly Language, 2003 (Mendes,2007) Mendes , Gilmar de Melo. Disponvel em: http://igc.infonet.com.br/imprimir.asp?codigo=6140 &catalogo=5&inicio=30. Acesso em: Julho de 2007 (Silveira, 1998) Silveira, Sidnei Renato e Barone, Dante Augusto Couto - JOGOS EDUCATIVOS COMPUTADORIZADOS UTILIZANDO A ABORDAGEM DE ALGORITMOS GENTICOS IV Congresso RIBIE, Braslia 1998 - Disponvel em: http://lsm.dei.uc.pt/ribie/docfiles/txt20034242114015 1.PDF

- 60-