DAS8X BOARD DRIVER:
INTRODUCTION:This single DAS8X driver is designed to support a wide range of boards from the DAS-8 family originally offered by Keithley Metrabyte, but now also available from (and expanded upon by) other board makers such as Computer Boards and CyberResearch. Supported board models and features include:
MANUFACTURER'S SPECIFICATIONS: Keithley # +/- Ranges How? Clk DAC I/O Metrabyte: ------------------------------------ DAS-8 1 5 V F Bus - 7 DAS-8/LT 1 5 V F Xtal - 7 DAS-8PGA 5 10 to 0.01 V P Xtal - 7 DAS-8PGA/G2 4 5 to 0.625 V P Xtal - 7 DAS-8/AO 5 10 to 0.01 V P Xtal 2 7 Computer Boards: CIO-DAS08 2 10 and 5 V S Bus - 31 CIO-DAS08-PGH 8 10 to 0.005 V P Xtal - 7 CIO-DAS08-PGL 5 10 to 0.625 V P Xtal - 7 CIO-DAS08-AOH 8 10 to 0.005 V P Xtal 2 31 CIO-DAS08-AOL 5 10 to 0.625 V P Xtal 2 31 CyberResearch: CYDAS 8 2 10 and 5 V S Bus - 31 CYDAS 8PGL 5 10 to 0.625 V P Xtal - 7 CYDAS 8PGM 5 10 to 0.01 V P Xtal - 7 CYDAS 8PGH 8 10 to 0.005 V P Xtal - 7 CYDAS 8AOL 5 10 to 0.625 V P Xtal 2 31 CYDAS 8AOM 5 10 to 0.01 V P Xtal 2 31 CYDAS 8AOH 8 10 to 0.005 V P Xtal 2 31 Legend: F = Fixed, P = Programmable, S = Switch Bus = PC ISA bus/2, Xtal = 1 MHz I/O = Total digital inputs and outputs (31 = built-in 8255 ports) NOTE: Unipolar ranges not considered here. All of these boards have 8 analog input channels. All programmable gain models have differential inputs. The others are single-ended only. This driver does NOT support the DAS08/Jr or DAS800 board families.
DAS8X CONFIGURATION PARAMETERS:
PARAMETER OVERVIEW:This driver allows you to specify certain parameters on the DAS8X.ADC line, which must be the second line of the DQA.CFG file. Each parameter is given as a letter and colon, followed immediately by a value or text string. Use a space between parameters. For example:DAS8X.ADC A:h310 M:DAS08 I:7The order of the parameters is not important for this driver, with the exception of the C: Channel and R: Range entries. The parameter letters are case-insensitive, as are the entries that follow the colons, except as noted for External Pacer selection using the S: parameter. Daqarta does not use any SET lines in your AUTOEXEC.BAT file, nor does it use any non-Daqarta drivers or libraries that may have been supplied by your board manufacturer. You can check to see which parameters have been set, either via the configuration line or by default, by checking the board information summary available via the ALT-H Plug-In Help system. This also shows a summary of the default values for all parameters. There is no need to enter any parameter that is the same as the default value assumed by the driver.
A: ADDRESS:Use this to tell Daqarta the base I/O address for your board. This should match the value selected by the DIP switches on the board, which usually comes from the manufacturer with a default setting of 300h (hexadecimal). To tell the Daqarta parameter parser that the value is in hexadecimal, precede it with an 'h', as in:DAS8X.ADC A:h310The default address assumed by the driver is h300. The value you enter is not validated against any standard list. Daqarta looks for the board at the address given, and if it does not find a valid DAS08 or DAS-8 compatible board there it exits with: 'DAS8X board not found.'The only exception is if you set A:0 to allow viewing of this board Help system without having a board installed or properly configured.
B: BITS PRESET (8 or 12):This pre-sets the Bits control to 8 or 12 bits. Most users will want to omit this parameter and accept the default 12-bit operation. This only affects the initial mode... you can toggle to the other from the board menu Bits control.You will generally be able to use somewhat faster sample rates with 8-bit mode. With most modern CPUs, you can sample faster than the specified conversion speed of the ADC on your board, so you may want to modify the S: Speed parameter as well.
16-BIT MODELS:Board manufacturers are beginning to convert some of their products from 12-bit to 16-bit ADC chips. Although no 16-bit DAS8X-series boards have been announced as of this writing, if and when they are you should use B:16 to specify them. It is expected that due to differences in converter types, these will not support 8-bit mode, so the board menu Bits control will be permanently set to show 16 bits.
C: CHANNEL PRESET:This parameter allows you to change the default channel that will be used when you first activate this driver via the Board option. Valid channel numbers are 0 through 7. For example:DAS8X.ADC C:3would set channel 3. You may change the channel from the board's control menu during operation. If your board Model has programmable gain, there is an interaction between the C: Channel and R: Range parameters on control of range tracking. If you give the Range first and then the Channel, the initial condition will allow Independent adjustment of each channel's range from the menu. If you give the Range after the Channel, then initially all channels will be changed when you change the Range item from the menu. One way to remember this sequence is to think about the R: parameter position relative to the C: parameter. If Range is the Initial parameter, then the ranges are Independent. If it comes After, then the ranges All change together. If you just use a C: Channel parameter but no R: Range parameter, all channels will initially be at the default +/- 5 Volt range, but Independently adjustable. Of course, if your board does not have programmable gain, then the channels All have the same range.
F: HELP FILE OMIT:This driver normally attempts to load this associated Help file on start-up, and exits with an error message if it can't find it. Setting F:0 on the ADC configuration line tells the driver not to look for the file. You would probably only want to use this option if you are really short of DOS memory, since loading the Help file only increases memory use by a few hundred bytes for its separate link stack and directory. (The file itself shares the text buffer of the Main Help file.)Note that ALL Help files, including main, can be omitted via an F:0 parameter on the INIT line (first line) of the DQA.CFG file. If this is present, no individual module Help will be loaded.
I: IRQ (Interrupt Request):The DAS8X-type boards allow RTime processing by means of an interrupt for each sample. The desired Interrupt Request is selected via a jumper block on the board. IRQ values from 2 through 7 may be selected here. For example:DAS8X.ADC I:7would indicate to this driver that you had set the jumper to the IRQ 7 position. The IRQ is typically used in conjunction with the on-board 8254 timer-counter chip to provide sample rate pacing. However, to allow the counter output to generate the RTime interrupts, you must also externally connect the Counter 2 output (pin 6) to the Interrupt Input (pin 24). If you are using an External Pacer, it must be connected to pin 24 in lieu of the counter output. If you don't supply an I: parameter, the DAS8X driver will attempt to determine which jumper is set, if any. It can only do this if the above external connection is present. If it doesn't find the external connection, or if it does but finds no jumper set, it will use the motherboard system timer and its associated IRQ 0 instead. However, if you do specify an IRQ and the driver determines that the corresponding jumper is not set, Daqarta will exit immediately with: 'Specified IRQ jumper not set on board.' If you have made the external connection and set the IRQ jumper, you may still elect to use the system timer and IRQ 0 by giving an I:0 parameter. Why would you want to do this? IRQ 0 interrupts take slightly less time to process than do those generated by the ADC board, so you may be able to run somewhat higher RTime sample rates on a slow system. Also, there may be times when you want to use the different timing resolution of the system timer to better align some fixed incoming signal frequency for an integer number of cycles per sweep. The I:0 option is not available with External Pacer use. In that case, an IRQ jumper must always be used, although it need not be specified explicitly with an I: parameter. You may want to avoid setting IRQ 2 on most machines, since it is redirected through IRQ 9 on the second interrupt controller and thus requires an extra End Of Interrupt (EOI) command to acknowledge each interrupt. This takes a little more time and could reduce the maximum sample rate possible in RTime mode. It will have no effect on Sequential mode. For PC or XT systems with an 8088 CPU there is only one interrupt controller, so the extra EOI command is not used and performance is not affected. No board interrupt is used in Sequential mode, only when RTime is active. Since RTime operation is interrupt-driven, you may need to use the special DDISK13 BIOS-replacement driver for DDisk recording. This will only work with drives of 528 Meg or less. For larger drives, you will need to conduct your own tests to see if you can get suitable glitch-free recordings at your chosen sample rate, etc.
J: JUMPER (Simultaneous DAC Update):Some AO (Analog Output) boards have a jumper that allows for simultaneous updates of the dual Digital to Analog Converters (DACs). Data is written to each DAC sequentially, but the actual outputs do not change until a special command ("reading" DAC 0) causes both to change at once to their respective new values. This is probably not important for most applications when using a fast CPU, since the difference is typically much less than a microsecond anyway. But for critical work, where you need to keep both outputs closely aligned in time, use this option. After setting the appropriate jumper on your board, use J:1 to tell this driver to issue simultaneous update commands.Keep in mind, however, that this extra command takes more time on each sample, and can thus reduce maximum sample rates. This is of course more significant on slower systems, exactly where you are more likely to want simultaneous updates. The best course is to omit this option unless you are certain you need it.
M: MODEL NAME:Use this command to tell the driver which board you have. For example, if you have a DAS-8/AO board, the configuration line might look like:DAS8X.ADC M:DAS-8/AOIf you enter an unsupported model name, Daqarta will exit with: 'M: Model not recognized. Supported models are: Keithley Metrabyte: DAS-8 DAS-8/LT DAS-8/AO DAS-8PGA DAS-8PGA/G2 Computer Boards: DAS08 DAS08-PGL DAS08-PGH DAS08-AOL DAS08-AOH CyberResearch: CYDAS-8 CYDAS-8PGL CYDAS-8PGM CYDAS-8PGH CYDAS-8AOL CYDAS-8AOM CYDAS-8AOH'The models must be specified as shown, although case doesn't matter. Do not use a CIO- prefix for Computer Boards models. Also, since the Daqarta parameter parser uses spaces as separators, no embedded spaces may appear within a parameter string. For this reason, CyberResearch models must use a hyphen that is not part of the true model number, such as CYDAS-8PGL for the CYDAS 8PGL model. For boards from other makers you must use the closest equivalent model from the above list. Compare the features of your board with those in the features table to assist in this determination. If you omit the M: parameter, a basic DAS08 or DAS-8 board will be assumed. Certain tests are performed in an attempt to validate the model number, but it is not possible to distinguish among all models via software. However, if the installed board is clearly not as indicated, Daqarta will exit immediately with: 'Wrong board Model given via M: parameter.'This message will be given even if you didn't use any M: parameter at all, if it is determined that the board could not be one of the default models. Some of the differences between models are of no consequence to the driver, such as the presence of a 1 MHz clock on the Keithley Metrabyte DAS-8/LT where the plain DAS-8 uses the computer bus clock instead. If the clock is wired up for use as a pacer, the driver will determine its frequency correctly... you can call it either one and it will work the same. If your "clone" board has missing ranges compared to the supported model, you may be able to use it anyway and just avoid trying to set any non-existent ranges. Also, if your board differs from the supported models in the presence or absence of a parallel port, note that you can force Daqarta to ignore a port that is otherwise standard for a supported model, or to use a port that is not standard.
P: PARALLEL PORT ADDRESS:The P: parameter specifies a parallel port to be used for digital output via the STIM3 Stimulus Generator or equivalent. You can use either an 8255-type port, which is included on some DAS08 boards or may be installed as a separate board, or you can use an available LPT printer port.The 8255-type port occupies 4 consecutive addresses: Port A, Port B, Port C, and a Control Port. The Port A address is always used to indicate the base 8255 address. You should give the address in hexadecimal notation by preceding it with an 'h', as in: DAS8X.ADC P:h310This would specify Port A at 310 hex. If you want to use Port B or Port C for output instead, do NOT "adjust" this base address to 311 or 312... the driver needs the true base address in order to find the Control Port. Instead, we use a trick: Since A, B, and C are perfectly valid hexadecimal digits, the driver employs special tests to allow you to use the form P:h310B to specify Port B and P:h310C for Port C. Port A may be specified this way as well, if you want the parameter line to serve as a reminder of what port is in use... but it's not really needed, since Port A is the default. The DAS08, CYDAS 8, and all AO (Analog Output) models come with an 8255 as standard equipment. If you have specified one of these with the M: Model parameter (or accepted the DAS08 default model), you may omit the P: parameter and the driver will search at the appropriate location for the port, based upon the base address for the whole board. If you don't want to use the standard 8255 (maybe because it's wired for some other application), you can use P:0 and the driver will not even test for the chip. This will avoid any possible disturbance to equipment connected to these ports. If you want to use the standard 8255 on one of these models, but want to use Port B or Port C, you can use another form of the hex trick: Just give P:hB or P:hC and the selected port will be used, without having to specify its exact address. If you have a board with a standard 8255 that you don't want to use, and a separate 8255 board like the PIO-24 or PIO-12 from Keithley Metrabyte or the Computer Boards CIO-DIO24, you can specify any of those ports to be used instead just by giving the proper base address and relevant port letter as described earlier. Note that only the selected A, B, or C port is set to be an output... the other two ports are set as inputs. This allows other equipment to stay wired to them for other applications, since the inputs will just be ignored here. If the other application expects these to be inputs and there are active device outputs connected to them, then of course you don't want them to be forced to any possibly conflicting state. However, suppose the other application uses those ports as outputs, and you want to leave device inputs connected to them while you run the current application. In this case, you can't assume that those device inputs will never be activated: The pins of the 8255, even though set as inputs, will have some indeterminate high or low voltage state unless they are loaded with around 5000 ohms or less. If your device inputs don't provide this load, you could be in for a nasty surprise when the other device activates unintentionally.
CAUTION: When the other application later makes the port an output, it will have no trouble driving the device to either state with this "pull-up" or "pull-down" resistor present. Of course, if you are SURE that your device inputs already provide adequate loads, go ahead and skip the resistors...
USING AN LPT PRINTER PORT FOR DIGITAL STIMULUS OUTPUT:This option uses a conventional LPT or "Line PrinTer" port to obtain 8-bit digital output capabilities with board models that don't have built-in 8255 parallel ports. It may also find use in systems that have those ports, but where you want to keep them wired up for another application. To use this option with the P: parameter you must the form:DAS8X.ADC P:Lnwhere 'n' is the LPT number from 1 to 4. The printer port outputs will then be available for use by the DigOut option of the STIM3 Stimulus Generator. If the LPT 'n' value is not in the range of 1 to 4, Daqarta will exit immediately with: 'LPT value out of range.' Most computer systems come with a single standard printer port, and if you need more than that you will have to install a separate board. All DOS systems can support ports LPT1 through LPT3 "naturally", without special software. The system BIOS keeps a record of the location of each LPT that it recognizes, and that record is consulted to validate the LPT value that you use here. If there is no entry for the LPT number you give (L:3 in this example), Daqarta exits with a message like: 'LPT3 not recognized by BIOS.' 'BIOS recognizes only LPT1 to LPT2.'where the message will reflect actual LPT availability. Problems may be due to adding a new printer port board and getting the jumpers or switches wrong. Most boards allow designation as LPT1 or LPT2. If you need to add LPT3, be sure the board allows it before you buy. Some boards allow LPT4 use, but not all systems support this. For example, IBM PS/2 systems use the LPT4 location in the BIOS data area for other purposes. You can use the LTEST.EXE utility supplied with Daqarta to see the port addresses corresponding to each LPT, as read from the BIOS data area just like this driver does. A typical display would be: Printer Port assignments: LPT1: 0378h LPT2: 0000h LPT3: 0000h LPT4: 9FC0hIn this example, only LPT1 is installed, at address 378h. LPT2 and LPT3 are available, but LPT4 is clearly in use for something else. LPT ports are always assigned consecutively by the BIOS, so this can't be a hidden port. It's also beyond the highest possible port address of 3FFh. Even if LTEST shows that the LPT4 location is available to install a new port, you may need to run special software (supplied with your port board) to make use of it... not all BIOSes will assign this automatically on start-up. Whether or not you have an 8255 or LPT for digital output via STIM3, the four built-in digital outputs present on all DAS08-type boards will always be available for Pulse output.
R: INPUT RANGE PRESET:Use this parameter to specify the initial input Range control setting. This will become the initial range for all channels, and the range tracking control will start in the All position, unless a C: Channel parameter appears later in the ADC configuration line.For the DAS08, CYDAS 8, or any clone with switch-selectable ranges, the R: parameter has no effect on the actual range... it just tells the DAS8X driver how you have set the switches. This is a good place to keep track of the range setting, since the switches will probably be hard to reach in most installations. A typical use of the R: parameter in your configuration line would be: DAS8X.ADC R:10This would specify the +/- 10 Volt range. Ranges are all assumed to be bipolar, since there is no particular use for unipolar ranges with Daqarta. However, if you have a DAS08 with the switches set to the 0 to 10 Volt Unipolar range for some other application, you can use R:10U here. The Daqarta waveform display will show the same bipolar Y-axis as if you had set the +/- 10 Volt range, but waveforms will be confined to the positive half only unless you use the Zero option. The range you specify must be one that is valid for your board Model, and it must appear exactly as shown in the following Range Table. The driver treats entries as literal text, not numerical values, and must find an exact match in its internal list. Otherwise, Daqarta will exit immediately with: 'Invalid R: Range parameter.'If the range is valid, but not supported by the board, the exit message will be: 'Invalid R: range parameter for this model.' DAS8X RANGE TABLE:Allowable Range entries for each Model, +/- Volts implied except where U suffix is shown for Unipolar:DAS08-PGH DAS-8PGA DAS08-PGL DAS08-AOH DAS-8/AO DAS08-AOL DAS-8PGA/G2 DAS08 CYDAS-8PGH CYDAS-8PGM CYDAS-8PGL CYDAS-8 CYDAS-8AOH CYDAS-8A0M CYDAS-8AOL 10 10 10 5 10 5 5 5 2.5 5 1 1 2.5 1.25 10U 0.5 0.5 1.25 0.625 0.1 0.01 0.625 0.05 0.01 0.005 DAS08 RANGE SWITCHES:(On edge connector)+/- 5 V +/- 10 V 0 - 10 V []-- --[] []-- --[] []-- --[] []-- []-- --[] --[] --[] []-- S: SPEED:This parameter specifies the overall ADC conversion speed, in microseconds. It must be an integer between 5 and 50. The default setting is equivalent to:DAS8X.ADC S:25or 25 microseconds, for a 40 kHz maximum sample rate. This value is used as a limit when setting sample rate under menu control, and is only there as a safety net to prevent you from setting the rate so high that you get bad data. Although no DAS8X boards are known to convert anywhere near as fast as the 5 microsecond parameter limit at present (25 is more like it), board makers and ADC chip makers are continually working to increase speeds. So how do you determine when you are sampling too fast for your converter? The best way is to use a known input waveform and just keep increasing the sample rate. You will get to a speed where the waveform begins to get noisy and spiky. In RTime mode you may find that you can't run as fast as in Sequential mode... be sure to test both. Also, in RTime mode if you adjust the sampling rate to get the fastest setting that just eliminates spikes, you may find that the spikes reappear on each keystroke unless you slow the sample rate a lot more. You may want to avoid operating in this "twitchy" range for normal work, but it can be used if you are aware of the limitations and don't use any keystrokes during averaging or DDisk recording, for example. There are differences in maximum speed between use of the board's built-in pacer versus the main system timer, with the system timer limit usually a bit slower. By running in 8-bit mode, you may be able to use substantially faster sample rates. Typical sample rate limits, DAS08 on 33 MHz 486DX:
Sequential RTime µsec kHz µsec kHz 12-bit IRQ 7 24 41.7 26 38.5 IRQ 0 27.7 36.1 27.7 36.1 8-bit IRQ 7 17.5 57.1 20 50 IRQ 0 18.4 54.3 18.4 54.3On a 40 MHz 386DX, the performance was actually a bit better. The above limits were found without using the STIM3 stimulus generator. Note that the extra overhead of stimulus output may reduce the maximum sample rates on slow systems. If you use stimulus oversampling (Stimulus Generator Factor greater than 1), you may be able to have the effective stimulus output rate exceed these limits, because the outputs can run faster than the ADC. Daqarta refers to this as "Hypersampling". So, for example, with the above system running at an input sample rate of 20 kHz, you can generate digital outputs with a STIM3 Factor of up to 7 in Sequential mode... a 140 kHz output rate! If you try to run with Factor and sample rate combinations too high for your system, Daqarta will give an alert and show a 'Sample rate overrun!'message. If RTime mode was active, it will be forced back to Sequential. This prevents lockup in case you give the system so much to do during each sample interrupt that there is no time for any other processing between the RTime interrupts.
EXTERNAL PACER:Few users will have need for the External Pacer mode, or have the special equipment needed to support it, but it offers very powerful benefits for certain applications. This mode allows the sample rate to be controlled externally, to provide exact synchronization to some external process. The external pacer signal may be fixed, or dynamically variable. For example, if you provide a sample clock that is synchronized to an engine or other machine's operating speed, you can view vibration spectra where each harmonic stays at the same screen location even as operating speed varies.You must provide an external TTL clock signal at exactly the desired sample rate. Connect it to the Interrupt Input (pin 24) in lieu of the Counter 2 Output. Daqarta will make no attempt to determine the actual sample rate... X-axis markings and readouts will be constant. (You probably wouldn't want to look at them if they changed very quickly!) Instead, you tell Daqarta what axis values you want to see by specifying the "sample period" instead of the conversion time when supplying the S: parameter. You also need to prefix the value with an E to indicate External Pacer, as in: DAS8X.ADC S:E5 In this example, the E5 indicates an external pacer with a sample period of 5 microseconds, or 200 kHz. This is clearly WAY faster than any present DAS8X board model can go, but it has the advantage that the frequency axis is 0 to 100 kHz, which you can interpret as 0 to 100% of the spectrum. You can set any value from 5 to 65535 here. If your pacer signal is constant, or nearly so, you can just use the closest integer microsecond approximation of its period. If it varies all over the place, you may be better off with a 0 to 100% representation. The value you set is not used for any "real" sampling operations... that's completely controlled by the TTL pacer signal you feed to the Interrupt Input. You must insure that this never goes faster than the maximum sample rate for your board, or you will get trashy data. (It will probably look like a version of the true waveform, with a forest of spikes growing out of it.) However, the S:E value does affect certain other internal functions that deal with time units. When a Trigger Delay is set, the entered time value is converted internally to an equivalent number of sample periods. The delay operation is then carried out by counting samples. So if the true sample period is different from the S:E value, all trigger delays will be off by the same proportion. Dynamically changing the external sample clock will produce changing delays. In RTime mode, Cycle times are handled just like Trigger Delay and will show the same sample clock effects. Sequential mode Cycle timing will be correct, since it is done with the system timer using absolute time, not sample counting. The Cycle adjustment control uses the same sample-period increment size in both RTime and Sequential modes, and is limited to a total of 32767 samples maximum, so the S:E value will affect both resolution and range. If you use a varying External Pacer clock frequency during stimulus generation with the STIM3 Stimulus Generator or the Trigger Pulse option, the output frequencies will be scaled accordingly. The sample period established by the S:E value will be used as the basis for STIM3 sine wave calculations when using the DAC outputs. All STIM3 durations, for both DAC sine waves and DigOut digital output pulses, are given in sample periods that may thus be variable in width. When you are using the External Pacer option, the board summary screen will show: 'Board pacer clock: EXTERNAL.'instead of showing the internal pacer clock frequency in MHz. If you use the S:E option, but don't provide a pacer signal at the pin 24 Interrupt Input, Daqarta will exit with: 'External pacer not connected to interrupt input pin 24.' Note that it is not enough just to have something connected to pin 24... there must be a frequency present of at least 20 Hz or so to pass the internal tests. If you want to start Daqarta while the External Pacer is at a lower frequency, or before it becomes active, use a lower-case 'e', as in: DAS8X.ADC S:e5This will bypass the intialization tests. Likewise, with the S:E option you MUST have an IRQ jumper set on the board... you can't use the IRQ 0 option since that is only for using the system timer as the pacer. If no jumper is found, Daqarta will exit immediately with: 'External pacer requires IRQ jumper on board.'If you use the S:e format this test will be bypassed.
|