Timers en arduino

Javiolo respondió Feb 15, 2011, 05:50 pm dudo que te responda.
Crea tu propio hilo y en todo caso haces la referencia a este.

Hola! soy nuevo en este foro. Hace un tiempo estoy estudiando placas arduino para los proyectos.. Quería solicitarles ayuda acerca de los timers del arduino. Ahora estoy utilizando una placa DUE. Necesito saber si los timers se pueden utilizar como contadores, incrementando su registro con un reloj o pulso externo al micro. Es decir que no dependen del propio reloj del micro para incrementar su registro y de la misma manera producen una interrupción cuando se rebasan. He leido bastante pero hasta ahora no encontre información suficiente acerca de los timers. Muchas gracias!! Saludos!

Los Timers SON contadores, asi que no puedes usar elementos externos para incrementarlos.
Los elementos externos PUEDEN incrementar contadores (usando interrupciones) hechas con simples variables que cada vez que vean un cambio sea flanco ascedentes y descedente u otra de las posibilidades.

no estoy de acuerdo

como dice el datasheet del

External clocking is supported by Timer0 and Timer1 only. This mode allows the use of a wide range of external signals as timer clock signals.

y ademas

In contrast to the two other timers which do not support this option, Timer2 of the AT90S8535 can be clocked by an asynchronous external clock.

Por tanto los tres timers se pueden usar con fuentes externas, el 2, tiene que ser tipo cristal de cuarzo pero los otros dos pueden ser perfectamente ondas provinientes de un encoder o similar salida digital que se conecte a los pines T0/T1 lo que en nomenclatura arduino viene siendo los pines digitales 4 y 5

Gracias por tu respuesta surbyte! de hecho yo hice la pregunta por que conozco otros microcontroladores que tienen esta opción, como los PIC de Microchip. Es una gran ventaja poder incrementar un timer con un pulso externo porque cuando este último se rebasa, produce una interrupción y nos vamos a realizar la tarea correspondiente con total independencia de lo que estaba haciendo el micro antes. En cambio si utilizo una interrupción común e incremento una variable cualquiera hasta llegar a un valor deseado y entonces realizar una tarea, igualmente debo estar controlando cíclicamente esa variable..

Rada19:
Gracias por tu respuesta surbyte! de hecho yo hice la pregunta por que conozco otros microcontroladores que tienen esta opción, como los PIC de Microchip. Es una gran ventaja poder incrementar un timer con un pulso externo porque cuando este último se rebasa, produce una interrupción y nos vamos a realizar la tarea correspondiente con total independencia de lo que estaba haciendo el micro antes. En cambio si utilizo una interrupción común e incremento una variable cualquiera hasta llegar a un valor deseado y entonces realizar una tarea, igualmente debo estar controlando cíclicamente esa variable..

Me parece que no has leido mi anterior post

De todas formas lo de usar una fuente externa para mover un timer se hace cuando la frecuencia es alta, para frecuencias bajas basta con usar la interrupcion extena como bien dices, no hay que estar controlando la variable ciclicamente como tu dices, solo dentro de la rutina de interrupción en plan:

void isr()
{
evento++;
if (evento==xx)
{
//aqui realizar las acciones
}