BREAKFUSE – DESTRAVADOR DE ATMEGA8 (REF009) – PicSource
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)
Tagged ATMEGA8
24 thoughts on "BREAKFUSE – DESTRAVADOR DE ATMEGA8 (REF009)"
elisilva diz:
25 de Fevereiro de 2015 às 02:32
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…
22 de Fevereiro de 2015 às 20:10
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.
22 de Fevereiro de 2015 às 21:36
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.
5 de Outubro de 2012 às 10:03
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?
7 de Outubro de 2012 às 19:32
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.
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.
3 de Outubro de 2012 às 09:52
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).
Parece que agora tah tudo certo, mais eu ja tinha corrigido isto aqui na minha placa e ainda não consegui faze-lo funcionar, quando eu ligo o led vermelho acende demora um pouco e dah duas piscadas e permanece apagado não fazendo mais nada, será pq eu não tinha resistores de 470r e usei de 330r, mais eu cheguei a monta-lo na proto, não destravou, mais o led verde até piscava, analizando com o osciloscopio parece não chegar tensão suficiente no atmega8, pois sinal chega, só vc mesmo para reportar para nós o que deve estar acontecendo, claro não abusando da sua boa vontade.
Olá Urias! Voce conectou ao computador para ver se está se comunicando?
1 de Outubro de 2012 às 14:08
Claudio boa tarde,
Depois de postado descobri outro arquivo da pcb que parece estar corrigido, mais ainda não está pois pelo esquema do 27 do 89s52 saem 2 resistores um de 1k conectado ao +5v e outro de 2k2 ligado a base do bc 548 e pelo que reparei os dois estão em serie saindo do pino 27 e ligando á base do transitor e, outra coisa tambem que notei a bitola do atmega8 no chapeado está mais larga eu não sei se é para outro tipo de Soquete o ZIF talvez, pois não conheço sua bitola, uma ultima pergunta, uma vez que anteriormente tinha montado um cabo paralelo e parece que consegui gravar o .hex no 89s52 pois observando no osciloscopio ele está gerando uma forma de onda para o pino 9 do atmega8 e tambem pisca 3 vezes o led vermelho, sem este circuito ele funciona o destravador sem a malha dos pinos 10 e 11 que é a entrada de dados do 89s52?
Sem mais antecipo meus agradecimentos.
1 de Outubro de 2012 às 17:58
Olá Urias! Dei uma verificada e ajustada naquilo que estava errado. Confira se faltou algo, por favor.
Parece que tem mais um erro, no pino 27 do 89s52 tem tb um resistor de 1k conectado ao +5v e no chapeado está ausente, outra coisa tambem que notei a bitola do atmega8 no chapeado está mais larga eu não sei se é para outro tipo de Soquete o ZIF talvez, pois não conheço sua bitola, uma ultima pergunta, uma vez que anteriormente tinha montado um cabo paralelo e parece que consegui gravar o .hex no 89s52 pois observando no osciloscopio ele está gerando uma forma de onda para o pino 9 do atmega8 e tambem pisca 3 vezes o led vermelho, sem este circuito ele funciona o destravador sem a malha dos pinos 10 e 11 que é a entrada de dados do 89s52?
Bacana sua iniciativa em disponibilizar este material para montagem deste destravador de atmega8, comecei a monta-lo mais me deparei com dois erros do esquema para o chapeado, no esquema pino 29 do 89s52 liga led verde, mais no chapeado está ligado no pino 28, o outro erro está na malha que liga ao pino 9 do 89s52 pois no esquema este pino está conectado em um resistor de 2k2 que por sua vez vai na junção do capacitor ligado ao vcc com um resistor de 10k ligado ao gnd e no chapeado não está assim o pino 9 está indo na junção dos dois resitores, fiquei sem saber se eu sigo o chapeado ou o esquema, sem mais para o momento antecipo meus agradecimentos.
28 de Setembro de 2012 às 18:08
Olá Urias! Obrigado por trazer atenção este erro. Realmente, conforme poderá confirmar no arquivo ASM , o led verde fica no pino 28 (o esquema está erradamente constando pino 29) . A malha relativa ao pino 9 também está errada no esquema. O lado do resistor de 10k não deve ficar junto ao resistor de 2k2 e capacitor, mas sim , direto no pino 9 e seu outro lado, mantendo no GND. Assim, o 'chapeado', em ambos os casos, está correto.
Assim que tiver um tempo vou corrigir o esquema.
25 de Setembro de 2012 às 07:27
Ok,obrigado pelo retorno,e tbm pela força,tentarei este do link acima.
Meus agradecimentos………….
Fiz teste com Ponyprog e realmente não consegui fazer funcionar usando stk200, mesmo usando cristal junto ao microcontrolador at89c52.
Alguns blogs dizem que 'não há suporte para at89s52 no pony'. Tentei a versão fornecida pela Atmel com cabo ISP, chamada at89isp, o do Asim, o Aec_isp , do Adam Dybkowsky, sendo que cada um dava um problema. Ora só lia, mas não programa, ou, não reconhece o device number, ou não dá comunicação,etc. Creio que com os windows modernos TODOS não funcionam corretamente (alguns são baseados em 'DOS'). A solução seria colocar numa partição de seu computador uma versão mais antiga do windows somente para programar os danados destes chips. Não sei se emulando windows mais antigo funcionaria. Assim sendo, vou continuar usando o meu 'HyperProg52' para programar os at89s52.
23 de Setembro de 2012 às 12:33
Sinto incomodar novamente,estou tendo dificuldade em gravaro at89s52 com os hex necessário.
Não estou tendo sucesso com o gravador acima mencionado.
trabalhei em dois de seus projetos com resultado positivo que foram o gravador de Pic e AVR- simples.
Já montei o projeto brekfuse totalmente porém sem at89s52 gravado de nada adianta,fica uma pergunta?
Antes de desertir do projeto gosataria de saber se tens como disponibilizar algum projeto de um gravador tipo serial ou paralelo de uso simples para esta gravação,com possibilidade de uso no pony ou no ic-prog ou derrepente realizar a venda de um at89s52 já gravado com o hex necessário.
Olá Rubens! Não desista! Talvez adiar até obter mais informações ou recursos. Estava pensando… Quando voce usou o seu programador em questão, voce, além de ligar os fios Miso, Mosi, Reset, Clock ( e a alimentação , é claro) , ligou também um cristal oscilador de 12mhz nos pinos 18 e 19 do AT89s52??? Estes chips antigo necessitam de clock para funcionar até na programação. Com respeito a programador , tem neste blog um , que usa o Hyperterminal para transferir arquivos hex, chamado de HyperProg52 , que usa um atmega8 para programar o At89s52 . Visto que voce tem montado o gravador de avr simples, poderá usa-lo para gravar o atmega8. Outra sugestão, mas que ainda não verifiquei o funcionamento, é a encontrada neste link. Anteriormente, tinha feito testes com ic_prog e pony para gravar os at89s52 , mas também não fui bem sucedido, por isso parti para construi um. Tinha visto um interessante , mas precisava programar antes um at89s52 para depois este programar outros. Se eu não tinha como programar um, não me servia. Dai, parti para um atmega8. Cheguei até a fazer um programador via software em visual basic. Mas, como não sou muito bom em programação, não consegui fazer o 'encapsulamento' para instalar as 'dll's' da vida e por isso, roda bem, mas somente em meu computador, usando as dll instaladas pelo visual basic.
Rubens! Veja neste link o esquema que pode ser usado para programar o At89s52 usando o Ponyprog. Poderá usar o programador STK200 montando ele, conforme esquema neste link_ , e não esquecendo de colocar o cristal no pino 18 e 19 do microcontrolador a ser gravado. Na epoca que fiz testes, tinha usado este stk, mas acho que cometi o erro de 'esquecer o cristal'. Assim que tiver um tempo , vou tirar esta duvida.
Eu nunca usei este programador. Mas sei que, através do codigo de erro, dá pra determinar o que está acontecendo (se o programa for decente deverá ter uma 'tabela de erros'). Já tive problemas com programadores , no hardware, por usar fio muito comprido. Use o mais curto que puder. Leve a alimentação bem proxima dos pinos, tanto o vcc como o gnd. Alguns programas necessitam de liberar as portas de comunicação (travadas pelo windows).
Se for o caso podera usar o 'UserPort'. Tente gravar um arquivo hex qualquer (baixe nos sites que dão exemplos do tipo 'acenda um led'), no microcontrolador, para testar se o programa grava.
Vá eliminando o que pode ser a causa.
Estou tentando gravar o arquivo hex e o mesmo esta dando erro,será que estou a gravar errado?
estou a usar o software AIC_ISP para at89s52´,porem sempre vem a mensagm de erro no arquivo,já tentei tbm pelo BREAKFUSE2_ASM
porém sem sucesso,alguma dica??? grato!
Desde já deixo meus agradecimentos pela a atenção a minha duvida,continuarei no projeto ,caso obtenha sucesso venho aqui posta resultados positivos espero,rs,rs boa noite.
Estou tentando confeccionar a placa do esquema BREAKFUSE",porém a medida do suporte para o at89s52 e atmega 8 esta fora do padrão no esquema ,se eu tiver fazendo nada errado o soquete original de ambos tem a medida maior que a do esquema ,alguem poderia me ajudar?
tentarei usar o projeto para destravar atmega88,será que da certo? desde já obrigado.
Quando se converte imagens para outros padrões, pode ocorrer falhas nas dimensões originais. Vou ver se acho o arquivo gerador original.
Quanto a usar para destravar o atmega88, não posso afirmar com certeza que terá sucesso. Mas, pelos datasheets, os comando são iguais, tendo grande chance de funcionar.