[ECOS] Re: Timer mechanism

Giovanni Perbellini perbellini@sci.univr.it
Thu Jan 15 11:55:00 GMT 2004



> >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'm using eCos 2.0 for a property MIPS target platform.
I have worked with Synthetic Target ant it works fine (as you suggest),
but  when I use my Board I get a wrong value (I'll investigate).

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


Therefore,  after an amount of internal ticks a Interrupt is generated;
when the interrupt occurs, I think that will be named  the
Cyg_RealTimeClock::ISR and the Cyg_RealTimeClock::DSR methods.
What do they do?

Thanks in advance.
Regards
Giovanni Perbellini



-- 
Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
and search the list archive: http://sources.redhat.com/ml/ecos-discuss



More information about the Ecos-discuss mailing list