Como você determina se um novo microcontrolador está com defeito?


11

Eu nunca lidei com peças com defeito devido ao digikey, mas três novos Atmel ATmega164A que recebi exibiram um comportamento extremamente estranho.

Eu o reduzi a algo relacionado ao relógio, e o sinal do relógio resultante do oscilador interno supostamente "calibrado de fábrica" ​​tremia entre 650-700 kHz em vez do sólido 1 MHz que deveria ser. Consegui escrever no byte de calibração para chegar perto de 1 MHz (ainda com alguma instabilidade) e a maioria das coisas funciona, mas os UARTs simplesmente não se comportam corretamente, eles parecem emitir um fluxo contínuo de pulsos curtos, não importa o que você pede para eles fazerem.

Eu lidei com a versão de baixo consumo de energia deste microcontrolador antes (164P) com zero problemas e decidi deixá-lo no lugar e verificar a saída do relógio, e é um sólido de 1 MHz sem tremulação. Estou me inclinando para a conclusão de que esses chips 164A estão com defeito, mas haveria outros testes que eu pudesse tentar confirmar?


Edit: Apenas pensei em descrever o processo pelo qual estou medindo o relógio. Ativei o bit de fusível da saída do relógio e medi o pino apropriado com um analisador lógico de amostragem a uma taxa muito alta. Eu tenho um programa que escreve no registro de calibração OSCCALe fui capaz de tentar e errar até 1 MHz.


Edit # 2: Após uma investigação mais aprofundada, parece que o microcontrolador começa a funcionar após um determinado tamanho de programalimite. Um projeto básico com um único arquivo de origem piscando em um LED parece estar bem, mas compilar e vincular qualquer um dos meus outros arquivos (por exemplo, biblioteca UART ou qualquer outra coisa) sem sequer fazer uma chamada de função para esses métodos faz com que o microcontrolador se comporte o comportamento descrito acima. As conexões de energia estão bem e a dissociação adequada foi exercida. Não tenho tempo para depurar isso ainda mais, por isso continuamos com a versão de baixa potência. Não sei ao certo onde exatamente o problema poderia ser 1) 164A e 164P não são compatíveis com o código 2) O procedimento de programação é diferente para essas duas unidades do uC 3) As unidades estão com defeito. Estou confiante no design de nossa placa e descartaria problemas de energia. Infelizmente, não consigo escolher a resposta correta, então deixarei a pergunta como está - talvez eu Voltarei ao problema novamente no futuro. Obrigado a todos que forneceram comentários ou respostas perspicazes, eles podem ser úteis para outras pessoas com problemas de UC fora da caixa.


Não está diretamente relacionado à sua pergunta, mas vale a pena mencionar. Muitos fabricantes de IC têm uma página de Errata que eles lançam quando encontram bugs em determinadas revisões de silício. Fui pego algumas vezes por um bug conhecido que estava na errata que nunca verifiquei. Normalmente, essas coisas não são do tamanho de um relógio que não está funcionando e geralmente têm alguma solução disponível. Mas no seu caso, não há errata conhecida.
Kellenjb

1
@ jon, se a versão de alta potência estiver quebrada e a versão de baixa potência funcionar, há uma chance de você não estar desacoplando bem seu circuito e de ter problemas de integridade de energia.
Kortuk

@Kellenjb, "Nenhuma errata conhecida" para este modelo na folha de dados (última folha de dados que aparece, 06/11). Certamente vale a pena mencionar, de qualquer maneira, obrigado.
Jon L

@ Jon Sim, é isso que eu quis dizer com "Mas no seu caso, não há erratas conhecidas".
precisa saber é o seguinte

1
Vou segundo o que Kortuk disse. Isso cheira a um problema de fonte de alimentação ou desacoplamento para mim.
precisa

Respostas:


3

É raro ter esse tipo de falha. Você pode esperar ver um pouco mais de ruído em um alfinete ou deixá-lo completamente inoperante. Mas tê-lo "um pouco de trabalho, mas não de uma maneira útil" é raro. Eu suspeitaria que há problemas de design que estão causando os problemas e tem algo a ver com a diferença entre o 164A e o 164P. Como o jitter é alto, eu consideraria coisas relacionadas à energia. Todos os pinos power / gnd estão conectados? Os pinos de E / S são acionados ou puxados para cima ou para baixo? Etc.

Mas ainda resta a possibilidade de as peças estarem ruins. É raro, mas não inédito. A única maneira real de saber é obter mais peças de um fornecedor diferente e experimentá-las. Se eles funcionarem, você precisará investigar mais e ver se os matou no manuseio / solda ou se eles realmente vieram do Digikey ruins.


2
Vou verificar tudo três vezes quando tiver a chance. Eu também sou cético em relação à minha própria conclusão, a idéia de que isso não seria pego na fábrica ou a chance de ter sido danificado na transição parece altamente improvável ... relatará.
Jon L

Em termos de conexões, tudo dá certo. Vou editar a questão para fornecer mais detalhes ...
Jon L

2

Certa vez, tive um problema muito semelhante com as peças de microchip da linha de base. Estávamos estragando a programação do ICSP e estávamos encontrando uma maneira de apagar o ajuste do oscilador, causando erros graves na precisão do relógio interno. Verifique se o equipamento de programação e / ou ferramentas de programação estão sendo conectados corretamente e estão sendo usados ​​corretamente.

Não há uma maneira fácil de verificar a precisão do oscilador sem programar as peças; portanto, basta escrever um programa trivial de alternância de portas (que não faz nada além de mexer em uma linha de E / S) e pedir a alguém que programe o peças, de preferência com diferentes hardwares de programação. Depois de verificar a manobra, você pode atualizar novamente com seu próprio código e verificar se o problema persiste.


Ativei o bit de fusível da saída do relógio e ele coloca o sinal do relógio em um pino no PORTB. É isso que estou amostrando para determinar a precisão do oscilador / relógio. Vou verificar o processo de programação e ferramentas, obrigado.
Jon L
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.