Go Down

Topic: Timers en arduino (Read 10386 times) previous topic - next topic

Igor R

Puedes hacer que en vez con interrupciones para contar las entradas de pulsos, usar uno de los Timer como contador (ejemplo Timer2). Un timer en realidad es timer/contador.
Asi liberas carga al micro, y cada cierto tiempo(conocido) lees el valor del contador y calculas rpm.
Aunque esto depende si no estas usando el pin ligado a dicho Timer/Contador para otra cosa y que no puedas usarlo....

;)

javilolo

En realidad sólo tengo la interrupción contando pulsos (solo eso)...y cuando se acaba el timer, veo los pulsos que hay para calcular las RPM. Creo que más sencillo que eso...
Lo que me propones supongo que tendrá una carga similar para el micro...

Igor R

#17
Feb 15, 2011, 06:37 pm Last Edit: Feb 15, 2011, 06:50 pm by Igor R Reason: 1
El timer/contador funciona independiente del micro. Es decir, estaria contando mientras estas haciendo otras cosas.
Por supuesto, no es lo mismo!!! Pasan muchas cosas cuando atiendes a la interrupcion (tienes unas cuantas instrucciones guardando variables en la pila y volviendo a reponerlas cuando sales). Aunque "solo" aumentes una variable contador dentro.

Pero si te funciona y estas contento, no vamos a darle mas vueltas al tema.


:D

javilolo

Gracias igualmente Igor por tu aclaración. Lo tendré en cuenta para próximos desarrollos.

anderneo

buenas tardes

tengo un arduino uno, entonces estoy trabajando en un brazo robotico y tengop porblemas con el timerone entonces me fije que con el timer2 se puede trabjar entonces como llamaria para que los servos trabajen con ese tiempo y no con el timerone, que no presente problemas de conflictos.

gracias

surbyte

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.

Rada19

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!

surbyte

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.

GO_zalo

#23
Dec 14, 2015, 12:19 pm Last Edit: Dec 14, 2015, 12:20 pm by GO_zalo
no estoy de acuerdo

como dice el datasheet del

Quote
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

Quote
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

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..

GO_zalo

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:

Code: [Select]


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


Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy