Interrumpe el temporizador de Arduino (2 / 6 paso)

Paso 2: Estructuración temporizador interrumpe


Código de configuración del temporizador se realiza dentro de la función de setup() {} en un sketch de Arduino.

El código para configurar interrupciones de contador de tiempo es un poco difícil de mirar, pero es realmente no es tan difícil.  Prácticamente sólo copiar el mismo campo principal de código y cambiar el prescaler y comparar el registro del partido para fijar la frecuencia de interrupción correcta.

La estructura principal de la configuración de interrupción se ve así:

Observe cómo cambia el valor de OCR #A (compara partido valor) para cada una de estas configuraciones de temporizador.  Como se explicó en el último paso, esto se calculó según la siguiente ecuación:

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

Observe también cómo las configuraciones entre los tres temporizadores difieren ligeramente en la línea que se convierte en modo de CTC:
TCCR0A | = (1 << WGM01); //for timer0
TCCR1B | = (1 << WGM12); //for timer1
TCCR2A | = (1 << WGM21); //for timer2
Esto sigue directamente de la hoja de datos de la ATMEL 328/168.

Por último, observe cómo la configuración de las prescalers sigue las tablas en el último paso (la tabla para el timer 0 se repite arriba),
TCCR2B | = (1 << CS22);  Sistema CS #2 bit para 64 prescaler para el temporizador 2
TCCR1B | = (1 << CS11);  Sistema CS #1 bit para 8 prescaler para el temporizador 1
TCCR0B | = (1 << CS02) | (1 << CS00);  Set 2 CS y CS #0 pedacitos para 1024 prescaler para el timer 0

Observe en el último paso que hay diferentes escala de opciones para los diferentes temporizadores.  Por ejemplo, el timer2 no tiene la opción de 1024 prescaler.

Los comandos que desea ejecutar durante las interrupciones de temporizador se encuentra en el sketch de Arduino encapsulado en las siguientes:
ISR(TIMER0_COMPA_vect) {//change 0 a 1 para el timer1 y timer2 2
comandos de interrupción aquí
}
Este pedacito de código debe estar ubicado fuera de las funciones setup() y loop().  Además, intente mantener la rutina de interrupción más corta posible, especialmente si se interrumpe en una frecuencia alta.  Incluso cabe hacer frente a los puertos/pins del chip ATMEL directamente en lugar de utilizar las funciones digitalWrite() y digitalRead().  Puede encontrar más información sobre eso aquí.

Ejemplo-el bosquejo siguiente configura y ejecuta 3 interrupciones de contador de tiempo:

Las imágenes de arriba muestran las salidas de estas interrupciones de timer.  La Fig 1 muestra una onda cuadrada que oscila entre 0 y 5V a 1kHz (timer0 interrupción), la fig 2 muestra el LED conectado al pin 13 encendido durante un segundo entonces apagar durante un segundo (interrupción timer1), fig 3 muestra una onda de pulso oscila entre 0 y 5V con una frecuencia de 4khz (interrupción del timer2).

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