Vamos examinar neste post como gravar um programa na memória Flash do AT89S51. O que vamos ver aqui é específico para este modelo (e com pequenas alterações se aplica a outros microcontroladores da linha AT89 da Atmel). Microcontroladores de outros fabricantes podem ter processos de gravação diferentes, mesmo sendo baseados na mesma arquitetura do 8051.
A base para o que vou falar é o datasheet do AT89S51. Existem duas formas de gravação da Flash:
- A paralela, que é para ser usada com o chip fora do circuito. Requer uma tensão de 12V e utiliza vários pinos, mas é mais rápida que a outra opção.
- A serial (SPI) que requer menos pinos e pode, com certos cuidados, ser usada com o chip no circuito,
Uma ausência no AT89S51 é a "auto programação", onde o firmware consegue alterar a Flash. Sem este recurso não é possível criar um bootloader que atualize o conteúdo da Flash a partir de dados recebidos por uma serial (ou outro caminho).
O processo de gravação de firmware normalmente requer não apenas ser capaz de gravar na Flash, mas também verificar o que foi grava e, em alguns casos, ser capaz de ler o conteúdo da Flash,
Fuses
Uma preocupação de muitos projetistas é impedir que o firmware possa ser regravado (para evitar adulterações) ou lido (para proteger o código ou valores na Flash). No AT89S51 isto é controlado por três memory lock bits (também chamados de fuses).
Identificação do Chip
O AT89S51, como outros microntroladores, possui três bytes de identificação que podem ser lidos pelo programador para confirmar que é o chip correto (ou para selecionar o programa a carregar).
Programação Paralela
A figura abaixo, extraída do datasheet, mostra as ligações necessárias.
Basicamente um endereço é colocado em certos pinos e vários sinais de controle são usados para selecionar a operação. Nas gravações, o valor a gravar deve ser colocados nos pinos apropriados e o sinal Vpp deve ser colocado em 12V. Nas leituras o sinal Vpp deve ficar nos 5V e o dado lido ficará disponível nos pinos de dados.
Programação Serial
A ligação a ser feita é bem mais simples:
A programação serial está disponível quando o sinal de reset está alto. A comunicação segue o padrão SPI onde um clock (SCK) comanda o deslocamento dos sinais seriais de dados (MISO e MOSI), Para selecionar a operação deve ser enviando um byte de comando.
Um cuidado é que a frequência de SCK não pode ultrapassar /16 da frequência do cristal.
No próximo post vamos brincar com a programação serial do AT89S51.
3 comentários:
Oi!
Descobri seu site pelo Retrocomputaria e to adorando!
Mantenho um projeto chamado /dev/All que é um agregador de blogs sobre desenvolvimento/informática/TI para que outras pessoas possam descobrir bons textos como os que encontrei aqui.
Cadastra seu site lá pro pessoal poder acompanhar! Segue o link: https://devall.com.br
De novo, parabéns!
Oi Daniel, explicando o Henrique acima: https://www.retrocomputaria.com.br/2021/02/08/site-maneiro-do-dia-dqsoft/ - não estranhe o nome, o podcast não é sobre o que você está pensando, é sobre tecnologia. Véia.
Alguém citou o seu site no nosso grupo no FB, e achei tão legal que resolvi fazer esse post. Vou te mandar um e-mail porque ando tendo umas ideias loucas.
Um abraço e, mais uma vez, parabéns pelos relatos divertidos!
Fui mais um que chegou aqui através do Reteocomputaria. Adorei o site!
PS: Voltei recentemente a estudar programação de microcontroladores (Arduino Uno, Nano e ESP8266) e depois de ler este post, fiquei tentado a estudar também o 8051.
Postar um comentário