00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef V792_INCLUDE_H
00017 #define V792_INCLUDE_H
00018
00019 #include <stdio.h>
00020 #include <string.h>
00021 #include "mvmestd.h"
00022
00023 #ifdef __cplusplus
00024 extern "C" {
00025 #endif
00026
00027 #define V792_MAX_CHANNELS (DWORD) 32
00028 #define V792_REG_BASE (DWORD) (0x1000)
00029 #define V792_FIRM_REV (DWORD) (0x1000)
00030 #define V792_GEO_ADDR_RW (DWORD) (0x1002)
00031 #define V792_BIT_SET1_RW (DWORD) (0x1006)
00032 #define V792_BIT_CLEAR1_WO (DWORD) (0x1008)
00033 #define V792_SOFT_RESET (DWORD) (0x1<<7)
00034 #define V792_INT_LEVEL_WO (DWORD) (0x100A)
00035 #define V792_INT_VECTOR_WO (DWORD) (0x100C)
00036 #define V792_CSR1_RO (DWORD) (0x100E)
00037 #define V792_CR1_RW (DWORD) (0x1010)
00038 #define V792_SINGLE_RST_WO (DWORD) (0x1016)
00039 #define V792_EVTRIG_REG_RW (DWORD) (0x1020)
00040 #define V792_CSR2_RO (DWORD) (0x1022)
00041 #define V792_EVT_CNT_L_RO (DWORD) (0x1024)
00042 #define V792_EVT_CNT_H_RO (DWORD) (0x1026)
00043 #define V792_INCR_EVT_WO (DWORD) (0x1028)
00044 #define V792_INCR_OFFSET_WO (DWORD) (0x102A)
00045 #define V792_DELAY_CLEAR_RW (DWORD) (0x102E)
00046 #define V792_BIT_SET2_RW (DWORD) (0x1032)
00047 #define V792_BIT_CLEAR2_WO (DWORD) (0x1034)
00048 #define V792_TEST_EVENT_WO (DWORD) (0x103E)
00049 #define V792_EVT_CNT_RST_WO (DWORD) (0x1040)
00050 #define V792_IPED_RW (DWORD) (0x1060)
00051 #define V792_SWCOMM_WO (DWORD) (0x1068)
00052 #define V785_SLIDECONST_RW (DWORD) (0x106A)
00053 #define V792_THRES_BASE (DWORD) (0x1080)
00054
00055 WORD v792_Read16(MVME_INTERFACE *mvme, DWORD base, int offset);
00056 void v792_Write16(MVME_INTERFACE *mvme, DWORD base, int offset, WORD value);
00057
00058 void v792_EvtCntRead(MVME_INTERFACE *mvme, DWORD base, DWORD *evtcnt);
00059 void v792_EvtCntReset(MVME_INTERFACE *mvme, DWORD base);
00060 void v792_CrateSet(MVME_INTERFACE *mvme, DWORD base, DWORD *evtcnt);
00061 void v792_DelayClearSet(MVME_INTERFACE *mvme, DWORD base, int delay);
00062 int v792_DataRead(MVME_INTERFACE *mvme, DWORD base, DWORD *pdest, int *nentry);
00063 int v792_EventRead(MVME_INTERFACE *mvme, DWORD base, DWORD *pdest, int *nentry);
00064 int v792_ThresholdWrite(MVME_INTERFACE *mvme, DWORD base, WORD *threshold);
00065 int v792_ThresholdRead(MVME_INTERFACE *mvme, DWORD base, WORD *threshold);
00066 int v792_DataReady(MVME_INTERFACE *mvme, DWORD base);
00067 void v792_SingleShotReset(MVME_INTERFACE *mvme, DWORD base);
00068 void v792_Status(MVME_INTERFACE *mvme, DWORD base);
00069 void v792_IntSet(MVME_INTERFACE *mvme, DWORD base, int level, int vector);
00070 void v792_IntDisable(MVME_INTERFACE *mvme, DWORD base);
00071 void v792_IntEnable(MVME_INTERFACE *mvme, DWORD base, int level);
00072 int v792_CSR1Read(MVME_INTERFACE *mvme, DWORD base);
00073 int v792_CSR2Read(MVME_INTERFACE *mvme, DWORD base);
00074 int v792_BitSet2Read(MVME_INTERFACE *mvme, DWORD base);
00075 void v792_BitSet2Set(MVME_INTERFACE *mvme, DWORD base, WORD pat);
00076 void v792_BitSet2Clear(MVME_INTERFACE *mvme, DWORD base, WORD pat);
00077 int v792_DataReady(MVME_INTERFACE *mvme, DWORD base);
00078 int v792_isEvtReady(MVME_INTERFACE *mvme, DWORD base);
00079 void v792_EvtTriggerSet(MVME_INTERFACE *mvme, DWORD base, int count);
00080 void v792_DataClear(MVME_INTERFACE *mvme, DWORD base);
00081 void v792_OnlineSet(MVME_INTERFACE *mvme, DWORD base);
00082 void v792_LowThEnable(MVME_INTERFACE *mvme, DWORD base);
00083 void v792_LowThDisable(MVME_INTERFACE *mvme, DWORD base);
00084 void v792_EmptyEnable(MVME_INTERFACE *mvme, DWORD base);
00085 void v792_EvtCntReset(MVME_INTERFACE *mvme, DWORD base);
00086 int v792_Setup(MVME_INTERFACE *mvme, DWORD base, int mode);
00087 void v792_DelayClearSet(MVME_INTERFACE *mvme, DWORD base, int delay);
00088 void v792_SoftReset(MVME_INTERFACE *mvme, DWORD base);
00089 void v792_ControlRegister1Write(MVME_INTERFACE *mvme, DWORD base, WORD pat);
00090 WORD v792_ControlRegister1Read(MVME_INTERFACE *mvme, DWORD base);
00091 void v792_Trigger(MVME_INTERFACE *mvme, DWORD base);
00092 int v792_isPresent(MVME_INTERFACE *mvme, DWORD base);
00093
00094 enum v792_DataType {
00095 v792_typeMeasurement=0,
00096 v792_typeHeader =2,
00097 v792_typeFooter =4,
00098 v792_typeFiller =6
00099 };
00100
00101 typedef union {
00102 DWORD raw;
00103 struct Entry {
00104 unsigned adc:12;
00105 unsigned ov:1;
00106 unsigned un:1;
00107 unsigned _pad_1:2;
00108 unsigned channel:5;
00109 unsigned _pad_2:3;
00110 unsigned type:3;
00111 unsigned geo:5;
00112 } data ;
00113 struct Header {
00114 unsigned _pad_1:8;
00115 unsigned cnt:6;
00116 unsigned _pad_2:2;
00117 unsigned crate:8;
00118 unsigned type:3;
00119 unsigned geo:5;
00120 } header;
00121 struct Footer {
00122 unsigned evtCnt:24;
00123 unsigned type:3;
00124 unsigned geo:5;
00125 } footer;
00126 } v792_Data;
00127
00128 typedef union {
00129 DWORD raw;
00130 struct {
00131 unsigned DataReady:1;
00132 unsigned GlobalDataReady:1;
00133 unsigned Busy:1;
00134 unsigned GlobalBusy:1;
00135 unsigned Amnesia:1;
00136 unsigned Purge:1;
00137 unsigned TermOn:1;
00138 unsigned TermOff:1;
00139 unsigned EventReady:1;
00140 };
00141 } v792_StatusRegister1;
00142 typedef union {
00143 DWORD raw;
00144 struct {
00145 unsigned _pad_1:1;
00146 unsigned BufferEmpty:1;
00147 unsigned BufferFull:1;
00148 unsigned _pad_2:1;
00149 unsigned PB:4;
00150
00151
00152
00153
00154 };
00155 } v792_StatusRegister2;
00156 typedef union {
00157 DWORD raw;
00158 struct {
00159 unsigned _pad_1:2;
00160 unsigned BlkEnd:1;
00161 unsigned _pad_2:1;
00162 unsigned ProgReset:1;
00163 unsigned BErr:1;
00164 unsigned Align64:1;
00165 };
00166 } v792_ControlRegister1;
00167 typedef union {
00168 DWORD raw;
00169 struct {
00170 unsigned MemTest:1;
00171 unsigned OffLine:1;
00172 unsigned ClearData:1;
00173 unsigned OverRange:1;
00174 unsigned LowThresh:1;
00175 unsigned _pad_1:1;
00176 unsigned TestAcq:1;
00177 unsigned SLDEnable:1;
00178 unsigned StepTH:1;
00179 unsigned _pad_2:2;
00180 unsigned AutoIncr:1;
00181 unsigned EmptyProg:1;
00182 unsigned SlideSubEnable:1;
00183 unsigned AllTrg:1;
00184 };
00185 } v792_BitSet2Register;
00186
00187 void v792_printEntry(const v792_Data* v);
00188
00189 #ifdef __cplusplus
00190 }
00191 #endif
00192
00193 #endif // V792_INCLUDE_H
00194
00195
00196
00197
00198
00199
00200
00201
00202