freebsd-nq/share/man/man4/man4.i386/alog.4

147 lines
5.8 KiB
Groff

.\"
.\" Copyright (c) 1997 Jamil J. Weatherbee
.\" All rights reserved.
.\"
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer
.\" in this position and unchanged.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. The name of the author may not be used to endorse or promote products
.\" derived from this software without specific prior written permission
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
.\" Industrial Computer Source model AIO8-P
.\" 8 channel, moderate speed analog to digital converter board with
.\" 128 channel MUX capability via daisy-chained AT-16P units
.\" alog.c, character device driver, last revised December 9 1997
.\" See http://www.indcompsrc.com/products/data/html/aio8g-p.html
.\"
.\" Written by: Jamil J. Weatherbee <jamil@freebsd.org>
.\"
.\"
.Dd December 9, 1997
.Dt ALOG 4 i386
.Os FreeBSD
.Sh NAME
.Nm alog
.Nd
Industrial Computer Source AIO8-P driver
.Sh SYNOPSIS
.Cd "device alog0 at isa? port 0x260 tty irq 5 vector alogintr"
.Sh DESCRIPTION
This driver supports the Industrial Computer Source \fIAIO8-P 8-Channel
12-Bit Analog Input board\fP.
.Pp
This board provides 8 12 bit, single-ended analog input ports.
The driver also directly provides support for up to 8 daisy chained
\fIAT16-P Programmable Analog Multiplexers with 16 Differential Inputs\fP.
This makes it possible to sample up to 128 differential channels with a single
interface board.
Use of at least one \fIAT16-P\fP is highly recommended as the \fIAIO8-P\fP
offers no signal conditioning options and only operates in a -5 to +5 Volt
input range. However, if you wish to use the \fIAIO8-P\fP standalone,
insert the following into your kernel
.Xr config 8
file:
.Bd -literal -offset indent
options ALOG_CHANNELS=8
.Ed
.Pp
Selection of the input port is through the minor number:
.Pp
.Bd -literal -offset indent
The 8 bit minor number format is UCCCCMMM, where
U: board unit (0-1)
CCCC: external multiplexer channel (0-15) (on AT-16P units)
MMM: internal multiplexer channel (0-7) (on AIO8-P card)
.Ed
.Pp
.Xr devfs 5
device node names are of the form: alog[0-1][a-p][0-7]
.Pp
.Sh IOCTL
The following
.Xr ioctl 2
calls apply to
.Nm
devices. Their declaration can be found in the header files
.Pa <sys/alogio.h>
and
.Pa <sys/dataacq.h>
.Bl -tag -width AD_MICRO_PERIOD_SET
.It Dv AD_MICRO_PERIOD_SET
Takes a pointer to a long argument specifying the number of microseconds
between samples. Half of this is used as the external multiplexer
settling time and the other half as conversion time.
.It Dv AD_MICRO_PERIOD_GET
Takes a pointer to a long argument and returns the current number of
microseconds between samples.
.It Dv AD_NCHANS_GET
Takes a pointer to an integer and returns the number of channels the board
supports. This should be 8 for a standalone \fIAIO8-P\fP or 128 for any
other setup.
.It Dv AD_FIFOSIZE_GET
Takes a pointer to an integer and returns the size of the fifo in
entries. The compile time option ALOG_FIFOSIZE is by default set to 64.
.It Dv AD_FIFO_TRIGGER_GET
Takes a pointer to an integer and returns the minimum number of entries a
fifo must contain to cause
.Xr poll 2
to return. This by default is set to 1.
.It Dv AD_FIFO_TRIGGER_SET
Takes a pointer to an integer specifying the minimum number of entries a
fifo must contain to cause
.Xr poll 2
to return.
.It Dv AD_START
Starts the clocked accumulation of sample values into a channel's driver fifo.
When a channel is first opened its software fifo is initialized in the
stopped state. This is to prevent high sample clocks from overrunning the
fifos before the user is ready to read from the channel. The driver
automatically performs an AD_START when the user issues the first read,
except for channels opened with the O_NONBLOCK flag which must explicitly
have an AD_START issued.
.It Dv AD_STOP
Stops the clocked accumulation of sample values into a channel's driver fifo.
.Sh BUGS
On the \fIAIO8-P\fP, interrupt driven conversion (the only type
supported by the
.Nm
driver) is facilitated through 8253 timer #2. In order for interrrupts to
be generated you must connect line 6 to line 24 (counter 2 output to
interrupt input) and line 23 to line 29 (counter 2 gate to +5VDC).
The design of the \fIAIO8-P\fP precludes the use of programmable
gain control.
.Pp
Use the combination of non-blocking i/o,
.Xr poll 2
and a custom fifo trigger
wherever possible, especially with large numbers of open channels.
Using this method, multichannel sample rates as high as 16,000 samples/sec
have been observed.
.Pp
Sample rates lower than 32 Hz are not supported.
.Sh SEE ALSO
.Bd -literal
http://www.indcompsrc.com/products/data/html/aio8g-p.html
http://www.indcompsrc.com/products/data/html/at16-p.html
.Ed
.Sh AUTHOR
Jamil J. Weatherbee <jamil@freebsd.org>.