Página 1 de 1
Problemas com clock Atmega8-16PU

Enviado:
18 Mar 2010 11:14
por 51
Um amigo me passou este problema interessante, como nunca mexi com Atmega, descrevo aqui com esperança de aparecer alguma luz:
_Durante alguns anos ele usou um Atmega8-16PI num produto bem simples, como ele vende pouco, o lote inicial comprado de uC durou 3 anos, no inicio do mês ele comprou um lote de novos Atmega8, só que surpreendentemente, estes c.i.s novos, Atmega8-16PU, gravam e conferem normalmente, mas o programa não roda.
Verifiquei que o cristal, de 12Mhz, não esta oscilando!
Testei diversos cristais com algumas variações nos valores dos capacitores e nada!
Me intriga como isso pode ocorrer... A empresa fornecedora garante que não é lote com defeito...

Enviado:
18 Mar 2010 11:19
por Francesco
Esse chip tem um "Internal RC", que você condifura na hora da gravação. Vocês checaram isso? Que gravador estão usando?
Francesco

Enviado:
18 Mar 2010 11:32
por 51
As configurações são rigorosamente as mesmas para os dois chips, o gravador, não se sabe bem porque o cara que fez sumiu à alguns anos, parece que foi feito por ele mesmo, inclusive o software, que não encontro referencia alguma à respeito na net, de qualquer forma ele não permite alterar absolutamente nada na configuração, só grava, lê e confere.
A sequencia exata de teste é:
_Coloco um atmega8-16PI no soquete dip da pci, gravo o fw, testo e comprovo que funciona
_Retiro o atmega8-16PI e coloco o novo atmega8-16PU no lugar, gravo o fw e não funciona

Enviado:
18 Mar 2010 11:42
por Francesco
Se isso acontece com todos os ATmega8 novos, e não acontece com os antivos... de cara você desconfia que é o lote que veio com defeito.
Mas já que é para esgotar as possibilidades, vai aí algumas coisas.
1) Você está medindo a oscilador com o osciloscópio, imagino eu. Está em X10? Em X1, boa parte dos osciloscópios matam o sinal do cristal.
2) Internamente, a porta do cristal tem um inversor. Se um dos pinos estiver em 0V, o outro tem que estar em 5V. Qualquer coisa diferente disso é sinal que o chip está queimado.
3) Uma maneira fácil de testar é com um multímetro. Ele tem uma impedância interna bacana, que não costuma interferir no cristal. Se sua fonte for de 5V, você vai medir algo em torno de 2V a 2,2V sobre os pinos do cristal. Se você medir 0V ou 5V, tem algo errado pela mesma explicação que falei no (2). Se a alimentação for de 3,3V você deve esperar uma tensão menor, mas o princípio é o mesmo.
4) Uma alternativa bacana também é habilitar o oscilador interno. Lógico que ele não vai estar na velocidade que vocês esperam para o firmware funcionar bem, mas pelo menos vai saber se o sistema roda ou não.
Boa sorte.
Francesco

Enviado:
18 Mar 2010 12:55
por enigmabox
Tenho alguns Atmega8 , 16 e 32 aqui, vieram de fabrica com o oscilador RC como default. Depois se quiser mudar, tem que configurar na IDE do programa gravador.
Pode ser que quando vc coloca outro Atmega novo para gravar a IDE lê a configuração deste, desconfigurando o gravador, por isso vá na pagina que lê as configurações do oscilador e confirme ou faça a leitura das configurações do oscilador.
Se usa a freq. do RC interno, pode não bater com outro Atmega, se tiver usando comunicação serial, pode não funcionar corretamente.
Para tirar a duvida se o Xtal tá oscilando, meça com o osciloscopio, como já foi falado.

Enviado:
22 Mar 2010 17:58
por RobL
As configurações são rigorosamente as mesmas para os dois chips, o gravador, não se sabe bem porque o cara que fez sumiu à alguns anos, parece que foi feito por ele mesmo,
Você consegue ler os fuses dos dois chips após gravar ?
Não é comum um gravador "caseiro" gravar automaticamente a configuração. Normalmente é feito na mão ou por um arquivo batch (.bat) que "automatiza" a gravação.
Não tenha dúvidas que a configuração que está no antigo, não está gravada no novo chip.
Seu gravador consegue ler a configuração dos fuses hi, low ?

Enviado:
24 Mar 2010 09:20
por 51
Sim, consegue, estão iguais nos 2

Enviado:
24 Mar 2010 11:01
por RobL
Supondo que não há nada errado nos fuses então vamos para o hardware.
Realmente há diferença nos osciladores entre nova e velha geração, mas quado isto ocorre, quase sempre acrescenta alguma letra no código do novo chip, como um A, etc.
Como já foi testado troca do cristal e capacitores, tente mudar o ganho do oscilador. Isto é feito configurando o oscilador para uma F mais alta. A questão é que 12Mhz já deve estar configurado para o maior ganho, para esta faixa.
Verifique se o bit 4 "CKOPT" do fuse hi está com zero (programado).
Se não estiver mude para zero e teste.