Sempre que possível, trazemos até o leitor alguns projetos sobre Automação empregando microcontroladores PIO da Microchip. Porém, muitos leitores nos escreveram com dúvidas de como utilizá-los, ou seja, como proceder para inserir o programa nestes componentes. Neste artigo abordamos alguns pontos importantes, que permitirão que o leitor obtenha sucesso nas montagens com microcontroladores.
Nota: Artigo de 2004
MICROCONTROLADORES
Na década de 80, quando a Intel lançou o seu microcontrolador 8051, ela não poderia prever a revolução que a Eletrônica sofreria. Muitos fabricantes como Motorola, Hitachi, National, e outros, trataram logo de lançar o seu. Muitos desses preferiram apenas "clonar" o microcontrolador Intel, outros não. E a partir disto, então, muitos outros microcontroladores surgiram. E a evolução não para, a cada ano um novo microcontrolador é lançado. (Figura 1)
Antes de tratarmos sobre microcontroladores, é necessário que o leitor compreenda a diferença entre um microprocessador e um microcontrolador. Um microcontrolador basicamente é a integração de um microprocessador com outros periféricos. Enquanto a maioria dos microprocessadores (Z80, Pentium's e outros) possui apenas a CPU (Unidade de Processamento Central), ALU (Unidade de Lógica e Aritmética), linhas para dados, linhas para endereços e linhas para controle e acesso de memória externa (WR, RD, REFRESH, HALT, etc.), os microcontroladores têm tudo isso e mais os periféricos para comunicação serial, timers, Watchdog Timer, Osciladores, I/Os (portas para o acesso ao mundo exterior), etc. Veja na figura 2 a estrutura básica desse componente.
CPU
A CPU ou "Unidade de Processamento Central" é responsável por todo o processamento de dados do microcontrolador, interpretando os comandos E realizando a leitura dos dados e ativando as portas (I/Os) ou periféricos, de acordo com o programa.
ALU
A "Unidade de Lógica e Aritmética" realiza todos os cálculos que envolvam valores e ou lógica para tomada de decisões. Ela é controlada pela CPU.
I/Os
As linhas I/O de um microcontrolador são responsáveis pela "entrada" e "saída" do mesmo. São os "braços" do microcontrolador. Podemos "inserir" um determinado dado ou evento através delas, e responder (saída) também através das mesmas.
MICROCONTROLADOR
PERIFÉRICOS
Os periféricos são circuitos, geralmente independentes, que permitem maior flexibilidade ao microcontrolador. Os tipos e números presentes variam muito de acordo com o modelo e fabricante do microcontrolador.
Os periféricos mais comuns, encontrados nos microcontroladores modernos, são:
USARTs — comunicação serial RS-232.
A/D — conversão Analógico / Digital.
Portas I2C — comunicação "2 fios". Permitem interligar mais microcontroladores para a realização de tarefas mais complexas.
Timers — permitem maior flexibilidade em operações onde necessitamos de temporizações.
Watchdog Timer — O "cão de guarda" vigia o processamento da CPU e opera separadamente desta. Se o programa se perder, o "WDT" reinicia a CPU evitando travamentos.
Osciladores — Os microcontroladores necessitam de um "clock" (relógio) interno. Sem estes, ele não funcionaria.
HARDWARE E SOFTWARE
Agora que compreendemos um pouco sobre a estrutura física de um microcontrolador, é necessário entender um outro ponto muito importante:
Um microcontrolador é um dispositivo programável e que, portanto, não realiza tarefa nenhuma sem a presença de um programa executado internamente no mesmo.
Sendo assim, devemos entender que, se montarmos um projeto qual quer com um microcontrolador e não inserirmos neste o programa que controlará o circuito, nada irá funcionar! Também podemos concluir que, para cada circuito, existirá um programa próprio desenvolvido para operar as linhas de I/Os e periféricos do microcontrolador de acordo com o projeto (ideia inicial de funcionamento).
Esta relação é importante no mundo dos microcontroladores:
Hardware + Software = Projeto
Pensando assim, temos então três etapas (regras) a seguir em uma montagem com microcontroladores:
- montagem do circuito eletrônico
- compilação do código fonte
- gravação do microcontrolador.
Estas três etapas são fundamentais para o perfeito funcionamento do circuito (montagem).
COMO INSTALAR O COMPILADOR MPASM
O MPASM é um compilador fornecido gratuitamente pela Microchip. Este compilador pode ser obtido gratuitamente no site:
www.microchip.com/download/tools/archive/other/asm21500.zip
O compilador disponível roda em ambiente Windows 95/98/Me/XP e se apresenta na versão 02.15. Sua instalação é extremamente simples. Basta o leitor descompactar o arquivo ASM21500.ZIP em uma pasta qualquer como, por exemplo, 'C:\MPASM'.
Após descompactar o arquivo, ele deverá criar um atalho na sua área de trabalho, utilizando o botão direito do mouse clicando em "Novo-Atalho". Isso feito, entre em "Linha de comando" com "C:\MPASMI MPASMWIN.EXE' e em seguida clicar em "Avançar".
A partir desse momento, o compilador MPASMWIN estará instalado e pronto para ser utilizado.
Arquivo ASM x arquivo HEX
Como dito anteriormente, os microcontroladores dependem de um programa que será inserido na memória do microcontrolador. Este programa pode ser montado em um editor de textos comum como o "Bloco de Notas" do Windows ou mesmo no "Edit" do DOS e gravado com a extensão ASM. Ou seja, o arquivo ASM é, na verdade, o arquivo-fonte, montado com "mnemônicos" da linguagem ASSEM-BLER e que, portanto, precisa ser compilado gerando uma sequência de códigos binários que o microcontrolador possa entender, o arquivo HEX.
É aí que entra o compilador. Um compilador nada mais é que um programa que transcreve um código-fonte em um código-objeto. Usando o MPASM.
Para facilitar o que será dito a partir de agora, disponibilizamos em nosso "site" (http://www.eletro nicatotal.com.br) na seção "downloads" um programa-fonte para microcontroladores PIC com o nome LED.ASM. O leitor deverá utilizar este programa para os exemplos que daremos a seguir. Grave-o no mesmo subdiretório do MPASM ou em outro subdiretório qualquer.
Para compilar um programa (código-fonte) utilizando o MPASM o leitor deverá executá-lo (dique no atalho gerado). Veja a figura 3.
Em "Source File Name" o leitor deverá entrar com o nome do arquivo "ASM" que desejar compilar (para nosso exemplo, LED.ASM). O botão "Browser" pode ajudar a encontrar o arquivo. Ele abrirá uma tela de procura para arquivos com a extensão ASM. O "setup" do MPASM Win não precisa de ajustes, pois traz as configurações "default".
Na opção "Processor", o leitor deverá selecionar o microcontrolador com que deseja gerar o código HEX. Por exemplo, se o leitor estiver montando um projeto com o PIC16F84A, deverá selecioná-lo. Se a montagem for com outro modelo, deverá escolher na lista o modelo pretendido. Para o programa LED.ASM, selecione PIC16F84 (este é o microcontrolador para o qual o programa foi desenvolvido). Veja a figura 4.
Agora basta clicar em "Assemble" e observar os resultados. A tela deverá parecer com o demonstrado na figura 5. A indicação do número de mensagens de erro (Errors), alertas (Warnings) e mensagens (Messages) estarão disponíveis nesta mesma tela.
Se ocorrerem erros, o programa não será compilado e, ao invés de uma barra verde, o leitor verá uma barra vermelha (figura 6). Já se houver algum alerta, ou mesmo mensagem, o programa será compilado. Isso deve ser levado em conta pelo leitor. Muitas mensagens e alertas podem ajudar, pois informará que algo poderá dar errado. Para verificá-los, basta abrir o arquivo LED.ERR, no mesmo subdiretório onde o leitor gravou o arquivo fonte ASM. O arquivo com extensão "ERR' é gerado após a compilação e contém todas as mensagens de erro, alertas e outras, informando também o número da linha onde o problema foi encontrado pelo compilador. É através deste arquivo que o leitor verificará quais os erros ou avisos do compilador e realizará as eventuais correções, se necessário, no programa-fonte "ASM' (programa não compilado ou com problemas).
Nota: O leitor notou que durante a compilação de testes duas men-sagens foram emitidas com o seguinte dizer: (veja o arquivo LED.ERR)
Message[302): Register in operand not in bank O. Ensure that bank bits are correct.
Esta mensagem está alertando que o registrador "TRISA" não está no banco "O" da memória e pede que o usuário verifique se trocou para o banco correto, antes de executar esta operação. Duas linhas de programa acima, é possível ver o comando:
bsf STATUS,RPO
Este comando muda do banco "O" do PIC para o banco "1", onde se encontra o registrador "TRISA". Algumas linhas abaixo, temos o retorno ao banco "O" com o comando:
bcf STATUS,RPO
Portanto, a mensagem não é um aviso de erro, mas sim um alerta ao usuário de que algo poderá estar errado. É preciso ter o máximo de atenção a toda e qualquer mensagem do compilador, pois o programa poderia não funcionar corretamente. Porém, este não é o caso. Já tomamos as precauções necessárias para as troca e retorno dos bancos de memória.
COMPILAÇÃO X PROGRAMA RODANDO
O fato de um programa compilar não quer dizer que o mesmo deva funcionar corretamente. Se o leitor verificar o BOX, verá que o compilador emitiu uma mensagem de aviso. Faça uma experiência e marque as linhas no programa LED.ASM que tenham a seguinte instrução:
; bsf STATUS,RPO
O ponto e vírgula na frente das linhas de comando transformou-as em comentários e estas serão ignoradas pelo compilador. Salve o programa e compile-o novamente. Surpresa! O programa foi compilado, mas com toda certeza não funcionará, pois, os registradores TRISA e TRISB definem as portas de 1/O como entrada ou saída, dependendo do que for inserido nestes. Como nada foi inserido, pois os mesmos não foram acessados através do banco 1, o PIC ao ser ligado irá iniciar suas portas no modo "default", ou seja, todos os pinos de I/O estarão definidos como entrada! Se o seu projeto dependia de "saídas", então ele não funcionará corretamente. É necessário compreender então que um compilador pode no máximo emitir erros de sintaxe, avisos e alertas sobre funções inexistentes e outras duvidosas. Contudo, ele não é eficaz contra erros de lógica de programação. Ele não pode dizer se seu programa vai funcionar ou não! Procure compreender isso!
COMO GRAVAR. QUAL GRAVADOR ESCOLHER?
Após compilar seu programa, o leitor precisará gravá-lo no microcontrolador em questão. Para isso é preciso um dispositivo de gravação. Este dispositivo ou equipamento é um "hardware" ligado à porta paralela ou serial do PC que, comandado através de um programa específico, irá inserir o arquivo compilado no microcontrolador.
Obs.: Hoje, já existem gravadores e emuladores para portas USB.
Cada gravador do mercado possui seu próprio programa para operá-lo, tudo depende do modelo escolhido. Abaixo listamos alguns modelos e fabricantes para que o leitor possa, se for o caso, escolher qual o que melhor atende as suas necessidades:
Tomadas de preço feita em 03/01/2004 através das páginas dos fabricantes
O leitor também poderá montar seu próprio gravador. Na Internet existem muitos projetos que podem ser experimentados. São dados tanto o circuito para montagem, quanto o programa para controlar o gravador. Lembrando que o suporte sobre estes é de responsabilidade de seus autores e não desta Revista.
Para gravar precisamos de um arquivo com extensão "HEX'. Este arquivo é gerado após uma compilação com sucesso. No nosso exemplo, o arquivo a ser gravado teria o nome LED.HEX (arquivo objeto, resultado da compilação).
Bastaria, agora, que o leitor executasse o arquivo que gerencia o seu gravador, configurasse-o (tipo do microcontrolador, tipo do oscilador, fusíveis, etc.) de acordo com o descrito por cada fabricante e abrisse o arquivo LED.HEX. Então, com o microcontrolador inserido no gravador, executasse o comando "Gravar" e pronto! O leitor teria um microcontrolador gravado pronto para ser utilizado.
RESUMO
- O programa (código-fonte) é um arquivo com extensão "ASM' e contém os comandos com a lógica necessária para o funcionamento de um dispositivo qualquer (circuito) com microcontrolador.
- O programa é sempre específico. Não é possível utilizar o programa LED.ASM no projeto Irrigador de Jardim da edição n° 94 de setembro/ outubro de 2003 e vice-versa.
- O compilador "traduz" o programa (código-fonte ASM) para um código binário que o microcontrolador será capaz de interpretar. Esta tradução gera o arquivo com extensão "HEX'.
- O arquivo com extensão "ERR" contém os erros de compilação, se existirem, referentes ao código fonte "ASM".
- Para gravar um microcontrolador, é necessário um gravador (equipamento). Ele é ligado ao PC através da porta serial, paralela ou outra qualquer e controlado por um programa desenvolvido para este fim. O arquivo a ser gravado no microcontrolador tem extensão "HEX".
CONCLUSÃO
Para um leitor mais experiente no mundo dos microcontroladores, nada do que foi dito neste artigo é novidade. Todavia, muitos são os que ainda não compreendem este fascinante universo. Nosso intuito é trazer uma luz no "fim do túnel" para servir como guia para que os menos experientes possam começar a trilhar este maravilhoso caminho. Nas próximas edições discorreremos um pouco mais sobre outras ferramentas para microcontroladores. Até lá!