Atualizado em 13/02/2003
Atprog é um programador para microcontroladores da família 8051 que contêm memória FLASH ou EPROM. Por enquanto, são suportados os seguintes microcontroladores: AT89C1051U e AT89C2051. No entanto, o projeto prevê também a programação de AT89C1051U-5, AT89C2051-5, AT89C4051 e AT89C4051-5, fabricados pela Atmel, e 87C51 da Intel. O suporte a esses componentes deve ser providenciado à medida que os algoritmos de programação forem implementados.
Atprog se conecta a um microcomputador IBM-PC através de uma das portas paralelas (LPT1 ou LPT2). O programador é controlado por um aplicativo DOS, Atprog.exe, compilado usando Turbo C++ 3.0, e cujo codigo fonte é também fornecido. Em um futuro proximo, uma versão para Windows devera ser implementada. Atualmente, as funcionalidades do Atprog são as seguintes:
Por enquanto, não foram tiradas fotos desse projeto
O esquema do Atprog é mostrado abaixo:
![]() |
O mesmo esquema esta disponível em alta resolução nos formatos jpeg e s01 (esquemático Protel para DOS).
Como pode-se ver pelo esquematico, Atprog possui uma fonte propria de alimentação não regulada formada pelo transformador de 12VAC/300mA, pela ponte de diodos D1-D4 e pelo capacitor C1. A tensão obtida com essa fonte, medida nos terminais de C1, deve ser em torno de 17 volts. Essa tensão é usada para gerar a alimentação de 5V da parte digital do circuito através do regulador U1. As tensões de programação são geradas pelo regulador variavel U2 através da seleção dos potênciômetros P1, P2 e P3. De acordo com o fabricante, a tensão em volts na saida de U2 é aproximativamente dada por
VPGM = 1,25 * (1 + Px / 470),
onde Px é a resistência dada pelos potênciômetros P1, P2 ou P3. Assim, as diferentes tensões de programação necessarias ao circuito devem ser ajustadas usando P1, P2 e P3 em um procedimento gerenciado pelo programa Atprog.exe. Para uma maior facilidade no ajuste das tensões de programação, sugere-se que P1, P2 e P3 sejam trimpots multivoltas (10 ou 15 voltas).
A interface com a porta paralela padrão (ou SPP) se faz através dos CIs U3 (decodificação), U4 (escrita de dados), U5 (leitura de dados) e U6 (registro de configuração). Sendo uma descrição sobre o funcionamento da porta paralela fora dos objetivos dessa pagina, recomenda-se o site www.beyondlogic.org. Da forma como se encontra, o circuito foi projetado para suportar também microcontroladores de 40 pinos (e.g., AT89C51, 87C51), que como evidenciado anteriormente ainda não são suportados pelo programa Atprog.exe. Nesse sentido, U9 e U10 são usados para gerar as linhas de endereçamento. As partes do circuito dando suporte aos microcontroladores de 40 pinos estão evidenciadas por um traçado. Elas podem ser suprimidas se for desejado apenas programar microcontroladores de 20 pinos. Para receber os microcontroladores, aconselha-se usar soquetes ZIF. No entanto, soquetes normais de muito boa qualidade também podem ser empregados, devendo-se tomar cuidado para não danificar os pinos do componete a cada vez que for necessario retira-lo do programador.
A conexão com a porta paralela do PC se faz pelo conector CN2 (DB25 macho). Para realizar a conexão entre a porta paralela (DB25 fêmea) e Atprog (DB25 macho), deve-se construir um cabo realizando ligações pino a pino entre esses conectores.
Embora não esteja ilustrado no esquema, é aconselhado ascrescentar um capacitor de 100 nF entre os pinos de alimentação de cada circuito integrado.
Os arquivos necessários para usar o programador Atprog são os seguintes:
Arquivos
|
Descrição
|
Arquivo
fonte do programa Atprog.exe.
|
|
Arquivo
executavel que gerencia o programador, obtido pela compilação
de atprog.cpp usando Turbo C++ para DOS.
|
Antes de lançar atprog.exe, verifique em qual porta paralela o programador sera ligado (LPT1 ou LPT2). Essas portas devem estar configuradas no modo SPP (standard). Essa configuração deve ser feita na BIOS do PC. Em seguida, siga a seguinte sequência de conexão do programador ao computador:
Por default, Atprog é configurado para operar com a porta LPT1. No entanto, o usuario pode indicar a que porta o programador esta conectado através de opções de chamada na linha de comando. As opções existentes são -lpt1 e -lpt2. Por exemplo, ao se executar o comando
C:> Atprog -lpt2
o programador opera com a porta LPT2. No inicio, o programa questiona o usuario se a sequência de conexão foi bem seguida. Caso contrario, o programa mostra que passos seguir para iniciar bem a placa:
Antes de entrar na janela principal, um teste é realizado para verificar se o programador esta realmente conectado na porta paralela especificada. Caso não seja o caso, ou se existe um problema no circuito, o programa aborta apresentando uma mensagem de erro:
Nesse caso, desconecte a placa e verifique se não ha nada errado. As possiveis causas de erro nessa fase são: um problema nas ligações de U3, U4, U5, U6, ou T3; a porta LPT indicada esta com problema; a placa não esta conectada na porta LPT correta; o cabo ou o conector estão com problema; a LPT indicada não esta no modo SPP (standard, ver na configuração da BIOS).
Se tudo ocorrer bem, a janela principal aparece como mostrado abaixo:
O comandos disponíveis no programa monitor são:
Tecla
|
Comandos
|
Descrição
|
1 | Ler Arquivo | Leitura no Buffer de um arquivo .bin do diretorio corrente. O tamanho do arquivo não pode depassar o do Buffer, que é de 8192 bytes. |
2 | Salvar Buffer | Salvar o conteudo do Buffer em um arquivo .bin no diretorio corrente. O tamanho do sera o mesmo do Buffer, que é de 8192 bytes. |
3 | Apagar Dispositivo | Apagar o conteudo da memoria do microcontrolador. Essse comando somente tem efeito em microcontroladores de memoria FLASH. |
4 | Ler Dispositivo | Ler o conteudo da memoria do microcontrolador e colocar no Buffer. O numero de bytes lidos é igual ao tamanho da memoria do microcontrolador. |
5 | Selecionar Dispositivo | Selecionar o microcontrolador sobre o qual as operações de leitura/escrita são realizadas. |
6 | Comparar Buffer com Dispositivo | Comparar o conteudo byte-a-byte da memoria do microcontrolador com o do Buffer. O numero de bytes comparados é igual ao tamanho da memoria do microcontrolador. Se os conteudos são distintos, uma mensagem aparece indicando o primeiro endereço no qual existe alguma diferença. Esse comando é geralmente utilizado logo apos a programação do microcontrolador (tecla 7), para se verificar se o componente foi programado com sucesso. |
7 | Gravar Buffer no Dispositivo | Gravar o conteudo do Buffer no microcontrolador. O numero de bytes escritos é igual ao tamanho da memoria do microcontrolador. Antes de iniciar uma gravação, o dispositivo deve ser apagado (tecla 3). |
8 | Trava de Segurança | Habilita as travas de segurança do microcontrolador (Lock bits 1, 2 e 3, se for o caso). Com as travas de segurança habilitadas, o conteudo da memoria do microcontrolador não pode ser lido. No entanto, ele pode ser apagado para uma nova programação. |
9 | Ajustar Vpp | Procedimento de ajuste das tensões de programação. Nesse procedimento, um voltimetro deve ser conectado entre o ponto VPGM (indicado no esquematico) e a massa (GND). O microcontrolador não pode estar no circuito durante esse procedimento. Para ajustar cada tensão, uma mensagem aparece indicando o potenciômetro a ser usado no ajuste. |
+ | Proxima pagina do Buffer | Incrementa o endereço inicial do Buffer na tela de 40H. Esse comando é usado apenas para permitir a visualização do conteudo do Buffer. Ele não afeta em nada os endereços inicial e final de escrita/leitura com o Buffer. |
- | Pagina precedente do Buffer | Decrementa o endereço inicial do Buffer na tela de 40H. Esse comando é usado apenas para permitir a visualização do conteudo do Buffer. Ele não afeta em nada os endereços inicial e final de escrita/leitura com o Buffer. |
0 | Sair | Sair. |
Para testar o programador ou se habituar com a interface, o usuario pode usa-lo sem a presença do microcontrolador. Uma vez as tensões de programação ajustadas, muito dificilmente elas podem variar. Entretanto, é bom habito verificas se essas tensões estão bem ajustadas quando do primeiro uso do programador. Se as tensões estiverem acima do recomendado pelo fabricante, o microcontrolador pode ser danificado.
Sugere-se os seguintes passos para programar um microcontrolador com Atprog:
Se a comparação do buffer com o dispositivo da etapa 5 não funcionar, é por que existe algum problema de escrita ou de leitura no microcontrolador. Vale lembrar que as tensões de programação devem ser ajustadas antes de qualquer uso do Atprog.
Outros sites também apresentam programadores para microcontroladores da familia 8051. Veja abaixo alguns deles:
Visite também o forum do site http://www.asm51.eng.br/ . Sempre aparece algum link interessante.
Gostaria de agradecer a Nelselon, do Estado do Amazonas, que montou e testou Atprog em um microcontrolador AT89C2051.