11-30-2005 09:15 AM
11-30-2005 10:35 AM
12-01-2005 02:41 AM
12-01-2005 10:50 AM
Abmape,
I have a feeling the CPU on your controller might be throttling itself down
because of a high internal temperature. The 818X series (and most modern PCs)
have a heat protection mechanism that can step the core frequency down (usually
to half the expected speed) if it detects it's running too hot. I believe that
in the case of the 818X series, the thermal protection kicks in if the thermal
diode by the processor detects a temperature higher than 90 degrees Celsius.
I took a look at your VI and it all seems ok. You have correctly written it to
avoid any source of jitter in your Time Critical loop (Memory allocations,
controls and indicators, etc) So the timing variation is likely
explained by something external, and my first guess would have been the Legacy
USB interrupts, as Stephan suggested. The funny thing is that it's probably not
your simulation loop that's taking most of the CPU time; it's probably the
empty (free-running) normal priority loop that's making it warm and cozy inside
the PXI chassis.
Try running the attached VI for a while. It's a simple benchmarking VI that
will show you if your CPU is throttling itself or not. The throttling should
become pretty obvious as the operations per second (or ms) should drop to
approximately half or a third (depending on the stepping algorithm)
If you do find that the CPU is throttling, try this:
1) Clean the filters on the back of your PXI chassis
2) Make sure the FAN setting on your PXI chassis is set to the highest setting.
National Instruments does test and spec all their PXI controllers to function
at full speed within the specified temperature range, but one has to make sure
the PXI chassis is in a state capable of removing the generated heat from
within the chassis (clean filters and fans not forced to the low speed
setting).
As to the "crazy wave" pattern, it could be considered expected
behavior if the contents of your loop are taking more than 1 ms to execute, in
which case the loop misses its deadline and has to wait for the next ms
multiple (you are using the "wait until next multiple" call) before
it executes again. You'll notice that the numbers you get roughly
correlate to waiting until the next ms multiple. In this case, assuming the
heat throttling theory is correct, you can see the loop take more than one ms only
when the CPU has throttled itself down.
I hope this helps,
Alejandro
12-02-2005 05:43 AM
12-02-2005 12:25 PM
12-12-2005 03:53 PM
12-15-2005 04:44 PM
12-16-2005 02:04 PM