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