Go to the source code of this file.
Functions | |
uint32_t | v1740_RegisterRead (MVME_INTERFACE *mvme, uint32_t a32base, int offset) |
uint32_t | v1740_BufferFreeRead (MVME_INTERFACE *mvme, uint32_t a32base) |
uint32_t | v1740_BufferOccupancy (MVME_INTERFACE *mvme, uint32_t a32base, uint32_t channel) |
uint32_t | v1740_BufferFree (MVME_INTERFACE *mvme, uint32_t base, int nbuffer) |
void | v1740_AcqCtl (MVME_INTERFACE *mvme, uint32_t a32base, uint32_t operation) |
void | v1740_GroupCtl (MVME_INTERFACE *mvme, uint32_t a32base, uint32_t reg, uint32_t mask) |
void | v1740_TrgCtl (MVME_INTERFACE *mvme, uint32_t a32base, uint32_t reg, uint32_t mask) |
void | v1740_RegisterWrite (MVME_INTERFACE *mvme, uint32_t a32base, int offset, uint32_t value) |
void | v1740_Reset (MVME_INTERFACE *mvme, uint32_t a32base) |
void | v1740_GroupThreshold (MVME_INTERFACE *mvme, uint32_t base, uint16_t group, uint16_t threshold) |
void | v1740_GroupDAC (MVME_INTERFACE *mvme, uint32_t base, uint16_t group, uint16_t dac) |
void | v1740_Status (MVME_INTERFACE *mvme, uint32_t a32base) |
int | v1740_Setup (MVME_INTERFACE *mvme, uint32_t a32base, int mode) |
void | v1740_info (MVME_INTERFACE *mvme, uint32_t a32base, int *nch, uint32_t *n32w) |
uint32_t | v1740_DataRead (MVME_INTERFACE *mvme, uint32_t a32base, uint32_t *pdata, uint32_t n32w) |
uint32_t | v1740_DataBlockRead (MVME_INTERFACE *mvme, uint32_t a32base, uint32_t *pdest, uint32_t *nentry) |
void v1740_AcqCtl | ( | MVME_INTERFACE * | mvme, | |
uint32_t | a32base, | |||
uint32_t | operation | |||
) |
Definition at line 91 of file v1740.c.
00092 { 00093 uint32_t reg; 00094 00095 reg = regRead(mvme, base, V1740_ACQUISITION_CONTROL); 00096 switch (operation) { 00097 case V1740_RUN_START: 00098 regWrite(mvme, base, V1740_ACQUISITION_CONTROL, (reg | 0x4)); 00099 break; 00100 case V1740_RUN_STOP: 00101 regWrite(mvme, base, V1740_ACQUISITION_CONTROL, (reg & ~(0x4))); 00102 break; 00103 case V1740_REGISTER_RUN_MODE: 00104 regWrite(mvme, base, V1740_ACQUISITION_CONTROL, (reg & ~(0x3))); 00105 break; 00106 case V1740_SIN_RUN_MODE: 00107 regWrite(mvme, base, V1740_ACQUISITION_CONTROL, (reg | 0x01)); 00108 break; 00109 case V1740_SIN_GATE_RUN_MODE: 00110 regWrite(mvme, base, V1740_ACQUISITION_CONTROL, (reg | 0x02)); 00111 break; 00112 case V1740_MULTI_BOARD_SYNC_MODE: 00113 regWrite(mvme, base, V1740_ACQUISITION_CONTROL, (reg | 0x03)); 00114 break; 00115 case V1740_COUNT_ACCEPTED_TRIGGER: 00116 regWrite(mvme, base, V1740_ACQUISITION_CONTROL, (reg | 0x08)); 00117 break; 00118 case V1740_COUNT_ALL_TRIGGER: 00119 regWrite(mvme, base, V1740_ACQUISITION_CONTROL, (reg & ~(0x08))); 00120 break; 00121 case V1740_DOWNSAMPLE_ENABLE: 00122 regWrite(mvme, base, V1740_ACQUISITION_CONTROL, (reg & 0x10)); 00123 break; 00124 case V1740_DOWNSAMPLE_DISABLE: 00125 regWrite(mvme, base, V1740_ACQUISITION_CONTROL, (reg & ~(0x10))); 00126 break; 00127 default: 00128 break; 00129 } 00130 }
uint32_t v1740_BufferFree | ( | MVME_INTERFACE * | mvme, | |
uint32_t | base, | |||
int | nbuffer | |||
) |
Definition at line 163 of file v1740.c.
00164 { 00165 int mode; 00166 00167 mode = regRead(mvme, base, V1740_BUFFER_ORGANIZATION); 00168 if (nbuffer <= (1<< mode) ) { 00169 regWrite(mvme, base, V1740_BUFFER_FREE, nbuffer); 00170 return mode; 00171 } else 00172 return mode; 00173 }
uint32_t v1740_BufferFreeRead | ( | MVME_INTERFACE * | mvme, | |
uint32_t | a32base | |||
) |
Definition at line 176 of file v1740.c.
00177 { 00178 return regRead(mvme, base, V1740_BUFFER_FREE); 00179 }
uint32_t v1740_BufferOccupancy | ( | MVME_INTERFACE * | mvme, | |
uint32_t | a32base, | |||
uint32_t | channel | |||
) |
Definition at line 154 of file v1740.c.
00155 { 00156 uint32_t reg; 00157 reg = V1740_GROUP_BUFFER_OCCUPANCY + (group<<16); 00158 return regRead(mvme, base, reg); 00159 }
uint32_t v1740_DataBlockRead | ( | MVME_INTERFACE * | mvme, | |
uint32_t | base, | |||
uint32_t * | pdest, | |||
uint32_t * | nentry | |||
) |
v1740_DataBlockRead Read N entries (32bit)
mvme | vme structure | |
base | base address | |
pdest | Destination pointer |
Definition at line 209 of file v1740.c.
00210 { 00211 int status, ngroups; 00212 00213 mvme_set_am( mvme, MVME_AM_A32); 00214 mvme_set_dmode( mvme, MVME_DMODE_D32); 00215 v1740_info(mvme, base, &ngroups, nentry); 00216 // *nentry = 0xFFFFFF & regRead(mvme, base, V1740_EVENT_READOUT_BUFFER); 00217 printf("DataBlockRead n32w:%d 0x%x\n", *nentry, *nentry); 00218 mvme_set_blt( mvme, MVME_BLT_MBLT64); 00219 mvme_set_blt( mvme, 0); 00220 // 00221 // Transfer in MBLT64 (8bytes), nentry is in 32bits 00222 status = mvme_read(mvme, pdest, base+V1740_EVENT_READOUT_BUFFER, *nentry<<2); 00223 if (status != MVME_SUCCESS) 00224 return 0; 00225 00226 return (*nentry); 00227 }
uint32_t v1740_DataRead | ( | MVME_INTERFACE * | mvme, | |
uint32_t | a32base, | |||
uint32_t * | pdata, | |||
uint32_t | n32w | |||
) |
Definition at line 182 of file v1740.c.
00183 { 00184 uint32_t i; 00185 00186 mvme_set_am( mvme, MVME_AM_A32); 00187 mvme_set_dmode( mvme, MVME_DMODE_D32); 00188 n32w = 0xFFFFFF & regRead(mvme, base, V1740_EVENT_READOUT_BUFFER); 00189 // printf("DataRead n32w:%d 0x%x\n", n32w, n32w); 00190 *pdata++ = n32w; 00191 for (i=0;i<n32w-1;i++) { 00192 *pdata = regRead(mvme, base, V1740_EVENT_READOUT_BUFFER); 00193 if (*pdata != 0xffffffff) 00194 pdata++; 00195 else 00196 break; 00197 } 00198 return i+1; 00199 }
void v1740_GroupCtl | ( | MVME_INTERFACE * | mvme, | |
uint32_t | a32base, | |||
uint32_t | reg, | |||
uint32_t | mask | |||
) |
void v1740_GroupDAC | ( | MVME_INTERFACE * | mvme, | |
uint32_t | base, | |||
uint16_t | group, | |||
uint16_t | dac | |||
) |
Definition at line 82 of file v1740.c.
00083 { 00084 uint32_t reg; 00085 00086 reg = V1740_GROUP_DAC | (group << 8); 00087 regWrite(mvme, base, reg, (dac & 0xFFFF)); 00088 }
void v1740_GroupThreshold | ( | MVME_INTERFACE * | mvme, | |
uint32_t | base, | |||
uint16_t | group, | |||
uint16_t | threshold | |||
) |
Definition at line 73 of file v1740.c.
00074 { 00075 uint32_t reg; 00076 00077 reg = V1740_GROUP_THRESHOLD | (group << 8); 00078 regWrite(mvme, base, reg, (threshold & 0xFFF)); 00079 }
void v1740_info | ( | MVME_INTERFACE * | mvme, | |
uint32_t | a32base, | |||
int * | nch, | |||
uint32_t * | n32w | |||
) |
Definition at line 133 of file v1740.c.
Referenced by v1740_DataBlockRead().
00134 { 00135 int i, grpmask; 00136 00137 // Evaluate the event size 00138 // Number of samples per group (8 channels) 00139 *n32word = 8 * V1740_NSAMPLES_MODE[regRead(mvme, base, V1740_BUFFER_ORGANIZATION)]; 00140 00141 // times the number of active group 00142 grpmask = 0xff & regRead(mvme, base, V1740_GROUP_EN_MASK); 00143 *ngroups = 0; 00144 for (i=0;i<8;i++) { 00145 if (grpmask & (1<<i)) 00146 *ngroups += 1; 00147 } 00148 00149 *n32word = *n32word * *ngroups * 12 / 32; // 12bit/Sample , 32bits/DW 00150 *n32word += 4; // Headers 00151 }
uint32_t v1740_RegisterRead | ( | MVME_INTERFACE * | mvme, | |
uint32_t | a32base, | |||
int | offset | |||
) |
void v1740_RegisterWrite | ( | MVME_INTERFACE * | mvme, | |
uint32_t | a32base, | |||
int | offset, | |||
uint32_t | value | |||
) |
void v1740_Reset | ( | MVME_INTERFACE * | mvme, | |
uint32_t | a32base | |||
) |
Definition at line 55 of file v1740.c.
00056 { 00057 regWrite(mvme, base, V1740_SW_RESET, 0); 00058 }
int v1740_Setup | ( | MVME_INTERFACE * | mvme, | |
uint32_t | base, | |||
int | mode | |||
) |
Sets all the necessary paramters for a given configuration. The configuration is provided by the mode argument. Add your own configuration in the case statement. Let me know your setting if you want to include it in the distribution.
*mvme | VME structure | |
base | Module base address | |
mode | Configuration mode number |
Definition at line 254 of file v1740.c.
00255 { 00256 switch (mode) { 00257 case 0x0: 00258 printf("--------------------------------------------\n"); 00259 printf("Setup Skip\n"); 00260 printf("--------------------------------------------\n"); 00261 case 0x1: 00262 printf("--------------------------------------------\n"); 00263 printf("Trigger from FP, 8 group, 1Ks, postTrigger 800\n"); 00264 printf("--------------------------------------------\n"); 00265 regWrite(mvme, base, V1740_ACQUISITION_CONTROL, 0x00); // Reset Acq Control 00266 regWrite(mvme, base, V1740_BUFFER_ORGANIZATION, 0x0A); // 1K Nbuffers=1024, bufferSize=192 00267 regWrite(mvme, base, V1740_TRIG_SRCE_EN_MASK, 0x4000); // External Trigger 00268 regWrite(mvme, base, V1740_GROUP_EN_MASK, 0xFF); // 8grp enable 00269 regWrite(mvme, base, V1740_POST_TRIGGER_SETTING, 800); // PreTrigger (1K-800) 00270 printf("\n"); 00271 break; 00272 case 0x2: 00273 printf("--------------------------------------------\n"); 00274 printf("Trigger from LEMO\n"); 00275 printf("--------------------------------------------\n"); 00276 regWrite(mvme, base, V1740_BUFFER_ORGANIZATION, 1); 00277 printf("\n"); 00278 break; 00279 default: 00280 printf("Unknown setup mode\n"); 00281 return -1; 00282 } 00283 v1740_Status(mvme, base); 00284 return 0; 00285 }
void v1740_Status | ( | MVME_INTERFACE * | mvme, | |
uint32_t | a32base | |||
) |
Definition at line 231 of file v1740.c.
Referenced by v1740_Setup().
00232 { 00233 printf("================================================\n"); 00234 printf("V1740 at A32 0x%x\n", (int)base); 00235 printf("Board ID : 0x%x\n", regRead(mvme, base, V1740_BOARD_ID)); 00236 printf("Board Info : 0x%x\n", regRead(mvme, base, V1740_BOARD_INFO)); 00237 printf("Acquisition status : 0x%8.8x\n", regRead(mvme, base, V1740_ACQUISITION_STATUS)); 00238 printf("================================================\n"); 00239 }
void v1740_TrgCtl | ( | MVME_INTERFACE * | mvme, | |
uint32_t | a32base, | |||
uint32_t | reg, | |||
uint32_t | mask | |||
) |