INTERRUPCION Del TIMER 0 INTRODUCCIN Seguidamente comenzamos el estudio de Timer 0 como temporizador, para ello, realizaremos un sencillo ejercicio de temporizacin:
ENUNCIADO:
Se desea mostrar 11110000 y 00001111 alternativamente e
ininterrumpidamente en los leds conectados al puerto B y con una cadencia de 0,5 segundos. Como elemento temporizador utilizaremos el Timer0 del PIC 16F84 funcionando a una frecuencia de 4 MHz, recordemos que en estas condiciones el timer aumenta su cuenta en 1 cada microsegundo.
CCFF D.P.E. MDULO DE PROYECTOS 2
Solucin:
Para temporizar 0,5 segundos se precisan 500000
microsegundos, lo anterior se puede conseguir si el preescaler lo asignamos al timer y con un factor de divisin de 8, el timer cuenta 250 y adems se producen 250 interrupciones 500000 = 8x250x250 Para que el timer cuente 250 sucesos, deberemos inicializarlo con 256-numero de sucesos a contar que en nuestro caso es: 156-250 = 6 Comencemos a construir nuestro proyecto, para ello lanzamos el compilador, y seleccionamos Project Wizar
CCFF D.P.E. MDULO DE PROYECTOS 3
Damos el nombre del proyecto y fijamos en la ventana general, la frecuencia de oscilacin, oscilador de cristal Posteriormente seleccionamos la pestaa Timers
CCFF D.P.E. MDULO DE PROYECTOS 4
En la ventana de seleccin fijamos: perro guardin desactivado, Timer0 fuente interna (temporizador); resolucin 8 (factor de divisin del prescaler)
CCFF D.P.E. MDULO DE PROYECTOS 5
El cdigo que se genera es:
Que nos indica: timer en modo temporizador, factor de
divisin del preescaler 8.
Picamos sobre OK y pasamos a seleccionar la pestaa de
Interrupts
CCFF D.P.E. MDULO DE PROYECTOS 6
En esta ventana activamos la interrupcin del Timer0, con lo que se genera el siguiente
CCFF D.P.E. MDULO DE PROYECTOS 7
Una vez que validamos pulsando sobre OK, volvemos a zona de edicin y comprobaremos que el cdigo que ya ha sido generado es:
Nos resta terminar el programa, editando el main y la
rutina de atencin a la interrupcin del Timer0 CCFF D.P.E. MDULO DE PROYECTOS 8 Solucin:
CCFF D.P.E. MDULO DE PROYECTOS 9
Simulacin:
CCFF D.P.E. MDULO DE PROYECTOS 10
Simulacin:
CCFF D.P.E. MDULO DE PROYECTOS 11
Simulacin:
CCFF D.P.E. MDULO DE PROYECTOS 12
Como podemos comprobar en la simulacin mediante Mplab y utilizando el stopwatch para medir tiempos, la conmutacin entre estados no es todo lo precisa que deseamos ya que ocurre cada 507499 ciclos, para este ejercicio no representa ningn incoveniente, pero si se deseara hacer un reloj en tiempo real, esto supondra una deriva importante que deberiamos corregir. En el siguiente ejercicio ejer_9_1 corregimos parte de esta deriva: