05-03-2014 04:43 PM
Good afternoon,
We're hitting that point in porgramming where it's not the logic but the structure that's giving us fits. We have a moderately complex vi that runs on a MyRIO, collecting data from three IMUs via I2c and writing the information out to a memory stick. However, the program collects at about 80Hz, and we need it much much faster.
i2c communicates at 400kHz, and going straight of the number of bits being transferred back and forth, we should be able to collect at around 500 Hz or so. So, there's something (if not a lot) in the program that is taking up valuable programming time.. I'm wondering if there is a way to do a time study on the program to identify where the significant slowdowns are, and if not, some guidance on what the likely culprits could be
Right now, some of my thoughts include:
The program's a bit large and ungainly to post, but I thought this would be a good way to start to prioritize the investigation.
Thanks!
05-03-2014 06:04 PM
First, start with the DETT. this tool is designed to help you isolate those bottlenecks.
Next look into the latency timer settings of your USB devices (Assuming the memory stick has a FTDI chipset) Look here
Lastly, consider the USB chipset of the memory sticks....
And, would a RAID array be more appropiate?
05-04-2014 06:10 AM
05-05-2014 04:37 PM - last edited on 04-10-2024 02:36 PM by Content Cleaner
I also think the Real-Time Execution Trace Toolkit will be the best resource to begin exploring the timing bottlenecks you are seeing. It will function slightly differently on the myRIO target than NI's other cRIO products, but it will still allow you to see how much time is being spent in which VIs. This along with your modular coding should allow you to trace which VIs and tasks are slowing down the program.