Autor Tema: Interrupcón por RA0 del TMR0  (Leído 3952 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado luisesteban

  • PIC10
  • *
  • Mensajes: 24
Interrupcón por RA0 del TMR0
« en: 05 de Abril de 2014, 16:43:35 »
Hola a todos:
Estoy haciendo un pequeño programa ejemplo de la utilización de activación de interrupción por impulso de RA0. Lo cierto es que no se porque motivo no consigo que me funcione correctamente. Utilizo la version 5.7.2 plus. Lo que intento hacer es que mientras no se pulse RA0, el programa realiza unos encendidos de leds segun programación. Tan pronto como se pulse el pulsador en el pin RA0 del micro, provoque el encendido de un led que he colocado en el PORTB, 4, dentro del entorno de la interrupción. Les envío copia del programa, con la intención de si alguien puede ayudarme a comprender que estoy haciendo mal. Agradecer de antemano, todo aquellos que hacen posible este foro, y en espera si alguien puede ayudarme. Un cordial saludo para todos.....graciassssssssssssssssss

Desconectado luisesteban

  • PIC10
  • *
  • Mensajes: 24
Re: Interrupcón por RA0 del TMR0
« Respuesta #1 en: 05 de Abril de 2014, 18:38:14 »
Hola:
Queria comentar que he seguido intentando resolver el problema, y he averiguado algunas cosas más. En el ejemplo anterior no me dejaba ensamblar el programa, me daba errores. Con esta nueva aportación he conseguido que si me ensamble, pero sigue sin funcionar adecuadamente. Les paso el nuevo programa de niple, pero a ver si hay suerte y alguien me puede aportar alguna luz.... Gracias y cordial saludo para todos...

Desconectado Fer_TACA

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4032
Re: Interrupcón por RA0 del TMR0
« Respuesta #2 en: 06 de Abril de 2014, 08:37:24 »
Hola Luis,
interpreto que lo que quieres realizar es realizar una interrupción en tu programa normal cuando se detecte la pulsación de un interruptor, pulsador, etc. En ese momento se pare tu programa haga otra acción y seguidamente regrese otra vez a tu programa principal.

Lo mejor es que para eso utilices el pin RB0 para la detección del pulso e actuación y se genere los correspondientes bloques de instrucciones.
Si realmente pretendes lo que indicas, lo que debes de realizar es que al detectar, ojo con los rebotes mecánicos, es cando se verifica que se ha pulsado, llamar a una subrutina y lo primero es "parar" el timer. Realizar lo que quieras y justo lo ultimo al salir de esa subrutina es volver a activar la cuenta del TMR0

El TMR0 si no se estará interrumpiendo constantemente cada vez que llegue a su tope de cuenta.
Todos los días se aprende algo nuevo.

Desconectado Fer_TACA

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4032
Re: Interrupcón por RA0 del TMR0
« Respuesta #3 en: 06 de Abril de 2014, 08:44:24 »
Según tiene el segundo programa no te va a funcionar nunca la interrupción.

Lo que realizas es que cada vez que el TMR0 llega a su cuenta, es decir realiza un interrupción, espera a que pulses RA0 y dependiendo de eso hace uba cosa u otra mas tiempo activada una de las salidas. Pasado ese tiempo regresas al programa principal y estarías comprobando el estado de RB0.
Lo que te puede pasar es que la interrupción del TMR0 sea rápida y esté constantemente saltando a al rutina de interrupción y por eso no se complete tu programa. 
Todos los días se aprende algo nuevo.

Desconectado luisesteban

  • PIC10
  • *
  • Mensajes: 24
Re: Interrupcón por RA0 del TMR0
« Respuesta #4 en: 06 de Abril de 2014, 10:19:21 »
Hola FER:
Gracias por tu respuesta, pero entonces no tengo claro algunos conceptos. La interrupción se provoca si pulso o no la entrada RA4, y una vez pulsada mira el entorno propiamente dicho de la interrupción. En este entorno ya de entrada pide encender un led, (RB4), puedo entender que salga de ella en un tiempo determinado, o no, esa es mi duda, pero en este caso y tal como creo entender,  ¿ no debería de salir de la interrupción solo cuando encuentra la orden de fin de interrupción?. Si no es así, algo estoy haciendo mal. Aún así voy a probar a incrementar el tiempo de la interrupción en plan bestia, a ver si consigo que cuando provoque la interrupción, por la pulsación de RB4, consiga que sea atentida y realize las ordenes fijadas en la propía interrrupción. Gracias FER por tu contribución y ya te cuento en cuanto pueda probarla. Un saludo muy fuerte.....

Desconectado lucegiar2005

  • PIC24F
  • *****
  • Mensajes: 504
Re: Interrupcón por RA0 del TMR0
« Respuesta #5 en: 06 de Abril de 2014, 10:41:00 »
Hola luisesteban, saludos. Por lo que leo en tu respuesta creo detectar un fallo de concepto tuyo, la interrupción no se produce cuando presionas un botón en este caso, cada rutina es disparada por un evento que, en este caso, es el rebalce del contador de TMR y sus asociados. Cuando eso se produce es cuando se llega al tiempo al que se ha fijado dicho TMR independiente de que pulces o no RB4. Si puedes subir lo hecho seguramente se te podrá ayudar mejor y más seguro. Un abrazo
- Santiago -

Desconectado lucegiar2005

  • PIC24F
  • *****
  • Mensajes: 504
Re: Interrupcón por RA0 del TMR0
« Respuesta #6 en: 06 de Abril de 2014, 11:18:26 »
Sin mucho tienpo te subo 2 modos, 1- el que has hecho y que se dispara cada 10 seg, 2- modificado para que se dispare por int-RB0, cuando presionas un botón. No son probados por lo que debes fijarte y corregir, pero te darán idea. Desde ellos podés darte a la idea de muchas variantes por hard o soft según te convenga.
Un abrazo
- Santiago -

Desconectado luisesteban

  • PIC10
  • *
  • Mensajes: 24
Re: Interrupcón por RA0 del TMR0
« Respuesta #7 en: 06 de Abril de 2014, 12:21:42 »
Hola Lucergiar2005:

Gracias por tu aportación, y muy valiosa, la verdad que cuando has dicho que cada rutina es disparada por un evento, y en este caso por el desbordamiento del contador del TMR0, me he dado cuenta de lo que pasa. Cada vez que pulsas RA0 programada cono interrupción del TMR0, para que exista una interrupción debes de desbordar el contador, asi que es lo que he hecho, para poder hacer que funcione solo he tenido que decirle que lo haga con un solo pulso, para ello le he dado valor al registro TMR0 en modo complementario, ( osea 255 - 1(pulso para desbordar)= 254) y por supuesto deshabilitar la interrupciones cuando esta dentro de la parte del programa que ejecuta la interrupción, y todo perfecto..Muchas gracias por la aportación y hacerme ver con claridad la funcionalidad del registro TMR0........Les paso el programa funcionando y agradecido por la información... Un cordial y afectuoso saludo, para ti y para FER......

Desconectado lucegiar2005

  • PIC24F
  • *****
  • Mensajes: 504
Re: Interrupcón por RA0 del TMR0
« Respuesta #8 en: 06 de Abril de 2014, 13:01:49 »
Me alegra que lo hayas podido lograr, modo interesante el que usas. Lo que no entiendo es que uses el habilitador de int. perifericas siendo la unica interrupción que hay en uso de tipo general. Un abrazo
- Santiago -

Desconectado luisesteban

  • PIC10
  • *
  • Mensajes: 24
Re: Interrupcón por RA0 del TMR0
« Respuesta #9 en: 06 de Abril de 2014, 13:17:17 »
Hola Lucegiar2005:
La verdad que estaba tan disparatado que probe con todo lo que podía.... en fin cosas de la programación...La realidad es que deseo realizar un temporizador programable con swich que determinan por el PORTA, si deseas horas, minutos o segundos. Visualizando en todo momento la cuenta de estos. Y la interrupción la necesitaba para poder entrar en modo programación de tiempos. Así que con dos pulsadores, entro en programación y con el otro aporto el tiempo, visualizado en todo momento por el PORTB en sus bits bajos y en BCD la visualización en dos display. Estoy pensando en quitarme el decodificador y ya que tengo PORTC, aprovechar todo el puerto mediante tabla para la visualización. A ver como me sale, ya que intento por un lado utilizar el TIMER0 para visualizar y por otro lado para entrar en programación......Si lo consigo ya te contaré..........agradecido por las aportaciones tuyas y de FER, un saludo muy fuerte...

Desconectado lucegiar2005

  • PIC24F
  • *****
  • Mensajes: 504
Re: Interrupcón por RA0 del TMR0
« Respuesta #10 en: 06 de Abril de 2014, 13:35:07 »
Me hablas de un tiempo programable, pero de lo que veo no es de este tipo. Con ese chip podes ingresar por teclado el valor de una o más temporizaciones y por comparación con valores del TMR determinar su cumplimiento. Además podés ver los valores actuales en un LCD, dandole al proyecto una visión casi profesional. Niple tiene un foro que quizá te sea útil tambien en el desarrollo de proyectos. Si encarás programas y te hace falta ayuda la encontrarás en ambos.
- Santiago -

Desconectado luisesteban

  • PIC10
  • *
  • Mensajes: 24
Re: Interrupcón por RA0 del TMR0
« Respuesta #11 en: 06 de Abril de 2014, 16:20:27 »
Holaaaaaaaaaaaaa
Pues si, tienes toda la razón del mundo en incluir todas esas propiedades, pero .... veras ha de ser compacto, una vez reciba alimentación, temporice tanto a la conexión como  desconexión, barato, por eso uso display muy pequeños y sobre todo industrial, es decir que no se encarezca absolutamente ni por teclado ni por visualizador de LCD. Es un encargo algo peculiar, más teniendo en cuenta que 60 o algo más €. lo consigues en el mercado. Pero en fin algunos disponen y otros proponen. Ya sabes, realizando proyectos reales, es la mejor forma de entender y desarrollar metodologías que  te ayudan y motivan a seguir y por supuesto a aprender, de la misma forma que agradecer las aportaciones de otras muchas personas que siempre estan ahi para ayudar sin pensar en recibir nada a cambio..........ya eso es de por si una genialidad..................... un abrazo y gracias nuevamente por tu tiempo y tu interes.... eres un crack

Desconectado lucegiar2005

  • PIC24F
  • *****
  • Mensajes: 504
Re: Interrupcón por RA0 del TMR0
« Respuesta #12 en: 06 de Abril de 2014, 18:46:10 »
En fin, no creí que fuese importante el costo por el pic que usas, no se cual es pero estimo 28 patas minimo, por ellos te comentaba lo anterior.
El modo de agradecer siempre será ayudar a otros que tengan un problema. Yo agradesco a Fermín, y muchos otros, ayudando como fui ayudado por ellos, por eso siempre que necesites y podamos estaremos.
Saludos cordiales. Hasta pronto.
- Santiago -


 

anything