Uma variedade de bug particularmente irritante em um sistema controlado por microprocessador é o reinício inesperado do microprocessador. Uma ferramenta importante para depurar esse tipo de problema é uma lista de possíveis causas. O que poderia fazer com que um microcontrolador fosse reiniciado inesperadamente?
microcontroller
microprocessor
reset
debugging
Stephen Collings
fonte
fonte
Respostas:
Nos chips PIC e dsPIC, observei as seguintes causas de redefinição inesperada.
Hardware:
Programas:
Em alguns dsPICs, o registro RCON armazena bits indicando a causa da redefinição. Isso pode ser muito útil ao depurar.
fonte
O pino RESET deve ser acionado adequadamente por um circuito de redefinição que monitora a tensão acima / abaixo e cria um sinal de redefinição por tempo suficiente. Com isso em mente, minhas experiências com uma redefinição descontrolada de hardware vêm de:
fonte
Uma possibilidade adicional que não vi nesta lista é um dispositivo que suporta ICSP. Se pull ups insuficientes forem usados em linhas que disparam no modo de programação serial em circuito, às vezes é possível entrar nesse modo aleatoriamente. Isso leva a uma redefinição um intervalo curto mais tarde, quando nenhuma atualização do programa é enviada para as linhas do receptor serial designadas. Suspeito que um cronômetro interno de vigilância for reiniciado se o ICSP for iniciado e nenhum dado de programação for enviado. Este é um erro que cometi e passei muito tempo encontrando com uma 16F876.
fonte
Verifique se você está usando chips lógicos CMOS ou TTL em seu circuito, se eles possuem capacitores de desacoplamento adequados em Vdd e terra (geralmente 0,1 uF). Eu estava usando um CD4021 em um design e, quando estava em uso, aparentemente estava causando um pico que estava causando a reinicialização do microprocessador. Então o ciclo se repetiria. É também por isso que é uma boa ideia colocar uma sequência de teste óbvia (como piscar e apagar um LED algumas vezes) no início do seu código para que você saiba que o microprocessador está trabalhando e executando o código.
fonte
Esta é uma daquelas coisas raras que podem aparecer:
Eu tinha um projeto que envolvia um microcontrolador e ele se redefinia esporadicamente. Para encurtar a história, parece que alguma opção teve que ser ativada ou desativada, caso contrário as redefinições poderão ocorrer. Eu só descobri isso lendo as erratas depois de desistir de todo o resto.
Agora, tenho o hábito de ler as erratas antes mesmo de decidir usar um chip para saber no que estou me metendo e se é algo que posso gerenciar. Infelizmente, depois da formatura, eu realmente não tinha ninguém para me educar sobre práticas comuns, e muito do meu aprendizado no mundo real passou por fracassos e frustrações.
fonte