• Sábado 21 de Diciembre de 2024, 11:27

Autor Tema:  Problemon con la RBIF y timer0  (Leído 2704 veces)

Pegasux

  • Miembro MUY activo
  • ***
  • Mensajes: 130
    • Ver Perfil
Problemon con la RBIF y timer0
« en: Martes 3 de Febrero de 2009, 12:37 »
0
Muy buenas. Llevo unos dias atascado (otra vez...) Utilizo un 16F876, la interrupcion del tmr0 y la del RB a la vez, cuando salta el timer mira el ADC y me saca el valor por pantalla, y cuando acciono el pulsador me cambia el valor de un registro y asi en el programa principal, que no es mas que un bucle que decide si conectar el timer o no, decide segun ese registro si el aparato funciona o no. Si no funciona desactiva el timer para que no muestre en pantalla y se duerme, y si funciona activa el timer si es que estaba desactivado y hace un retardo.
El problema que tengo es que salta el flag RBIF constantemete, cada vez que salta la interrupcion por lo que sea miro si esta a 1 y muestro en el LCD una letra, lo borro y despues hace lo del ADC. Supuestamente si yo no acciono el pulsador, RBIF no se puede poner a 1 y por lo tanto no ha de mostrarme la letra en pantalla, ademas que al borrar el flag siempre que entra, parece como si el pulsador estuviese constantemente pulsandose, ya que para saltar necesita el flanco de bajada en la patilla RB7... Como no sea el LCD que me esta interaccionando no se me ocurre nada, el tema es que si no activo el timer, me funciona perfectamente la rutina del pulsador, se activa y desactiva bien, pero en cuanto le pongo el timer como que se estorban... asi que no creo que sea por el LCD. Cualquier tipo de ayuda sera agradecida.

Saludos.

Pegasux

  • Miembro MUY activo
  • ***
  • Mensajes: 130
    • Ver Perfil
Re: Problemon con la RBIF y timer0
« Respuesta #1 en: Martes 3 de Febrero de 2009, 16:19 »
0
Acabo de modificar un poco el codigo usando 2 leds, cuando el aparato funciona se enciende uno, y cuando esta parado se enciende el otro, no he habilitado el timer y desconecto el bit portb,7 del lcd. Veo que los leds se intercambian sin parar, como si la interrupcion RB saltase constantemente... al menos ahora ya se que no es por el Lcd ni por el timer...

Saludos.

Pegasux

  • Miembro MUY activo
  • ***
  • Mensajes: 130
    • Ver Perfil
Re: Problemon con la RBIF y timer0
« Respuesta #2 en: Martes 3 de Febrero de 2009, 16:38 »
0
Pues si que es por el LCD o al menos eso parece ahora, el tema es que la interrupcion salta por cualquier cambio de los bits 4 a 7, por lo que en la rutina de atencion a la interrupcion he de mirar si efectivamente esta presionado el pulsador (RB7) y sino que se salga. Seguire investigando.

boni

  • Miembro activo
  • **
  • Mensajes: 54
    • Ver Perfil
Re: Problemon con la RBIF y timer0
« Respuesta #3 en: Miércoles 4 de Febrero de 2009, 12:30 »
0
Creo haber entendido que el LCD comparte el pin RB7 donde tienes activada la interrupción.

Asegurate de que la interrupción es solo por flanco de bajada y no por subida o bajada y asegurate también de no tener "rebotes" al pulsar la tecla.
Por otro lado, yo desactivaría la interrupción RB cuadno escribo en el LCD y la volvería a activar al terminar de escribir.

Sigue contandonos qué tal ha ido.
Mucha suerte!

boni

Pegasux

  • Miembro MUY activo
  • ***
  • Mensajes: 130
    • Ver Perfil
Re: Problemon con la RBIF y timer0
« Respuesta #4 en: Miércoles 4 de Febrero de 2009, 12:46 »
0
Muchas gracias por la respuesta. Lo de desactivar la RB ya lo hago, pero el flag parece que se activa aunque este deshabilitada. Ahora funciona medianamente, aunque el pulsador no funciona siempre cuando intento apagarlo, para encenderlo va bien. Lo que hago es basicamente en la rutina de interrupcion es aparte de deshabilitar, guardar el contenido del registro INTCON y restaurarlo despues de haber sacado por el LCD y vuelvo a habilitar la RBIE. Lo complicado viene ahora que tengo que ponerle la interrupcion por recepcion de datos via UART. A ver si lo mejoro un poco...