03-28-2014 04:28 PM
Hello All,
I'm running LabView 2013 and have updated all the drivers and versions on my local computer and also on the Single Board RIO 9636 I am using. My goal is to measure 4 analogue inputs corresponding to four different microphones and then output each individual signal as a waveform. I am attempting this using 4 DMA FIFO's.
The problem I'm running into is that I am not able to read data in the RT Microprocesssor VI when using the 4 FIFO.Read methods. I am rather new to labVIEW and programming using an FPGA. I have enclosed both block diagrams for informational purposes. I thank you all in advanced for any assistance you may be able to provide.
Solved! Go to Solution.
03-28-2014 05:20 PM
I don't think any cRIO supports more than 3 DMA channels, although I could be wrong. What happens when you run this code? You didn't explain the problem, other than to say that you are not able to read the data.
Your error handling is all sorts of weird. Are you sure no error occurs somewhere along the way? Clean up the error wires. You should not have the feedback node, and you shouldn't loop the error wire back into the while loop. It looks like your goal was to stop the while loop if an error occurs, but that's not what will actually happen. Try running the code with execution highlighting turned on. Also, try starting with a single microphone and don't branch the error wire or the FPGA reference anywhere. Once you have a single microphone working, then add the others.
03-28-2014 05:55 PM
Hey Nathand,
I followed your advice and did not get any errors. Everything executed fine. I have attached a new block diagram and front panel just with a single microphone. What happens is that the data out of the FIFO is just 1 and the actual data coming in is not. I included a read method to compare values. I hope this helps.
03-28-2014 06:14 PM
mcoe12 wrote:
What happens is that the data out of the FIFO is just 1 and the actual data coming in is not.
AH! If you'd said that in the first place, I might have identified the problem in the first post. It looks like your data types don't match - the fixed-point configuration for the DMA FIFO does not match the data coming from the analog input. That's what the small red "coercion dots" are showing you on the FIFO Write. My guess is that's why the data isn't coming through correctly.
While you're changing numeric representations, also change the Sample Rate so it's an integer, to match the timer input.
03-28-2014 06:19 PM
03-31-2014 12:43 PM
Thanks Nathand, It worked.
I shall remember the red dots for the rest of my life now.
03-31-2014 12:49 PM
Glad to hear that fixed it! By the way, the coercion dots are not necessarily bad - think of them more as warning than an error. There are many situations in which they're harmless and unavoidable - for example, wiring together data of the same type where one is a type definition and the other is not - so don't panic and try to eliminate one just because you see it, but make sure you understand the cause.