Principio microcontroladores parte 11: Temporizadores, contadores y el reloj del microcontrolador

Temporizadores y contadores son tan esenciales que usted verá muchos ejemplos que a lo largo de esta serie. Como el nombre lo dice, se utilizan temporizadores para tiempo y contando. Cuenta y el tiempo le permite hacer algunas cosas muy prolijo como brillos de LED controladores, grados de ángulo de los ejes del servo, recibiendo datos de los sensores que transmiten en PWM, crear un contador de tiempo o simplemente añadiendo una variable de tiempo a su proyecto de microcontrolador.

En primer lugar es importante entender que hay un reloj interior (o exterior) los microcontroladores AVR. Todos los microcontroladores tienen relojes en ellos o utilizan un reloj externo. Microcontroladores requieren relojes por lo que los programas pueden ejecutarse en ritmo con el reloj. Como los programas que estamos escribiendo, pasa como cada tick de reloj, las instrucciones son procesadas en tiempo con las señales del reloj.

Las funciones de temporizador y contador en el microcontrolador cuentan en sincronía con el reloj del microcontrolador. Sin embargo, el contador solo cuenta hasta 65535 (contador de 16 bits) o 256 (contador de 8 bits). Dista mucho de las 1.000.000 garrapatas por segundo que ofrece el estándar Microcontrolador AVR. El microcontrolador ofrece una función muy útil llamada escala. Escala es una manera simplista para el contador al pasar un cierto número de ticks de reloj. Los microcontroladores AVR permiten escala de los números: 8, 64, 256 y 1024. Por ejemplo, si juego a 64 en el prescaler, el contador sólo contará cada vez el reloj hace tictac 64 veces. Esto significa que en un segundo (que el microcontrolador haga clic 1.000.000 veces) el contador sólo contaría hasta 15.625. Si el contador cuenta hacia arriba a ese número, entonces usted sería capaz de parpadear un LED cada un segundo.

Principalmente, los temporizadores tienen un registro para el control y un registro que contiene el número de cuenta. El registro de control contiene algunos interruptores para activar o desactivar características. Y adivinaron que it... una de las características es que escala para seleccionar. El registro de control se llama TCCR0 o TCCR1 (Timer/Counter Control Register). El TCCR0 es el registro de control de 8 bits y sólo tiene un registro de control de 8 bits, por lo que sólo hay 8 interruptores para encender y apagar. TCCR1 es 16 bits, por lo que cuenta con 16 interruptores para encender y apagar, pero viene en dos registros de 8 bits marcados A y B (TCCR1A y TCCR1B). Los interruptores son las siguientes: FOC (fuerza de salida de comparar), WGM (modo de generación de forma de onda), COM (Comparar Match Output Mode) y CS (reloj seleccione).

El registro que contiene la cuenta se llama el registro TCNT. Y hay una versión de 8 bits (TCNT0) y una versión de 16 bits (TCNT1). TCNT1 registro realmente obtiene su número de otros dos registros de 8 bits para crear un número completo de 16 bits, sino que es todo detrás de las escenas (abstraídas) para que usted no tiene que preocuparse acerca de cómo la TCNT1 obtiene esta capacidad a 16 bits, sólo que es mágico.

En el video, se muestran dos programas: uno que simplemente muestra un parpadeo del LED solo en aproximadamente 1 segundo y otro programa que tiene una fila de 7 LEDs persiguiendo a cada segundo y otra fila de 7 LEDs persiguiendo a cada uno en 1 segundo. El programa de este último se muestra aquí ya que tiene las características más usadas con el temporizador de 16 bits.

Sin ser repetitivo de posts anteriores, el programa inicializa los puertos para los LEDs y fija el temporizador/contador 1 # (el temporizador de 16 bits). El registro TCCR1B de control se utiliza para establecer el factor de escala de 64 con el CS10 y CS11 cambia.

Ya que queremos uno de los 7 LEDs para perseguir a 1/7 de segundo cada uno, tomamos el número 15.625 (1000000/64 - recuerda el 1000000 es el reloj de 1 mhz de la micrcontroller) y divídalo por 7 a ~ 2,232.143. Ahora, que estás diciendo, pero usar sólo 2232 en el programa!! eso es porque TCNT1 sólo acepta enteros (sin decimales). Ahora que estás diciendo, el tiempo estará apagada por la cantidad de decimales!!!! Es cierto, pero el reloj interno del AVR es +-10% inexacta de todas formas. Si se utiliza un cristal externo, usted debe utilizar un número perfecto que representa la cuenta apropiada.

Usted notará que el TCNT1 es también restablecer a cero manualmente. Esto es necesario de lo contrario la TCNT1 se mantenga contando pasado el 2232 de la condición que se estableció. Hay otras características de control que tiene una puesta a cero automático de este número, pero llegaremos a eso en otro tutorial. Las partes restantes del programa está utilizando cosas que hemos aprendido en tutoriales anteriores (giro de LED encendido y apagado y arreglos de discos).

Artículos Relacionados

Principio microcontroladores parte 2: Creación de una interfaz SPI del programador para el microcontrolador

Principio microcontroladores parte 2: Creación de una interfaz SPI del programador para el microcontrolador

Hola, esperamos que te ha gustado la parte 1 del principio microcontroladores. Vamos a mover a lo largo de a parte 2 y empezar a hablar acerca de cómo obtener tu microcontrolador para comunicarse con una computadora e interfaces.Por lo tanto, en este
Principio microcontroladores parte 3: Transferencia de un programa en el microcontrolador (conductores)

Principio microcontroladores parte 3: Transferencia de un programa en el microcontrolador (conductores)

¡ Bienvenido a parte 3. Este es un pequeño tutorial que tratará simplemente cargar los controladores para hacer que el programador pueda comunicarse con el ordenador correctamente.Tenga en cuenta que a veces los dispositivos TinyISP y USBAVR ahora vi
Principio microcontroladores parte 6: Escribir el primer programa para encender un LED

Principio microcontroladores parte 6: Escribir el primer programa para encender un LED

Sé que estás listo para escribir el primer programa. Han sido a través de mucho hasta ahora! Mientras estamos en el tema, vamos a recapitular los acontecimientos. Salió y compró el Microcontrolador AVR de Atmel de su elección. Elegí theATMega32 para
Principio microcontroladores parte 9: Botón y Software contra rebotes métodos

Principio microcontroladores parte 9: Botón y Software contra rebotes métodos

En esta parte del tutorial vamos a discutir el botón y software contra rebotes.Queremos estudiar botón contra rebotes primero y en detalle, así que tenemos una buena comprensión de lo que ello conlleva. Botón contra rebotes es importante y no debe se
Principio microcontroladores parte 8: Agregar un botón al microcontrolador y lo que es hacer algo

Principio microcontroladores parte 8: Agregar un botón al microcontrolador y lo que es hacer algo

Una manera muy simple y fácil para proporcionar para la interacción humana con el microcontrolador es insertar un botón en el circuito. Comunicarse con equipos mediante dos principales dispositivos de entrada: el ratón y el teclado. Un teclado no es
Principio microcontroladores parte 5: Pruebas del programador y la construcción del primer circuito

Principio microcontroladores parte 5: Pruebas del programador y la construcción del primer circuito

Hasta ahora, tienes todo el software instalado y había construido la interfaz que proporcionará una conveniente conexión del programador al microcontrolador (MCU). Para el siguiente paso, usted necesitará un protoboard (los números son muy útiles), u
Principio microcontroladores parte 13: Introducción a la interfaz de LCD

Principio microcontroladores parte 13: Introducción a la interfaz de LCD

El microcontrolador es una maravillosa pieza de ingeniería y puede hacer muchas cosas (con la ayuda de alguna gran programación), pero sigue siendo una caja negra opaca. Si desea compartir información, o mostrar lo que está tratando de hacer, necesit
Principio microcontroladores parte 7: Revisar el primer programa para hacer el parpadeo del LED

Principio microcontroladores parte 7: Revisar el primer programa para hacer el parpadeo del LED

Ha escrito el primer programa, que enciende un LED. sí, eso fue espectacular! Bueno, no realmente, pero vamos a introducir un poco de locura para el LED. Le daremos una personalidad "bipolar" por lo que es blink. Luego paso a otro nivel y hacer
Principio microcontroladores parte 4: Instalar el entorno de programación (WinAVR)

Principio microcontroladores parte 4: Instalar el entorno de programación (WinAVR)

Bienvenido al siguiente paso en nuestra serie. Vamos a introducir algunos elementos básicos de programación ahora. Este tutorial es simplemente acerca de cómo instalar el entorno de programación. El entorno de programación que vamos a usar se llama W
De contador para el reloj con RTC DS-1302

De contador para el reloj con RTC DS-1302

esta vez me gustaría modificar de nuestro contador anterior se convierta en un simple reloj usando un chip RTC DS-1302.DS-1302 utiliza 2 interfaz de cable Atmel que es una versión antigua de I2C.Puesto que es necesario más espacio en el lado izquierd
Regulador casero elegante con Sensorflare y base de partículas de chispa: leer los valores del sensor en Sensorflare

Regulador casero elegante con Sensorflare y base de partículas de chispa: leer los valores del sensor en Sensorflare

Hola todo el mundo! Este instructable muestra cómo puede controlar su smartdispositivos usando Sensorflare y partículas. Las posibilidades son muchas... Puede usar core de la partícula - una pequeña Junta de desarrollo de Wi-Fi para conectar el hardw
Control de Servos en FPGA

Control de Servos en FPGA

Actualmente estoy trabajando en la construcción de una máquina de la garra, mucho como los que plagaron su infancia en salas de cine, galerías y tiendas de abarrotes. Sé para mí pasaban muchas horas anhelando el juguete en la parte superior de la pil
Inicio microcontroladores parte 12: Intro interrupciones

Inicio microcontroladores parte 12: Intro interrupciones

En esta parte del tutorial que vamos a hablar acerca de las interrupciones de trabajo usando el contador por ejemplo. Interrupciones mejoran el uso de microcontroladores de forma enorme. Interrupciones hacen sus programas reaccionan con el hardware d
Temporizador de relé ajustable de apagado automático para aplicaciones de alta potencia

Temporizador de relé ajustable de apagado automático para aplicaciones de alta potencia

subido por as Monster juguetes Hackerspace en Oakland, CA para el programa de patrocinio de Instructables¿Que siempre quisiste para asegurarse de que un dispositivo eléctrico que se utiliza automáticamente se apaga después de una cantidad de tiempo?