Programador para EPROM no Arduino

Ao estudar e reparar computadores mais antigos que eu, era necessário fazer o flash ROMs. Testes de RAM e periféricos para realizar. Eu não tinha um programador normal naquele momento.


Obviamente, é possível montar a lógica da porta LPT, mas essa opção foi descartada, pois para uso seria necessário incluir outro homem velho. Nos computadores modernos, essa interface ainda é encontrada (embora não seja um conector completo, mas no pente) e a compra de uma placa em um slot PCI também não é um problema, mas já existem dificuldades com o software. Foi escrito há muito tempo, quando o trabalho com portas de entrada / saída em sistemas operacionais era realizado de maneira diferente. Assim, nas versões modernas do software Windows não funcionará.


Vale mencionar imediatamente que eu sei sobre a existência do TL866. E mesmo durante o processo de desenvolvimento, ele comprou por conta própria, mas não pode usar chips de flash que exigem alta voltagem de programação. Máximo de 18 volts (TL866 + ou 21 para a versão anterior).


Uma rápida pesquisa no Google me levou a este repositório . Depois de montar o programador, pude despejar algumas fichas de interesse. Mas com o firmware tudo ficou muito mais complicado ... O software simplesmente não sabe como ... Claro, você pode enganá-lo expondo o chip errado, mas isso não funciona em todos os casos e claramente não é o nosso método


Fiquei muito decepcionado com a interface do usuário, que, em vez da versão clássica com o direito de selecionar a porta para o usuário, passou por todas as interfaces seriais disponíveis. Assim, todos os dispositivos são reiniciados. É especialmente ofensivo, provavelmente, quando você tem uma impressora 3D por 10 horas imprimindo uma peça a partir de uma unidade flash USB, e aqui essa configuração ...


O mundo do OpenSource é lindo, pois você pode pegar o projeto e adicioná-lo à sua tarefa. Nesse caso, não há códigos-fonte para a interface gráfica. Pelo menos eu não os encontrei, apesar de poder escrever para o desenvolvedor. Tornou-se interessante e havia um pequeno motivo para estudar o Qt. Portanto, o software será multiplataforma.


Tomamos como base o esquema do projeto anterior e modificamos o dispositivo para a funcionalidade necessária. Decidi sacrificar o suporte da EEPROM em software. Isso pode não ser uma boa solução, mas os chips apagáveis ​​eletricamente não precisam mais de uma tensão tão alta. Ao finalizar, contei com o microcircuito mais volumoso (27C512 para DIP28) e removi toda a confusão em relação às pernas de endereço. O endereço inteiro será definido exclusivamente usando registros de turno (74HC595). Isso libera as pernas extras do próprio microcontrolador, o que será necessário para controlar o fornecimento de tensão de programação. E todos os sinais necessários (PRG) podem ser obtidos modificando o endereço antes de carregá-lo nos registradores.


O princípio da aplicação da programação de tensão permaneceu o mesmo. Alterações apenas no campo de proteção dos pinos do microcontrolador e registros de deslocamento. Troquei os resistores (1 KOhm) por diodos com um pull-up para o registro. 0. Esta é uma opção menos agressiva. Embora, com justiça, e resistores de trabalho.


Tendo estudado a documentação de todos os chips de interesse, determinei que três pontos de alimentação de Vpp são necessários:

  1. 27C16 CIs de 21 pés (soquete DIP28 de 23 pés)
  2. 27C32 e 27C512 por sinal #OE (saída ativada)
  3. 27C64, 27C128, 27C256 em uma perna de microcircuitos


Os microcircuitos 27C16 e 27C32 diferem dos outros no caso, portanto, eles precisam fornecer energia para a 26ª perna do soquete. Esta é a perna de endereço da A13 para irmãos mais espaçosos. A corrente da saída do registrador de turnos deve ser suficiente para funcionar, mas no momento do carregamento dos dados, suas saídas entram no estado Z. Um modo semelhante é permitido, mas a inclusão na leitura ou gravação de uma célula dificilmente é a norma. Portanto, um transistor adicional é instalado sob o controle de potência. E outro foi necessário para o 27C16, que, para o tempo de leitura, precisa fornecer 5 volts à entrada Vpp. Obviamente, você pode definir a tensão de programação para 5 volts durante a leitura, mas alternar entre 25 e 5 volts é inconveniente.


Se houver pernas livres de ADC, por que não medir a tensão de programação? O conselho é divorciado sob o Arduino Nano. Existem duas entradas adicionais, que não podem ser usadas, exceto o ADC. Este é realmente um recurso de muitos microcontroladores AVR em um compartimento de montagem em superfície. No Arduino chinês UNO, geralmente existem entradas A6 e A7. Dado o fato de que a tensão pode ser de até 30 volts (parece que, acima de tudo, eles desejam RF5 doméstico, 25 volts), calculamos o divisor com o que está disponível. Uma precisão de 0,5 volts é suficiente para esta tarefa. Esta função é à prova de falhas, não um voltímetro.


Era possível, é claro, ficar confuso e agir como um controlador WID (controle de largura de pulso), mas não havia pernas livres. Portanto, na placa de circuito impresso, há um assento para o conversor DC-DC Step Up no chip MT3608, que está disponível por um centavo em Ali.


De acordo com o esquema, isso é tudo.




O algoritmo para trabalhar com esses microcircuitos é muito simples. Você pode lê-lo em um pequeno vídeo.




Esquemas e software estão disponíveis no repositório no GitHub: https://github.com/walhi/arduino_eprom27_programmer . Durante a montagem, você pode alterar com segurança os valores dos resistores. É verdade que, com o divisor, você precisa corrigir levemente o código do esboço.



Source: https://habr.com/ru/post/pt462433/


All Articles