Daqarta for DOS Contents



Free Registration

Contact Us
Daqarta for DOS
Data AcQuisition And Real-Time Analysis
Shareware for Legacy Systems

From the Daqarta for DOS Help system:



This single DAS16X driver is designed to support a wide range of boards from the DAS-16 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:

                                          - ADC -  DAC   Dig
      Keithley      #  +/- Ranges   Set  kHz  Bits Bits  I/O
      Metrabyte     ----------------------------------------
       DAS-16       5  10 to 0.5     S    50   12   12    8
       DAS-16F      5  10 to 0.5     S   100   12   12    8
       DAS-16G1     4  10 to 0.02    P    70*  12   12    8
       DAS-16G2     4  10 to 1.25    P    70*  12   12    8
       DAS-1201     4  5 to 0.01     S    50*  12   --   32
       DAS-1202     4  5 to 0.625    S   100   12   --   32
       DAS-1401     4  10 to 0.02    P   100*  12   --    8
       DAS-1402     4  10 to 0.625   P   100   12   --    8
       DAS-1601     4  10 to 0.02    P   100*  12   12   32
       DAS-1602     4  10 to 0.625   P   100   12   12   32

    Measurement                           - ADC -  DAC   Dig
    Computing       #  +/- Ranges   Set  kHz  Bits Bits  I/O
 (ComputerBoards):  ----------------------------------------
    CIO-DAS16       5  10 to 0.5     S    50   12   12   32
    CIO-DAS16F      5  10 to 0.5     S   100   12   12   32
    CIO-DAS16JR     5  10 to 0.625   P   160   12   --    8
    CIO-DAS16JR/16  5  10 to 0.625   P   100   16   --    8
    CIO-DAS16/330   5  10 to 0.625   P   330   12   --    8
    CIO-DAS16/330i  5  10 to 0.625   P   330   12   --    8
    CIO-DAS1401/12  4  10 to 0.01    P   160   12   --    8
    CIO-DAS1402/12  4  10 to 1.25    P   160   12   --    8
    CIO-DAS1402/16  4  10 to 1.25    P   100   16   --    8
    CIO-DAS1601/12  4  10 to 0.01    P   160   12   12   32
 CIO-DAS1601/12-P5  4  10 to 0.01    P   160   12   12    8
    CIO-DAS1602/12  4  10 to 1.25    P   160   12   12   32
 CIO-DAS1602/12-P5  4  10 to 1.25    P   160   12   12    8
    CIO-DAS1602/16  4  10 to 1.25    P   100   16   12   32
 CIO-DAS1602/16-P5  4  10 to 1.25    P   100   16   12    8
  PC104-DAS16JR/12  4  10 to 1.25    P   150   12   --    8
  PC104-DAS16JR/16  4  10 to 1.25    P   100   16   --    8

                                          - ADC -  DAC   Dig
                    #  +/- Ranges   Set  kHz  Bits Bits  I/O
  CyberResearch:    ----------------------------------------
     CyDAS 16       5  10 to 0.5     S    50   12   12   32
     CyDAS 16F      5  10 to 0.5     S   100   12   12   32
     CyDAS 16JR     5  10 to 0.625   P   120   12   --    8
     CyDAS 16JRHR   5  10 to 0.625   P   100   16   --    8
     CyDAS_1401     4  10 to 0.01    P   160   12   --    8
     CyDAS_1402     4  10 to 1.25    P   160   12   --    8
     CyDAS_1402HR   4  10 to 1.25    P   100   16   --    8
     CyDAS_1601     4  10 to 0.01    P   160   12   12   32
     CyDAS_1602     4  10 to 1.25    P   160   12   12   32
     CyDAS_1602HR   4  10 to 1.25    P   100   16   12   32
    4CyDAS_1612J    4  10 to 1.25    P   150   12   --    8
    4CyDAS_1616J    4  10 to 1.25    P   100   16   --    8

   Apex Embedded                          - ADC -  DAC   Dig
      Systems:      #  +/- Ranges   Set  kHz  Bits Bits  I/O
      (PC/104)      ----------------------------------------
     STRATUS-X      4  10 to 1.25    P   200   16   16    8
     STRATUS-X-ND   4  10 to 1.25    P   200   16   --    8

                     Set:  S = Switch, P = Programmable
                    I/O = Total digital inputs and outputs
                        (32 = built-in 8255 ports)
               NOTE:  Unipolar ranges not considered here.

                  *   Best case rate at +/-10 V range.
                      Maximum sample rate drops with higher
                      range sensitivity on these models.
                      DAS-16G1: to 60 kHz at +/-1 V
                                   50 kHz at +/-0.1 V
                                   30 kHz at +/-0.02 V
                      DAS-16G2: to 60 kHz at +/-2.5 V or less
                      DAS-1201: to 10 Khz at +/-0.1 V
                      DAS-1601: to 70 kHz at +/-0.1 V
                                   30 kHz at +/- 0.02 V
                      Comparable models from other suppliers
                      have full speed on all ranges.
All of these boards have 16 analog input channels, which may be configured as 8 differential inputs via a switch on the board.

NOTE: The CIO-DAS16/M1 and CIO-DAS16/M1/16 are not supported by this driver because they are not compatible with DAS-16 operation, despite the name similarity. In fact, they are not even compatible with each other!



This driver allows you to specify certain parameters on the DAS16X.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:
    DAS16X.ADC      A:h330 I:7
The order of the parameters is not important for this driver, with the exception of the C: Channel and R: Range entries, and the D: DMA and I: IRQ 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.


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:
    DAS16X.ADC      A:h330
The 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 DAS16 or DAS-16 compatible board there it exits with:

    'DAS16X 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.


If you supply the model number for your board via the M: parameter, the proper value (12 or 16) for ADC bits is set automatically. However, if you have a board that is not directly supported, but appears to be a 16-bit version of a supported 12-bit model, you can tell Daqarta by using the base model with the M: parameter, plus a B:16 parameter.

For example, if your board appears to be a 16-bit version of the original DAS-16, you would use:

    DAS16X.ADC      M:DAS-16 B:16
This mechanism allows for future upgrades to any of the standard DAS16 models already supported by this driver.


This parameter allows you to change the default channel that will be used when you first activate this driver via the Board option. A switch on the board controls whether it is configured as 16 single-ended channels or 8 differential channels... consult the manufacturer's documentation for your board to locate this switch before installation.

Valid channel numbers are 0 through 15 single-ended, or 0 through 7 differential. For example:

    DAS16X.ADC      C:3
would set channel 3. You may change the channel from the board's control menu during operation. If you don't give a C: parameter, the default is channel 0.

Although the 8/16 channel switch can't be controlled by software, it can be read. If Daqarta finds the switch set to 8 channels and you use the C: parameter to try to set a channel number above 7, it will automatically be reduced by 8 to bring it into compatibility. For example, if you had entered 15, it will become 7.

You can check the status of the 8/16 channel switch by means of the information summary available via the ALT-H Plug-In Help system.

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.

D: DMA (Direct Memory Access) Level:

The DAS16 can use either DMA or interrupt-driven (one interrupt per sample) RTime processing. The D: parameter selects DMA operation, and specifies DMA level 1 or 3, as set via a switch on your board. (The switch can't be read directly by software.) Consult the documentation that came with your board for the switch location and setting.

DMA operation uses one interrupt per 32768 samples, so you must also specify an IRQ level if you don't want to accept the default IRQ 7. You must give the I: parameter (if any) BEFORE the D: parameter to select DMA for RTime. For example:

    DAS16X.ADC      I:5 D:1
would specify DMA level 1 operation for RTime mode, using IRQ 5. Alternately,
    DAS16X.ADC      D:3
would specify DMA level 3 operation using the IRQ 7 default. The D: parameter will be ignored if it is given before the I: parameter. If you don't use a D: parameter, RTime mode will default to interrupt-driven operation.

Although the DAS16 board allows DMA acquisition, it does not support DMA output. If you use the STIM3A Stimulus Generator to generate signals in RTime mode, Daqarta will automatically revert to interrupt-driven operation in order to perform simultaneous acquisition and output.

DMA is never used when RTime is inactive (Sequential mode).


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 DAS16 board allows RTime processing by means of one interrupt for each sample, or via DMA which uses an interrupt only once every 32768 samples. The Interrupt Request level in either case is controlled entirely by software... there are no jumpers or switches on the board for this. IRQ values from 2 through 7 may be selected here for normal operation, or IRQ 0 for the special stimulus Hypersampling mode. For example:
    DAS16X.ADC      I:5
would indicate that Daqarta should use IRQ 5 instead of the default IRQ 7.

If you want to specify DMA mode for RTime, make sure that any I: parameter comes before the D: parameter.

No board interrupt is used in Sequential mode, only when RTime is active.

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 interrupt- driven RTime mode. It will have no effect on DMA RTime or 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.

If you use interrupt-driven RTime, you may need to use the special DDISK13A BIOS-replacement driver for DDisk recording. This will only work with drives of 8.4 GB 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.

Alternatively, you can use Memory write mode to save your file to memory during recording, and write it to disk only when the recording ends. This will work with drives of any size, but file size is limited by XMS memory size.


Use this command to tell the driver which board you have. For example, if you have a Computer Boards CIO-DAS16/330, the configuration line might look like:
    DAS16X.ADC      M:DAS16/330

If you enter an unsupported model name, Daqarta will exit with a "M: Model not recognized" message, followed by a list of supported models. These are:

 Apex Embedded Systems:
     Stratus-X                  CyberResearch:
     Stratus-X-ND             (Use _ not space)
 Keithley Metrabyte:             CyDAS_16F
     DAS-16                      CyDAS_16JR
     DAS-16F                     CyDAS_16JRHR
     DAS-16G1                    CyDAS_1401
     DAS-16G2                    CyDAS_1402
     DAS-1201                    CyDAS_1402HR
     DAS-1202                    CyDAS_1601
     DAS-1401                    CyDAS_1602
     DAS-1402                    CyDAS_1602HR
     DAS-1601                   4CyDAS_1612J
     DAS-1602                   4CyDAS_1616J

         Measurement Computing
          (CIO-) DAS16/330
          (CIO-) DAS16
          (CIO-) DAS16F
          (CIO-) DAS16JR
          (CIO-) DAS16JR/16
          (CIO-) DAS1401/12
          (CIO-) DAS1402/12
          (CIO-) DAS1402/16
          (CIO-) DAS1601/12   DAS1601/12-P5
          (CIO-) DAS1602/12   DAS1602/12-P5
          (CIO-) DAS1602/16   DAS1602/16-P5

The models must be specified as shown, although case doesn't matter. Do not use a CIO- prefix for Computer Boards models, although the "PC104-" is required where shown. 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 an underscore that is not part of the true model number, such as CyDAS_16JR for the CyDAS 16JR 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.

Use 'DAS16/330' for the CIO-DAS16/330i model as well. Note that for either of these there is presently no support for the enhanced (FIFO) mode that allows the full 330 kHz sample rate. (It would be incompatible with Seq mode, and with stimulus generation.) You will probably be limited to around 160 kHz operation. If you don't specifically set the S: parameter, the maximum conversion Speed for the /330 model will be automatically set to 3 microseconds (330 kHz). You may want to make your own speed determination to set the S: value for your system.

Manufacturers sometimes change model designations for what is substantially or identically the same board. For example, the current CIO-DAS16 was originally known as the CIO-AD16, and the current CIO-DAS16/330 was the CIO-AD16JR-AT. If your board does not appear in the Model Compatibility list you may want to try some "best guess" model designations for the M: parameter based upon what you know about your board's features versus those listed for each supported model.

If you omit the M: parameter, a Computer Boards CIO-DAS16 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 the default model.

Some of the differences between models are of no consequence to the driver, such as the presence of a 10 MHz pacer clock on Computer Boards models where the equivalent Keithley Metrabyte models use a 1 MHz clock. Daqarta will determine the actual clock frequency used, so it doesn't matter where the XTAL jumper is set on boards that can switch between clock rates. (Leave it set to 1 MHz if you must run other software that only supports Keithley Metrabyte models. Otherwise, set it to 10 MHz for finest sample rate control.)

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.


The P: parameter specifies a parallel port to be used for digital output via the STIM3A stimulus generator. You can use either an 8255-type port, which is included on some DAS16 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:

    DAS16X.ADC      P:h310

This 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.

Several of the supported models come with an 8255 as standard equipment. (They are shown with 32 bits of digital I/O in the Specifications table.) If you have one of these 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.

For models that do not come with a standard 8255, you will definitely need the full P: parameter if you wish to use a separate 8255 board like like PIO-24 or PIO-12 from Keithley Metrabyte, or the Computer Boards CIO-DIO24, or the CyDIO 24 from CyberResearch.

If you have a DAS16-type board with a standard 8255 that you don't want to use, and a separate 8255 board that you prefer instead, you can specify any of its ports 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.

To avoid unexpected missiles launches, third stage booster explosive squib detonation, ten-ton hydraulic ram activation, or even just a simple guinea pig food pellet dispenser cycle, be SURE to provide a few thousand ohms load to any critical device inputs that you must leave enabled but don't want to activate. Connect the load resistor from the device input to ground or +5 Volts, as appropriate to insure the desired state of the device.

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...


This is 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:
    DAS16X.ADC      P:Ln
where '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 STIM3A Stimulus Generator.

If the L: 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: 9FC0h
In 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 STIM3A, the four built-in digital outputs present on all DAS16-type boards will always be available for Pulse output.


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 boards with switch-selectable ranges, the R: parameter has no effect on the actual range... it just tells the DAS16X 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:

    DAS16X.ADC      R:5

This would specify the +/- 5 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 board with switch-selected ranges where you want to keep a unipolar range set for some other application, the range must have a 'U' after it, as in:

    DAS16X.ADC      R:10U
which here would specify the 0-to-10 Volt Unipolar range.

The Daqarta waveform display will show the same bipolar Y-axis as if you had set the equivalent bipolar range, but waveforms will be confined to only the positive half 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.'

If you give a unipolar range when the board is switched to bipolar mode, the exit message will be:

    'Unipolar R: range with Bipolar switch set.'

If you give a bipolar range when the board is switched to unipolar mode, the exit message will be:

    'Unipolar switch set.  Set to Bipolar, or set
        Unipolar R: range.'


Allowable Range entries for each Model, +/- Volts implied except where U suffix is shown for Unipolar:

  DAS-16     DAS16JR                 DAS1401/12    DAS-16G2
  DAS-16F    DAS16/330                 and -P5    DAS16JR/16
  DAS16        PC104-                DAS1601/12  CyDAS 16JRJR
  DAS16F     DAS16JR/12   DAS-16G1     and -P5     all 1402
  CyDAS 16   CyDAS 16JR   DAS-1401   CyDAS 1401    all 1602
  CyDAS 16F 4CyDAS_1612J  DAS-1601   CyDAS 1601    Stratus
    10         10           10          10           10
    5          5            1           1            5
    2.5        2.5          0.1         0.1          2.5
    1          1.25         0.02        0.01         1.25
    0.5        0.625

    10U        10U          10U         10U          10U
    5U         5U           1U          1U           5U
    2U         2.5U         0.1U        0.1U         2.5U
    1U         1.25U        0.02U       0.01U        1.25U

              DAS-1201   DAS-1202
                5          5
                0.5        2.5
                0.05       1.25
                0.01       0.625

In addition, the DAS16 allows 'USER' and 'USERU' to indicate that the bipolar or Unipolar user-supplied custom gain range has been selected via the edge connector switches:

CIO-DAS16 RANGE SWITCHES (Edge Connector):

   +/- 10V   +/- 5V   +/- 2.5V   +/- 1V    +/-0.5V
 6   --[]     --[]      --[]      --[]       --[]
 5   []--     --[]      --[]      --[]       --[]
 4   []--     []--      --[]      []--       []--
 3   []--     []--      []--      --[]       []--
 2   []--     []--      []--      []--       --[]
 1   []--     []--      []--      []--       []--

     N/A      0-10V     0-5V      0-2V      0-1V
 6   []--     []--      []--      []--       []--
 5   []--     --[]      --[]      --[]       --[]
 4   []--     []--      --[]      []--       []--
 3   []--     []--      []--      --[]       []--
 2   []--     []--      []--      []--       --[]
 1   []--     []--      []--      []--       []--

   +/-USER   0-USER
 6   --[]     []--
 5   []--     []--
 4   []--     []--
 3   []--     []--
 2   []--     []--
 1   --[]     --[]


This parameter specifies the overall ADC conversion speed, in microseconds. It must be an integer between 2 and 50. The default setting is equivalent to: DAS16X.ADC S:20 or 20 microseconds, for a 50 kHz maximum sample rate.

The number you use here should be the total conversion time, including sample-hold time. It will thus typically be the reciprocal of the maximum sample rate for your board.

If you specify a specific Model via the M: parameter, the speed will be automatically set for the sample rate shown in the Specifications table. If you also supply a separate S: parameter, that value will override the one implied for that model.

This S: value is used as a limit when setting the 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. Your particular board may be able to go a bit faster than the default speed, so you may want to try using a smaller S: value.

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.

In general, DMA RTime operation will give better results... but it's not available during STIM3A stimulus generation, since DAS16-type boards have only a single, acquisition-only DMA channel. When any STIM3A output is active in RTime mode, interrupt-driven operation will thus automatically be used.

Also, the overhead of writing to the DACs or Digital Output port may reduce the maximum sample rate on slow systems.

If you try to run sample rate or sample rate plus stimulus combinations too high for your system, Daqarta will give an alert and show:

    'Sample rate overrun!'

If RTime mode was active, it will be forced back to Sequential mode. 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 interrupts.


When used with the STIM3A Stimulus Generator, DAS16 boards can use stimulus oversampling (STIM3A Factor greater than 1). This means that the DAC and/or digital stimulus output sample rate is higher than the ADC acquisition sample rate by the Factor. Normally, this constrains the maximum rate (Factor times acquisition sample rate) to the limits of the ADC chip itself, since the board must actually acquire input data on every sample and then discard it for output-only samples.

However, it turns out that most DACs and all digital outputs can go much faster than many ADCs, especially the 50 kHz ADCs on the basic DAS16 models. A 50 kHz output sample rate would limit you to stimulus tone frequencies below 25 kHz... WAY below, if you want decent sine waves. Since most DACs can easily sample above 150 kHz, we would like to make better use of this range.

But the DAS16 pacer can only start conversions... it can't generate interrupts at a higher rate than the conversion rate, as we need here. Daqarta solves this problem by allowing you to ignore the on-board pacer and use the 1.193 MHz system timer instead. Although this adds some overhead to each acquisition by requiring a software conversion start, it allows fast CPUs to achieve output sample rates well above the maximum ADC limit. Daqarta refers to this as "Hypersampling".

To do this, you select IRQ 0 with the I: parameter. This IRQ is reserved for the system timer, so I:0 acts as a special flag to tell Daqarta to run in a completely different mode. The IRQ 0 interrupts are actually used only for RTime operation, while for Sequential operation the system timer is read directly to determine when to take each sample.

The maximum overall sample rate that you can achieve with this method is dependent upon your system speed. For example, a typical 33 MHz 486DX system can acquire data at about 20 kHz while generating a single DAC stimulus at a Factor of up to 9. This means that the DAC is actually going at about 180 kHz. With both DACs operating, the limit drops to a factor of 5, or about 100 kHz stimulus rate on each DAC.

What happens if you try to sample too fast? In RTime mode, the time to generate and acquire data will consume too much of the CPU time, slowing trace updates to a crawl. If they slow too much, Daqarta will trip out of RTime mode and revert back to Sequential, with an Alert and a message of

    'Sample rate overrun!'.

In Sequential mode, if Daqarta can't keep up it will read the timer late and skip sample periods, which means the outputs will not be updated and will instead retain their old values for an extra sample interval. Since the requested total number of samples will still be generated, the overall sweep duration will be increased. Daqarta times the duration of each Sequential sweep and compares it to the calculated value, and if the actual duration is too long, it sounds an Alert and gives the same overrun message as above.

However, the calculated sweep time is set slightly high (by about 54 microseconds) to prevent frequent false alarms, yet still trip reliably on real problems. If you request a stimulus that is a small fraction of the overall sweep duration, a little increase due to errors in only that portion may not boost the total enough to trip the alarm, even though the errors may be significant to your experiment.

To determine the maximum sample rate you can use with a particular STIM3A Factor and output combination, temporarily specify output for the full duration of the sweep interval. The simplest way to do this is to set an active DAC output Sustain value to equal the number of sweep samples N times the Factor. The STIM3A Display trace for that channel should show a wave extending across the full (unXpanded) screen. Now increase the sample rate until you just get the overrun alert, then back off one step.

Note that if you use the I:0 parameter you may not also use the D: parameter to specify DMA for RTime operation. Attempts to do so will result in an immediate exit with:

 'IRQ 0 not allowed with DMA mode.'

Similarly, you may not use I:0 with S:En External Pacer, or you will get:

 'IRQ 0 not allowed with External Pacer.'

Other than these, you may use the I:0 mode for general Daqarta operations, not just oversampling with STIM3A. The system timer has an "oddball" timing resolution of about 838 nsec. This is better than the 2000 nsec resolution obtainable with older DAS-16 boards having a 1 MHz clock, but not as good as the 200 nsec from models with the 10 MHz XTAL jumper selected. (The on-board timer source must always be divided by at least 2, due to the way its 8254 timer chip operates, so you can't get resolutions of 1000 or 100 nsec implied by the clock frequencies of 1 and 10 MHz.)


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 "Dig In / Trigger" input (pin 25). 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:

    DAS16X.ADC      S:E5

In this example, the E5 indicates an external pacer with a sample period of 5 microseconds, or 200 kHz. Even if this is much faster than your board model can go, 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 2 to 65535 microseconds 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 pin 25 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 STIM3A 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 STIM3A sine wave calculations when using the DAC outputs. All STIM3A 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:

 'EXTERNAL sample pacer (pin 25).'
instead of the usual:
 'nn MHz pacer reference (XTAL jumper).'
where 'nn' is either 1 or 10.

If you use the S:En option, but don't provide a pacer signal at the pin 25 input, Daqarta will exit with:

 'External pacer not connected to input pin 25.'

Note that it is not enough just to have something connected to pin 25... 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:

    DAS16X.ADC      S:e5
This will bypass the intialization tests.

Also, you can't use the External Pacer with the IRQ 0 option, since IRQ 0 specifies using the internal system timer as a pacer.


The CIO-DAS16 allows a custom gain range by installation of a resistor on the board. See the documentaion for your board to find the location for this resistor. This range may be used in a bipolar or unipolar mode, according to switch settings on the edge connector. Since the actual voltage range covered in either mode is the same, the bipolar +/- full-scale value is half of the unipolar 0-to-full-scale value. For example, if you set a bipolar range of +/- 0.595 Volts, the unipolar range would be 0 to 1.190 Volts.

To find the resistor value Ruser for a BIPOLAR range +/-Vfs:

                 40000 × Vfs
    Ruser   =   -------------
                  10 - Vfs

For a UNIPOLAR range, just halve the value. The minimum resistor you may use is 1053 Ohms, which will give +/- 0.25 V bipolar or 0-0.5 V unipolar.

Conversely, to find the bipolar range +/-Vfs for a given value of Ruser:

                  5 × Ruser
    Vfs     =   -------------
                20000 + Ruser
The corresponding unipolar range for this same resistor would be twice this.

You must tell Daqarta the full-scale BIPOLAR range value in millivolts via the U: parameter so that the Y-axis calibration will be correct. For example, if you had inserted a 2700 Ohm resistor the full-scale voltage would be:

              5 × 2700
    Vfs  =  ------------   =  +/- 0.5947 Volts or 594.7 mV.
            20000 + 2700
You would then need round to the nearest millivolt and inform Daqarta via:
    DAS16X.ADC      U:595

When you supply this U: parameter, Daqarta will assume that the range switches have been set to use it in bipolar mode, and this range will become the startup default. If you want a different range on startup, you must specify it separately via the R: Range parameter. This is true if you just want to select the User range switch, but in unipolar mode (R:USERU). Note that the actual unipolar range will be TWICE the value specified by the U: parameter.


Questions? Comments? Contact us!

We respond to ALL inquiries, typically within 24 hrs.
25 Years of Innovative Instrumentation
© Copyright 1999 - 2006 by Interstellar Research