Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

03/12/2008 #1


Interrupciones con pic 16f877
muchachos: tengo un gran problema con esta simulacion de un sistema de control,
no ocurre la segunda interrupcion, solamente la primera y no hace nada mas, el programa no esta finalizado, pero esta muy completo, si alguien tiene experincia con mplab y me puede ayudar, gracias a todos
04/12/2008 #2


Hola dancerpr, checando tu programe me topé con esto.
Código:
INTERRUPCION1
		MOVLW     0X0E 	    
		SUBWF     TEC,1
		BTFSS     STATUS,2
        GOTO      LOSTIME
LOSTIME
		NOP
		GOTO	  LOSTIME
Realizas un llamado a una rutina que se queda en un lazó infinito, ten en cuenta que una vez ingresado en el servicio de interrupción este no se vuelve a activar hasta que no apliques la instrucción RETFIE o actives de nuevo el bit de interrupción global GIE. Pon especial atención a esto que es lo que probablemente te esté dando problemas.
Un último consejo, observo que tus rutinas de interrupción las manejas hasta el final del programa ten cuidado ya que si tus rutinas sobrepasan de la página 0 que son los primero 2047 bytes tienes que implementar el pagesel. Yo te recomiendo que las pongas siempre al principio y así te evitas este problemita.
Saludos
05/12/2008 #3


gracias,estaré trabajando en eso y pondré especial atención a tu comentario
08/12/2008 #4


saludos ericklarva, corregí algunas cosas y no funciona la segunda interrupción, el lostime es un tiempo perdido mientras el usuario digita una de las dos opciones que se le ofrecen, y esta interrupción entra a otra opción, según el numero del contador al final de cada interrupción
09/12/2008 #5


Hola dancerpr, como comentario ten consideración o precaución cuando intentes llamar a una rutina desde una interrupción si además esa rutina la utilizas en tu programa normal, de preferencia siempre crea subrutinas específicas para las interrupciones. Esto te lo comento ya que si al momento de generarse una interrupción estás en una rutina que luego "llamas" desde la interrupción tus variables cambian de igual forma y por lo tanto cuando "regreses" de la interrupción tus valores anteriores se pierden. Lo anterior también lo puedes evitar salvando estas variables en otras al comienzo de la interrupción y las regresas al final.
Ahora bien con respecto al hecho de no ejecutar tu segunda interrupción, te recuerdo que "una vez ingresado en el servicio de interrupción este no se vuelve a activar hasta que no apliques la instrucción RETFIE o actives de nuevo el bit de interrupción global GIE", tu segunda interrupción jamas se va a generar a menos que apliques alguno de las dos opciones que te acabo de mencionar.
Saludos
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.