v792.h

Go to the documentation of this file.
00001 /*********************************************************************
00002 
00003   Name:         v792.h
00004   Created by:   Pierre-Andre Amaudruz
00005   Contributors: Sergio Ballestrero
00006 
00007   Contents:     V792 32ch. QDC include
00008                 V785 32ch. Peak ADC include
00009                 V792 and V785 are mostly identical;
00010                 v792_ identifies commands supported by both
00011                 v792_ identifies commands supported by V792 only
00012                 v785_ identifies commands supported by V785 only
00013 
00014   $Id: v792.h 4078 2007-11-21 18:48:11Z olchanski $
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; // bit0 here
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; // bit0 here
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; // bit0 here
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; // bit0 here
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; //bit 8 here
00140     };
00141   } v792_StatusRegister1;
00142   typedef union {
00143     DWORD raw;
00144     struct {
00145       unsigned _pad_1:1; // bit0 here
00146       unsigned BufferEmpty:1;
00147       unsigned BufferFull:1;
00148       unsigned _pad_2:1;
00149       unsigned PB:4;
00150       //unsigned DSEL0:1;
00151       //unsigned DSEL1:1;
00152       //unsigned CSEL0:1;
00153       //unsigned CSEL1:1;
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;//bit5
00176       unsigned TestAcq:1;
00177       unsigned SLDEnable:1;
00178       unsigned StepTH:1;
00179       unsigned _pad_2:2;//bits 9-10
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 /* emacs
00196  * Local Variables:
00197  * mode:C
00198  * mode:font-lock
00199  * tab-width: 8
00200  * c-basic-offset: 2
00201  * End:
00202  */

Midas DOC Version 2.0.2 ---- PSI Stefan Ritt ----
Contributions: Pierre-Andre Amaudruz - Sergio Ballestrero - Suzannah Daviel - Doxygen - Peter Green - Qing Gu - Greg Hackman - Gertjan Hofman - Paul Knowles - Exaos Lee - Rudi Meier - Glenn Moloney - Dave Morris - John M O'Donnell - Konstantin Olchanski - Renee Poutissou - Tamsen Schurman - Andreas Suter - Jan M.Wouters - Piotr Adam Zolnierczuk