I am releasing a first device driver for the Computer Boards
PCM-DAS16s/16. 
It is a 16 channel, 16 bit, 100Ksps PCMCIA ADC card.

Hopefully as the driver becomes more full featured it can be used for
in-the field Linux data acquisition.  We use it for 'performance
control' (motion control).
Give it a try ...

The driver will soon be available on ftp://ftp.fsmlabs.com/pub/rtlinux
It is currently on ftp://sourceforge.org/pcmcia/contrib/

I have attached the README file here.

-- 
Steve Rosenbluth
Jim Henson's Creature Shop
2821 Burton St, Burbank CA 91505
(818) 953-3030
file: README

/*======================================================================
    das16s    v0.02    Mar 1 2000

    PCM-DAS16s/16 real-time PCMCIA client driver

    for Real Time Linux kernels only, at present.
    see http://www.rtlinux.org

    by Steve Rosenbluth ([EMAIL PROTECTED],
                            [EMAIL PROTECTED])

    Copyright (C) 2000 Jim Henson's Creature Shop (Los Angeles)
======================================================================*/


Welcome to the preliminary documentation of the driver for the
Computer Boards PCM-DAS16s/16 (16bit, 16 channel, 100Ksps PCMCIA ADC card)
This is an alpha release  - use at your own risk.

The card is now operational in continuous and "burst" mode. 
Note that "burst mode" means the use of an external multiplexer (which you
probably don't have) which can switch into one of four banks. So a "burst" lasts
for a maximum of 4 channel scans, at present.

This is a standalone device, use ioctl() to configure it and read() to get data
out of it. It obtains a dynamic device major at load time.

It was developed on RTLinux 2.0 for kernel 2.2.13 and pcmcia-cs 3.1.8 . It has
not been tested on anything else.


How to use it:

To compile, modify the Makefile in the "clients" directory of the pcmcia source
tree. a sample Makefile is supplied here, diff it with the original ...
After a make, put das16s.o in /lib/modules/2.2.13/pcmcia

Insert the card, or do a "cardctl insert <socketnum>" .

To load the driver, you must modify the "config" file in /etc/pcmcia to add
bindings, etc.  A sample "config" is supplied here, diff it with the original...
You must also add a "daq" file in this directory to create the device. a sample
is supplied here - make sure it has execute permissions.

The device will be "/dev/das16s" when created.
To configure this device, use das-config.c . das-config basically
loads a struct with configuration constants and sends it to the driver with an
ioctl().

Use readdas.c to read the device. It is hard coded to read one "result packet"
at a time.  The device must be read in multiples of "result packets" up to a
total of 32, which reflects the capacity of the card.
Include the das16s-config.h header if you want to make your code interface with
the driver, it contains all configuration definitions.



To Do:

This is a RTLinux only driver, though I plan on revising it for regular Linux as
well.

The data is raw, calibration constants are not yet used to correct gain and 
offset errors.  

The driver isn't yet optimised for samples on a single channel only, but it 
does do variable length channel scans.

The configuration is hard-coded to a single name, and it makes the driver minor
number 0, so multiple cards won't work yet.

The driver doesn't yet handle blocking IO, you must read w/ the O_NONBLOCK flag
set.

At very low counter frequencies (like 30 Hz) the end of channel scan IRQ comes
before the end of the scan. I worked around this but took the workarounds out in
the current handler.

Eventually the Comedi API should be supported.

-----------------------------------------------------------------------------
email me if you have questions, suggestions.

-Steve

Reply via email to