Microcontrolador reiniciando constantemente [simulação]

Software e Hardware para ATMEL

Moderadores: 51, guest2003, brasilma

Microcontrolador reiniciando constantemente [simulação]

Mensagempor andre_luis » 16 Jan 2017 11:35

Pessoal,


Após resolvido o problema anterior de descobrir o porquê das variáveis não estavarem retendo seus valores, significa que agora tenho outro problema.
Porém, de acordo com a metodologia que estou usando, algumas coisas parecem não estar se 'encaixando'; segue os passos :

Alguem saberia dizer se estou perdendo algum detalhe que não foi verificado ?

1) Logo após o reset, como primeira instrução, inseri a leitura do valor do registrador MCUSR, que sinaliza a fonte do último reset.
Também inseri um break-point na instrução imediatamente após, donde pude ver na janela de watch que o valor no registrador é 0x02:

     
IntReason.png


2) Olhando o datasheet, informa que esse valor é devido ao pino externo nRESET ativado:
     
ResetReason.png


3) Porém, isso fica ocorrendo repetidamente, retornando á todo momento á esse ponto com esse mesmo valor no registrador.
Entretanto, a alimentação está ok:

     
ResetCircuit.png
Você não está autorizado a ver ou baixar esse anexo.
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: Microcontrolador reiniciando constantemente [simulação]

Mensagempor longo.251272 » 16 Jan 2017 15:54

Muito estranho.

As vezes esqueço de configurar o watch dog no main quando habilito ele no FUSE fazendo o microcontrolador ficar resetando direto.
Isso me deixa de cabelo em pé porque não uso o debug que facilitaria minha vida.

Estranho mesmo ele está informando que é reset externo.
longo.251272
Byte
 
Mensagens: 318
Registrado em: 08 Nov 2011 11:58
Localização: São Paulo - SP

Re: Microcontrolador reiniciando constantemente [simulação]

Mensagempor andre_luis » 16 Jan 2017 20:18

Poisé, e o pior é determinar exatamente o que provocou esse reset.
Não estou conseguindo visualizar nenhum meio de fazer isso.
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: Microcontrolador reiniciando constantemente [simulação]

Mensagempor milordy » 16 Jan 2017 23:56

O que tem na função init?
Você consegue ver ASM gerado(no pic eu consigo)?
Se consegui gerar ASM vai passando linha por linha no debug,e ver na onde que reset aconteça.
milordy
Nibble
 
Mensagens: 63
Registrado em: 26 Fev 2015 12:48

Re: Microcontrolador reiniciando constantemente [simulação]

Mensagempor longo.251272 » 17 Jan 2017 12:07

Não sei se este microcontrolador tem a opção de configurar o pino do reset como i/o, se tiver da uma verificada nessa configuração.
longo.251272
Byte
 
Mensagens: 318
Registrado em: 08 Nov 2011 11:58
Localização: São Paulo - SP

Re: Microcontrolador reiniciando constantemente [simulação]

Mensagempor andre_luis » 17 Jan 2017 13:31

Acho que já sei como debugar isso, mas não agora que estou sem o laptop.
É o seguinte:

De acordo com a documentação do gcc, se alguma interrupão ( e são muitas no AVR ) estiver 'indevidamente' habilitada, e não houver o vetor implementado no código, ainda que sem nada dentro, no caso de algum evento que a acione, em não existindo o ISR(xxxx) especifico, o programa é direcionado automaticamente para a posição do vetor de reset, o que poderia explicar o fenômento que está acontecendo. Uma das opções para capturar essa ocorrencia, seria criando o manipulador generico abaixo:

cpp code
#include <avr/interrupt.h>
ISR(BADISR_vect)
{
// user code here
}


Em teoria, e em sendo o caso, apenas inserindo isso aí sem nada dentro, não só confirma a hipotese acima, como também resolve o problema de imediato, podendo deixar pra depois descobrir qual é o bendito flag InterruptEnableXXX que está habilitado. Vou tentar e ver no que dá...
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: Microcontrolador reiniciando constantemente [simulação]

Mensagempor andre_luis » 17 Jan 2017 19:46

RESOLVIDO!!!!

Funcionou maravilhosamente bem a solucao acima, parou de resetar.
O vetor acima retorna o programa para o ponto anterior á interrupção, o invez de o direcionar ao inicio.

Depois investigo a causa, agora não dá mais tempo, o relogio tá correndo.
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: Microcontrolador reiniciando constantemente [simulação]

Mensagempor milordy » 17 Jan 2017 23:28

Colocar um breakpoint ,e verificar quais interrupções estão habilitadas e com flag da interrupção.
milordy
Nibble
 
Mensagens: 63
Registrado em: 26 Fev 2015 12:48


Voltar para AVR

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x