8051RD2 interrupts

B

boris

Guest
Oi todos.
Eu tenho um problema com 8051RD2.O meu programa (escrito em C) funciona bem para o tempo, mas às vezes sem o controlador de reset externo salta para o ponto de início (como foi reposto através dele), começa a partir de executar esse código que precede o main () e mantém o código principal executar correctamente , mas deixa de ir para interromper rotina (temporizador 2 overflow).Todos os interromper e temporizador 2 registos ainda manter as definições correctas.A interrupção é certamente permitir, o temporizador está funcionando e overflow sinalizador está definido.
Não relógio temporizador cão é utilizado.
Depois de repor externa, o controlador funciona bem novamente.
Então, eu só errantes que tipo de erro de codificação poderia tornar o controlador para executar como esse?

Obrigado

 
Você tem alguns sensores (interruptores etc) ligado por fios?

Você alternar cargas indutivas?

Se sim eu diria que você tem EMV problemas que causam uma redefinição do seu MCU.

Tentar separar tudo que está ligado ao exterior.

atenciosamente

 
Tente verificar se você executa RETI após as interrupções.

 
Obrigado a todos por estas respostas.
O controlador da bobina de pequenas unidades de linha telefônica relé verdade, mas não vejo qualquer interferência em todo o circuito reset.Ora, se eu usar outro firmware no mesmo cartão com o mesmo tipo de controlador que leva o mesmo relé, bem, não tenho problemas em tudo.
Quanto à RETI,
gostaria de lembrar, que eu escrevo o firmware em C.
Suspeito que algo de errado com pilha (não há memória suficiente para o que resta dele), mas o meu compilador (C51) não me dão qualquer advertência.
Como posso testar o meu palpite?
Obrigado,
Boris

 
Quanto à pilha em 8051/8052, é controlada por si memória local, se você localizar a sua pilha de RAM LOC = 50h, sua localização é pilha de 50h às 7Fh, que terá início em 51h devido a pilha terá início a partir de RAM atribuídos LOC 1.RETI é quando você usa a montagem, não sei o seu equivalente em C. Depois de compilar o seu software, que tem uma lista Assembleia ou você pode carregar seu hexadecimal em um simulador, então você vai saber se um reset aconteceu.

 

Welcome to EDABoard.com

Sponsor

Back
Top