Autor Tema: No me funciona la interrupcion RB4:7 por cambio de nivel  (Leído 1983 veces)

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

Desconectado jmsolerv

  • PIC10
  • *
  • Mensajes: 5
No me funciona la interrupcion RB4:7 por cambio de nivel
« en: 14 de Julio de 2006, 11:09:15 »
Estoy comenzando con esto de los microcontroladores y me trae loco. He hecho un circuitillo que unicamente posee un led y un pulsador que normalmente esta a 5v y cuando se pulsa se pone a cero. Lo he conectado al rb7 y he activado la interrupcion por cambio de nivel, del tal manera que cada vez que cambie de nivel, el led se apague o encienda. Resulta que cuando dejo pulsado el botón (o sea 0 v) miro con un osciloscopio la salida del led y este está conmutando sin parar pero la señal del pulsador no la cambio. Como si existiese un ruido o algo que provoca que conmute. A que se puede deber¿?¿?
Muchas gracias

Desconectado vszener

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2395
Re: No me funciona la interrupcion RB4:7 por cambio de nivel
« Respuesta #1 en: 14 de Julio de 2006, 11:21:21 »
¿En que lenguaje de programacion lo estas haciendo? Si es en C, en el post de Ejemplitos en C para 16F648A, concretamente en el programa numero 48 tarta dicha interrupcion, aparte en el mismo post, en la pagina 19 , se habla y hay expuesto dos programas ejemplo de dicha interrupcion. Tambien en el post Una ayudita! por favor, encontraras un programa ejemplo de la misma interrupcion.

El boton produce los llamados 'rebotes' y hace que el estado del pin conmute de alto a bajo y viceversa muchas veces en un instante de tiempo muy pequeño, deberas arreglarlo via hardware o via software (esta ultima la mas economica y facil)

¿Realizas bien la salida de la interrupcion? Para ello, deberas leer o escribir  en el puertoB (o algun pin del puertoB) para desactivar el flag bit RBIF, asi podras acceder a la interrupcion otra vez....


Suerte!!! :wink:

· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Deimos

  • Visitante
Re: No me funciona la interrupcion RB4:7 por cambio de nivel
« Respuesta #2 en: 14 de Julio de 2006, 11:22:51 »
Empieza por decir que maquina utilizas, si es un pic, o atmel, o ke. Tiene pinta que te has dejado el watchdog habilitado, y por eso se está reseteando todo el rato. De todos modos te digo lo de antes, que micro usas.

La interrupcion del RB es la de cambio de palabra? quiero decir si estas atacando todo el puerto como puerto paralelo esclavo PSP.

Atentamente

Deimos

http://astroelectronica.iespana.es/

Deimos

  • Visitante
Re: No me funciona la interrupcion RB4:7 por cambio de nivel
« Respuesta #3 en: 14 de Julio de 2006, 11:28:56 »
No creo que sea por rebotes, ya que llegaria un momento que se estabilizaria y acabaria encendiendo el led. Haria falta pincharle un osciloscopio para ver si la señal es sincrona, entonces no cabe duda, hay algo tipo timer que está actuando, y eso porque hay algun bit en los registros de configuracion que se ha de cambiar. Parece algo como el overflow de un timer, o el mismo watchdog que está habilitado.

Por rebotes ya digo que no creo que sea, si deja el pulsador 10 segundos pulsado y sigue teniendo la misma respuesta en la salida.

Que pic usas? un 18F un 16F, un 24F, dsPIC? ke usas?

Atentamente

Deimos

http://astroelectronica.iespana.es/

Desconectado jmsolerv

  • PIC10
  • *
  • Mensajes: 5
Re: No me funciona la interrupcion RB4:7 por cambio de nivel
« Respuesta #4 en: 14 de Julio de 2006, 11:51:10 »
Estoy trabajando en C con un pic16f873. El watchdog esta desactivado seguro, pq lo que esta haciendo el programa es entrar continuamente en la rutina de interrupción del cambio de nivel de las patitas RB4:7. Mi pregunta es, si dejo pulsado el boton, no deberia entrar continuamente en la interrupcion, No? pq no esta cambiando de nivel, sin embargo si lo dejo pulsado entra continuamente pq la salida del led conmuta cada vez que entra en la interrupcion. Tengo desconectadas todas las demas interrupciones y en C no hace falta restaurar ningun flag de interrupcion nO? Muchas gracias

Desconectado jmsolerv

  • PIC10
  • *
  • Mensajes: 5
Re: No me funciona la interrupcion RB4:7 por cambio de nivel
« Respuesta #5 en: 14 de Julio de 2006, 12:05:27 »
la solucion está aqui http://www.todopic.com.ar/foros/index.php?topic=4530.270, resulta que hay que realizar una lectura del puerto o una escritura para que se actualicen los latch pq sino entra continuamente en la interrupcion.
Muchas gracias por vuestra ayuda y hasta pronto

Deimos

  • Visitante
Re: No me funciona la interrupcion RB4:7 por cambio de nivel
« Respuesta #6 en: 14 de Julio de 2006, 12:36:13 »
Sea en C o asm es necesario actualizar según que flags. Algunos van automáticos y es el propio pic el que los actualiza, otros hay que decirle al programa que los ponga a uno o a cero despues de una interrupcion. Piensa que si el flag se queda a uno y no lo actualizas, en el momento de acabar de servir la interrupcion, como lo vuelve a ver activo, vuelve a servir la interrupcion. Por eso hay que asegurarse que la interrupcion está enmascarada mientras la sirves, y una vez acabes el ISR pones el flag de intrr a cero y el de habilitacion a uno. Tambien puedes hacer trampa, si solo usas una intrr. Con la GIE y la PIE puedes capar todas las intrr que te vengan detras de la primera, aunque no es una solucion muy limpia.

Venga y que vaya muy bien los experimentos

Atentamente

Deimos

http://astroelectronica.iespana.es

Desconectado vszener

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2395
Re: No me funciona la interrupcion RB4:7 por cambio de nivel
« Respuesta #7 en: 14 de Julio de 2006, 13:58:10 »
En este caso no basta con hacer un reset al flag de interrupcion, tambien hay que hacer una lectura o escritura al puerto B (o alguno de sus pines), el C lo deberia hacer, pero en estecaso, el compilador CCS lo unico que hace es hacer un reset al flag, por lo que si no realizas tu una lectura del puert B o una escritura, siempre te entrara en la rutina d einterrupcion.


Suerte!!! :wink:
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte