TODOPIC

Microcontroladores PIC => Primeros pasos - Iniciación a los microcontroladores => Mensaje iniciado por: halowin en 24 de Junio de 2008, 04:53:00

Título: Ayuda con una temporizacion
Publicado por: halowin en 24 de Junio de 2008, 04:53:00
Hola.
He preparado una rutina de pausa de 40ms pero veo que despues de salir de la rutina el TMR0 sigue activo. He buscado en los ejemplos pero no he visto la solución. Aqui dejo la rutina:

PAUSA
      ;-------- pausa 40ms ----
      MOVLW   .100
      MOVWF   TMR0
      BSF      STATUS,5   ;banco 1
      MOVLW   b'00000111'   ; prescaler 256 al TMR0
      MOVWF   OPTION_R
      BCF          STATUS,5           ;banco 0
DESBO   BTFSS   INTCON,2
      GOTO   DESBO
      BCF      INTCON,2            ;restablezco flag
      
      RETURN
      ;------------------

Gracias.
Título: Re: Ayuda con una temporizacion
Publicado por: pocher en 24 de Junio de 2008, 05:09:04
El TMR0 es un contador ascendente reversible que cuando se desborda vuelve a empezar y no para nunca (solo para en modo sleep).
Título: Re: Ayuda con una temporizacion
Publicado por: halowin en 24 de Junio de 2008, 05:16:39
Aaaaacabaramos, ya podía estar buscandole las vueltas.

Muchas gracias pocher por la aclaración.
Título: Re: Ayuda con una temporizacion
Publicado por: firepic en 24 de Junio de 2008, 10:22:48
El tmr0 puede trabajar en dos modos: contador y temporizador. Tú lo estás usando como temporizador, entonces incrementa cada ciclo de instrucción o si lo tienes con pre-escala cada cierta cantidad de ciclos... para detenerlo podrías cambiar a modo contador. Haciendo:
Código: ASM
  1. bsf option_reg,5
Bueno es una idea.
Saludos, nos leemos!  :mrgreen:
Título: Re: Ayuda con una temporizacion
Publicado por: Leon Pic en 24 de Junio de 2008, 10:53:34
Muy buena idea firepic, pero tienes que tener cuidado, porque en modo contador utiliza el puerto RA4. Si no utilizas este bit, es buena idea, porque hasta que no cambie de nivel, el contador, no se incrementará, pero si utilizas este pin, como entrada o como salida, cada vez que el bit RA4, cambie su nivel, el contador incrementará.
Título: Re: Ayuda con una temporizacion
Publicado por: halowin en 24 de Junio de 2008, 11:34:59
Ok, gracias a todos, la cosa es que no me interfiera en nada.
Gracias.
Título: Re: Ayuda con una temporizacion
Publicado por: firepic en 24 de Junio de 2008, 11:36:06
Tienes razón Leon, se me olvidó aclarar ese punto.
Para asegurar que de verdad no incremente más nunca el tmr0, el RA4 debería estar conectado a masa. De ese modo no habría nunca un cambio de nivel.
Es decir, esta opción funciona siempre que tengas "desactivado" al RA4.
Ok saludos, nos leemos!  :mrgreen: