Schrödinger's Analog Trigger?

I’m trying to use the AS5030 rotary magnetic encoder from Austria Microsystems.
I have it wired for the sin/cos outputs cause I want to use it measure RPMs
off a CIM. There are no bundled Labview examples of using the AS5030. There’s
an exmaple here in CD using it in SPI mode, not analog sin/cos. A team
did post an example over at ni.com and I started with that example:

https://decibel.ni.com/content/servlet/JiveServlet/download/34148-44546/Magnetic%20Encoder%20and%20Motor.zip

The full post starts here:

When I try this example, it fails right from the getgo at WPI_AnalogTriggerOpen.vi.
THe error is:

Error -63195 occurred at Read/Write Control in
FPGA_AnalogTriggerWriteUpperLimit.vi->WPI_AnalogTriggerOpen.vi->Magnetic Encoder with Motor v2.vi

Possible reason(s):

NI-RIO: (Hex 0xFFFF0925) The handle for device communication is invalid or has been closed.
Restart the application.

It’s FPGA_AnalogTriggerWriteUpperLimit.vi that is emitted the error.
I went into Analog Trigger Open and turned on highlight execution to see
what I could see… With highlight execution enabled it all works!! Consistently!
So it only works when you are watching…
I’ve attached a picture and of the execution path when it works (highlight execution enabled)

So I’m guessing it’s a race condition somewhere in the libraries. Are
other folks seeing this issue? Is there a fix or a workaround? What is the right
vehicle for reporting WPI library bugs?

Thanks,

Pete, Team 2590<br><br>![WPA_AnalogTriggerOpen.vi..PNG|690x500](upload://i7fbfTSVQ9Vk9QwWZ73Thg35Tr1.png.png)<br><br><br>![WPA_AnalogTriggerOpen.vi..PNG|690x500](upload://i7fbfTSVQ9Vk9QwWZ73Thg35Tr1.png.png)<br>

I think you have found a minor bug that was introduced in the analog triggers. Since they aren’t used very often, it looks like it was overlooked in the beta program.

The issue is that this Open seems to be taking place in Begin before the FPGA refnum is valid. The Open tries to access the FPGA and doesn’t ensure that it is loaded and stored first.

If you want to work around it to control the race condition, wire the Error Out of the RobotDrive or other blocks into the AnalogTrigger Error in. This will sequence the Trigger Open later and avoid the issue. This will be fixed in the next update.

Greg McKaskle

Wouldn’t one typically open the Analog Trigger based on a refnum from an already-opened Analog Input? That would keep the problem from showing up in an actual application. It only fails because the example is “constructing” a refnum without really opening the resource it refers to.

Sounds right Alan. Probably explains it.

Greg McKaskle

FYI, There is an example built into LabVIEW for the AS5030 using the analog output. It’s called Magnetic Encoder with Motor.