Interrumpe el temporizador de Arduino (1 / 6 paso)

Paso 1: Prescalers y el registro de partido de comparar

Uno la tiene tres temporizadores llamado timer0, timer1 y timer2.  Cada uno de los contadores de tiempo tiene un contador que se incrementa en cada tick de reloj del temporizador.  CTC temporizador interrumpe se activa cuando el contador llegue a un valor especificado, almacenado en el registro de partido de comparar.  Una vez que un contador de tiempo alcanza este valor se borrar (poner a cero) en la siguiente señal de reloj del temporizador, y luego continuará la cuenta hasta las comparan coincidir valor otra vez.  Eligiendo las comparan coincidir con valor y fijando la velocidad en que el temporizador incrementa el contador, puede controlar la frecuencia de las interrupciones de temporizador.

El primer parámetro que analizaremos es la velocidad a la cual el temporizador incrementa el contador.  El reloj de Arduino funciona a 16MHz, esto es la velocidad más rápida que los temporizadores pueden incrementar sus contadores.  A 16MHz cada tick del contador representa 1/16,000,000 de segundo (~ 63ns), por lo que un contador te llevará 10/16,000,000 segundos para llegar a un valor de 9 (los contadores están a 0 indexadas) y 100/16,000,000 segundos para llegar a un valor de 99.

En muchas situaciones, usted encontrará que la configuración de la velocidad del contador a 16MHz es demasiado rápido.  Timer0 y timer2 son temporizadores de 8 bits, lo que significa que pueden almacenar un valor de contador máximo de 255.  Timer1 es un temporizador de 16 bits, lo que significa que puede almacenar un valor de contador máximo de 65535.  Una vez que un contador llegue a su máximo, le marca a cero (esto es llamado desbordamiento).  Esto significa que en 16MHz, incluso si tenemos el registro del partido de comparar el valor máximo del contador, interrupciones ocurrirán cada 256/16,000,000 segundos (~ 16us) para los contadores de 8 bits y cada 65.536/16,000,000 segundos (~ 4 ms) para el contador de 16 bits.  Claramente, esto no es muy útil si sólo desea interrumpir una vez por segundo.

En su lugar puede controlar la velocidad del aumento del contador de tiempo usando algo llamado un prescaler.  Un prescaler dicta la velocidad de su reloj automático según la siguiente ecuación:

(velocidad de reloj (Hz)) = (velocidad de reloj de Arduino (16MHz)) / divisor

Así que un 1 prescaler aumentará el contador a 16MHz, un prescaler de 8 incrementará a 2MHz, un prescaler 64 = 250kHz y así sucesivamente.  Como se indica en las tablas anteriores, puede igualar el prescaler 1, 8, 64, 256 y 1024.  (Voy a explicar el significado de CS12, CS11 y CS10 en el paso siguiente).

Ahora puede calcular la frecuencia de interrupción con la siguiente ecuación:

interrumpir la frecuencia (Hz) = (velocidad del reloj de Arduino 16.000, 000Hz) / (prescaler * (comparan coincidir con registro + 1))
el + 1 es en porque las comparan coincidir con registro cero indexado

reordenando la ecuación anterior, se puede resolver para el valor de registro de partido compare que le dará a su frecuencia de interrupción deseada:

Comparar registro partido = [16.000, 000Hz / (prescaler * deseado frecuencia de interrupción)] - 1
Recuerde que cuando utilice temporizadores de 0 y 2 este número debe ser menos de 256 y menos de 65536 para timer1

así que si querías una interrupción cada segundo (frecuencia de 1Hz):
Comparar registro partido = [16000000 / (prescaler * 1)] -1
con un prescaler de 1024 obtendrá:
Comparar registro partido = [16000000 / (1024 * 1)] -1
= 15.624
desde 256 15.624 < < 65.536, debe utilizar el timer1 para esta interrupción.

Artículos Relacionados

Temporizador de Arduino

Temporizador de Arduino

Hola a todos, este instructable es todo acerca de cómo crear un cronómetro / temporizador utilizando Arduino.Características de este temporizador: (ver para más detalles de profundidad cómo usar estas características en la sección "Código/Sketch"
Temporizador de Arduino Pinewood Derby

Temporizador de Arduino Pinewood Derby

El verano pasado, SLO MakerSpace decidido organizar un taller de 'Hacer cosas' NOVA para nuestra comunidad local. Una de las actividades del taller es un Pinewood Derby.La buena noticia es que aquellos son siempre muy divertidas. La mala noticia es q
Niños de pantalla temporizador con Arduino

Niños de pantalla temporizador con Arduino

Este dispositivo da un padre realmente robusto medio de controlar la cantidad de tiempo en pantalla (TV / DVD / consola) los niños tienen cada día. Trabaja por tener un interruptor de tiempo inteligente que controla la señal HDMI pasando entre un dis
Temporizador de Arduino 8 A.C. toma de corriente (enchufe) / asesino de vampiro

Temporizador de Arduino 8 A.C. toma de corriente (enchufe) / asesino de vampiro

Un dispositivo que está utilizando constantemente energía, aun cuando no en uso se refiere comúnmente como un dispositivo de "Vampiro", ya que siempre esté chupando energía.Cosas como cargadores de celular, cargadores de iPod/iPad/iPhone, Laptop
Circuito temporizador de Arduino para línea de producción

Circuito temporizador de Arduino para línea de producción

Donde trabajo tenemos Maquinaria semiautomática y un objetivo de velocidad.Así que pensé cómo podría construir un dispositivo de tiempo para que el operador puede mantener una tasa constante de conducir la máquina como lo son también la persona clave
Hacer un temporizador de Arduino

Hacer un temporizador de Arduino

Hola, para mi compadre y yo estamos configurando para que podamos hacer PCB´s. Actualmente estamos haciendo un cuadro de exposición UV (posiblemente otro instrucable) y para esta caja, necesitábamos un contador de tiempo, así que esto es lo que hemos
Detector de movimiento PIR con Arduino: Funciona en el modo de consumo de energía más bajo

Detector de movimiento PIR con Arduino: Funciona en el modo de consumo de energía más bajo

Este video demuestra rápido y acercamiento fácil de reducir el consumo de energía de ATMEGA 328p basado en placas Arduino en torno al 70-75% mediante sensores PIR o PID para detección de movimiento.Este proyecto introduce a raíz de las cosas-1) inter
Entrada de Arduino Audio

Entrada de Arduino Audio

Enviar sonido a tu Arduino. Este Instructable le mostrará cómo preparar el audio para que puedan ser muestreado y procesada por un Arduino para hacer proyectos sensibles sonidos y efectos de audio. (Este artículo es un compañero de otro Instructable
Crear interrupción interna en Arduino

Crear interrupción interna en Arduino

Interrupción es un proceso por donde podrá realizar ciertas colmillo a través de la función de interrupción sin interrupción de su programa continuo. Por ejemplo, suponga que usted desea dormir 2 horas y después de usted quiere ir a su trabajo. Ahora
Barco piloto automático - basado en Arduino

Barco piloto automático - basado en Arduino

Aquí es cómo construir un piloto automático que puede dirigir un RC barco a waypoints! Es fácil de construir, basado en la popular plataforma Arduino e ideal para aficionados que quieren alguna soldadura práctica! Con este piloto automático, un barco
Arduino láser Tripwire

Arduino láser Tripwire

Hey, los fabricantes de allí, los hackers y simplemente inventores! Este instructable es un divertido y fácil proyecto de Arduino para principiantes (o avanzado) que te muestra cómo hacer... ejem... rodillo de tambor por favor!Un sistema de seguridad
Temporizador para el cargador de baterías para automóviles

Temporizador para el cargador de baterías para automóviles

Este instructable utiliza un Arduino para controlar un cargador de mantenimiento de la batería automotora.El cargador se enciende por 1/2 hora cada tres días.La batería se mantendrá cargada cuando guarde su coche o motocicleta en el largo invierno.Pa
Vocal de Arduino efectos caja

Vocal de Arduino efectos caja

Esta inclinación de la caja de efectos vocales Arduino powered cambia y distorsiona las señales de audio entrantes para producir una amplia variedad de efectos vocales. Este proyecto es mi primer experimento con procesamiento de señal digital en tiem
Super Simple Arduino Powered Roomba Scheduler

Super Simple Arduino Powered Roomba Scheduler

como la mayoría de la gente era escéptico acerca de cómo un robot aspirador, así como un funcionamiento de ensayo pensé que iba a comprar el ahora obsoleto iRobot Roomba 530, que fue fuertemente descontados (están todavía disponibles en Australia, mo