Hi thanks for below. All clear and all useful. Regards,
Roland. Wolfgang Grandegger wrote: > 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 > _______________________________________________ Xenomai-help mailing list [email protected] https://mail.gna.org/listinfo/xenomai-help
