.\" .\" Copyright (c) 1998 Scottibox .\" 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 January 6 1998 .\" See http://www.scottibox.com .\" http://www.indcompsrc.com/products/data/html/aio8g-p.html .\" http://www.indcompsrc.com/products/data/html/at16-p.html .\" .\" Written by: Jamil J. Weatherbee .\" .\" .Dd January 6, 1998 .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 and .Pa .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.scottibox.com 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 .