Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
APCI1710_INCCPT.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2004,2005 ADDI-DATA GmbH for the source code of this module.
3  *
4  * ADDI-DATA GmbH
5  * Dieselstrasse 3
6  * D-77833 Ottersweier
7  * Tel: +19(0)7223/9493-0
8  * Fax: +49(0)7223/9493-92
9  * http://www.addi-data.com
11  *
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)
15  * any later version.
16  */
17 
18 #define APCI1710_16BIT_COUNTER 0x10
19 #define APCI1710_32BIT_COUNTER 0x0
20 #define APCI1710_QUADRUPLE_MODE 0x0
21 #define APCI1710_DOUBLE_MODE 0x3
22 #define APCI1710_SIMPLE_MODE 0xF
23 #define APCI1710_DIRECT_MODE 0x80
24 #define APCI1710_HYSTERESIS_ON 0x60
25 #define APCI1710_HYSTERESIS_OFF 0x0
26 #define APCI1710_INCREMENT 0x60
27 #define APCI1710_DECREMENT 0x0
28 #define APCI1710_LATCH_COUNTER 0x1
29 #define APCI1710_CLEAR_COUNTER 0x0
30 #define APCI1710_LOW 0x0
31 #define APCI1710_HIGH 0x1
32 
33 /*********************/
34 /* Version 0600-0229 */
35 /*********************/
36 #define APCI1710_HIGH_EDGE_CLEAR_COUNTER 0x0
37 #define APCI1710_HIGH_EDGE_LATCH_COUNTER 0x1
38 #define APCI1710_LOW_EDGE_CLEAR_COUNTER 0x2
39 #define APCI1710_LOW_EDGE_LATCH_COUNTER 0x3
40 #define APCI1710_HIGH_EDGE_LATCH_AND_CLEAR_COUNTER 0x4
41 #define APCI1710_LOW_EDGE_LATCH_AND_CLEAR_COUNTER 0x5
42 #define APCI1710_SOURCE_0 0x0
43 #define APCI1710_SOURCE_1 0x1
44 
45 #define APCI1710_30MHZ 30
46 #define APCI1710_33MHZ 33
47 #define APCI1710_40MHZ 40
48 
49 #define APCI1710_ENABLE_LATCH_INT 0x80
50 #define APCI1710_DISABLE_LATCH_INT (~APCI1710_ENABLE_LATCH_INT)
51 
52 #define APCI1710_INDEX_LATCH_COUNTER 0x10
53 #define APCI1710_INDEX_AUTO_MODE 0x8
54 #define APCI1710_ENABLE_INDEX 0x4
55 #define APCI1710_DISABLE_INDEX (~APCI1710_ENABLE_INDEX)
56 #define APCI1710_ENABLE_LATCH_AND_CLEAR 0x8
57 #define APCI1710_DISABLE_LATCH_AND_CLEAR (~APCI1710_ENABLE_LATCH_AND_CLEAR)
58 #define APCI1710_SET_LOW_INDEX_LEVEL 0x4
59 #define APCI1710_SET_HIGH_INDEX_LEVEL (~APCI1710_SET_LOW_INDEX_LEVEL)
60 #define APCI1710_INVERT_INDEX_RFERENCE 0x2
61 #define APCI1710_DEFAULT_INDEX_RFERENCE (~APCI1710_INVERT_INDEX_RFERENCE)
62 
63 #define APCI1710_ENABLE_INDEX_INT 0x1
64 #define APCI1710_DISABLE_INDEX_INT (~APCI1710_ENABLE_INDEX_INT)
65 
66 #define APCI1710_ENABLE_FREQUENCY 0x4
67 #define APCI1710_DISABLE_FREQUENCY (~APCI1710_ENABLE_FREQUENCY)
68 
69 #define APCI1710_ENABLE_FREQUENCY_INT 0x8
70 #define APCI1710_DISABLE_FREQUENCY_INT (~APCI1710_ENABLE_FREQUENCY_INT)
71 
72 #define APCI1710_ENABLE_40MHZ_FREQUENCY 0x40
73 #define APCI1710_DISABLE_40MHZ_FREQUENCY (~APCI1710_ENABLE_40MHZ_FREQUENCY)
74 
75 #define APCI1710_ENABLE_40MHZ_FILTER 0x80
76 #define APCI1710_DISABLE_40MHZ_FILTER (~APCI1710_ENABLE_40MHZ_FILTER)
77 
78 #define APCI1710_ENABLE_COMPARE_INT 0x2
79 #define APCI1710_DISABLE_COMPARE_INT (~APCI1710_ENABLE_COMPARE_INT)
80 
81 #define APCI1710_ENABLE_INDEX_ACTION 0x20
82 #define APCI1710_DISABLE_INDEX_ACTION (~APCI1710_ENABLE_INDEX_ACTION)
83 #define APCI1710_REFERENCE_HIGH 0x40
84 #define APCI1710_REFERENCE_LOW (~APCI1710_REFERENCE_HIGH)
85 
86 #define APCI1710_TOR_GATE_LOW 0x40
87 #define APCI1710_TOR_GATE_HIGH (~APCI1710_TOR_GATE_LOW)
88 
89 /* INSN CONFIG */
90 #define APCI1710_INCCPT_INITCOUNTER 100
91 #define APCI1710_INCCPT_COUNTERAUTOTEST 101
92 #define APCI1710_INCCPT_INITINDEX 102
93 #define APCI1710_INCCPT_INITREFERENCE 103
94 #define APCI1710_INCCPT_INITEXTERNALSTROBE 104
95 #define APCI1710_INCCPT_INITCOMPARELOGIC 105
96 #define APCI1710_INCCPT_INITFREQUENCYMEASUREMENT 106
97 
98 /* INSN READ */
99 #define APCI1710_INCCPT_READLATCHREGISTERSTATUS 200
100 #define APCI1710_INCCPT_READLATCHREGISTERVALUE 201
101 #define APCI1710_INCCPT_READ16BITCOUNTERVALUE 202
102 #define APCI1710_INCCPT_READ32BITCOUNTERVALUE 203
103 #define APCI1710_INCCPT_GETINDEXSTATUS 204
104 #define APCI1710_INCCPT_GETREFERENCESTATUS 205
105 #define APCI1710_INCCPT_GETUASSTATUS 206
106 #define APCI1710_INCCPT_GETCBSTATUS 207
107 #define APCI1710_INCCPT_GET16BITCBSTATUS 208
108 #define APCI1710_INCCPT_GETUDSTATUS 209
109 #define APCI1710_INCCPT_GETINTERRUPTUDLATCHEDSTATUS 210
110 #define APCI1710_INCCPT_READFREQUENCYMEASUREMENT 211
111 #define APCI1710_INCCPT_READINTERRUPT 212
112 
113 /* INSN BITS */
114 #define APCI1710_INCCPT_CLEARCOUNTERVALUE 300
115 #define APCI1710_INCCPT_CLEARALLCOUNTERVALUE 301
116 #define APCI1710_INCCPT_SETINPUTFILTER 302
117 #define APCI1710_INCCPT_LATCHCOUNTER 303
118 #define APCI1710_INCCPT_SETINDEXANDREFERENCESOURCE 304
119 #define APCI1710_INCCPT_SETDIGITALCHLON 305
120 #define APCI1710_INCCPT_SETDIGITALCHLOFF 306
121 
122 /* INSN WRITE */
123 #define APCI1710_INCCPT_ENABLELATCHINTERRUPT 400
124 #define APCI1710_INCCPT_DISABLELATCHINTERRUPT 401
125 #define APCI1710_INCCPT_WRITE16BITCOUNTERVALUE 402
126 #define APCI1710_INCCPT_WRITE32BITCOUNTERVALUE 403
127 #define APCI1710_INCCPT_ENABLEINDEX 404
128 #define APCI1710_INCCPT_DISABLEINDEX 405
129 #define APCI1710_INCCPT_ENABLECOMPARELOGIC 406
130 #define APCI1710_INCCPT_DISABLECOMPARELOGIC 407
131 #define APCI1710_INCCPT_ENABLEFREQUENCYMEASUREMENT 408
132 #define APCI1710_INCCPT_DISABLEFREQUENCYMEASUREMENT 409
133 
134 /************ Main Functions *************/
136  struct comedi_insn *insn, unsigned int * data);
137 
139  struct comedi_insn *insn, unsigned int * data);
140 
142  struct comedi_insn *insn, unsigned int * data);
143 
145  struct comedi_insn *insn, unsigned int * data);
146 
147 /*********** Supplementary Functions********/
148 
149 /* INSN CONFIG */
151  unsigned char b_ModulNbr,
152  unsigned char b_CounterRange,
153  unsigned char b_FirstCounterModus,
154  unsigned char b_FirstCounterOption,
155  unsigned char b_SecondCounterModus,
156  unsigned char b_SecondCounterOption);
157 
158 int i_APCI1710_CounterAutoTest(struct comedi_device *dev, unsigned char * pb_TestStatus);
159 
161  unsigned char b_ModulNbr,
162  unsigned char b_ReferenceAction,
163  unsigned char b_IndexOperation, unsigned char b_AutoMode,
164  unsigned char b_InterruptEnable);
165 
167  unsigned char b_ModulNbr, unsigned char b_ReferenceLevel);
168 
170  unsigned char b_ModulNbr, unsigned char b_ExternalStrobe,
171  unsigned char b_ExternalStrobeLevel);
172 
174  unsigned char b_ModulNbr, unsigned int ui_CompareValue);
175 
177  unsigned char b_ModulNbr,
178  unsigned char b_PCIInputClock,
179  unsigned char b_TimingUnity,
180  unsigned int ul_TimingInterval,
181  unsigned int *pul_RealTimingInterval);
182 
183 /* INSN BITS */
184 int i_APCI1710_ClearCounterValue(struct comedi_device *dev, unsigned char b_ModulNbr);
185 
187 
189  unsigned char b_ModulNbr, unsigned char b_PCIInputClock,
190  unsigned char b_Filter);
191 
193  unsigned char b_ModulNbr, unsigned char b_LatchReg);
194 
196  unsigned char b_ModulNbr,
197  unsigned char b_SourceSelection);
198 
199 int i_APCI1710_SetDigitalChlOn(struct comedi_device *dev, unsigned char b_ModulNbr);
200 
201 int i_APCI1710_SetDigitalChlOff(struct comedi_device *dev, unsigned char b_ModulNbr);
202 
203 /* INSN WRITE */
204 int i_APCI1710_EnableLatchInterrupt(struct comedi_device *dev, unsigned char b_ModulNbr);
205 
207 
209  unsigned char b_ModulNbr, unsigned char b_SelectedCounter,
210  unsigned int ui_WriteValue);
211 
213  unsigned char b_ModulNbr, unsigned int ul_WriteValue);
214 
215 int i_APCI1710_EnableIndex(struct comedi_device *dev, unsigned char b_ModulNbr);
216 
217 int i_APCI1710_DisableIndex(struct comedi_device *dev, unsigned char b_ModulNbr);
218 
219 int i_APCI1710_EnableCompareLogic(struct comedi_device *dev, unsigned char b_ModulNbr);
220 
221 int i_APCI1710_DisableCompareLogic(struct comedi_device *dev, unsigned char b_ModulNbr);
222 
224  unsigned char b_ModulNbr,
225  unsigned char b_InterruptEnable);
226 
228  unsigned char b_ModulNbr);
229 
230 /* INSN READ */
232  unsigned char b_ModulNbr, unsigned char b_LatchReg,
233  unsigned char *pb_LatchStatus);
234 
236  unsigned char b_ModulNbr, unsigned char b_LatchReg,
237  unsigned int *pul_LatchValue);
238 
240  unsigned char b_ModulNbr, unsigned char b_SelectedCounter,
241  unsigned int *pui_CounterValue);
242 
244  unsigned char b_ModulNbr, unsigned int *pul_CounterValue);
245 
247  unsigned char b_ModulNbr, unsigned char *pb_IndexStatus);
248 
250  unsigned char b_ModulNbr, unsigned char *pb_ReferenceStatus);
251 
253  unsigned char b_ModulNbr, unsigned char *pb_UASStatus);
254 
256  unsigned char b_ModulNbr, unsigned char *pb_CBStatus);
257 
259  unsigned char b_ModulNbr, unsigned char *pb_CBStatusCounter0,
260  unsigned char *pb_CBStatusCounter1);
261 
263  unsigned char b_ModulNbr, unsigned char *pb_UDStatus);
264 
266  unsigned char b_ModulNbr, unsigned char *pb_UDStatus);
267 
269  unsigned char b_ModulNbr,
270  unsigned char *pb_Status, unsigned char *pb_UDStatus,
271  unsigned int *pul_ReadValue);