This is the mail archive of the ecos-discuss@sourceware.org mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Re: In trouble of timer operations


Hello Paul,Andrew and others,

Thank you,Paul,for valuable suggestion.
I re_calculated by toggling LED and measured signal's duration on osilloscope.


result
(1) only used cyg_thread_delay(2) -- 20.2millisec
(2) cyg_thread_delay(1),cyg_thread_delay(2) -- 30.1millisec
(3) same as (2) except changed cyg_thread_delay(2) to yg_thread_delay(20) -- 212millisec
(4) only used cyg_thread_delay(20) -- 201millisec


I am confirmed in thinking that since CYGNUM_HAL_RTC_DENOMINATOR=100, system clock is running 100Hz,1 tick perid = 10millisec,and if I wish to run system clock 200Hz I should change CYGNUM_HAL_RTC_DENOMINATOR to 200.

But according to your mail, it raised another puzzlement.

However, you won't find it out very easily with diag_printf, because it
probably takes longer than 10ms to execute.

At first,I couldn't get it. Because if diag_printf takes over 10ms, simply calculated results ought be longer,
but on the contrary it took far shorter than expected.


So I deliberately inserted
HAL_CLOCK_READ1(&start);
diag_printf("id=hi 0x%x\n",start);
in above each test(after led_toggle function) and investigated how it affects duration time.
To my very astonishment as far as looking signals on osilloscope there are no differences !
Two functions takes no time at all as far as looking to signals.


Can you resolve this wonder.
Please enlighten me.

Masahiro Ariga

From: ariga masahiro [mailto:ariga@link-lab.co.jp]

I am afraid I dig up the same question but I think this is important,at
least for me,
so please forgive my inquiring again.
The problem is return_time of cyg_thread_delay.I am determined to
use TMU1
as Free-Run Counter(0xffffffff-0)
and made function(HAL_CLOCK_READ1) to read TMU1 clock count.I am affirmed
it's working correctry.
I used it to calculate return time in hipri_test() in timeslice2.c.
I am baffled by the result.

--testing code
hipri_test(CYG_ADDRESS id)
{
    cyg_int32 start;

while( 1 )
{
HAL_CLOCK_READ1(&start);
diag_printf("id=hi 0x%x\n",start);
cyg_thread_delay(1);
cyg_thread_delay(2);
}
}
I calculated several cases.
(1) I only used cyg_thread_delay(2)
(2) I used Andrew's proposition of using
cyg_thread_delay(1),cyg_thread_delay(2) like above code.
(3) same as (2) except changed cyg_thread_delay(2) to cyg_thread_delay(20)
(4) only used cyg_thread_delay(20)

It's possible that there's something wrong with the timer configuration. However, you won't find it out very easily with diag_printf, because it probably takes longer than 10ms to execute.

I don't know what hardware you're using, but most evaluation boards have
utility LEDs or output port pins. Instead of outputting a message, toggle a
port pin and look at it with a scope or a frequency counter.


--

Ciao,               Paul D. DeRocco
Paul                mailto:pderocco@ix.netcom.com




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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]