quinta-feira, setembro 28, 2023

Kit M8031TL da Bit9 - Parte 1

 E vamos voltar a falar um pouco sobre a arquitetura 8051!  Dois anos atrás eu brinquei um pouco com isso, mas depois encostei. Aconteceu que no mês passado eu comprei uma plaquinha com um chip moderno baseado na arquitetura do 8051. E, antes que eu começasse a estudá-lo devidamente, achei no Garoa uma meia dúzia destes kits M8031TL, parte de uma doação anos atrás da Bit9. É um kit já descontinuado e que (como veremos) apresenta um pequeno desafio para o uso "nos tempos atuais".


Neste primeiro post vou descrever o que vem no kit e o que pretendo fazer.

Como mostra na foto. o kit vem com uma placa, um CD e um cabo. Vem também com uma documentação impressa, que não coloquei na foto. A documentação menciona também uma fonte de 9V.

O meu primeiro passo foi ver o conteúdo do CD. Felizmente ainda tenho micros com leitor/gravador de CD/DVD, mas me senti um dinossauro fazendo isso (e olha que quando comecei a usar micros eu usava fita K7 para carregar e salvar programas!).

O CD contém bastante material:

  • A apostila em formato PDF
  • A documentação do hardware, incluindo o esquema e os datasheets dos integrados
  • Programas exemplo
  • Software para fazer a gravação de programas na placa
  • O instalador do compilador RIDE-51
Começando pelo último ponto, o RIDE-51 era uma IDE/compilador comercial para 8051. Digo era, porque não aparece mais no site do desenvolvedor. Meu plano é usar o SDCC, que é um toolchain open-source. A apostila menciona também o Reads51 que pode ser usado livremente para fins não comerciais.



A placa contém uma boa quantidade de recursos:
  • Microcontrolador AT89S52
  • Um display de 7 segmentos
  • 8 botões
  • 8 LEDs
  • Botão de reset
  • Conector para um display alfanumérico
  • Conector de expansão ("Port 3")
  • Conector de programação
  • Um regulador 7805 para permitir a alimentação com uma fonte de 9V a 15V.
Um detalhe curioso: a placa se chama M8031TL, mas o microcontrolador é um AT89S52. O 8031 é uma versão do 8051 que não possui memória de programação interna, é preciso conectar uma ROM/EPROM/Flash externa. O AT89S52 é uma implementação mais recente do 8051 e possui 8K de memória Flash e 256 bytes de Ram.

Aqui chegamos ao meu primeiro desafio, que é a gravação de programas na placa. Se você olhar na foto lá no começo, vai ver que o cabo de programação tem um conector que vai na placa e um DB-25 na outra. O manual confirma o que eu suspeitei desde o princípio: o cabo é para ser ligado na interface paralela do micro (aquela que era usada para impressora).

Talvez o software deles funcione com um adaptador paralelo USB que eu comprei faz anos para algo deste tipo, mas esta solução não me agrada muito. Nas minhas brincadeiras no passado eu consegui fazer um programador para o AT89S51, me sinto confiante de adaptar isso para esta placa.

A primeira coisa é investigar o conector de programação. O esquema documente esta parte, mas foi usado o símbolo incorreto para as portas do 74HC126. Felizmente, o datasheet deste componente também está no CD, então não foi preciso nem um busca na internet (ou nas minhas várias coleções de datasheets).


Decifrando o esquema: um dos pinos do conector (EN) habilita a conexão dos demais pinos ao microcontrolador. O sinal EN também permite dar um reset no microcontrolador.

Quando o sinal EN estiver em 1, teremos no conector os sinais MISO, MOSI e SCK  necessários para a programação. Além disso, o o pino P1.4 será colocado em nível baixo (não descobri a utilidade disso).

Estou analisando diversas opções para fazer a programação sem a porta paralela:
  • Usar direto o que eu fiz anteriormente com o ESP32, enviando o HEX via browser
  • Usar o ESP ou a Pi Pico W e implantar um servidor FTP para receber o HEX. A vantagem é poder fazer a gravação por linha de comando
  • Trambicar o velho ArduinoISP e usar o avrdude
  • Usar a Pi Pico (ou uma outra placa que suporte device USB) e implementar um dispositivo que se apresenta ao micro como interface paralela e na outra ponta liga no conector de programação.
Vamos ver para onde isto evolui.


Nenhum comentário: