2 * Copyright (C) 2004,2005 ADDI-DATA GmbH for the source code of this module.
7 * Tel: +19(0)7223/9493-0
8 * Fax: +49(0)7223/9493-92
9 * http://www.addi-data-com
12 * This program is free software; you can redistribute it and/or modify it
13 * under the terms of the GNU General Public License as published by the Free
14 * Software Foundation; either version 2 of the License, or (at your option)
18 // Card Specific information
19 #define APCI3200_BOARD_VENDOR_ID 0x15B8
20 //#define APCI3200_ADDRESS_RANGE 264
29 INT i_AutoCalibration
;
31 UINT ui_TimeUnitReloadVal
;
33 INT i_ModuleSelection
;
34 } Config_Parameters_Module1
, Config_Parameters_Module2
,
35 Config_Parameters_Module3
, Config_Parameters_Module4
;
38 static const struct comedi_lrange range_apci3200_ai
= { 8, {
50 static const struct comedi_lrange range_apci3300_ai
= { 4, {
58 //Analog Input related Defines
59 #define APCI3200_AI_OFFSET_GAIN 0
60 #define APCI3200_AI_SC_TEST 4
61 #define APCI3200_AI_IRQ 8
62 #define APCI3200_AI_AUTOCAL 12
63 #define APCI3200_RELOAD_CONV_TIME_VAL 32
64 #define APCI3200_CONV_TIME_TIME_BASE 36
65 #define APCI3200_RELOAD_DELAY_TIME_VAL 40
66 #define APCI3200_DELAY_TIME_TIME_BASE 44
67 #define APCI3200_AI_MODULE1 0
68 #define APCI3200_AI_MODULE2 64
69 #define APCI3200_AI_MODULE3 128
70 #define APCI3200_AI_MODULE4 192
73 #define APCI3200_AI_EOSIRQ 16
74 #define APCI3200_AI_EOS 20
75 #define APCI3200_AI_CHAN_ID 24
76 #define APCI3200_AI_CHAN_VAL 28
77 #define ANALOG_INPUT 0
81 #define ENABLE_EXT_TRIG 1
82 #define ENABLE_EXT_GATE 2
83 #define ENABLE_EXT_TRIG_GATE 3
85 #define APCI3200_MAXVOLT 2.5
86 #define ADDIDATA_GREATER_THAN_TEST 0
87 #define ADDIDATA_LESS_THAN_TEST 1
89 #define ADDIDATA_UNIPOLAR 1
90 #define ADDIDATA_BIPOLAR 2
92 //BEGIN JK 21.10.2004: APCI-3200 / APCI-3300 Reading of EEPROM values
94 //END JK 21.10.2004: APCI-3200 / APCI-3300 Reading of EEPROM values
97 ULONG ul_NumberOfValue
;
98 ULONG
*pul_ResistanceValue
;
99 ULONG
*pul_TemperatureValue
;
100 } str_ADDIDATA_RTDStruct
, *pstr_ADDIDATA_RTDStruct
;
102 //BEGIN JK 21.10.2004: APCI-3200 / APCI-3300 Reading of EEPROM values
104 // Begin JK 05/08/2003 change for Linux
105 unsigned long ul_CurrentSourceCJC
;
106 unsigned long ul_CurrentSource
[5];
107 // End JK 05/08/2003 change for Linux
109 // Begin CG 15/02/02 Rev 1.0 -> Rev 1.1 : Add Header Type 1
110 unsigned long ul_GainFactor
[8]; // Gain Factor
111 unsigned int w_GainValue
[10];
112 // End CG 15/02/02 Rev 1.0 -> Rev 1.1 : Add Header Type 1
114 //END JK 21.10.2004: APCI-3200 / APCI-3300 Reading of EEPROM values
116 //BEGIN JK 06.07.04: Management of sevrals boards
122 INT i_ADDIDATAPolarity
;
124 INT i_AutoCalibration
;
125 INT i_ADDIDATAConversionTime
;
126 INT i_ADDIDATAConversionTimeUnit
;
138 //UINT ui_InterruptChannelValue[96]; //Buffer
139 UINT ui_InterruptChannelValue
[144]; //Buffer
140 BYTE b_StructInitialized
;
141 //Begin JK 19.10.2004: APCI-3200 Driver update 0.7.57 -> 0.7.68
142 unsigned int ui_ScanValueArray
[7 + 12]; // 7 is the maximal number of channels
143 //End JK 19.10.2004: APCI-3200 Driver update 0.7.57 -> 0.7.68
145 //Begin JK 21.10.2004: APCI-3200 / APCI-3300 Reading of EEPROM values
146 INT i_ConnectionType
;
148 str_Module s_Module
[MAX_MODULE
];
149 //End JK 21.10.2004: APCI-3200 / APCI-3300 Reading of EEPROM values
151 //END JK 06.07.04: Management of sevrals boards
153 // Hardware Layer functions for Apci3200
157 INT
i_APCI3200_ConfigAnalogInput(struct comedi_device
*dev
, struct comedi_subdevice
*s
,
158 struct comedi_insn
*insn
, unsigned int *data
);
159 INT
i_APCI3200_ReadAnalogInput(struct comedi_device
*dev
, struct comedi_subdevice
*s
,
160 struct comedi_insn
*insn
, unsigned int *data
);
161 INT
i_APCI3200_InsnWriteReleaseAnalogInput(struct comedi_device
*dev
,
162 struct comedi_subdevice
*s
,
163 struct comedi_insn
*insn
, unsigned int *data
);
164 INT
i_APCI3200_InsnBits_AnalogInput_Test(struct comedi_device
*dev
,
165 struct comedi_subdevice
*s
,
166 struct comedi_insn
*insn
, unsigned int *data
);
167 INT
i_APCI3200_StopCyclicAcquisition(struct comedi_device
*dev
, struct comedi_subdevice
*s
);
168 INT
i_APCI3200_InterruptHandleEos(struct comedi_device
*dev
);
169 INT
i_APCI3200_CommandTestAnalogInput(struct comedi_device
*dev
, struct comedi_subdevice
*s
,
170 struct comedi_cmd
*cmd
);
171 INT
i_APCI3200_CommandAnalogInput(struct comedi_device
*dev
, struct comedi_subdevice
*s
);
172 INT
i_APCI3200_ReadDigitalInput(struct comedi_device
*dev
, struct comedi_subdevice
*s
,
173 struct comedi_insn
*insn
, unsigned int *data
);
175 void v_APCI3200_Interrupt(int irq
, void *d
);
176 int i_APCI3200_InterruptHandleEos(struct comedi_device
*dev
);
178 INT
i_APCI3200_Reset(struct comedi_device
*dev
);
180 int i_APCI3200_ReadCJCCalOffset(struct comedi_device
*dev
, unsigned int *data
);
181 int i_APCI3200_ReadCJCValue(struct comedi_device
*dev
, unsigned int *data
);
182 int i_APCI3200_ReadCalibrationGainValue(struct comedi_device
*dev
, UINT
*data
);
183 int i_APCI3200_ReadCalibrationOffsetValue(struct comedi_device
*dev
, UINT
*data
);
184 int i_APCI3200_Read1AnalogInputChannel(struct comedi_device
*dev
,
185 struct comedi_subdevice
*s
, struct comedi_insn
*insn
,
187 int i_APCI3200_ReadCJCCalGain(struct comedi_device
*dev
, unsigned int *data
);