From: Wolfgang Grandegger <wg@domain.hid>
To: rolandtollenaar@domain.hid
Cc: Xenomai-help@domain.hid
Subject: Re: [Xenomai-help] timing within a task and assessing the timing of CAN messages
Date: Wed, 02 May 2007 21:50:28 +0200 [thread overview]
Message-ID: <4638EB84.1070307@domain.hid> (raw)
In-Reply-To: <46359B2C.3000206@domain.hid>
Roland Tollenaar wrote:
> Hello,
>
> I have three questions I would like to pose here.
>
> 1-Is it possible to subdivide a task to control at what time a certain
> command is executed within the task? Example: I have a 1ms task. I send
> a CAN sync message at the beginning of the task but I would like to wait
> about 300us before performing a read to ensure that all the messages
> emitted as a result of this sync have come in. Now I will have an odd
> 700us to use the data that has come in to calculate outputs. However I
> want the output to be put out as close as possible to the end of the
> task time. Is there an elegant manner to delay the read and the write to
> give me this kind of control within a taks. If not any suggestions as to
> how I should tackle this.
The task timing services allow to suspend and then resume the task at a
defined time, either by specifying a releative delay or an absolute
time, e.g. rt_task_sleep() and rt_task_sleep_until() for the native skin.
>
> 2-For development I am still using the PEAK CAN dongle. We have
> establisched that the ISR responding to an incoming message interrupt
> takes 200us to complete. Is anything known about how long it takes
> before a message that has been sent is put on the bus? How does this
> happen? Reason I ask is to know what kind of variance I can expect in
> time between the moment I send the output values and the moment it is on
> the bus. If there are routines between those to points that allow
> themselves to be pre-empted or for some other reason have varying
> execution times my control performance will be badly degraded.
Reading, but also writing a byte to the port register task time. I
think, that setting up a message for transmit takes as much time as
reading it. Writing is also done with interrupts disabled.
> 3-How do I interpret the relative time stamps that can be made visible
> with rtcanrev ? IS the time indicated the time between each message and
> the last time the message was posted? Or between the message and its
> direct predecessor?
The latter one if the option "-R" was used:
$ rtcanrecv -h
...
-T, --timestamp with absolute timestamp
-R, --timestamp-rel with relative timestamp
Note that the timestamp is added in the ISR.
Wolfgang
next prev parent reply other threads:[~2007-05-02 19:50 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-04-30 7:30 [Xenomai-help] timing within a task and assessing the timing of CAN messages Roland Tollenaar
2007-05-02 8:43 ` Sebastian Smolorz
2007-05-02 19:50 ` Wolfgang Grandegger [this message]
2007-05-03 6:01 ` Roland Tollenaar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4638EB84.1070307@domain.hid \
--to=wg@domain.hid \
--cc=Xenomai-help@domain.hid \
--cc=rolandtollenaar@domain.hid \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.