Lowell Gilbert <klu...@be-well.ilk.org> writes:

> Philippe Gerum <r...@xenomai.org> writes:
>
>> On 02/09/2018 11:02 AM, Philippe Gerum wrote:
>>> On 02/09/2018 12:45 AM, Lowell Gilbert wrote:
>>>> Am I correct in assuming that when calling rtdm_timer_start(), I should
>>>> not be getting multi-second latencies before the first call to the timer
>>>> routine? Just checking before I dig in too far.
>>>>
>>> 
>>> Of course not. I suspect an absolute expiry time is given with a
>>> relative mode spec.
>>> 
>>
>> More generally, an absolute expiry time which is not based on the right
>> clock specified by the mode argument.
>>
>> i.e.
>>
>> expiry = rtdm_clock_monotonic(), mode = RTDM_TIMERMODE_REALTIME => BAD
>> expiry = rtdm_clock_realtime(), mode = RTDM_TIMERMODE_ABSOLUTE => BAD
>> expiry = rtdm_clock_realtime() or _monotonic(), mode =
>> RTDM_TIMERMODE_RELATIVE => BAD
>
> Okay, that makes sense.
>
> I was using 0 for expiry, because I really just wanted the periodic
> wakeup. I don't remember why I didn't create a periodic task instead of
> using a timer.
>
> What clock do I want to use to get the timer started? Once it starts, it
> runs fine; but it often takes two or three seconds before the first call
> into the handler.
>
> To put it another way, I'm trying to figure out what am I doing wrong in:
>               ret = rtdm_timer_start(&pstate.collect.timer, 1,
>                                      pstate.collect.period,
>                                      RTDM_TIMERMODE_RELATIVE);

I could just rewrite the code to use a periodic task, but I'd prefer to
understand what is actually wrong with my current code first, to be sure
that refactoring will really solve my problem.

Or I could have the timer run constantly, but that is just hacking
around the problem, not really solving it.

Thanks for all help, past and future.

_______________________________________________
Xenomai mailing list
Xenomai@xenomai.org
https://xenomai.org/mailman/listinfo/xenomai

Reply via email to