El 30 de septiembre de 2011 00:16, Alexis Berlemont <
[email protected]> escribió:

> Hi,
> [...]
> With insn_read, did you manage to acquire correct values at least?
>
>
Dear Alexis,

insn_read does indeed work. If I run "insn_read -S 1000" I get my input
sampled at approx 125kHz. Running cmd_read with and without '-m' only
returns 0x8000.

I have been playing around with __a4l_info and the driver code to track down
my problem. I am not familiar at all with low-level DAQ programming, so I
just followed my intuition.

I modified
buffer.c:a4l_read_buf and buffer.h:__consume

to dump the values that were being consumed from the internal buffer. There
I found the infamous 0x8000, so my conclusion is that those values are
traveling along the kernel side. I decided I would go the other way around
and modified

drivers/analogy/national_instruments/mio_common.c: handle_a_interrupt
and drivers/analogy/buffer.c: a4l_buf_evt

I guess that interrupt is being generated every time a DMA transfer has
been completed from the DAQ to analogy's internal  buffer. I dump variable
"count" in a4l_buf_evt and it always reports the appropriate byte count to
be transferred, which is "number of channels" * 2.

My guess is that the DMA transfers are being performed to the wrong place,
because the whole procedure seems to be working ok otherwise.

All help is appreciated,
Fernando
_______________________________________________
Xenomai-help mailing list
[email protected]
https://mail.gna.org/listinfo/xenomai-help

Reply via email to