All of lore.kernel.org
 help / color / mirror / Atom feed
* [Xenomai-help] analog output device with comedi/analogy
@ 2009-10-28  6:53 Jonas Buchli
  2009-10-28  8:33 ` Alexis Berlemont
  0 siblings, 1 reply; 2+ messages in thread
From: Jonas Buchli @ 2009-10-28  6:53 UTC (permalink / raw)
  To: xenomai

Dear all,

we are trying to get a National Instruments DA/AD card (NI PCIe 6259, 
see link below) working with comedi/analogy.

The drivers seem to be doing something, I can pull up the analog outputs 
to 10V (max voltage) using the example program cmd_write. So I think the 
issues I am having are stemming from not understanding and using the API 
correctly rather than driver issues (but I might be wrong).

Thus, I am trying to understand how to actually write a waveform to the 
analog output and am so far not very successful and the comedi doc seems 
a bit cryptic and scarce to me in this respect.

- Does anyone have example code how this is done?

- Is the correct procedure to issue first a command (comedi_snd_command) 
and then use the write command (comedi_sys_write) to achieve this?

- Interestingly the write command (comedy_sys_write) is not the one 
responsible for pulling up the output, it seems to already happen in the 
comedi_snd_command.

- My current approach was trying to modify the cmd_write example. Is 
this a good idea?

Any help and pointers would be greatly appreciated!

Thanks a lot and best regards
Jonas


PS:
Card being used NI PCIe 6259:
http://sine.ni.com/nips/cds/view/p/lang/en/nid/14128










^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [Xenomai-help] analog output device with comedi/analogy
  2009-10-28  6:53 [Xenomai-help] analog output device with comedi/analogy Jonas Buchli
@ 2009-10-28  8:33 ` Alexis Berlemont
  0 siblings, 0 replies; 2+ messages in thread
From: Alexis Berlemont @ 2009-10-28  8:33 UTC (permalink / raw)
  To: Jonas Buchli; +Cc: xenomai

Hi,

On Wed, Oct 28, 2009 at 7:53 AM, Jonas Buchli <jonas@domain.hid> wrote:
> Dear all,
>
> we are trying to get a National Instruments DA/AD card (NI PCIe 6259,
> see link below) working with comedi/analogy.
>
> The drivers seem to be doing something, I can pull up the analog outputs
> to 10V (max voltage) using the example program cmd_write. So I think the
> issues I am having are stemming from not understanding and using the API
> correctly rather than driver issues (but I might be wrong).
>
> Thus, I am trying to understand how to actually write a waveform to the
> analog output and am so far not very successful and the comedi doc seems
> a bit cryptic and scarce to me in this respect.

You are right. There is not enough documentation.

You may already know but here are just a few lines to sum up:
1) Analogy is derivation of Comedi. So we get the same notions:
 - Driver attachment to comedi / analogy device
 - Synchronous acquisition: with instructions;
 - Asynchronous acquisitions: with commands, read, write, mmap, etc.;

Documentation on that point is clearly lacking. This issue will be
solved as soon as possible. In the meantime, you can have a look at
comedi.org documentations. These notions are detailed.

2) Analogy is not just a port, many things have been rewritten:
- We tried to adapt the driver API

- The User API provided by the library (the point in which you have
interest, I guess), has changed too. We have tried to clean-up the
layering, so you will find three layers:
- Level 0: Interface with the kernel side (not to be used);
- Level 1: Interface thanks to the "notions" above (*_snd_insn,
*_snd_cmd, *_cnd_cancel)
- Level 2: Easy access interface (*_sync_read, *_sync_write,
*_async_read, *_async_write + conversion functions)

So if you want to perform a synchronous acquisition,
-> you can just call *_sync_read() (level2), this function will be in
charge of managing the instructions

If you want to perform an asynchronous acquistion,
-> you have to call *_snd_command() (level1: it was difficult to
abstract this notion)
-> after you can call *_async_read() (level2), this function will be
in charge of calling, read(), poll(), etc.

Info on that point can be found in the Doxygen documentation in:
http://www.xenomai.org/documentation/xenomai-head/html/api/index.html

It is a snapshot anterior to the comedi -> analogy renaming; then you
still have to look for Comedi to get the doc.
Xenomai API
  -> Modules
    -> Comedi API
      -> Driver API (not interesting for you I suppose)
      -> Library API
        -> Level 0 API (Syscall API)
        -> Level 1 API
        -> Level 2 API

The "comedi_" prefixes have to be replaced by "a4l_" (that was why I
used "*_" as prefix in these few lines).

I will try to add more docs as soon as possible.

> - Does anyone have example code how this is done?

So far, the example code is located in our little test programs set
(cmd_read, cmd_write, insn_read). I tried to make them easy to read
(everything is linear).

Feel free to tell what you expect.

> - Is the correct procedure to issue first a command (comedi_snd_command)
> and then use the write command (comedi_sys_write) to achieve this?
>
> - Interestingly the write command (comedy_sys_write) is not the one
> responsible for pulling up the output, it seems to already happen in the
> comedi_snd_command.
>
> - My current approach was trying to modify the cmd_write example. Is
> this a good idea?

I think so.

> Any help and pointers would be greatly appreciated!
>
> Thanks a lot and best regards
> Jonas
>
>
> PS:
> Card being used NI PCIe 6259:
> http://sine.ni.com/nips/cds/view/p/lang/en/nid/14128
>
>

Alexis.


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2009-10-28  8:33 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-10-28  6:53 [Xenomai-help] analog output device with comedi/analogy Jonas Buchli
2009-10-28  8:33 ` Alexis Berlemont

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.