Autor Tema: No actualizar PertoB durante interrupcion  (Leído 3992 veces)

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

Desconectado alarren

  • PIC10
  • *
  • Mensajes: 7
No actualizar PertoB durante interrupcion
« en: 07 de Enero de 2010, 06:08:43 »
Muy buenas.

La cuestion, es que estoy detectando pulsos de corta duracion por cambio de flanco en rb7 y rb6. Trabajo con pic 16f876 y pic 16f84.
La cosa es que detecta bien los pulsos y provoca la interrupcion. Pero necesitaria saber cual de las dos entradas ha probocado la interrupcion.
Como son pulsos, la patilla vuelve a su valor original, y por lo tanto no puedo comprobarlo.
Me gustaria saber si existe la posibilidad de que los valores de la puerta b no se actualizen una vez entrada la interrupcion.

Muchas gracias

Desconectado alogic.on

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 772
Re: No actualizar PertoB durante interrupcion
« Respuesta #1 en: 07 de Enero de 2010, 06:20:50 »
hacerlo mu rapido :D

Desconectado alarren

  • PIC10
  • *
  • Mensajes: 7
Re: No actualizar PertoB durante interrupcion
« Respuesta #2 en: 07 de Enero de 2010, 07:05:57 »
??
« Última modificación: 07 de Enero de 2010, 07:08:46 por alarren »

Desconectado pibe

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 635
Re: No actualizar PertoB durante interrupcion
« Respuesta #3 en: 07 de Enero de 2010, 08:09:41 »
Creo que sería tan sencillo como cuando apenas entres a la interrución entonces preguntes con un BTFSS/BTFSC en que estado está cada pin. Uno de ellos tendrá que estar en estado cambiado y entonces actuas en consecuencia.
Mi jefe mirando el prototipo que estoy creando: "Y eso va a funcionar?"

Desconectado alogic.on

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 772
Re: No actualizar PertoB durante interrupcion
« Respuesta #4 en: 07 de Enero de 2010, 08:47:08 »
es justo como te dice Pibe, al entrar en la rutina de interrupcion localizas que int ha saltado y de seguido testeas los pines, hay muchas rutinas por el foro. mira a ver si encuentras algo que te sirva, o pon un poco mas de info para que te podamos ayudar.
btfss   portb,4
goto    ande_quieras
btfss   portb,5
goto    ande_quieras
btfss   portb,6
goto    ande_quieras
btfss   portb,7
goto    ande_quieras

para pusadores normalmente se utiliza una pequeña rutina de demora, unos 10-20ms y vuelta a testear. para evitar rebotes

un saludo

Desconectado alarren

  • PIC10
  • *
  • Mensajes: 7
Re: No actualizar PertoB durante interrupcion
« Respuesta #5 en: 07 de Enero de 2010, 13:58:53 »
Gracias por contestar, pero no me resulta valido.

Para poder mirar que puerta a recibido el cambio de estado, esta tiene q durar mas de un ciclo de reloj.

Mis pulsos duran un ciclo o dos de reloj como mucho, entonces, o consigo mantener sin actualizar los valores de la puerta b, o no sere capaz de saber kual es el que a disparado.

Imagino que la solucion vendra al final, con algo de logica digital externa, unos monoestables o biestables que cambien el estado con la interrupcion y luego resetearlos con el pic.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: No actualizar PertoB durante interrupcion
« Respuesta #6 en: 07 de Enero de 2010, 14:05:48 »
¿Es necesario que lo hagas por interrupción?

Porque podrías hacerlo dejando una lectura constante del puerto B en W. Cuando W sea diferente a cero, entonces revisas qué bit de W ha cambiado.

Desconectado mtristan

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 395
Re: No actualizar PertoB durante interrupcion
« Respuesta #7 en: 07 de Enero de 2010, 15:26:35 »
.


¿y un oscilador más grande?  :?
When you see a good move, look for a better one (Emanuel Lasker)

Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
Re: No actualizar PertoB durante interrupcion
« Respuesta #8 en: 07 de Enero de 2010, 19:23:59 »
y cuanto han de durar los pulsos,me parece una solucion rapida la q plantea migsantiago y si le subes al cristal mejor, si no usas la interrupcion te ahorras el proceso "push” ” pop" al entrar y salir de la interrupcion respectivamente
Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: No actualizar PertoB durante interrupcion
« Respuesta #9 en: 07 de Enero de 2010, 22:08:43 »
Otra opción mas rebuscada  :mrgreen: es usar interrupción externa para un pulso y Timer0 en modo contador 1:1 y timer pre-cargado a 254. Con eso, si el estado en 0, es largo puedes determinar cual generó el pulso.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado alogic.on

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 772
Re: No actualizar PertoB durante interrupcion
« Respuesta #10 en: 08 de Enero de 2010, 07:45:29 »
pa mi que como no especifiques un poco mas... vamos a estar tirando ideas que a lo mejor tienen una solucion simple. postea el codigo que tienes y lo que quieres hacer de una forma mas especifica para poderte ayudar mejor. que tipo de comunicacion, u que es lo que quieres conectar ...

un saludo

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: No actualizar PertoB durante interrupcion
« Respuesta #11 en: 08 de Enero de 2010, 10:13:58 »
Creo que la opcion de Suki es la ideal, ya que son flags distintos los que se quedan seteados, la puede mirar si quiere media hora despues, ya que los flags los va a borrar el programador y no el hard del PIC.
Muy buena Suki  :-/

saludos

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: No actualizar PertoB durante interrupcion
« Respuesta #12 en: 08 de Enero de 2010, 15:48:33 »
Pero estoy mal en un detalle, se debe pre-cargarse a 255, así al llegar el pulso incrementa la cuenta, el overflow genera la interrupción y se detecta.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: No actualizar PertoB durante interrupcion
« Respuesta #13 en: 08 de Enero de 2010, 16:02:43 »
Creo que ni en eso te equivocas porque avanza dos numeros por cada pulso no?. Pero para ir a lo seguro mejor poner 255

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: No actualizar PertoB durante interrupcion
« Respuesta #14 en: 08 de Enero de 2010, 16:10:49 »
Creo que ni en eso te equivocas porque avanza dos numeros por cada pulso no?. Pero para ir a lo seguro mejor poner 255

mmm... No, podemos dejar el timer 1:1 asignando el prescaler al watchdog pero sin encenderlo, y como cuenta con flancos ascendentes capturaríamos el pulso.

Saludos!
No contesto mensajes privados, las consultas en el foro


 

anything