Teste simples descobre se seu Microcontrolador (uC) está "morto"


14 outubro, 2014
Pessoal em Sistemas Embarcados (post anterior explicamos o que é) normalmente existe um uC que controla as principais funcionalidades em uma placa eletrônica. Quando estamos fazendo uma manutenção em uma placa eletrônica existem vários testes que podemos fazer, um deles é verificar se o uC está "vivo" ou "morto". Neste post explicamos um teste simples que podemos fazer para verificar o estado do uC.

Os uC da linha AVR da Atmel podem ser programados pelo o método In-System Programming. Este método é utilizado por diversos fabricantes de uC e não é exclusivo da Atmel. Eu estava trabalhando na manutenção de uma placa do Integro, após alguns passos básicos de manutenção, verifiquei que a placa não estava executando as tarefas que o uC deveria executar. Assim, fui reprogramar o uC utilizando o In-System Programming método. Eeeeeee??

Amarelo no pino MOSI e Azul no pino MISO

Doneeee, uC is dead! Nosso uC está "morto" na nossa placa, mas como sabemos? Primeiro indício é que não conseguimos programar ele, então fomos investigar mais a fundo. No método In-System Programming o programador envia dados de maneira serial no pino MOSI (Master Output (saída do programador) Slave Input (entrada do uC)) e recebe dados no MISO (Master Input (entrada do programador) Slave Output (saída do uC)). E como podemos ver na imagem do osciloscópio apenas o programador envia os dados no pino MOSI, canal amarelo, e o uC não responde no pino MISO, canal azul, ou seja, It's Dead

E se vocês perguntarem o que são aquelas oscilações no canal azul quando aparece dado no canal amarelo? Isso é o fenômeno Cross-talk na prática. Pino MISO do uC flutuando então o Cross-talk  aprece, bom isso é assunto para outro post.

Então achamos utilizando o osciloscópio, mas desta maneira não é rápido, correto? Correto, então com um multímetro que identifique níveis lógicos TTL ou CMOS é possível identificar, mas como? Vamos ao processo quando tentamos programar o uC:
  1. Pino Reset vai a 0;
  2. Pino SCK gera o clock;
  3. Pino MOSI envia o dado;
  4. Pino MISO, uC responde;
Então se identificarmos que existe sinal TTL ou CMOS no pino MISO no passo 4, identificamos se o uC está respondendo, ou seja, live ou dead. Simples assim...

Teste simples verifica se uC está respondendo a programação
Pessoal esteja atento aos próximos post, novas dicas virão....

Nenhum comentário:

Postar um comentário

Gostou do texto? Expresse aqui a sua opinião.