despertar 8052 usando una interrupción externa: problemas

-1

Aquí está el procedimiento que seguí

Establecí una interrupción externa activada por flanco.

 SET IT0 
 SETB EX0
 SETB EA

Luego configuro el PCON

  MOV PCON, #02H

Cuando se aplica la interrupción externa (una señal alta a baja) el controlador está saliendo del modo de apagado, el código que sigue al código PCON anterior funciona, pero la interrupción interna del temporizador permanece desactivada y cuando el controlador se apaga , nunca sale de él, a menos que se haga un reinicio.

PS: Estoy usando LDR y un circuito divisor de voltaje y un transistor como el circuito de disparo externo. La 'Memoria LDR' está causando problemas, pero no estoy seguro de que las anomalías mencionadas sean el resultado de eso.

PS: El microcontrolador es AT89S52 a 12 MHz.

PS: La fuente de alimentación está proporcionando suficiente corriente.

    
pregunta Arjob Mukherjee

1 respuesta

0

En primer lugar, puede ayudar en una entrada como la de LDR a tener histéresis (retroalimentación positiva). Necesitará sentarse y resolverlo, pero esto significa que necesita otro transistor y algunas resistencias más, pero hace que el circuito sea más confiable para operar la interrupción y hace que el problema sea más fácil de depurar: usted decide si haces esto o no.

A continuación, no puedo responder exactamente a su pregunta, PERO, lo que usted describe puede ser causado por una interrupción perdida. Si su código recibe una interrupción, pero nunca regresa, NO aceptará más interrupciones hasta que (1) Reti o (2) Reinicie.

Usted está (2) restableciendo, y soluciona el problema.

Pero (1) ¡Reti es mucho más fácil!

La MEJOR solución es averiguar qué está causando la interrupción y corregirla. Es probable que necesite deshabilitar el indicador de ejecución en su temporizador antes de irse a dormir.

    
respondido por el Blinkenlights

Lea otras preguntas en las etiquetas