1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
|
/*
* Copyright (C) 2004,2005 ADDI-DATA GmbH for the source code of this module.
*
* ADDI-DATA GmbH
* Dieselstrasse 3
* D-77833 Ottersweier
* Tel: +19(0)7223/9493-0
* Fax: +49(0)7223/9493-92
* http://www.addi-data.com
* info@addi-data.com
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation; either version 2 of the License, or (at your option)
* any later version.
*/
#define APCI1710_16BIT_COUNTER 0x10
#define APCI1710_32BIT_COUNTER 0x0
#define APCI1710_QUADRUPLE_MODE 0x0
#define APCI1710_DOUBLE_MODE 0x3
#define APCI1710_SIMPLE_MODE 0xF
#define APCI1710_DIRECT_MODE 0x80
#define APCI1710_HYSTERESIS_ON 0x60
#define APCI1710_HYSTERESIS_OFF 0x0
#define APCI1710_INCREMENT 0x60
#define APCI1710_DECREMENT 0x0
#define APCI1710_LATCH_COUNTER 0x1
#define APCI1710_CLEAR_COUNTER 0x0
#define APCI1710_LOW 0x0
#define APCI1710_HIGH 0x1
/*********************/
/* Version 0600-0229 */
/*********************/
#define APCI1710_HIGH_EDGE_CLEAR_COUNTER 0x0
#define APCI1710_HIGH_EDGE_LATCH_COUNTER 0x1
#define APCI1710_LOW_EDGE_CLEAR_COUNTER 0x2
#define APCI1710_LOW_EDGE_LATCH_COUNTER 0x3
#define APCI1710_HIGH_EDGE_LATCH_AND_CLEAR_COUNTER 0x4
#define APCI1710_LOW_EDGE_LATCH_AND_CLEAR_COUNTER 0x5
#define APCI1710_SOURCE_0 0x0
#define APCI1710_SOURCE_1 0x1
#define APCI1710_30MHZ 30
#define APCI1710_33MHZ 33
#define APCI1710_40MHZ 40
#define APCI1710_ENABLE_LATCH_INT 0x80
#define APCI1710_DISABLE_LATCH_INT (~APCI1710_ENABLE_LATCH_INT)
#define APCI1710_INDEX_LATCH_COUNTER 0x10
#define APCI1710_INDEX_AUTO_MODE 0x8
#define APCI1710_ENABLE_INDEX 0x4
#define APCI1710_DISABLE_INDEX (~APCI1710_ENABLE_INDEX)
#define APCI1710_ENABLE_LATCH_AND_CLEAR 0x8
#define APCI1710_DISABLE_LATCH_AND_CLEAR (~APCI1710_ENABLE_LATCH_AND_CLEAR)
#define APCI1710_SET_LOW_INDEX_LEVEL 0x4
#define APCI1710_SET_HIGH_INDEX_LEVEL (~APCI1710_SET_LOW_INDEX_LEVEL)
#define APCI1710_INVERT_INDEX_RFERENCE 0x2
#define APCI1710_DEFAULT_INDEX_RFERENCE (~APCI1710_INVERT_INDEX_RFERENCE)
#define APCI1710_ENABLE_INDEX_INT 0x1
#define APCI1710_DISABLE_INDEX_INT (~APCI1710_ENABLE_INDEX_INT)
#define APCI1710_ENABLE_FREQUENCY 0x4
#define APCI1710_DISABLE_FREQUENCY (~APCI1710_ENABLE_FREQUENCY)
#define APCI1710_ENABLE_FREQUENCY_INT 0x8
#define APCI1710_DISABLE_FREQUENCY_INT (~APCI1710_ENABLE_FREQUENCY_INT)
#define APCI1710_ENABLE_40MHZ_FREQUENCY 0x40
#define APCI1710_DISABLE_40MHZ_FREQUENCY (~APCI1710_ENABLE_40MHZ_FREQUENCY)
#define APCI1710_ENABLE_40MHZ_FILTER 0x80
#define APCI1710_DISABLE_40MHZ_FILTER (~APCI1710_ENABLE_40MHZ_FILTER)
#define APCI1710_ENABLE_COMPARE_INT 0x2
#define APCI1710_DISABLE_COMPARE_INT (~APCI1710_ENABLE_COMPARE_INT)
#define APCI1710_ENABLE_INDEX_ACTION 0x20
#define APCI1710_DISABLE_INDEX_ACTION (~APCI1710_ENABLE_INDEX_ACTION)
#define APCI1710_REFERENCE_HIGH 0x40
#define APCI1710_REFERENCE_LOW (~APCI1710_REFERENCE_HIGH)
#define APCI1710_TOR_GATE_LOW 0x40
#define APCI1710_TOR_GATE_HIGH (~APCI1710_TOR_GATE_LOW)
/* INSN CONFIG */
#define APCI1710_INCCPT_INITCOUNTER 100
#define APCI1710_INCCPT_COUNTERAUTOTEST 101
#define APCI1710_INCCPT_INITINDEX 102
#define APCI1710_INCCPT_INITREFERENCE 103
#define APCI1710_INCCPT_INITEXTERNALSTROBE 104
#define APCI1710_INCCPT_INITCOMPARELOGIC 105
#define APCI1710_INCCPT_INITFREQUENCYMEASUREMENT 106
/* INSN READ */
#define APCI1710_INCCPT_READLATCHREGISTERSTATUS 200
#define APCI1710_INCCPT_READLATCHREGISTERVALUE 201
#define APCI1710_INCCPT_READ16BITCOUNTERVALUE 202
#define APCI1710_INCCPT_READ32BITCOUNTERVALUE 203
#define APCI1710_INCCPT_GETINDEXSTATUS 204
#define APCI1710_INCCPT_GETREFERENCESTATUS 205
#define APCI1710_INCCPT_GETUASSTATUS 206
#define APCI1710_INCCPT_GETCBSTATUS 207
#define APCI1710_INCCPT_GET16BITCBSTATUS 208
#define APCI1710_INCCPT_GETUDSTATUS 209
#define APCI1710_INCCPT_GETINTERRUPTUDLATCHEDSTATUS 210
#define APCI1710_INCCPT_READFREQUENCYMEASUREMENT 211
#define APCI1710_INCCPT_READINTERRUPT 212
/* INSN BITS */
#define APCI1710_INCCPT_CLEARCOUNTERVALUE 300
#define APCI1710_INCCPT_CLEARALLCOUNTERVALUE 301
#define APCI1710_INCCPT_SETINPUTFILTER 302
#define APCI1710_INCCPT_LATCHCOUNTER 303
#define APCI1710_INCCPT_SETINDEXANDREFERENCESOURCE 304
#define APCI1710_INCCPT_SETDIGITALCHLON 305
#define APCI1710_INCCPT_SETDIGITALCHLOFF 306
/* INSN WRITE */
#define APCI1710_INCCPT_ENABLELATCHINTERRUPT 400
#define APCI1710_INCCPT_DISABLELATCHINTERRUPT 401
#define APCI1710_INCCPT_WRITE16BITCOUNTERVALUE 402
#define APCI1710_INCCPT_WRITE32BITCOUNTERVALUE 403
#define APCI1710_INCCPT_ENABLEINDEX 404
#define APCI1710_INCCPT_DISABLEINDEX 405
#define APCI1710_INCCPT_ENABLECOMPARELOGIC 406
#define APCI1710_INCCPT_DISABLECOMPARELOGIC 407
#define APCI1710_INCCPT_ENABLEFREQUENCYMEASUREMENT 408
#define APCI1710_INCCPT_DISABLEFREQUENCYMEASUREMENT 409
/************ Main Functions *************/
int i_APCI1710_InsnConfigINCCPT(struct comedi_device *dev, struct comedi_subdevice *s,
struct comedi_insn *insn, unsigned int * data);
int i_APCI1710_InsnBitsINCCPT(struct comedi_device *dev, struct comedi_subdevice * s,
struct comedi_insn *insn, unsigned int * data);
int i_APCI1710_InsnWriteINCCPT(struct comedi_device *dev, struct comedi_subdevice * s,
struct comedi_insn *insn, unsigned int * data);
int i_APCI1710_InsnReadINCCPT(struct comedi_device *dev, struct comedi_subdevice * s,
struct comedi_insn *insn, unsigned int * data);
/*********** Supplementary Functions********/
/* INSN CONFIG */
int i_APCI1710_InitCounter(struct comedi_device *dev,
unsigned char b_ModulNbr,
unsigned char b_CounterRange,
unsigned char b_FirstCounterModus,
unsigned char b_FirstCounterOption,
unsigned char b_SecondCounterModus,
unsigned char b_SecondCounterOption);
int i_APCI1710_CounterAutoTest(struct comedi_device *dev, unsigned char * pb_TestStatus);
int i_APCI1710_InitIndex(struct comedi_device *dev,
unsigned char b_ModulNbr,
unsigned char b_ReferenceAction,
unsigned char b_IndexOperation, unsigned char b_AutoMode,
unsigned char b_InterruptEnable);
int i_APCI1710_InitReference(struct comedi_device *dev,
unsigned char b_ModulNbr, unsigned char b_ReferenceLevel);
int i_APCI1710_InitExternalStrobe(struct comedi_device *dev,
unsigned char b_ModulNbr, unsigned char b_ExternalStrobe,
unsigned char b_ExternalStrobeLevel);
int i_APCI1710_InitCompareLogic(struct comedi_device *dev,
unsigned char b_ModulNbr, unsigned int ui_CompareValue);
int i_APCI1710_InitFrequencyMeasurement(struct comedi_device *dev,
unsigned char b_ModulNbr,
unsigned char b_PCIInputClock,
unsigned char b_TimingUnity,
unsigned int ul_TimingInterval,
unsigned int *pul_RealTimingInterval);
/* INSN BITS */
int i_APCI1710_ClearCounterValue(struct comedi_device *dev, unsigned char b_ModulNbr);
int i_APCI1710_ClearAllCounterValue(struct comedi_device *dev);
int i_APCI1710_SetInputFilter(struct comedi_device *dev,
unsigned char b_ModulNbr, unsigned char b_PCIInputClock,
unsigned char b_Filter);
int i_APCI1710_LatchCounter(struct comedi_device *dev,
unsigned char b_ModulNbr, unsigned char b_LatchReg);
int i_APCI1710_SetIndexAndReferenceSource(struct comedi_device *dev,
unsigned char b_ModulNbr,
unsigned char b_SourceSelection);
int i_APCI1710_SetDigitalChlOn(struct comedi_device *dev, unsigned char b_ModulNbr);
int i_APCI1710_SetDigitalChlOff(struct comedi_device *dev, unsigned char b_ModulNbr);
/* INSN WRITE */
int i_APCI1710_EnableLatchInterrupt(struct comedi_device *dev, unsigned char b_ModulNbr);
int i_APCI1710_DisableLatchInterrupt(struct comedi_device *dev, unsigned char b_ModulNbr);
int i_APCI1710_Write16BitCounterValue(struct comedi_device *dev,
unsigned char b_ModulNbr, unsigned char b_SelectedCounter,
unsigned int ui_WriteValue);
int i_APCI1710_Write32BitCounterValue(struct comedi_device *dev,
unsigned char b_ModulNbr, unsigned int ul_WriteValue);
int i_APCI1710_EnableIndex(struct comedi_device *dev, unsigned char b_ModulNbr);
int i_APCI1710_DisableIndex(struct comedi_device *dev, unsigned char b_ModulNbr);
int i_APCI1710_EnableCompareLogic(struct comedi_device *dev, unsigned char b_ModulNbr);
int i_APCI1710_DisableCompareLogic(struct comedi_device *dev, unsigned char b_ModulNbr);
int i_APCI1710_EnableFrequencyMeasurement(struct comedi_device *dev,
unsigned char b_ModulNbr,
unsigned char b_InterruptEnable);
int i_APCI1710_DisableFrequencyMeasurement(struct comedi_device *dev,
unsigned char b_ModulNbr);
/* INSN READ */
int i_APCI1710_ReadLatchRegisterStatus(struct comedi_device *dev,
unsigned char b_ModulNbr, unsigned char b_LatchReg,
unsigned char *pb_LatchStatus);
int i_APCI1710_ReadLatchRegisterValue(struct comedi_device *dev,
unsigned char b_ModulNbr, unsigned char b_LatchReg,
unsigned int *pul_LatchValue);
int i_APCI1710_Read16BitCounterValue(struct comedi_device *dev,
unsigned char b_ModulNbr, unsigned char b_SelectedCounter,
unsigned int *pui_CounterValue);
int i_APCI1710_Read32BitCounterValue(struct comedi_device *dev,
unsigned char b_ModulNbr, unsigned int *pul_CounterValue);
int i_APCI1710_GetIndexStatus(struct comedi_device *dev,
unsigned char b_ModulNbr, unsigned char *pb_IndexStatus);
int i_APCI1710_GetReferenceStatus(struct comedi_device *dev,
unsigned char b_ModulNbr, unsigned char *pb_ReferenceStatus);
int i_APCI1710_GetUASStatus(struct comedi_device *dev,
unsigned char b_ModulNbr, unsigned char *pb_UASStatus);
int i_APCI1710_GetCBStatus(struct comedi_device *dev,
unsigned char b_ModulNbr, unsigned char *pb_CBStatus);
int i_APCI1710_Get16BitCBStatus(struct comedi_device *dev,
unsigned char b_ModulNbr, unsigned char *pb_CBStatusCounter0,
unsigned char *pb_CBStatusCounter1);
int i_APCI1710_GetUDStatus(struct comedi_device *dev,
unsigned char b_ModulNbr, unsigned char *pb_UDStatus);
int i_APCI1710_GetInterruptUDLatchedStatus(struct comedi_device *dev,
unsigned char b_ModulNbr, unsigned char *pb_UDStatus);
int i_APCI1710_ReadFrequencyMeasurement(struct comedi_device *dev,
unsigned char b_ModulNbr,
unsigned char *pb_Status, unsigned char *pb_UDStatus,
unsigned int *pul_ReadValue);
|