Hobbyist Toolkit

cancel
Showing results for 
Search instead for 
Did you mean: 

Timed loops with LINX and beaglebone?

I am communicating with a custom amplifier with LINX on a beaglebone and am currently using while loops. This works great, but, since I am filtering the incoming signal, I would rather have a constant sampling rate. For this reason, I am trying to convert my while loops to timed loops, but for the life of me, I can't figure it out. 

 

The attached simplified vi configures our amplifier (which works) and then proceeds to the timed loop. The timed loop fails with error:

 

 

Error -832 occurred at an unidentified location

Possible reason(s):

LabVIEW: (Hex 0xFFFFFCC0) The Priority Mapper Table is full.

 

NI gives the guidance explanation for -832: The Priority Mapper Table is full. Timed structures must use one of the existing priorities already in the Priority Mapper Table.

 

 

As far as I can tell, there is no other mention of this Priority Mapper Table on NI's site, nor has anyone mentioned it in the forums. How do I see existing priorities? Do I have to make a priority group and add my timed loops name (even with no other timed structures in the VI)? Is it even possible to use timed loops with LINX SPI communication?

 

I've watched tutorials and read through a pdf describing timed loops, but, based on my experience with LabVIEW and my lack of experience with timed loops, I feel that I am missing something very obvious about timed loops... Any help would be greatly appreciated.

0 Kudos
Message 1 of 7
(637 Views)

Where exactly are you running this code?

 

(What does filtering have to do with the loop rate? If it takes longer that the loop period, not even a timed loop can help you.)

 

(And why are you using one-iteration-for-loops as glorified sequence frames?)


LabVIEW Champion. It all comes together in GCentral GCentral
What does "Engineering Redefined" mean??
0 Kudos
Message 2 of 7
(631 Views)

The code is running on the BeagleBone black.

 

If the sampling frequency is varying, I have to re-initialize the filters (I think). The filter isn't shown as I was just trying to get the timed loop functionality working. With all my processing and two while loops working, I get around 200 Hz, but it varies between 180-220Hz. I'd much rather set my sampling rate at something like 160Hz, as long as it was consistent, as I could then rely on the outputs from my filter.

 

"(And why are you using one-iteration-for-loops as glorified sequence frames?)" haha yes, agreed. I'll be changing that next (after I get the timed loop to work). We were having major problems configuring our amplifier through LINX, so the single for loops were just temporary.

 

Regardless, I can't get any timed loop examples to work as deployed on the beaglebone.

0 Kudos
Message 3 of 7
(628 Views)

@arcraik wrote:

Regardless, I can't get any timed loop examples to work as deployed on the beaglebone.


Sorry, I don't have any experience with this and cannot help you further. I suspect that timed loops might not be supported on this platform. Hopefully, somebody with more knowledge will chime in. Good luck!

 

 


LabVIEW Champion. It all comes together in GCentral GCentral
What does "Engineering Redefined" mean??
0 Kudos
Message 4 of 7
(620 Views)

Ahh ok. Thanks anyways!

0 Kudos
Message 5 of 7
(611 Views)

Timed Loops are a LabVIEW Real-Time specific feature. They are sort of supported on LabVIEW for Windows but do not behave the same way.They specifically make no guarantees whatsoever under Windows that the timing is accurate as you specify it but simply try to get close to it. They also hack deep into Windows interna to even get that working.

And to make matters worse, you can get strange effects with timed loops under Windows, that could be considered bugs except that NI never guaranteed that they would work the same as under the Real-Time platform (and even stated so officially on several occasions).

 

Your Beaglebone Black or Raspberry Pi version of the LabVIEW Runtime that executes your deployed VIs may feel to you like a LabVIEW Real-Time target (and they work the same in terms of how they are integrated into a LabVIEW project) but they are more like a normal LabVIEW for Linux Runtime target. NI simply did not go and invest additional resources in making a feature like this, that never was guaranteed to work on anything else than NI Linux RT, work on a target they will not receive any money for ever. It's a lot of work to get something as funky as a Timed Loop run properly and it is extremely platform specific.

Rolf Kalbermatter
Averna BV
Message 6 of 7
(563 Views)

Oh ok thanks for the info. Any ideas on how best to constrain the sampling rate for LINX on BBB? Or filtering with a variable sampling rate? Thanks for all of your help!

0 Kudos
Message 7 of 7
(533 Views)