Como não gosto do 8051 por ser primitivo demais e inadequado para a linguagem C, propus um desafio inicial: Comprar uma ATmega compatível com a pinagem do 8051 e instalar o bootloader do Arduino para que o Kit se assemelhe a um Arduino.
O DVD do kit acompanha um esquema elétrico da versão 2.2, que possui um display de matriz de LED mais simples, mas os demais módulos são iguais. A figura abaixo ilustra a pinagem do soquete ZIF do HC6800EM3:
Consultando o manual do ATmega168 verifiquei que a pinagem do modelo PDIP40 é totalmente incompatível:
Os pinos fundamentais para qualquer tentativa na utilização de outro controlador são:
Destes pinos apenas o RESET é comum!!! Claro que se eu colocar este modelo vai ser um grande fiasco. Todos nós sabemos que a maior limitação para esta tarefa é manter compatibilidade elétrica com o hardware HC6800EM3, senão o µC não funcionará além do risco de pifar algo irreparavelmente.
Felizmente com um pouco de Google descobri que a linha AVR possui componentes destinados a substituição direta do 80C51 e localizei 6 modelos/variantes:
Comparando as especificações o modelo mais interessante é ATmega162, por ser mais completo. E por possuir circuito JTAG demonstra que o "silício" usado nele é de uma geração mais recente. Confiram a pinagem deste componente:
Outra característica desejável é utilizar a versão de 16 MHz pois permitiria compatibilidade melhorada com o Arduino. Em posse desta informação, iniciei uma longa pesquisa nos sites de componentes eletrônicos e pude encontrar as três séries, mas infelizmente na versão low-power, cujo clock é de no máximo 8 MHz. Assim comprei duas peças na [MultComercial] (http://loja.multcomercial.com.br "Loja onde comprei o ATmega162V")
Dica: No Brasil é bem difícil encontrar os componentes; só para dar um exemplo, agora -- uma semana depois -- já não estão disponíveis no site indicado acima. Uma boa opção -- embora demorada -- é encomendar na China.
Claro que o componente escolhido não é exatamente o mesmo modelo usado no Arduino, mas sabemos que a diferença do Arduino para um chip AVR comum, é a maneira como se grava os programas. Cada AVR possui suporte no seu hardware para ser gravado utilizando uma interface SPI. Mas para conseguir isso, faz-se necessário a aquisição de um pequeno gravador (AVRISP), já que um PC comum não oferece este tipo de interface.
Já no Arduino, ocorre a instalação de um bootloader, realizado durante a fabricação das placas, que implementa um protocolo utilizando os sinais de uma porta RS232C comum (veja este exemplo!!!), assim podemos conectá-lo a um PC comum. Com o tempo, as portas seriais foram desaparecendo do PC e novos modelos foram desenvolvidos -- e agora são os mais populares -- onde a porta serial foi substituída por um chip USB/Serial, o que facilita muito, já que o PC alimenta tudo, dispensa o uso da fonte externa.
Outra facilidade é que a plataforma de software é open-source e facilmente configurável. Alguns arquivos instalados, devidamente ajustados, fornecem as informações que diferenciam um modelo de placa de outra. Assim o ATmega162V poderá operar como uma placa convencional.
Outro fator determinante é a existência do código fonte do bootloader que já vem instalado com o pacote Arduino. Observando este arquivo, notamos que outras variantes do AVR foram utilizadas no seu desenvolvimento.
Nos próximos posts pretendo relatar os passos para compilar e instalar o bootloader nos µCs adquiridos. Também pretendo demonstrar como configurar o ambiente de desenvolvimento do Arduino para reconhecer o ATmega162V no kit HC6800EM3.