Reseta MCU quando ativo interrupções

Software e Hardware para uC da Qualcomm, NXP, FreeScale e Motorola

Moderadores: 51, guest2003

Reseta MCU quando ativo interrupções

Mensagempor DaniloCM » 22 Jun 2007 11:53

Pessoal, não sei o q acontece...
Mas quando ativo as interrupções o MCU simplesmente reseta.
Se eu tirar a linha "EnableInterrupts;" funciona, mas eu preciso executar o q ta dentro dessa interrupção...
:?
DaniloCM
Bit
 
Mensagens: 6
Registrado em: 15 Dez 2006 10:46
Localização: Campo Mourão, Paraná

Mensagempor Nightcrawler » 22 Jun 2007 12:10

Onde reseta? Qual o mcu? Qual interrupção está ligada?
Explica melhor, senão fica dificil ajudar.
Diego
Avatar do usuário
Nightcrawler
Byte
 
Mensagens: 450
Registrado em: 11 Out 2006 14:20
Localização: Santa Maria - RS

Mensagempor DaniloCM » 22 Jun 2007 13:43

Então...

O MCU é um QY4A, é a interrupção do TIM.

O programa é assim:
Eu seleciono algum ciclo, dou início, seleciono o tempo, confirmo e vai pro abastecimento de água.
Quando chega no tal do 'EnableInterrupts' é que é o problema...
Já mudei essa linha de lugar, coloquei depois de um bip, e só roda até chegar nela.
DaniloCM
Bit
 
Mensagens: 6
Registrado em: 15 Dez 2006 10:46
Localização: Campo Mourão, Paraná

Mensagempor Paulo » 22 Jun 2007 14:10

DaniloCM escreveu:Então...

O MCU é um QY4A, é a interrupção do TIM.

O programa é assim:
Eu seleciono algum ciclo, dou início, seleciono o tempo, confirmo e vai pro abastecimento de água.
Quando chega no tal do 'EnableInterrupts' é que é o problema...
Já mudei essa linha de lugar, coloquei depois de um bip, e só roda até chegar nela.


Vc já verificou se o watchdog está habilitado?

Faz um teste, coloca algumas linhas de reset do watchdog em vários trechos do programa e vê o que acontece.

Nunca usei o QY4A, mas acredito que tenha uma macro "__RESET_WATCHDOG".


Até +...
Paulo D.
"Se o teu sonho for maior que ti, Alonga tuas asas, Esgarça os teus medos, Amplia o teu mundo, Dimensiona o infinito, E parte em busca da estrela... " (Trecho de Voa - Ivan Lins / Leda Selma)
Avatar do usuário
Paulo
Byte
 
Mensagens: 421
Registrado em: 07 Nov 2006 07:26

Mensagempor DaniloCM » 22 Jun 2007 14:27

Brigadão Paulo! Mas o meu WDT não está habilitado. Até porque as configurações eu copiei de um outro código no qual ele não havia sido ligado.
Realizando alguns testes percebi o seguinte:

O registrador SRSR registra os estados de reset, certo?
E eu fui verificando os bits. Pedi pra emitir um bip se o último reset foi ocasionado por opcode ilegal, mas não foi...
Aí eu tentei o bit ILAD, que indica se o último reset foi provocado por uma busca de opcode em endereço ilegal da memória. E este sim me retornou uma resposta positiva e depois do reset o MCU emitiu o bip que pedi...
Mas não sei porque isso está acontecendo... no meu protoboard não dá nada... é só pôr o micro na placa que reseta quando habilito a interrupção. E agora fiquei mais intrigado ainda por causa desse bit ILAD... a instrução CLI em assembly busca um endereço ilegal?
DaniloCM
Bit
 
Mensagens: 6
Registrado em: 15 Dez 2006 10:46
Localização: Campo Mourão, Paraná

Mensagempor Fábio Pereira » 22 Jun 2007 20:01

Olá Danilo,

Provavelmente exista uma interrupção pendente quando você apaga o I e o vetor desta interrupção não está mapeado para um endereço de FLASH (ou não há código válido no endereço de destino).

O resultado disso é um reset por endereçamento ilegal !

T+
Fábio Pereira
embeddedsystems.io
Avatar do usuário
Fábio Pereira
Word
 
Mensagens: 674
Registrado em: 16 Out 2006 09:07
Localização: Kitchener, ON

Mensagempor Nightcrawler » 22 Jun 2007 21:37

É verdade, agora que o Fabio falou, lembrei que isso já aconteceu comigo. De uma olhada nas interrupções que estão ativadas.
Diego
Avatar do usuário
Nightcrawler
Byte
 
Mensagens: 450
Registrado em: 11 Out 2006 14:20
Localização: Santa Maria - RS

Mensagempor CCandido » 22 Jun 2007 22:00

ou vc abilita a int5, mas usa uma outra, ai _int.......sem RTI, não retornar
vira bagunça e reseta.
melhor simular e ve se na _int ele vai mesmo la no seu codigo de _int();
t+
CCandido
Byte
 
Mensagens: 120
Registrado em: 12 Out 2006 12:54
Localização: Londrina-PR

Mensagempor DaniloCM » 25 Jun 2007 11:59

Pessoal, obrigado pelas dicas, mas meu circuito voltou a funcionar sem resetar, sem eu fazer nada...
Isso é realmente estranho, mas vou verificar o que pode ter acontecido... talvez algum curto por resíduo de solda... não sei.
Quanto a ter uma interrupção pendente quando limpo o I, não estava mesmo acontecendo... nem o watchdog.
Estranho mesmo, pois no meu protoboard funcionava sem problemas... mesmo assim vou dar uma olhada e se descubrir, posto aqui o que era...
Mais uma vez agradeço a todos!
DaniloCM
Bit
 
Mensagens: 6
Registrado em: 15 Dez 2006 10:46
Localização: Campo Mourão, Paraná


Voltar para NXP (ex-FreeScale (ex-Motorola))

Quem está online

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

cron

x