TEMPORIZADOR / CONTADORES
Temporizador / contadores son probablemente los periféricos más utilizados complejos en un microcontrolador. Son altamente versátiles, siendo capaz de medir períodos de tiempo, para determinar ancho de pulso, para medir la velocidad, para medir la frecuencia, o para proporcionar señales de salida. Algunos ejemplos de aplicaciones podrían incluir la medición de las rpm del motor de un auto, el momento de un período exacto de tiempo, como las necesarias para el tiempo de la bala velocímetro fa, la producción de tonos para crear música o para conducir el sistema de encendido por chispa de un coche, o la prestación de un pulso de anchura variable de frecuencia o de accionamiento para controlar la velocidad de un motor. En esta sección del temporizador / contadores serán discutidos en el sentido genérico, y luego temporizador típica /los contadores en los microcontroladores AVR será discuti do. A pesar de utilizar de dos modos muy diferentes, el ritmo y el conteo del temporizador / contadores binarios son simplemente los mostradores. Cuando se utiliza en modo de sincronización, los contadores binarios están contando los plazos aplicados a su entrada, y en el modo de mostrador, están contando los eventos o pulsos o algo de esta naturaleza. Por ejemplo, si los contadores binarios tenían 1-milisegundo impulsos como su entrada un período de tiempo ser medido por el contador de partida en el comienzo de un evento y parada del contador al final del evento. El recuento final en el contador sería el número de milisegundos que había transcurrido durante el evento. Cuando un temporizador / contador se utiliza como un contador, los eventos a ser contados se aplica a la entrada del contador binario, y el número de eventos que ocurren se cuentan. Por ejemplo, el contador se podría utilizar para contar el número de latas de guisantes bajando una línea de montaje mediante la aplicación de un impulso a la entrada del contador para cada lata de guisantes. En cualquier momento, el contador se puede leer para determinar cuántas latas de guisantes había bajado una línea de montaje. Los microcontroladores AVR proporcionar de 8-bit y 16 bit de temporizador / contadores. En cualquier caso, una tema importante del programa es saber cuándo el contador alcanza su cuenta máxima y promedio rollos. En el caso de un contador de 8-bits, esto ocurre cuando el recuento llega a 255, en cuyo caso el siguiente impulso hará que el contador a rodar a 0. En el caso de un contador de 16-bits, lo mismo ocurre a 65.535. Los eventos de volcadura son extremadamente importantes para que el programa sea capaz de leer con precisión los resultados de un temporizador / contador. De hecho, rollovers son tan importantes que una interrupción se prevé que se producirá cuando un rollos rol los de temporizador/contador otra vez. Algunos microcontroladores AVR tiene dos temporizadores de 8-bits (típicamente, el temporizador y el temporizador 0 2) y un 16-bit de temporización (típicamente, el temporizador 1), aunque esta configuración variará dependiendo del tipo exacto de microcontrolador AVR que se utiliza. Las siguientes secciones se discutirá el temporizador preescaler y selector de entrada, una característica común a todos los contadores de tiempo, y luego discutir cada uno de los contadores de tiempo comunes en turno. Los usos más comunes para cada temporizador / contador será discutido, aunque los temporizadores tienen muchas más funciones que se tratan en este texto. Para cualquier procesador específico, consulte las especificaciones para determinar todas las diversas funciones posibles con el temporizador/contadores.
2.7.1 TEMPORIZADOR / CONTADOR PREESCALERS Y SELECTORES DE ENTRADA
Unidades de temporizador / contador puede usar una variedad de frecuencias internas derivadas del reloj del sistema como su entrada, o pueden conseguir su entrada de un pin p in externo. El temporizador contador registro de control (TCCRx) asociada con el temporizador contiene los bits de contador seleccione (CSx2, CSxl, CSxO) que el control de entrada que se utiliza con un
contador específico. La figura 2-16 muestra el pre-escalador y la configuración del selector de entrada para un control contra el cronómetro registro que se utiliza en la mayoría de los microcontroladores AVR. El fragmento de código siguiente se muestra, como ejemplo, cómo inicializar el temporizador 0 para usar el reloj del sistema dividido por 8 como su fuente de reloj(los bits de selección de venta libre son los tres bits menos significativos de TCCRO): TCCRO = 0x2;
/*Timer 0 uses clock/8*/
2.7.2 Timer 0
El sintonizador 0 suele ser un temporizador de 8 bits, pero esto varía según el tipo de procesador específico. Es capaz de cumplir las funciones habituales del temporizador/contador, pero con mayor frecuencia se utiliza para crear una base de tiempo o marque para el programa. El temporizador contador de registro de control 0, TCCRO, controla la función de temporizador de 0 para seleccionar la fuente de reloj aplicada al temporizador 0.
La Figura 2-17 muestra las definiciones de un reloj precontador de bits para TCCRO . Otros bits de control TCCRO son funciones adicionales del temporizador 0 en una manera similar a los bits de control para el temporizador 1 presenta más adelante .
El tic tac de programa, como el tictac de un reloj, provee un evento de alta precisión al sincronizarlo. El esquema general es que un número se selecciona y se cargan en el temporizador. El temporizador cuenta de este número hasta 255 y da vuelta. Siempre que da vuelta, se crea una interrupción. La rutina de servicio de interrupción recarga el mismo número en el contador de tiempo, ejecuta todas las actividades críticas en el tiempo que sean necesarios, y luego vuelve al programa. El ciclo se repite, el contador vuelve a contar desde el número que se cargó a 255, y da vuelta, creando otra interrupción. La interrupción se produce sobre una base regular cuando cada período de tiempo ha transcurrido. El número cargado en el contador determina la duración del período. Cuanto más bajo sea el número, más tiempo tardará el temporizador para llegar a 255, y se da vuelta, y el periodo más largo será el tic tac. A modo de ejemplo, supongamos que un programa es para cambiar el estado de un LED cada 0,5 segundos. El LED está conectado al bit menos significativo del puerto C como se muestra en la figura 218.
Un temporizador para ser utilizado como un tic tac, primero es necesario
determinar el número que se
carga en el contador cada vez que se produce la interrupción. En este ejemplo, queremos que el LED
cambie cada 0,5 segundos. Una solución sería que la interrupción se produzca cada 0,5 segundos
en el
caso
de temporizador 0, la configuración
sistema / 1024.
más
lenta de la pre-escalador reloj es el
reloj
del