Hooola!
Los timers son una herramienta muy útil dentro del mundo de los microcontroladores, porque pueden ser el vinculo entre el tiempo del procesador, con el tiempo real
Aquí unos conceptos básicos de los timers
Que es un Timer Overflow?
Para el caso de la Xpress board, tenemos esta configuración de los Timers
Y los SFR's (Special Function Register) específicos para configurar el Timer0
Por ultimo hay que hacer mención de que es un Prescaler, es una parte del hardware programable que divide la frecuencia utilizada por diversos rangos para conseguir temporizaciones mas largas, en el ejemplo de abajo, la cuenta realmente se divide entre 8, ya que por cada 8 pulsos de entrada, solo se aumenta uno en el contador
Por dentro, así funciona el timer
Muy bien, terminada la teoría, ahora pasamos al MplabX, una vez abierto y creado un nuevo proyecto abrimos el MCC y del lado izquierdo, en el Device Resources, buscamos los timers
En la configuración del Timer0, agregamos un prescaler de 4, cambiamos el modo a 16 bits, habilitamos la interrupción y dejamos el periodo como de 1s
Ahora en el Pin Module, habilitamos el PORTA0-3 como salidas y los renombramos, generamos el código del MCC y salimos
Ahora nos dirigimos al archivo tmr0.c que esta en la ruta de nuestro proyecto->Source Files->MCC Genereted Files->tmr0.c, dentro de ese archivo buscaremos la función TMR0_ISR (ISR=Interrup Service Routine), y dentro de esta, debajo del comentario donde podemos agregar nuestro propio código; agregaremos solamente un toggle del puerto A, para que así, encienda y apague cada segundo los 4 Leds de la tarjeta
Regresando al main.c solo tenemos que descomentar la linea de interrupciones globales, recordando un poco el post de MPAB X 2 Interrupciones, de como esta la prioridad de estas
Compilamos y subimos, y deberíamos de ver como es que nuestros Leds se encienden y apagan cada segundo
Si quisiéramos hacer esto mismo y mandar a dormir al micro, solamente tendríamos que cambiar el Clock Source en la configuración del TMR0 por otro que corra mientras el CPU esta dormido
Comments