Menu

arduino_1_ptb

Mathias Gruber
Attachments
arduino-01.jpg (33829 bytes)
arduino-02.jpg (29039 bytes)
arduino-03.jpg (26314 bytes)

Convertendo o HC6800EM3 em um Arduino (Parte 1)

Objetivo

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.

Considerações Iniciais

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:

ARDUINO-01

Consultando o manual do ATmega168 verifiquei que a pinagem do modelo PDIP40 é totalmente incompatível:

ARDUINO-02

Os pinos fundamentais para qualquer tentativa na utilização de outro controlador são:

  • VCC e GND para a alimentação do componente;
  • RESET ou RST para o controle de inicialização do µC;
  • XTAL1/2 para temporizar tudo;

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.

Encontrando uma Solução

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:

  • ATmega8515L (Flash: 8KB; RAM: 512; 8 MHz; 2,7 - 5,5V; USART; SPI; WDT; 35 x I/O; 2 x Timers; 3 x PWM)
  • ATmega8515 (Flash: 8KB; RAM: 512; 16 MHz; 4,5 a 5,5V; USART; SPI; WDT; 35 x I/O; 2 x Timers; 3 x PWM)
  • ATmega162V (Flash: 16KB; RAM: 1KB; 8 MHz; 2,7 a 5,5V; 2 x USART; SPI; WDT; 35 x I/O; 4 x Timers; 6 x PWM; RTC; 10-bit ADC; JTAG)
  • ATmega162 (Flash: 16KB; RAM: 1KB; 16 MHz; 4,5 a 5,5V; 2 x USART; SPI; WDT; 35 x I/O; 4 x Timers; 6 x PWM; RTC; 10-bit ADC; JTAG)

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:

ARDUINO-03

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.

Impacto

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.


Related

Wiki: Home
Wiki: arduino_2_ptb

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.