This is the mail archive of the
ecos-discuss@sources.redhat.com
mailing list for the eCos project.
Re: Re: Timer mechanism
Giovanni Perbellini wrote:
Hi all,
I'd like to know how the timer mechanism works.
I have used a function to return the current time, cyg_current_time().
I guess that this function returns the ticks count since when I turn on
the
board, is it correct?
Yes - since eCos started.
Ok, but why do I get a very big number, even if I execute the
cyg_current_time() when the eCos starts?
What is the version of eCos your are using and on what type of HW ?
I just ran the following code on the synthetic target:
while (1)
{
diag_printf("%d\n", cyg_current_time());
cyg_thread_delay(100);
}
and the output is:
0
100
200
300
400
500
600
700
800
900
1000
after 10 seconds.
Otherwise, Is there a variable, method or class returning/containing the
ticks count since the power up?
Moreover, I have read that there is a macro to read the current value of
the
timing devices counter since the last interrupt, called HAL_CLOCK_READ.
What
is the relationship between the tick and interrupt?
The timing device is usually a hardware timer which can generate an
interrupt after a
specified amount of internal ticks. This timer gets initialized with
HAL_CLOCK_PERIOD
which "is" 10ms (by default) in hw timer ticks. The HAL_CLOCK_READ macro
returns
the number of hw timer internal ticks elapsed since the last interrupt.
Is HAL_CLOCK_PERIOD the time between two interrupts or two internal ticks?
HAL_CLOCK_PERIOD is the number of hw timer internal ticks between two RTC
interrupts. And it is a platform dependent value, because it depends on
the frequency of
hw timer.
savin
--
Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
and search the list archive: http://sources.redhat.com/ml/ecos-discuss