A8112 Series Manual
A8112 Series Manual
A8112 Series Manual
ACL-8112 Series
Enhanced Multi-Functions
Data Acquisition Cards
User’s Guide
©Copyright 1996~2000 ADLINK Technology Inc.
All Rights Reserved.
Suggestions to ADLINK
Table of Contents
Chapter 1 Introduction................................................................. 1
1.1 Features .......................................................................................................... 3
1.2 Applications .................................................................................................... 4
1.3 Specifications ................................................................................................. 4
1.4 Software Support........................................................................................... 8
1.4.1 Programming Library.................................................................... 8
1.4.2 LabView Driver............................................................................... 8
Table of Contents • i
Chapter 4 Registers................................................................... 31
4.1 I/O Port Address..........................................................................................32
4.2 A/D Data Registers .....................................................................................33
4.3 A/D Channel Multiplexer Register.............................................................33
4.4 A/D Range Control Register......................................................................35
4.5 A/D Operation Mode Control Register.....................................................37
4.6 Interrupt Status Register............................................................................38
4.7 Software Trigger Register..........................................................................38
4.8 Digital I/O register........................................................................................39
4.9 D/A Output Register....................................................................................40
4.10 Internal Timer/Counter Register................................................................41
ii • Table of Contents
Chapter 7 C Language Library................................................... 53
7.1 _8112_Initial.................................................................................................54
7.2 _8112_Switch_Card_No............................................................................56
7.3 _8112_DI......................................................................................................57
7.4 _8112_DI _Channel....................................................................................58
7.5 _8112_DO....................................................................................................59
7.6 _8112_DA.....................................................................................................60
7.7 _8112_AD_Input_Mode .............................................................................61
7.8 _8112_AD_Set_Channel...........................................................................63
7.9 _8112_AD_Set_Range...............................................................................64
7.10 _8112_AD_Set_Mode................................................................................67
7.11 _8112_AD_Soft_Trig..................................................................................69
7.12 _8112_AD_Aquire.......................................................................................70
7.13 _8112_CLR_IRQ.........................................................................................71
7.14 _8112_AD_DMA_Start ...............................................................................72
7.15 _8112_AD_DMA_Status ............................................................................74
7.16 _8112_AD_DMA_Stop ...............................................................................75
7.17 _8112_AD_INT_Start .................................................................................76
7.18 _8112_AD_INT_Status...............................................................................77
7.19 _8112_AD_INT_Stop..................................................................................78
7.20 _8112_AD_Timer........................................................................................79
7.21 _8112_TIMER_Start ...................................................................................80
7.22 _8112_TIMER_Read..................................................................................81
7.23 _8112_TIMER_Stop ...................................................................................81
This manual is designed to help you use the ACL-8112. The manual
describes how to modify various settings on the ACL-8112 card to meet your
requirements. It is divided into seven chapters:
Introduction
Introduction • 1
REF 0 IN < EXT.CLK
16 BIT
D/A #0 12 BIT 4 MHz COUNTER #0 OUT 0
D/A 0 OUT < 12-Bit
OSC.
MULITIPLYING D/A Code Latch 16 BIT TO PACER TRIG
GND
COUNTER #1
FR/2
2MHz 16 BIT
2 • Introduction
D/A 1 OUT COUNTER #2
< D/A #1 12 BIT 12-Bit D/I 0
GND MULITIPLYING D/A Code Latch
12 Bit 16 BIT DI 1
.
REF 1 IN DIGITAL INPUT .
A/D Converter .
+15 REGISTER
(B.B 774) DI 15
CH 0 > AMP
D/O 0
CH 1 16 channel INPUT 16 BIT
> BUFFER DO
.
1
CH 2 Single-ended DIGITAL INPUT .
ANALOG .
or -15 REGISTER
INPUT DO 15
. 8 Differential GAIN INTERNAL BUS
. Analog SELECT
. PACER
Multiplexer EOC
DRQ TRIG
CH 15 > DC/DC +5V
CONVERTER DACK CONTROL
LOGIC TRIG SOFTWARE
LOGIC TRIG
MUX SCAN DATA
CONTROL DMA SELECT INTERRUPT
BUFFER #1 OR #3 IRQ SELECT EXTERNAL
TRIG
I/O PORT DECODER
PC/AT BUS
Introduction • 3
1.2 Applications
• Industrial and laboratory ON/OFF control
• Energy management
• Annunciation
• 16 TTL/DTL compatible digital input channels
• Security controller
• Product test
• Period and pulse width measurement
• Event and frequency counting
• Waveform and pulse generation
• BCD interface driver
1.3 Specifications
4 • Introduction
• ACL-8112PG:
Bipolar : ± 10V ,± 5V, ± 2.5V, ± 1.25V, ± 0.625V
Or
Bipolar : ± 5V, ± 2.5V, ± 1.25V, ± 0.625V, ± 0.3125V
• Input Impedance: 10 MΩ
• AD conversion trigger modes: Software, Pacer, and External
trigger
• Data Transfer: Pooling, DMA, Interrupt
• Sampling Rate:
• 100 KHz maximum for single channel
• 100 KHz maximum for multiplexing on ACL-8112PG
• 20 KHz maximum for multiplexing on ACL-8112DG/HG
Analog Output (D/A)
• Converter: DAC7541 or equivalent, monolithic multiplying
• Number of channels: 2 double-buffered analog outputs
• Resolution: 12-bit
Introduction • 5
• Output Range:
Internal reference: (unipolar) 0~5V or 0~10V
External reference: (unipolar) max. +10V or -10V
♦ Programmable Counter
• Device: 8254
• A/D pacer: 32-bit timer( two 16-bit counter cascaded together) with a
2MHz time base
• Pacer Output: 0.00046 Hz ~ 100 KHz
• Counter: One 16-bit counter with internal 2MHz time base or external
clock source
6 • Introduction
♦ General Specifications
• I/O Base Address: 16 consecutive address location
• Interrupt IRQ: IRQ3,5,6,7,9,10,11,12,15 (9 levels)
• DMA Channel: CH1 and CH3 (Jumper selectable)
• Connector: 37-pin D-type connector
• Operating Temperature: 0 °C ~ 55 °C
Introduction • 7
1.4 Software Support
8 • Introduction
2
Installation
This chapter describes how to install the ACL-8112 series products. Please
use the following steps to install the product.
• Check what you have (section 2.1)
• Unpacking (section 2.2)
• Check the PCB and jumper location(section 2.3)
• Install the hardware and setup the jumpers and switches (section
2.4~2.12)
• Cabling with external devices (section 2.13)
Installation • 9
2.2 Unpacking
The card contains electro-static sensitive components that can be easily be
damaged by static electricity.
Therefore, the card should be handled on a grounded anti-static mat. The
operator should be wearing an anti-static wristband, grounded at the same
point as the anti-static mat.
Inspect the card module carton for obvious damages. Shipping and handling
may cause damage to your module. Be sure there are no shipping and
handling damages on the modules carton before continuing.
After opening the card module carton, extract the system module and place it
only on a grounded anti-static surface with component side up.
Again, inspect the module for damages. Press down on all the socketed IC's
to make sure that they are properly seated. Do this only with the module
place on a firm flat surface.
Note: DO NOT ATTEMPT TO INSTALL A DAMAGED BOARD IN THE
COMPUTER.
You are now ready to install your card.
10 • Installation
2.3
- 10V
JP1
8112 Ver C. -5V
INT
VR1 VR2 VR3 VR4 VR5 VR6
JP2
EXT1 EXT2
SING
ADS774
JP3
INTTRG
DIFF
ACL-8112's Layout
CN1
JP4
. . . . . . . .
EXTTRG
SW1
INTCLK
JP6 CN3
CN2 EXTCLK
8254
. . . . . . . .
DRQ DACK
JP5
JP8 JP7
3 5 6 7910111215NC
1 3 X 1 3 X
Installation • 11
JP9
-10V
DC-DC JP8
8112PG Ver. B1
-5V
.
EXTTRG Converter VR1 VR2 VR3 VR4 VR5
12 • Installation
JP5
INT
.
INTTRG
.
JP7 JP6
.
EXT1 EXT2
ADS774
.
.
CN1
.
.
.
.
.
INTCLK CN3
.
SW1 JP4
.
CN2
EXTCLK
.
8254
1. The base address must be within the range Hex 200 to Hex 3FF.
2. The base address should not conflict with any PC reserved I/O
address. see Appendix A.
3. The base address must not conflict with any add-on card on your own
PC. Please check your PC before installing the ACL-8112.
ON DIP
1 2 3 4 5
A ( 8 7 6 5 4 )
Figure 2.2 Default Base Address Setting
Installation • 13
I/O port 1 2 3 4 5
Address(Hex) A9 A8 A7 A6 A5 A4
200-20F -- ON ON ON ON ON
(1) (0) (0) (0) (0) (0)
210-21F -- ON ON ON ON OFF
(1) (0) (0) (0) (0) (1)
220-22F -- ON ON ON OFF ON
(default) (1) (0) (0) (0) (1) (0)
230-23F -- ON ON ON OFF OFF
(1) (0) (0) (0) (1) (1)
:
300-30F -- OFF ON ON ON ON
(1) (1) (0) (0) (0) (0)
:
3F0-3FF -- OFF OFF OFF OFF OFF
(1) (1) (1) (1) (1) (1)
Table 2.2 Possible Base Address Combinations
A0, ..., A9 corresponds to the PC Bus address lines
A9 is fixed at “1”.
14 • Installation
2.6 Analog Input Channel Configuration
(This section is for ACL-8112DG and ACL-8112HG only.)
The ACL-8112 offers 16 single-ended or 8 differential analog input channels.
JP3 controls the analog input channel configuration. The setting of JP3 is
specified in the following illustration.
SING
Single-ended JP3
(default setting)
DIFF
SING
DIFF
Installation • 15
2.7 DMA Channel Setting
The A/D data transfer of the ACL-8112 is designed with DMA transfer
capabilities. The setting of the DMA for channel 1 or channel 3 is controlled
by JP7 and JP8 on the ACL-8112DG/HG, and JP1 and JP2 on the ACL-
8112PG . Possible settings are shown below:
Note: On floppy disk only machine, we suggest you set the DMA to level 3.
If you have a hard disk installed in the computer, level 1 is preferable.
DRQ DACK
JP8/JP2 JP7/JP1
NO
DMA
1 3 X 1 3 X
DMA 1
(Default)
DMA 3
16 • Installation
2.8 Internal/External Trigger Setting
The A/D conversion trigger source of the ACL-8112 can come from an
internal or external source. The internal or external trigger source is set by
JP4 on the ACL-8112DG/HG and by JP5 on the ACL-8112PG, as shown
on Figure 2.5. Note that there are two internal trigger sources, one is by
software trigger and the other is by the programmable pacer trigger, which
is controlled by the mode control register(see section 4.5).
JP4 / JP5
Internal Trigger INTTRG
(default setting)
EXTTRG
JP4 / JP5
INTTRG
External Trigger
EXTTRG
JP6 / JP4
Internal Clock INTCLK
Source : 2MHz
JP6 / JP4
INTCLK
External Clock
Source
EXTCLK
Installation • 17
2.9 Clock Source Setting
The 8254 programmable interval timer is used in the ACL-8112. It provides
3 independent 16-bit programmable down counters. The input of counter 2
is connected to a precision 2MHz oscillator which is the internal pacer. The
input of counter 1 is cascaded from the output of counter 2. Channel 0 is
free for user's applications. There are two selections for the clock source of
channel 0: the internal 2MHz clock or an external clock signal from
connector CN3 pin 37. The setting for the clock is shown in Figure 2.6.
Note: Please note that no other add-on cards can shares the same
interrupt level at the same time.
JP5 / JP3
No Interrupt :
IRQ 3 5 6 7 9 10 11 12 15 X
JP5 / JP3
Interrupt level :
IRQ15
(default setting)
IRQ 3 5 6 7 9 10 11 12 15 X
18 • Installation
2.11 D/A Reference Voltage Setting
The D/A converter's reference voltage source can be internally or externally
generated. The external reference voltage is connected via CN3 pin
31(ExtRef1) and pin 12(ExtRef2), see section 3.1. The D/A reference source
of channel 1 and channel 2 are selected using JP2 for the ACL-8112DG/HG
and JP6 and JP7 for the ACL-8112PG respectively. Possible settings are
shown below:
Installation • 19
The internal voltage can be set to -5V or -10V which is selected by JP1 for
the ACL-8112DG/HG and JP8 for the ACL-8112PG. Possible configurations
are specified in Figure 2.9. Note that the internal reference voltage is used
only when JP2 of the ACL-8112DG/HG or JP6 and JP7 of the ACL-8112PG
is set to internal reference.
-10V JP1 /
Reference Voltage is
JP8
-5V (default setting)
-5V
-10V JP1 /
Reference Voltage is
JP8
-10V
-5V
10
A/D Input Range is +/-
5V (default setting) JP9
5
10
A/D Input Range is +/- JP9
10V
5
20 • Installation
3
Signal Connections
Signal Connections • 21
3.1 Connectors Pin Assignment
The ACL-8112 comes equipped with two 20-pin insulation displacement
connectors - CN1 and CN2 and one 37-pin D-type connector - CN3. CN1
and CN2 are located on the board and CN3 is located at the rear plate.
CN1 is used for digital output signals, CN2 is used for digital input signals
and CN3 is used for analog input, analog output and timer/counter's signals.
The pin assignment for each connector is illustrated in Figure 3.1 ~ Figure
3.3.
• CN2: Digital Signal Input (DI 0 - 15 )
CN2
DI 0 1 2 DI 1
DI 2 3 4 DI 3
DI 4 5 6 DI 5
DI 6 7 8 DI 7
DI 8 9 10 DI 9
DI 10 11 12 DI 11
DI 12 13 14 DI 13
DI 14 15 16 DI 15
GND 17 18 GND
+5V 19 20 + 12V
Figure 3.1. Pin Assignment of CN2
• CN1: Digital Signal Output (DO 0 - 15 )
CN1
DO 0 1 2 DO 1
DO 2 3 4 DO 3
DO 4 5 6 DO 5
DO 6 7 8 DO 7
DO 8 9 10 DO 9
DO 10 11 12 DO 11
DO 12 13 14 DO 13
DO 14 15 16 DO 15
GND 17 18 GND
+5V 19 20 +12V
22 • Signal Connections
• CN3: Analog Input/Output & Counter/Timer
( for single-ended connection: ACL-8112DG/HG/PG)
CN3
1
AI0 20
2 AI8
AI1 21
3 AI9
AI2 22
4 AI10
AI3 23
5 AI11
AI4 24
6 AI12
AI5 25
7 AI13
AI6 26
8 AI14
AI7 27
9 AI15
A.GND 28
10 A.GND
A.GND 29
11 A.GND
V.REF 30
12 AO1
ExtRef2 31
13 ExtRef1
+12V 32
14 AO2
A.GND 33
15 GATE0
D.GND 34
16 GATE
COUT0 35
17 N/C
ExtTrg 36
18 N/C
N/C 37
19 ExtCLK
+5V
CN3
1
AIH0 20
2 AIL0
AIH1 21 AIL1
3
AIH2 22
4 AIL2
AIH3 23
5 AIL3
AIH4 24
6 AIL4
AIH5 25
7 AIL5
AIH6 26 AIL6
AIH7 8
27 AIL7
A.GND 9
28 A.GND
10
A.GND 29 A.GND
11
V.REF 30 AO1
12
ExtRef2 31
13 ExtRef1
+12V 32
14 AO2
A.GND 33 GATE0
15
D.GND 34
16 GATE
COUT0 35 N/C
ExtTrg 17
36 N/C
18
N/C 37 ExtCLK
19
+5V
Signal Connections • 23
Legend:
AIn: Analog Input Channel n ( single-ended)
AIHn: Analog High Input Channel n ( differential)
AILn: Analog Low Input Channel n ( differential)
ExtRef n: External Reference Voltage for D/A CH n
AOn: Analog Output Channel n
ExtCLK: External Clock Input
ExtTrig: External Trigger Signal
CLK: Clock input for 8254
GATE: Gate input for 8254
COUT n: Signal output of Counter n
V.ERF: Voltage Reference
A.GND : Analog Ground
GND: Ground
24 • Signal Connections
3.2 Analog Input Signal Connection
The ACL-8112 provides 16 single-ended or 8 differential analog input
channels. The analog signal can be converted to digital value by the A/D
converter. To avoid ground loops and obtain a more accurate measurement
of the A/D conversion, it is quite important to understand the signal source
type and how to choose the correct analog input mode: signal-ended or
differential. The ACL-8112 allows for the configuration through jumpers.
Single-ended Mode:
For single-ended mode, only one input is connected relative to ground and is
suitable for connecting with a floating signal source. Floating source means
it does not have any connection to ground. Figure 3.4 shows a single-ended
connection. Note that when two or more floating sources are connected, the
sources must be connected to common ground.
AGND
n = 0, ..., 15
Signal Connections • 25
n = 0, ..., 8
AIHn To A/D Converter
+
Groun -
Signal
Sourc AILn
GND
n = 0, ..., 8
AIHn To A/D Converter
+
Differentia -
Signal
Sourc AILn
GND
26 • Signal Connections
If your signal sources contain both a floating and a local ground, you
should use the differential mode, with the floating signal source connected
as Figure 3.7 .
n = 0, ..., 8
AIHn High
Floatin
Signal To A/D Converter
Sourc AILn Low
GND
Signal Connections • 27
3.3 Analog Output Signal Connection
The ACL-8112 has two unipolar analog output channels. To make the D/A
output connections from the appropriate D/A output, please refer Figure 3.8.
-5 or -10
INT or Ext Pin-30 ( AO0)
Ref In Pin-32 ( AO1)
D/A Converter - To D/A Output
+
Pin-14 ( A.GND)
Analog GND
28 • Signal Connections
3.5 Timer / Counter Connection
The ACL-8112 has an interval 8254 timer/counter on board. It offers 3
independent 16-bit programmable down counters; counter 1 and counter 2
are cascaded together as a timer pacer trigger for A/D conversions and
counter 0 is free for user applications. Figure 3.10 shows the 8254
timer/counter connection.
CN3 Pin-37
EXT
8254 Timer/Counter
INT
Counter 0
CLK0
CN3 Pin-33 GATE0 OUT0 CN3 Pin-16
Vcc
Counter 1
CLK1 A/D Trigger
CN3 Pin-34 GATE1 OUT1
CN3 Pin-35
2MHz
Oscillator Counter 2
CLK2
GATE2 OUT2
The clock source of counter 0 can be internal or external, with the gate
being controlled externally and the output sent to CN3. As for counter 1
and counter 2, the clock source is internally fixed, while the gate can be
controlled externally and the output sent to CN3 too. All timer/counter
signals are TTL compatible.
Signal Connections • 29
3.6 Daughter Board Connection
The ACL-8112 can be connected with any of the five following daughter
boards, ACLD-8125, ACLD-9137, ACLD9182, ACLD9185, and ACLD9188.
The functionality and connections are specified below.
30 • Signal Connections
4
Registers
A detailed description of the registers and its structure for the ACL-8112
are specified in this chapter. This information is useful for programmers
who wish to handle the card through low-level programming. Hence, a low
level programming syntax is also introduced. This information can also
help beginners learn how to operate the ACL-8112 in the shortest possible
time.
Registers • 31
4.1 I/O Port Address
The ACL-8112 requires 16 consecutive addresses in the PC I/O address
space. Table 4.1 shows the I/O address of each register with respect to the
base address. The function of each register is also listed.
32 • Registers
4.2 A/D Data Registers
The ACL-8112 series has a 12-bit resolution for each analog input channel,
the digital data is store in the A/D data registers after an A/D conversion.
The A/D data is put into two 8 bits registers. The lowest byte data (8 LSBs)
are placed in address BASE+4 and the highest byte data (4 MSBs) are
placed in address BASE+5. A DRDY bit is used to indicate the status of
the A/D conversion. When the DRDY goes low, it means an A/D
conversion is complete.
Address : BASE + 10
Attribute: write only
Data Format:
Bit 7 6 5 4 3 2 1 0
BASE+10 X X CS1 CS0 CL3 CL2 CL1 CL0
Registers • 33
CS0 and CS1 are used to determine which MPC508A chip is selected. The
MPC508A is used to multiplex between channels, when CS0 is set as 1,
the analog input channels from 0 to 7 are selectable, and when CS1 is set
to 1, channels 8 to 15 are selectable. When both CS0 and CS1 are set to 1,
it means the analog inputs are in differential mode. The possible analog
input channel selections combination is listed in the table below.
Bit 7 6 5 4 3 2 1 0
Channel X X CS1 CS0 CL3 CL2 CL1 CL0
S.E. CH0 X X 0 1 0 0 0 0
S.E. CH1 X X 0 1 0 0 0 1
S.E. CH2 X X 0 1 0 0 1 0
S.E. CH3 X X 0 1 0 0 1 1
S.E. CH4 X X 0 1 0 1 0 0
S.E. CH5 X X 0 1 0 1 0 1
S.E. CH6 X X 0 1 0 1 1 0
S.E. CH7 X X 0 1 0 1 1 1
S.E. CH8 X X 1 0 1 0 0 0
S.E. CH9 X X 1 0 1 0 0 1
S.E. CH10 X X 1 0 1 0 1 0
S.E. CH11 X X 1 0 1 0 1 1
S.E. CH12 X X 1 0 1 1 0 0
S.E. CH13 X X 1 0 1 1 0 1
S.E. CH14 X X 1 0 1 1 1 0
S.E. CH15 X X 1 0 1 1 1 1
D.I. CH0 X X 1 1 0 0 0 0
D.I. CH1 X X 1 1 0 0 0 1
D.I. CH2 X X 1 1 0 0 1 0
D.I. CH3 X X 1 1 0 0 1 1
D.I. CH4 X X 1 1 0 1 0 0
D.I. CH5 X X 1 1 0 1 0 1
D.I. CH6 X X 1 1 0 1 1 0
D.I. CH7 X X 1 1 0 1 1 1
34 • Registers
4.4 A/D Range Control Register
The A/D range register is used to adjust the analog input ranges for the
A/D channels. Two factor effects the input range: Gain and Polarity. For
the ACL-8112PG, This register controls the PGA (programmable gain)
directly and there is no Unipolar setting. When a different gain value is set,
the analog input range is changed. For the ACL-8112DG/HG, both the
PGA and polarity are controlled by this register. Table 4.2 shows the
relationship between the register data and the A/D input range.
Address : BASE + 9
Attribute: write only
Data Format:
Bit 7 6 5 4 3 2 1 0
BASE+9 X X X X G3 G2 G1 G0
Registers • 35
( This table is only for the ACL-8112DG: Low Gain Card)
Bipolar
or Input Range
G3 G2 G1 G0 GAIN
Unipolar
1 0 0 0 0.5 Bipolar ± 10V
0 0 0 0 1 Bipolar ± 5V
0 0 0 1 2 Bipolar ± 2.5V
0 0 1 0 4 Bipolar ± 1.25V
0 0 1 1 8 Bipolar ± 0.625V
0 1 0 0 1 Unipolar 0V ~ 10V
0 1 0 1 2 Unipolar 0V ~ 5V
0 1 1 0 4 Unipolar 0V ~ 2.5V
0 1 1 1 8 Unipolar 0V ~ 1.25V
36 • Registers
4.5 A/D Operation Mode Control Register
The A/D operation includes the analog signal conversion and the data
transformation. This register controls the internal trigger mode and data
transformation method. It is initialized by a software trigger or program
polling transfer when the PC is reset or powered on. The details of the A/D
operation are described in Chapter 5. There are four operation modes.
Address : BASE + 11
Attribute: write only
Data Format:
Bit 7 6 5 4 3 2 1 0
BASE+11 X X X X X S2 S1 S0
Note:
1. When your system is powered on or reset, the A/D operation will be
initialized as " software trigger or program polling" mode.
2. No matter which mode is selected, the external trigger is available if JP4
is set as external trigger.
3. As long as the DMA mode is not used, the program polling mode is
always selectable. The synchronization of the A/D conversion and data
transfer should be of a concern when using program polling mode.
4. An interrupt will occur at the end of each conversion when the "timer
pacer trigger and interrupt transfer" mode is selected. If you want to use
the pacer trigger and interrupt transfer mode, you must enable the IRQ
level.
Registers • 37
4.6 Interrupt Status Register
The Interrupt Status Register is used to clear the interrupt status so a new
interrupt can be generated. If the ACL-8112 is in interrupt data transfer mode,
a hardware status flag will be set after each A/D conversion. You must clear
the status flag by writing any data to this register, so that the ACL-8112 can
generate a new or next interrupt if a new A/D conversion is to happen.
Address : BASE + 8
Attribute: write only
Data Format:
Bit 7 6 5 4 3 2 1 0
BASE+8 X X X X X X X X
Address : BASE + 12
Attribute: write only
Data Format:
Bit 7 6 5 4 3 2 1 0
BASE+12 X X X X X X X X
38 • Registers
4.8 Digital I/O register
There are 16 digital input channels and 16 digital output channels provided
by the ACL-8112. The address Base + 6 and Base + 7 are used for the digital
input channels, and the address Base + 13 and Base + 14 are used for digital
output channels.
Registers • 39
4.9 D/A Output Register
The D/A converter will convert the D/A output register data to an analog
signal. The register data at address Base + 4 and Base + 5 are used for D/A
channel 1and Base +6 and Base +7 for D/A channel 2.
Note: The D/A registers are "double buffered" so that the D/A analog output
signals will not updated until the second (high) byte contains data or
written to. This will ensure a single step transition for a D/A conversion.
40 • Registers
4.10 Internal Timer/Counter Register
Two 8254 counters are used for periodical triggering of the A/D converter,
with one left for user applications. The 8254 occupies 4 I/O address
locations in the ACL-8112 as listed blow. Users may refer to NEC's or Intel's
data sheet for full detail of the 8254. Summarized information is specified in
Appendix B.
Registers • 41
5
Operation Theory
The operation theory of the ACL-8112 card is described in this chapter. The
function description include the A/D conversion, D/A conversion, digital I/O
and counter / timer. The operation theory can help you understand how to
manipulate or program the ACL-8112.
42 • Operation Theory
The A/D data should now be transferred into the PC's memory for further
processing. The ACL-8112 provides three data transfer modes that allow
users to optimize their DAS system. Refer to section 5.1.3 for data transfer
modes.
Operation Theory • 43
5.1.3 A/D Data Transfer Modes
On the ACL-8112, there are three A/D data transfer modes that can be used
when A/D conversion is completed. The data transfer mode is controlled by
the mode control register (BASE+11). The different transfer modes are
described below:
Software Data Transfer
Usually, this mode is used with software A/D trigger mode. After the A/D
conversion is triggered by the software, the software will poll the DRDY bit
until it becomes high. Whenever the low byte of the A/D data is read, the
DRDY bit will be cleared to indicate the data has been read.
It is possible to read the A/D converted data without polling. The A/D
conversion time will not excess 8µs on the ACL-8112 card. Hence, after a
software trigger, the software can wait for at least 8µs then read the A/D
register without polling.
Interrupt Transfer
The ACL-8112 provides hardware interrupt capability. Under this mode, an
interrupt signal is generated when an A/D conversion has ended and the data
is ready to be read. It is useful to combine the interrupt transfer mode with
the timer pacer trigger mode. Under this combination, the data transfer is
essentially asynchronous with the controlling software.
When the interrupt transfer mode is used, you have to set the interrupt IRQ
level using hardware jumpers. Refer to section 2.10 for IRQ jumper setting.
After an A/D conversion is completed, a hardware interrupt will be inserted
and its corres ponding ISR (Interrupt Service Routine) will be invoked and
executed. The converted data is transferred by the ISR program.
DMA Transfer
The DMA (Direct Memory Access) allows data to be transferred directly
between the ACL-8112 and the PC memory at the fastest possible rate,
without using any CPU time. The A/D data is automatically transferred to
PC's memory after conversion is completed.
The DMA transfer mode is very complex to program. It is recommended that
a high level programming library be used to operate this card in this mode. If
you wish to program a software which can handle DMA data transfer, refer to
information about the 8237 DMA controller.
44 • Operation Theory
5.2 D/A Conversion
The operation of the D/A conversion is simpler than the A/D operation. You
only need to write the digital values into the D/A data registers and the
corresponding voltage will be outputted through AO1 or AO2. Refer to
section 4.9 for information about the D/A data registers. The mathematical
relationship between the digital number DAn and the output voltage is
formulated as follows:
DAn
Vout = −Vref ×
4096
where Vref is the reference voltage, Vout is the output voltage, and DAn is
the digital value in the D/A data registers.
Before performing the D/A conversion, users should be aware of the D/A
reference voltage which is set by JP1, JP2 and JP3. Please refer to section
2.11 for jumper setting. The reference voltage will effect the output voltage. If
the reference voltage is -5V, the D/A output scaling will be 0~5V. If the
reference voltage is -10V, the D/A output scaling will be 0~10V.
Note that the D/A registers are "double buffered", so that the D/A analog
output signals will not be updated until the high byte is written. When writing
12-bit data to the D/A registers, the low byte must be written to first before
the high byte. This procedure will ensure a single step transition for a D/A
conversion.
Operation Theory • 45
5.4 Timer/Counter Operation
The ACL-8112 has an 8254 interval timer/counter on board. Refer to section
3.5 for signal connection and the configuration of the counter.
The 8254 Timer / Counter Chip
The Intel (NEC) 8254 contains three independent, programmable, multi-
mode 16 bit counter/timers. The three independent 16 bit counters can be
clocked at rates from DC to 5 MHz. Each counter can be individually
programmed with 6 different operating modes by appropriately formatted
control words. The most commonly uses for the 8254 in microprocessor
based systems are:
46 • Operation Theory
I/O Address
The 8254 in the ACL-8112 occupies 4 I/O address as shown below.
BASE + 0 LSB OR MSB OF COUNTER 0
BASE + 1 LSB OR MSB OF COUNTER 1
BASE + 2 LSB OR MSB OF COUNTER 2
BASE + 3 CONTROL BYTE
The programming of the 8254 is control by registers BASE+0 to BASE+3.
The function of each register is specified in this section. For more detailed
information, refer to the 8254 handbook.
Control Byte
Before loading or reading any of these individual counters, the control byte
(BASE+3) must be loaded first. The format of the control byte is:
Bit 7 6 5 4 3 2 1 0
Operation Theory • 47
0 16-BITS BINARY COUNTER
BINARY CODED DECIMAL (BCD) COUNTER (4
1
DIGITAL)
The count of the binary counter is from 0 up to
Note 65,535 and the count of the BCD counter is from 0
up to 9,999
Mode Definitions
With the 8254, six operating modes can be selected. they are:
• Mode 0: Interrupt on Terminal Count
• Mode 1: Programmable One-Shot.
• Mode 2: Rate Generator
• Mode 3: Square Wave Rate Generator
• Mode 4: Software Triggered Strobe
• Mode 5: Hardware Triggered Strobe
48 • Operation Theory
6
2. Write a digital value into the D/A register (BASE+4 and BASE+5).
2. Write a digital value into the D/A register (BASE+6 and BASE+7).
4. Trim VR1 to obtain a reading that toggles between 4094 and 4095.
This value is displayed on the monitor of the calibration program
8112UTIL.exe.
6. Trim VR1 to obtain a reading that toggles between 4094 and 4095.
This value is displayed on the monitor of th e calibration program
8112UTIL.exe.
C Language Library
C Language Library • 53
7.1 _8112_Initial
Description
All ACL-8112 cards are initialized according to its card number and its
corresponding base address. Every ACL-8112 Multi-Function Data
Acquisition Card must be initialized using this function before any other
function calls are permitted.
Syntax
int _8112_Initial(int card_number, int type, int
base_addresss )
int _8112pg_Initial(int card_number, int
base_addresss )
Argument:
card_number: the card number to be initialized, only
two cards can be initialized, the card
number must be CARD_1 or CARD_2.
Type :there are 4 different types of ACL-8112
cards, they are:
A8112B_ HG: 8112 High Gain card Ver. B
A8112B_DG: 8112 Low Gain card Ver. B
A8112C_HG: 8112 High Gain card Ver. C
A8112C_DG: 8112 Low Gain card Ver. C
Note: the difference between Ver.B and
Ver.C is the Multi-Scan Register. The
control code for each version is
slight different. For details, please
refer to the hardware manual for the
specific ACL-8112 card.
54 • C Language Library
Example:
#include "8112.h"
main()
{
int ErrCode;
C Language Library • 55
7.2 _8112_Switch_Card_No
Description
This function is used on a system that has two ACL-8112 card inserted.
After initializing the two ACL-8112 cards, this function is called upon to
select the default card.
Note: This library only has support for two ACL-8112 because only two DMA
channels are supported by the card.
Syntax
int _8112_Switch_Card_No(int card_number)
int _8112pg_Switch_Card_No(int card_number)
Argument:
card_number: The card number to be initialized, only
two cards can be initialized, the card
number must be CARD_1 or CARD_2.
Return Code:
ERR_NoError
ERR_InvalidBoardNumber
Example:
#include “8112.h”
main()
{
_8112_Initial( CARD_1, A8112B_HG, 0x210 );
_8112_Initial( CARD_2, A8112B_DG, 0x220 );
/* Assume NoError when Initialize ACL-8112 */
_8112_Switch_Card_No( CARD_1 );
/*..... You can perform certain functions
to Card_1 here*/
_8112_Switch_Card_No( CARD_2 );
/*..... You can perform certain functions
to Card_2 here*/
}
56 • C Language Library
7.3 _8112_DI
Description
This function is used to read data from the digital input port. There are
16 bits available for the digital inputs. Bit 0 to bit 7 of the register is
defined as the low byte and bit 8 to bit 15 are defined as the high byte.
Syntax
int _8112_DI( int port_number, unsigned char *data )
int _8112pg_DI( int port_number, unsigned char *data )
Argument:
port_number: To indicate which port is read,
DI_LO_BYTE
or DI_HI_BYTE.
DI_LO_BYTE: bit 0 ~ bit 7,
DI_HI_BYTE: bit8 ~ bit15
data: return value from digital port.
Return Code:
ERR_NoError
ERR_BoardNoInit
ERR_PortError
Example:
See Demo program . Demo Program 'DI_DEMO.C'
C Language Library • 57
7.4 _8112_DI _Channel
Description
This function is used to read data from the digital input channels (bit).
There are 16 digital input channels on the ACL-8112. When performing
this function, the digital input port is read and the value of the
corresponding channel is returned.
* channel means each bit of the digital input ports.
Syntax
int _8112_DI_Channel(int di_ch_no, unsigned int
*data )
int _8112pg_DI(int di_ch_no, unsigned int *data )
Argument:
di_ch_no: the DI channel number, the value is
between from 0 to 15.
data: return value, either 0 or 1.
Return Code:
ERR_NoError
ERR_BoardNoInit
ERR_InvalidDIChannel
Example:
#include “8112.h”
main()
{
unsigned int data;
int ch;
58 • C Language Library
7.5 _8112_DO
Description
This function is used to write data to the digital output port. There are
16 digital outputs on the ACL-8112, they are divided into two categories,
DO_LO_BYTE and DO_HI_BYTE. Channel 0 to channel 7 is defined
as the DO_LO_BYTE port and channels 8 to 15 are defined as the
DO_HI_BYTE port.
Syntax
int _8112_DO(int port_number, unsigned char data )
int _8112pg_DO(int port_number, unsigned char data )
Argument:
port_number: DO_LO_BYTE or DO_HI_BYTE
data: value will be written to digital output port
Return Code:
ERR_NoError
ERR_BoardNoInit
ERR_PortError
Example:
#include “8112.h”
main()
{
C Language Library • 59
7.6 _8112_DA
Description
This function is used to write data to the D/A converter. There are two
Digital-to-Analog conversion channels on the ACL-8112. The resolution
of each channel is 12-bit, thus the digital data ranges is from 0 to 4095.
Syntax
int _8112_DA(int da_ch_no, unsigned int data )
int _8112pg_DA(int da_ch_no, unsigned int data )
Argument:
da_ch_no: D/A channel number, DA_CH_1 or DA_CH_2.
data: D/A converted value, if the value is greater
than 4095, the higher 4-bits are negligent.
Return Code:
ERR_NoError
ERR_BoardNoInit
ERR_InvalidDAChannel
Example:
#include “8112.h”
main()
{
60 • C Language Library
7.7 _8112_AD_Input_Mode
Description
This function is only used with the ACL-8112 ver. B series.
The ACL-8112 offers either 16 single-ended analog input channels or 8
differential analog input channels. If the ACL-8112 ver B card is used,
you have to call this function to initialize the A/D operation.
Syntax
int _8112_AD_Input_Mode( int ad_mode )
Argument:
ad_ch_mode:
SINGLE_ENDED: the analog inputs are single-ended
mode.
DIFFERENTIAL : the analog inputs are differential.
Return Code:
ERR_NoError
ERR_BoardNoInit
ERR_InvalidADChannel
Example:
#include “8112.h”
main()
{
int j;
_8112_AD_Input_Mode( DIFFERENTIAL) ;
/* set analog input mode as “differential” mode */
/* if this function is not called, the default input
mode is single-ended mode */
C Language Library • 61
for( j = 0; j < 7 ; j++)
{
_8112_AD_Set_Channel( j );
62 • C Language Library
7.8 _8112_AD_Set_Channel
Description
This function is used to set the AD channel by means of writing data to
the multiplexer scan channel register. There are 16 single-ended A/D
channels for the ACL-8112, so the channel number must be set to
between 0 and 15. The initial state is channel 0, which is the default
setting for the ACL-8112.
Syntax
int _8112_AD_Set_Channel( int ad_ch_no )
int _8112pg_AD_Set_Channel( int ad_ch_no )
Argument:
ad_ch_no: Number of channels to perform AD
conversions:
for single-ended mode: 0 -15
for differential mode: 0-7
Return Code:
ERR_NoError
ERR_BoardNoInit
ERR_InvalidADChannel
Example:
#include “8112.h”
main()
{
_8112_Initial( CARD_1, A8112B_DG, 0x220 );
/* Assume NoError when Initialize ACL-8112 */
_8112_AD_Input_Mode( DIFFERENTIAL) ;
/* set analog input mode as “differential” mode */
_8112_AD_Set_Channel( 3 );
printf( "AD channel 3 is now selected.\n" );
...
C Language Library • 63
7.9 _8112_AD_Set_Range
Description
This function is used to set the A/D analog input range by means of
writing data to the A/D range control register. There are two factors that
will effect the analog input range - Gain and Input type.
The Gain can be any of the following factors 0.5, 1, 5, 10, 50, 100, 500,
and 1,000 for the ACL-8112HG card.
The input type is either Bipolar or Unipolar.
The initial value of the gain is '1‘ and input type is bipolar, which is pre-
set by the ACL-8112 hardware. The relationship between analog input
voltage range, gain and input mode are specified in the following tables:
Input type
(Bipolar or
AD_INPUT GAIN Input Range
Unipolar)
AD_B_5_V 1 Bipolar ± 5V
AD_B_0_5_V 10 Bipolar ± 0.5V
AD_B_0_05_V 100 Bipolar ± 0.05V
AD_B_0_005_V 1,000 Bipolar ± 0.005V
AD_U_10_V 1 Unipolar 0V ~ 10V
AD_U_1_V 10 Unipolar 0V ~ 1V
AD_U_0_1_V 100 Unipolar 0V ~ 0.1V
AD_U_0_01_V 1,000 Unipolar 0V ~ 0.01V
AD_B_10_V 0.5 Bipolar ± 10V
AD_B_1_V 5 Bipolar ± 1V
AD_B_0_1_V 50 Bipolar ± 0.1V
AD_B_0_01_V 500 Bipolar ± 0.01V
64 • C Language Library
For the ACL-8112DG card, the gain values supported are 1, 2, 4, and 8.
The relationship between analog input voltage range, gain and input
type are specified in the table below.
** this table only applies for the ACL-8112DG ( low gain) card.
Input type
AD_INPUT GAIN (Bipolar or Input Range
Unipolar)
AD_B_5_V 1 Bipolar ± 5V
AD_B_2_5_V 2 Bipolar ± 2.5V
AD_B_1_25_V 4 Bipolar ± 1.25V
AD_B_0_625_V 8 Bipolar ± 0.625V
AD_U_10_V 1 Unipolar 0V ~ 10V
AD_U_5_V 2 Unipolar 0V ~ 5V
AD_U_2_5_V 4 Unipolar 0V ~ 2.5V
AD_U_1_25_V 8 Unipolar 0V ~ 1.25V
For the ACL-8112PG card, the gain values supported are 1,2,4,8,and
16.
The initial value of the gain is '1'. The relationship between gain and
input voltage ranges is specified by following tables:
when input voltage range is set to ±5 V (JP9),
Gain Code Gain Input Range (V)
AD_GAIN_1 X1 ±5 V
AD_GAIN_2 X2 ±2.5 V
AD_GAIN_4 X4 ±1.25 V
AD_GAIN_8 X8 ±0.625 V
AD_GAIN_16 X 16 ±0.3125V
C Language Library • 65
Syntax
int _8112_AD_Set_Range( int ad_range )
int _8112pg_AD_Set_Gain( int ad_range )
Argument:
int ad_range: the programmable range of A/D
conversion, pleas refer to above tables for the
possible values .
Return Code:
ERR_NoError
ERR_BoardNoInit
ERR_AD_InvalidRange
Example:
#include “8112.h”
main()
{
_8112_Initial( CARD_1, A8112B_HG, 0x220 );
/* Assume NoError when Initialize ACL-8112 */
_8112_AD_Input_Mode( DIFFERENTIAL) ;
/* set analog input mode as “differential” mode */
_8112_AD_Set_Range( AD_B_5_V );
printf( "The A/D analog input range is +/- 5V \n" );
66 • C Language Library
7.10 _8112_AD_Set_Mode
Description
This function is used to set the A/D trigger and data transfer mode by
means of writing data to the mode control register. The hardware initial
state for the ACL-8112 is set as AD_MODE_1 software( internal) trigger
with program polling data mode.
A/D Mode Description
AD_MODE_0 External Trigger, Software Polling
AD_MODE_1 Software Trigger, Software Polling
AD_MODE_2 Timer Trigger, DMA Transfer
AD_MODE_3 External Trigger, DMA Transfer
AD_MODE_4 External Trigger, Interrupt Transfer
AD_MODE_5 Software Trigger, Interrupt Transfer
AD_MODE_6 Timer Trigger, Interrupt Transfer
AD_MODE_7 Not Used
Note: All analog input modes selection should match with the hardware
settings, which is described in the hardware users manual.
Syntax
int _8112_AD_Set_Mode(int ad_mode )
int _8112pg_AD_Set_Mode(int ad_mode )
Argument:
ad_mode: AD trigger and data transfer mode
( please refer above table.)
Return Code:
ERR_NoError
ERR_BoardNoInit
ERR_InvalidMode
C Language Library • 67
Example:
#include “8112.h”
main()
{
_8112_Initial( CARD_1, A8112B_HG, 0x220 );
/* Assume NoError when Initialize ACL-8112 */
_8112_AD_Input_Mode( DIFFERENTIAL) ;
/* set analog input mode as “differential” mode */
_8112_AD_Set_Range( AD_B_5_V );
printf( "The A/D analog input range is +/- 5V \n" );
_8112_AD_Set_Mode( AD_MODE_6 );
printf( "Now, disable internal trigger.\n" );
68 • C Language Library
7.11 _8112_AD_Soft_Trig
Description
This function is used to trigger an A/D conversion using software trigger.
When the function is called, a trigger pulse will be generated and the
converted data will be stored at base address Base+4 and Base+5, and
can be retrieved using function _8112_AD_Acquire(). Refer to section
7.12.
Syntax
int _8112_AD_Soft_Trig( void )
int _8112pg_AD_Soft_Trig( void )
Argument:
None
Return Code:
ERR_NoError
ERR_BoardNoInit
Example:
#include “8112.h”
main()
{
_8112_Initial( CARD_1, 8112DG, 0x220 );
/* Assume NoError when Initialize ACL-8112 */
_8112_AD_Soft_Trig();
printf( "Now, AD is triggered.\n" );
.
.
_8112_AD_Aquire( &data);
}
C Language Library • 69
7.12 _8112_AD_Aquire
Description
This function is used to poll an AD conversion. It will trigger an AD
conversion, and read a 12-bit A/D data when the data is ready ('data
ready' bit becomes low).
Syntax
int _8112_AD_Aquire( int *ad_data )
int _8112pg_AD_Aquire( int *ad_data )
Argument:
ad_data: 12-bit A/D converted value, the value
should
within 0 to 4095.
Return Code:
ERR_NoError
ERR_BoardNoInit
ERR_AD_AquireTimeOut
Example:
#include “8112.h”
main()
{
int ad_data;
int ErrCode;
70 • C Language Library
7.13 _8112_CLR_IRQ
Description
This function is used to clear an interrupt request which gets requested
by the ACL-8112. If you used an interrupt to transfer an A/D converted
data, you should use this function to clear the interrupt request status,
otherwise new interrupts will not be generated.
Syntax
int _8112_CLR_IRQ( void )
int _8112pg_CLR_IRQ( void )
Argument:
None
Return Code:
ERR_NoError
ERR_BoardNoInit
C Language Library • 71
7.14 _8112_AD_DMA_Start
Description
The function will perform an A/D conversion N times with DMA data
transfer using the pacer trigger (internal timer trigger). It takes place in
the background and will not stop until the Nth conversion has been
performed or your program executes the _8112_AD_DMA_Stop()
function to stop the process. After executing this function, it is
necessary to check the status of the operation by using the function
_8112_AD_DMA_Status(). This function can only be performed on an
A/D channel with a fixed analog input range.
Syntax
int _8112_DMA_Start( int ad_ch_no, int ad_range,
int dma_ch_no, int irq_ch_no
int count , int *ad_buffer
unsigned int c1, unsigned int c2)
int _8112pg_DMA_Start( int ad_ch_no, int ad_gain,
int dma_ch_no, int irq_ch_no
int count , int *ad_buffer
unsigned int c1, unsigned int c2)
Argument:
ad_ch_no: A/D channel number
ad_range: A/D analog input range, please refer to
the Section 7.9 to find the possible
values.
dma_ch_no: DMA channel number, DMA_CH_1 or DMA_CH_3
Note: Make sure your hardware configuration is set to the correct DMA
channel.
Note: Make sure your hardware configuration is set to the correct IRQ
interrupt level.
72 • C Language Library
count: the number of A/D conversion
ad_buffer: the start address of the memory buffer
to store the AD data, the buffer size
must large than the numbers of AD
conversion.
c1: the 16-bit timer frequency divider of
timer channel #1
c2: the 16-bit timer frequency divider of
timer channel #2
Return Code:
ERR_NoError
ERR_BoardNoInit,
ERR_InvalidADChannel,
ERR_AD_InvalidRange,
ERR_InvalidDMAChannel,
ERR_InvalidIRQChannel,
ERR_InvalidTimerValue
Example:
See Demo Program 'AD_Demo4.C
C Language Library • 73
7.15 _8112_AD_DMA_Status
Description
Since the _8112_AD_DMA_Start function is executed in the
background, you can issue the function _8112_AD_DMA_Status to
check its operation status.
Syntax
int _8112_AD_DMA_Status( int *status , int *count )
int _8112pg_AD_DMA_Status( int *status , int *count )
Argument:
status: status of the DMA data transfer
0: AD DMA is not completed
1: AD DMA is completed
count: the number of A/D data which has been
transferred.
Return Code:
ERR_NoError
ERR_BoardNoInit
ERR_AD_DMANotSet
Example:
See demo program 'AD_Demo4.C'
74 • C Language Library
7.16 _8112_AD_DMA_Stop
Description
This function is used to stop the DMA data transfer. After executing this
function, the internal A/D trigger is disabled and the A/D timer ( timer #1
and #2) is stopped. The function returns the number of data’s which
have been transferred, no matter if the A/D DMA data transfer is
stopped by this function or by the DMA terminal count ISR.
Syntax
int _8112_AD_DMA_Stop( int *count )
int _8112pg_AD_DMA_Stop( int *count )
Argument:
count: the number of A/D converted data which
has beentransferred.
Return Code:
ERR_NoError
ERR_BoardNoInit
ERR_AD_DMANotSet
Example:
See demo program 'AD_Demo4.C'
C Language Library • 75
7.17 _8112_AD_INT_Start
Description
The function will perform an A/D conversion N times with interrupt data
transfer using the pacer trigger. It takes place in the background which
will not stopped until the Nth conversion has completed or your program
executes the _8112_AD_INT_Stop() function to stop the process. After
executing this function, it is necessary to check the status of the
operation by issuing the 8112_AD_INT_Status() function. The function
can only be performed on an A/D channel with a fixed analog input
range.
Syntax
int _8112_INT_Start( int ad_ch_no, int ad_range,
int irq_ch_no, int count, int
*ad_buffer, unsigned int c1, unsigned int c2)
int _8112pg_INT_Start( int ad_ch_no, int ad_gain,
int irq_ch_no, int count, int
*ad_buffer, unsigned int c1, unsigned int c2)
Argument:
ad_ch_no: A/D channel number
ad_range: A/D analog input range, please refer
to section 7.9 for the possible
values.
76 • C Language Library
Return Code:
ERR_NoError
ERR_BoardNoInit
ERR_InvalidADChannel
ERR_AD_InvalidRange
ERR_InvalidIRQChannel
ERR_InvalidTimerValue
Example:
See demo Program 'AD_Demo2.C'
7.18 _8112_AD_INT_Status
Description
Since the _8112_AD_INT_Start() function is executed in the
background, you can issue the function _8112_AD_INT_Status to check
the status of the interrupt operation.
Syntax
int _8112_AD_INT_Status( int *status , int *count )
int _8112pg_AD_INT_Status( int *status , int *count )
Argument:
status: status of the INT data transfer
0: A/D INT is completed
1: A/D INT is not completed
count: current conversion count number.
Return Code:
ERR_NoError
ERR_BoardNoInit
ERR_AD_INTNotSet
Example:
See demo program 'AD_Demo2.C'
C Language Library • 77
7.19 _8112_AD_INT_Stop
Description
This function is used to stop the interrupt data transfer function. After
executing this function, the internal AD trigger is disabled and the AD
timer is stopped. The function returns the number of data which has
been transferred, no matter whether the AD interrupt data transfer is
stopped by this function or by the _8112_AD_INT_Start() itself.
Syntax
int _8112_AD_INT_Stop( int *count )
int _8112pg_AD_INT_Stop( int *count )
Argument:
count: the number of A/D data which has been
transferred.
Return Code:
ERR_NoError
ERR_BoardNoInit
ERR_AD_INTNotSet
Example:
See Demo Program 'AD_Demo2.C'
78 • C Language Library
7.20 _8112_AD_Timer
Description
This function is used to setup Timer #1 and Timer #2.
Timer #1 & #2 are used as frequency dividers for generating constant
A/D sampling rate. It is possible to stop the pacer trigger by setting any
one of the dividers to 0. The AD conversion rate is limited by the
conversion time of the AD converter, the highest sampling rate of the
ACL-8112 can not exceed 100KHz, thus the multiplication of the
dividers must be larger than 20.
Syntax
int _8112_AD_Timer( unsigned int c1 , unsigned int
c2 )
int _8112pg_AD_Timer( unsigned int c1 , unsigned int
c2 )
Argument:
c1: frequency divider of timer #1
c2: frequency divider of timer #2,
Note: The A/D sampling rate is equal to: 2MHz / (c1 * c2), if c1 = 0 or c2 =
0, the pacer trigger will be stopped.
Return Code:
ERR_NoError
ERR_BoardNoInit
ERR_InvalidTimerValue
Example:
main()
{
int ErrCode;
_8112_Initial( CARD_1, A8112B_HG, 0x220 );
/* Assume ERR_NoError when Initialize ACL-8112 */
_8112_AD_Timer( 10 , 10 );
/* set AD sampling rate to 2MHz/(10*10) */
..
_8112_AD_Timer( 0 , 0 );
/* stop the pacer trigger */
}
C Language Library • 79
7.21 _8112_TIMER_Start
Description
Timer #0 on the ACL-8112 is freely available to be programmed by the
users. This function is used to program Timer #0. This timer can be
used as a frequency generator if an internal clock is used. It also can
be used as an event counter if an external clock is used.
Syntax
int _8112_TIMER_Start( int timer_mode, unsigned int
c0 )
int _8112pg_TIMER_Start( int timer_mode, unsigned int
c0 )
Argument:
timer_mode: the 8253 timer mode, the possible
values are:
TIMER_MODE0, TIMER_MODE1,
TIMER_MODE2, TIMER_MODE3,
TIMER_MODE4, TIMER_MODE5.
c0: the counter value of timer
Return Code:
ERR_NoError
ERR_BoardNoInit
ERR_InvalidTimerMode
ERR_InvalidTimerValue
Example:
See demo program 'TMR_DEMO.C'
80 • C Language Library
7.22 _8112_TIMER_Read
Description
This function is used to read the counter value of Timer #0.
Syntax
int _8112_TIMER_Read( unsigned int *counter_value )
int _8112pg_TIMER_Read( unsigned int *counter_value )
Argument:
counter_value: the counter value of the Timer #0
Return Code:
ERR_NoError
ERR_BoardNoInit
Example:
See demo program 'TMR_DEMO.C'
7.23 _8112_TIMER_Stop
Description
This function is used to stop the timer operation. The timer is set to
'One-shot' mode with counter value ' 0 '. That is, the clocks’ output
signal will be set high after executing this function.
Syntax
int _8112_TIMER_Stop( unsigned int *counter_value )
int _8112pg_TIMER_Stop( unsigned int *counter_value )
Argument:
*counter_value: the current counter value of the
Timer #0
Return Code:
ERR_NoError
ERR_BoardNoInit
Example:
See demo program 'TMR_DEMO.C'
C Language Library • 81
Appendix A. Demo Programs
In this software diskette, there are 8 example programs provided. It will help
with programming applications using the C Language Library. The
description of these programs are describe below:
Thank you for choosing ADLINK. To understand your rights and enjoy all
the after-sales services we offer, please read the fo llowing carefully.
1. Before using ADLINK’s products, please read the user manual and
follow the instructions exactly. When sending in damaged products
for repair, please attach an RMA application form.
Warranty Policy • 83
4. Customers are responsible for the fees regarding transportation of
damaged products to our company or to the sales office.
84 • Warranty Policy