EMULANDO 74C926 – C/ PIC 16F628A (REF345)

Criando alternativas para suas necessidades…

Seria possível emular um contador 74C926 usando um microcontrolador PIC? Fui atrás da resposta! Depois de muitas linhas de código não funcionais e testes decepcionantes, finalmente um avanço. A partir de uma nova linha de pensamento foi possível construir um protótipo funcional, conforme mostrado no esquema abaixo:

O circuito integrado 74C926 é um contador de décadas para ser usado em conjunto com 4 displays de sete seguimento de cátodo comum. Acredito que seja bem conhecido pelos técnicos eletrônicos que fazem manutenção em equipamentos digitais.

Você que está lendo este artigo, talvez se pergunte: Porque alguém iria querer emular um 74C926 usando um microcontrolador PIC16F628A? Se você gosta de montar circuito digitais discretos em seu protoboard e não deseja pagar um valor alto por um MM74C926, talvez seja uma alternativa interessante. Mas no meu caso, a motivação foi buscar a resposta a pergunta: seria possível fazer isto com um programa rodando em um microcontrolador PIC 16F628A? A resposta é: sim, com algumas limitações, mas funcional. Sobre estas limitações leve em conta o seguinte antes de usar esta montagem:

  1. Os pinos não correspondem exatamente com o circuito integrado alvo da emulação.
  2. Também, a corrente que o circuito original fornece para os seguimentos dos displays chega até 40 mA. No PIC não passa de uns 20 mA.
  3. O PIC é sensível a ruídos eletromagnéticos no ambiente, o que deve ser levado em conta na aplicação deste circuito, diferentemente do original, que é imune a grandes valores de ruídos.
  4. A frequência máxima de clock do 74C926 fica entre 3 a 4 Mhz. O protótipo foi testado até 400 Khz. Acima desta frequência não existe garantia de bom funcionamento.
  5. As entradas do MM74C926 suporta até 15 volts. As entradas do PIC não suportam tensões acima de 5,5 volts.

Durante testes de rotinas, ficou patente que rotinas de incremento em cascata não dariam conta do recado, uma vez que tinha que ser vigiado vários pinos de entrada e ao mesmo tempo multiplexar os displays. A proposta funcional foi usar o timer 1 contando os pulsos de clock pelo pino 12 do PIC (usando o hardware do timer 1). Desta forma, não haveria necessidade de vigiar o pino de clock pelo programa. Pegando o gancho, foi usado o módulo CCP (Capture, Compare, PWM) no modo ‘capture’, para emular a captura de valores do ‘latch’ virtual. Um pulso de transição negativa no pino 9 dispara esta captura.

Para a multiplexação dos displays foi usado a interrupção do timer 0 a cada 1024 us.

O reset, por ser de sinal invertido, foi feito na própria rotina principal do programa. Observe que o pino 4 trabalha como um port de entrada e o reset é feito por linhas de código.

Foi feito tentativas para usar o timer 1 com recarga de valores para a contagem de 0 a 9999. Infelizmente, esta forma não funciona, produzindo contagens diferentes do esperado. A solução foi deixar o timer 1 rodando livre (free running mode). Mas ocorria um problema: o contador pretendido é decimal (múltiplos de 10) e o timer 1 é hexadecimal (base binária). O timer 1 teria como que contar até 70000 ao invés de 65535 para poder dar certo. Depois de muito quebrar a cabeça, a solução foi usar um acumulador de ‘continuidade de contagem’. Sempre que o timer 1 ultrapassa o valor de 65535, o flag de overflow do timer 1 é setado. Nesta ocasião, o programa soma um valor neste ‘contador de continuidade’. Pela lógica, o valor a ser somado teria que ser 65536. Mas como não temos mais que 4 displays, basta somar 5536. Durante a rotina de multiplexação é feito a leitura do timer 1 e a este valor obtido é somado com o valor do ‘contador de continuidade’. Depois, basta reduzir os valores acima de 10000 e teremos o valor correto para ser decomposto nos 4 dígitos: milhar, centena, dezena e unidade. Estas rotinas tomam tempo, limitando portanto a frequência máxima permitida do clock.

Para testar o funcionamento correto, o contador emulado com PIC foi ligado em paralelo com um contador digital feito com circuitos integrados CD4026BE, tendo 4 displays de sete seguimentos também. Foi construido um oscilador usando um circuito integrado NE555P para produzir o clock de teste. Abaixo podemos ver como foi feita esta ligação:

O desenho acima é mais um rascunho, somente para dar uma noção de como foi feito o teste.

Conforme pode ser observado, o botão ‘reset’ ao ser apertado irá resetar ambos contadores. Em seguida, ambos começam a contar com valores de frequência entre 90 khz e 400 khz, dependendo da posição ajustada pelo potenciômetro de 5 K. Após um tempo contando, apertamos o interruptor SW1, que fará a contagem ficar bem devagar. Nesta ocasião podemos comparar os valores. Se o contador com PIC estiver com o mesmo valor do contador padrão então o teste foi bem sucedido. O programa postado na pasta no final deste artigo passou por este teste. Caso queira saber como foi construido o contador padrão a base de circuitos integrados CD4026BE basta analisar o esquema abaixo:

Para que você conheça quais pinos foram alterados em relação ao circuito integrado original, você poderá estudar o desenho abaixo:

Obs. Esta montagem é experimental, sendo de caráter didático, montada apenas em placa experimental (do tipo “Protoboard”), sujeita a “bugs” ainda não detectados. Está sendo fornecido os arquivos para que cada hobista possa alterar o programa segundo suas necessidades.

Segue abaixo a pasta zipada com os arquivos desta montagem:

74C926_EMULADO_ZIP

Manuais:
PIC16F628A datasheet

MM74C926 datasheet

Curiosidades:

O que a Bíblia diz sobre dinossauros?

Será que a Bíblia ensina que a Terra é plana?

A posição em “V’ da asa da borboleta

Outros assuntos:

O que é o Reino de Deus?

O que o Reino de Deus realizará?

Sofrimento – Cinco coisas que você precisa saber

Faça o curso da Bíblia on-line

Vídeos:

Pássaros com cores que nunca desbotam

A pele do tubarão

O voo da abelha mamangava — Teve um Projeto?

A asa da coruja

Como as formigas evitam engarrafamentos?

Até o próximo artigo!

One thought on “EMULANDO 74C926 – C/ PIC 16F628A (REF345)

Deixe uma resposta

Back To Top