BREAKFUSE – DESTRAVADOR DE ATMEGA8 (REF009)

Ao programar ATMEGA8, as vezes, pode ocorrer de acidentalmente travarmos o chip para programação “in circuit” (modo serial).
Isto pode ocorrer ao escrever nos FuseBits High e Low (configurações do chip). E ai? Só com programador paralelo para reverter a situação. E se voce não tem? Muito caro? Tem quem jogue fora os chips e compra outros. E se fizéssemos um “Destravador”?

Pensando em uma solução, resolvi estudar o datasheet do ATMEGA8 e conhecer os comandos de programação paralela e respectivos pinos que deviam ser usados. Necessitava também, de um chip com muitos pinos e que fosse barato. Optei pelo velho, mas viril, e barato AT89S52 . Ele pode ser programado facilmente “in circuit”, o que facilitou o desenvolvimento do projeto. Depois de muitas horas de trabalho e experimentos, surgiu o “BREAKFUSE”, cujo esquema esta abaixo.

Para usa-lo , basta encaixar o ATMEGA8 no soquete ,ligar a uma fonte de 13 volts externa e apertar o botão “destravar”. Se tudo correr bem, o led verde piscará 3 vezes indicando o destravamento, ou seja, a mudança do “Fuse bit” para aceitar programação serial. Também será apagado a memória flash e os lock byte (proteção contra cópia do programa e da EEprom). Caso ocorra falha, o led vermelho piscará 3 vezes. Basta agora, usar o chip normalmente com o programador “in Circuit” (ex. PonyProg).

Porque então da porta serial (db9) no circuito? Visto que desejava ver os bytes de calibração do oscilador interno , optei a visualização de dados por meio de uma serial a 9600 bauds,8 bits,sem paridade, Xon/Xoff para comunicar com um PC via um programa terminal, como por exemplo , o HyerTerminal. Também é possível alterar a gosto , os Fusebits bastando teclar “pf” e digitar novos valores. Posso visualizar o que foi programado digitando “f” . Clicando “?” poderá ver outras opções. Testei o circuito com ATMEGA8-16PU / ATMEGA8L-8PI / ATMEGA8L-8PU , sem problemas. Para outros modelos que não o ATMEGA8 , exigiria estudo dos respectivos datasheets e alterações de pinos/soquetes deverão ser feitas.

clique abaixo para obter arquivo ASM:
BREAKFUSE2_ASM
clique abaixo para obter arquivo HEX:
BREAK_HEX

Segue lista de materiais

BREAKFUSE_LISTA_MAT

Segue a placa :

Segue a placa com componentes (visto pelo lado das trilhas de cobre):

Segue o arquivo original que gerou a placa (baixe o programa ‘ExpressPCB’ free para abrir)
OBS. Imprima com opção ‘top’ ao invés de ‘bottom’ (erro na hora de escolher o lado):
breakfuse (zip)

Curiosidades:
Universo cheio de surpresas
Universo – obra do acaso?
Nosso inigualável sistema solar
Mapeamento do céu
Qual a origem do universo e a vida?

Outros assuntos:
Quatro dicas para lidar com problemas financeiros e dívidas
Como lidar com sucesso com os sogros
Como reagir a um assédio sexual
Como parar de adiar as coisas

Até o próximo artigo!!!

24 comments on “BREAKFUSE – DESTRAVADOR DE ATMEGA8 (REF009)

  1. Bom dia!!! Claudio muito obrigado mais uma vez por sua explicações, talvez se fosse possivel indicar algum gravador para destravamento do Atmega88 lhe agradeço muito desde já muito obrigado… caso você interesse posso enviar o desenho da PCB redesenhada no Sprintlay 5.0 okay forte abraço…

  2. Boa noite! ao amigo Claudio , montei a PCB do destravador , estou com umas duvidas , o Led verde nunca acende, a placa esta fazendo a comunicação perfeita sem problemas , fiz testes com o Atmega88 , acontece o seguinte , gravo lock bits com a gravadora G-840 , o destravador lê perfeitamente e depois desbloqueia-o, mas quando tento desbloquear um outro Amega88 que tenho por aqui ele não o desbloqueia, estou ciente que o fez especificamente para o Atmega8 , mas caso possa me dar um auxilio , agradeço muito , refiz o layout no sprintLay 5.0 já na posição certa e ideal para fazer a PCB no processo térmico, desde já muitissimo obrigado.
    Elionaldo.´.

    1. Olá Elisilva! O Breakfuse foi realmente feito na época para atender a necessidade de destravar alguns Atmega8 que tinham sido incorretamente bloqueados por uma falha de programação. Nunca usei com qualquer outro ATmega que não fosse o ‘8’. Olhando por alto o datasheet do atmega88 na pagina 291 e comparando com o datasheet do Atmega8 na pagina 221, notei que tem diferenças em alguns comandos de gravação, em modo paralelo. Talvez isto justifique o mau funcionamento. Você deverá analisar com cuidado estas diferenças e alterar o código asm fornecido do Breakfuse para atender a sua necessidade e depois recompilar para obter o novo hex. Note que programadores comerciais paralelos para linha AVR conseguem desbloquear qualquer ATmega travado. O problema são os programadores seriais, que são bem limitados e não conseguem realizar esta tarefa.
      Cláudio

  3. Claudio bom dia,
    Acabei o restante da montagem aqui na pcb conectei ao pc pela serial no hyperterminal, só que tenho pouco conhecimento com este software mais pude perceber que quando energizo a placa aparece um caracter na tela do hyperterminal, isto ja eh um sinal de comunicação? se não, existe algum teste?
    Obrigado.
    Urias

    1. Olá Urias! Verifique se você acertou o Hyperterminal para 9600 bauds, 8 bits, sem paridade, xon-xoff. Quando você inicia a comunicação dando um ‘enter’ no teclado do PC, deverá aparecer o nome do breakfuse na tela de seu monitor. Confira isto primeiro. Com certeza já está havendo comunicação.
      Claudio

  4. E ai Claudio beleza, Bom como havia dito anteriormente a parte da malha de comunicação que penso ser nos pinos 10 e 11 do 89s52 não montei, pois como já tinha gravado este ci em um cabo que havia montado julguei não ser necessário esta comunicação, então precisa comunicar?
    pensei que era necessário só para gravar o .hex no MC, então vou ter que fazer o restante desta montagem. Vou fazer aqui depois posto o resultado.
    Sem mais, obrigado.
    Urias

    1. Olá Urias!
      A entrada Db9 ligada aos pinos 9 e 10 não são para programação do AT89s52, mas para comunicação via HyperTerminal (a 9600 bauds,8 bits,sem paridade, xon/xoff ) com o Breakfuse, com opções adicionais além de apenas ‘destravar’. Poderá ver o ID Number (numero especifico para o ci atmega8), o que está programado na palavra de Configuração High e Low por digitar “F”, mudar esta palavra digitando “pF” e os novos bytes High e Low. Poderá ver os bits de calibração teclando “C”. Digitando “D” destrava para uma palavra de configuração padrão. Sem os resistores e transistores de polarização junto aos pinos 9 e 10, irá alterar o funcionamento. Sei que com o circuito completo, sem ligar a serial na DB9, apenas apertando o botão “DESTRAVAR” já deverá ocorrer o destravamento, ou seja , será gravado uma nova palavra de configuração padrão que aceita o uso do programador serial. Quando não consegue destravar, piscará 2 vezes o led vermelho e apagará. (Este é o caso de quando não tem um ci ATtmega8 no soquete ou quando o ATmega8 está totalmente ‘pifado’). O Breakfuse serve para ‘destravar’ não para “ressuscitar” chips queimados ou danificados internamente (lembrando que o travamento ocorre por não se programar corretamente a palavra de configuração quando em uso com programadores seriais, não por defeito do chip).
      Quando construí o meu prototipo na placa de circuito impresso, pelo fato das trilhas serem finas, tive problema de interrupções nas trilhas, dificéis de serem enxergadas a olho nú. Aconselho você, após montar o restante do circuito, a fazer uma verificação ohmica pino a pino e com os componentes a ele ligados. Imprima uma folha com o esquema e começando com o pino 1, teste tudo o que a ele está ligado, com escala em OHMS X1, tendo que dar baixa resistência (0 ohms ou próximo). Vai ticando com um lápis, no esquema, todos os pontos testados.
      Faça isto com todos os pinos. Demora, mas você terá certeza que não há trilha interrompida. Também, marque na placa com uma caneta destas de escrever em cd, onde fica o pino 1 do ATmega8 a ser encaixado. Isto evita de monta-lo invertido e gerar confusão.
      Quando tudo estiver ok, monte o chip a destravar, e ,ao apertar o botão ‘destravar’, deverá piscar o led verde 3 vezes. Caso não ocorra, pegue um ATmega8 que esteja funcionando e monte, aperte o botão “destravar’. Se ocorrer o destravamento , então o chip anterior está totalmente queimado e deverá ser descartado (teste varias vezes antes de fazer isto).
      Sucesso

      Cláudio

Comments are closed.

Back To Top