Interrupciones Con Timer Arduino
Interrupciones Con Timer Arduino
Timer 1 Arduino
Es un timer de 16 bits. Es utilizado por la librería Servo en el Arduino UNO. Se utiliza para el
control de servomotores. Así que, si se van a manipular servomotores no se debe modificar
este timer.
Timer 2 Arduino
Al igual que el 0, es un timer de 8 bits. Es utilizado en la función tone(). Si no se va a utilizar
esta función, se puede utilizar este timer libremente.
Timer 3,4 y 5
Solo disponibles para los Arduino MEGA, estos timers son de 16 bits y se utilizan
principalmente para el control de servomotores.
Es importante mencionar que un prescaler solo puede tener los valores 1, 8, 64, 256 y 1024.
Por lo tanto, un prescaler de 8 incrementará la frecuencia a 2MHz, uno de 64 la incrementará
a 250 kHz, etc.
Es importante resaltar que al utilizar los temporizadores 0 y 2, este número debe ser menor
que 256 y menor que 65536 para el temporizador 1.
Ejemplo:
Se desea establecer una interrupción con una frecuencia de 1Hz, es decir, cada segundo,
con un prescaler de 1024.
16000 𝑀𝐻𝑧
𝑅𝑒𝑔𝑖𝑠𝑡𝑟𝑜 𝑑𝑒 𝑐𝑜𝑚𝑝𝑎𝑟𝑎𝑐𝑖ó𝑛 = − 1 = 15624
1024 ∗ 1𝐻𝑧
Ya que el registro de comparación tiene un valor mayor que 256, se debe utilizar el
temporizador 1.
• TCCRnA/B: Registros de control para poder configurar el timer en modo CTC y el pre-
escalador.
o Para los timers 0 y 2:
▪ TCCRnA debe estar todo en 0 excepto por el bit WGM01 que debe
estar en 1 para configurar el modo CTC.
▪ TCCRnB debe estar todo en 0 excepto los bits que se van a usar en 1
para el pre-escalador (si se va a utilizar).
o Para el timer 1:
▪ TCCRnA debe estar todo en 0 para su uso.
▪ TCCRnB debe estar todo en 0 excepto por el bit WGMn2 que debe
estar en 1 para configurar el modo CTC y los bits del pre-escalador
que se requieran en uno.