Paso 4: Interrumpir la rutina / temporizador 1
Este sketch proporciona un ejemplo de una rutina de interrupción. Tienes que tener un poco cuidado de no utilizar una interrupción que ya está utilizando el entorno de Arduino. Por ejemplo TIMER0_0VF_vect se utiliza para contar los milisegundos devueltos por millis(). La manera de ir sobre el uso de una interrupción es primero que decidir que uno desea utilizar. Por ejemplo, necesitaba algo de código a ejecutar cada 5 – 10 ms para botón contra rebotes (véase el paso 5 más). La forma más sencilla de hacerlo es una interrupción de desbordamiento. Un temporizador se ejecutará continuamente y cada vez que llega a su máximo valor y ciclos a cero causa una interrupción desbordamiento. Fui con 1 cronómetro, un temporizador de 16 bits. La velocidad del procesador 16 MHz, 16 bits significa desbordará todos las 65.536 garrapatas. Y 16000000/65.536 = 244 Hz que significa un período de Sra. 4.1 perfecto para mi significa, que no incluso necesita un prescaler, otra vez ver paso 5 para más información. Traducir una interrupción del ATMega328 quiere
manual a lo que el entorno de Arduino, es el siguiente paso. El manual lo llama "TIMER1 OVF" y lo describe como "El desbordamiento del temporizador/Counter1". El archivo (en mi sistema) "C:\arduino-0022\hardware\arduino\bootloaders\stk500v2\avrinterruptnames.h" tiene una lista útil de todas las interrupciones posibles. El "TIMER1_OVF_vect" uno se parece a un partido y es lo que me fui con. Ahora sólo tienes que buscar la fuente de Arduino para el uso de esa interrupción (Notepad ++ es lo que uso para esto). Usted puede verificar el código pero declaro las rutinas de interrupción:
{Signal(TIMER1_OVF_vect)}
rutina de servicio de interrupción
}
Todo lo que necesita son unas líneas en la rutina de setup():
TCCR1B = bit(CS10); no hay escala
TIMSK1 = bit(TOIE1); habilitar interrupción desbordamiento
Consulte el ATMega328 manual de descripciones de registro.