Autor Tema: no quiero interrupciones  (Leído 2350 veces)

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

Desconectado bleedk

  • PIC10
  • *
  • Mensajes: 2
no quiero interrupciones
« en: 06 de Agosto de 2010, 18:25:50 »
hola!!! espero me puedan ayudar!

hago uso del microcontrolador  16f877a

tengo un problema, resulta que ocupo todos los bits del puerto B, como entrada, entcs cuando estos cambian de estado se me hacen las interrupciones, y la verdad no tengo idea como hacer para que vuelva a la rutina.

por software en MPLAB las interrupciones se producen, y aunque el flag de RBIF del INTCON se pone en 1, e sposible seguir con el programa, como si no las tomara en cuenta
pero cuando simulo el circuito en proteus, ahi si se ven los efectos de las interrupciones.

es inevitable? que los bits del puerto b produzcan interrupciones?
dicen que se puede borrar por software pero no entiendo como se hace, pues yo no quiero interrupciones,

porfa ayudenme, alguna orientacion???
« Última modificación: 16 de Agosto de 2010, 12:10:53 por un Moderador »

Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3610
    • Impresiones en 3D
Re: ayuda urgente!!! "no quiero interrupciones"
« Respuesta #1 en: 06 de Agosto de 2010, 20:38:35 »
A ver si te entendí.
Tu trabajas con el puerto b como entrada pero sin usar las interrupciones, pero las mismas se producen ¿verdad?

Bien. En el registro de las interrupciones, más precisamente el registro INTCON, el bit 3 habilita o desabilita la interrupción por cambio de estado.
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: ayuda urgente!!! "no quiero interrupciones"
« Respuesta #2 en: 06 de Agosto de 2010, 20:41:56 »
En el microcontrolador 16F877 hay varias fuentes de interrupción las cuales se controlan mediante 2 bits que (para cada fuente), la habilitan e indican si ha ocurrido. Además hay 2 bit adicionales para habilitar todas las interrupciones (GIE) y otro para habilitar las interrupciones de los periféricos. Entonces el programador tiene la opción de trabajar o no con las interrupciones configurando estos bits.

Por aquí tienes una explicación de como funcionan las interrupciones por ejemplo en un determinado microcontrolador que se puede extender por lo menos a la familia 16F con algunas consideraciones:
http://www.todopic.com.ar/foros/index.php?topic=24720.msg201405#msg201405

Ahora debes de plantear concretamente cual es tu necesidad, si detectar un cambio de estado de los pines del puerto B sin utilizar interrupciones, o usarlas y aprender a manejarlas  ;-) También para ayudar un poco más sería bueno colocar el código que estas implementando.


Saludos!

No contesto mensajes privados, las consultas en el foro

Desconectado bleedk

  • PIC10
  • *
  • Mensajes: 2
Re: ayuda urgente!!! "no quiero interrupciones"
« Respuesta #3 en: 07 de Agosto de 2010, 01:58:44 »
muchas gracias por contestar, me explicare mejor.

A ver si te entendí.
Tu trabajas con el puerto b como entrada pero sin usar las interrupciones, pero las mismas se producen ¿verdad?

Bien. En el registro de las interrupciones, más precisamente el registro INTCON, el bit 3 habilita o desabilita la interrupción por cambio de estado.

sips lei eso que dice que se pueden habilitar o deshabilitar las interrupciones, modificando el registro INTCON, pero no aplica, porque yo monitoreo el intcon y tiene todos sus bits en "0", lo que significaria que no habrian habilitadas interrupciones, pero cuando presiono el pulsador conectado al bit4, el bit 0 del INTCON se pone en 1, lo que en el MPLAB no tiene mayores efectos, pero en la simulacion de proteus, se manifiesta con una interrupcion y se me queda pegado el programa.

En el microcontrolador 16F877 hay varias fuentes de interrupción las cuales se controlan mediante 2 bits que (para cada fuente), la habilitan e indican si ha ocurrido. Además hay 2 bit adicionales para habilitar todas las interrupciones (GIE) y otro para habilitar las interrupciones de los periféricos. Entonces el programador tiene la opción de trabajar o no con las interrupciones configurando estos bits.

Por aquí tienes una explicación de como funcionan las interrupciones por ejemplo en un determinado microcontrolador que se puede extender por lo menos a la familia 16F con algunas consideraciones:
http://www.todopic.com.ar/foros/index.php?topic=24720.msg201405#msg201405

Ahora debes de plantear concretamente cual es tu necesidad, si detectar un cambio de estado de los pines del puerto B sin utilizar interrupciones, o usarlas y aprender a manejarlas  ;-) También para ayudar un poco más sería bueno colocar el código que estas implementando.


Saludos!

el programa es un poco extenso como para ponerlo, pero hare un ejemplo simple

"se desea leer el estado de los pulsadores conectados al bit 2,3,4 del puerto B de forma rotativa, pero al pulsar el que se conecta al bit 4, se activa una interrupcion(algo que no estaba en mis planes) y no puede leer el pulsador siguiente, por que el pic a entrado en interrupcion "

entonces la pregunta que me hago es, si supuestamente un 0, en las bits del registro intcon es la forma de programar,  y decirle al pic no quiero interrupciones, porque al detectar el cambio en el bit 4, la interrupcion se manifiesta



Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3610
    • Impresiones en 3D
Re: ayuda urgente!!! "no quiero interrupciones"
« Respuesta #4 en: 07 de Agosto de 2010, 09:55:54 »
En algún lugar del programa, estás modificando el valor del registro INTCON habilitando las interrupciones globales y la interrupción por cambio de estado.
Normalmente esto pasa por no actualizar el banco a la hora de modificar un registro, pero el registro INTCON se puede leer en cualquier banco.
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

Desconectado kamisama

  • PIC16
  • ***
  • Mensajes: 151
Re: ayuda urgente!!! "no quiero interrupciones"
« Respuesta #5 en: 16 de Agosto de 2010, 11:00:54 »
Si posteas el código mas de uno se abrevia el procedimiento de "Adivinanza"
Pone INTCON en 0, PIE1 en 0 y el bit de GIE tambien en 0.

Saludos.

Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3610
    • Impresiones en 3D
Re: no quiero interrupciones
« Respuesta #6 en: 16 de Agosto de 2010, 12:21:06 »
Con solo colocar el bit GIE a 0 alcanza para que ninguna interrupción se produzca.
Hay que rastrear en todo el código si no se está habilitando en forma accidental
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.