[ECOS] Re: In trouble of timer operations
ariga masahiro
ariga@link-lab.co.jp
Thu Jun 5 06:14:00 GMT 2008
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
More information about the Ecos-discuss
mailing list