Go to the source code of this file.
void v792_BitSet2Clear | ( | MVME_INTERFACE * | mvme, | |
DWORD | base, | |||
WORD | pat | |||
) |
Definition at line 215 of file v792.c.
00216 { 00217 int cmode; 00218 mvme_get_dmode(mvme, &cmode); 00219 mvme_set_dmode(mvme, MVME_DMODE_D16); 00220 mvme_write_value(mvme, base+V792_BIT_SET1_RW, 0xA0); 00221 mvme_write_value(mvme, base+V792_BIT_CLEAR1_WO, 0xA0); 00222 mvme_set_dmode(mvme, cmode); 00223 }
int v792_BitSet2Read | ( | MVME_INTERFACE * | mvme, | |
DWORD | base | |||
) |
Definition at line 192 of file v792.c.
Referenced by v792_Status().
00193 { 00194 int status, cmode; 00195 00196 mvme_get_dmode(mvme, &cmode); 00197 mvme_set_dmode(mvme, MVME_DMODE_D16); 00198 status = mvme_read_value(mvme, base+V792_BIT_SET2_RW); 00199 mvme_set_dmode(mvme, cmode); 00200 return status; 00201 }
void v792_BitSet2Set | ( | MVME_INTERFACE * | mvme, | |
DWORD | base, | |||
WORD | pat | |||
) |
Definition at line 204 of file v792.c.
00205 { 00206 int cmode; 00207 mvme_get_dmode(mvme, &cmode); 00208 mvme_set_dmode(mvme, MVME_DMODE_D16); 00209 mvme_write_value(mvme, base+V792_BIT_SET1_RW, 0xA0); 00210 mvme_write_value(mvme, base+V792_BIT_CLEAR1_WO, 0xA0); 00211 mvme_set_dmode(mvme, cmode); 00212 }
WORD v792_ControlRegister1Read | ( | MVME_INTERFACE * | mvme, | |
DWORD | base | |||
) |
read Control Register 1 (0x1010,16 bit)
Definition at line 369 of file v792.c.
00369 { 00370 int cmode; 00371 WORD pat; 00372 mvme_get_dmode(mvme, &cmode); 00373 mvme_set_dmode(mvme, MVME_DMODE_D16); 00374 pat = mvme_read_value(mvme, base+V792_CR1_RW); 00375 mvme_set_dmode(mvme, cmode); 00376 return pat; 00377 }
void v792_ControlRegister1Write | ( | MVME_INTERFACE * | mvme, | |
DWORD | base, | |||
WORD | pat | |||
) |
write Control Register 1 (0x1010,16 bit)
Definition at line 383 of file v792.c.
00383 { 00384 int cmode; 00385 mvme_get_dmode(mvme, &cmode); 00386 mvme_set_dmode(mvme, MVME_DMODE_D16); 00387 mvme_write_value(mvme, base+V792_CR1_RW,pat); 00388 mvme_set_dmode(mvme, cmode); 00389 }
int v792_CSR1Read | ( | MVME_INTERFACE * | mvme, | |
DWORD | base | |||
) |
Definition at line 151 of file v792.c.
Referenced by v792_isEvtReady(), and v792_Status().
00152 { 00153 int status, cmode; 00154 00155 mvme_get_dmode(mvme, &cmode); 00156 mvme_set_dmode(mvme, MVME_DMODE_D16); 00157 status = mvme_read_value(mvme, base+V792_CSR1_RO); 00158 mvme_set_dmode(mvme, cmode); 00159 return status; 00160 }
int v792_CSR2Read | ( | MVME_INTERFACE * | mvme, | |
DWORD | base | |||
) |
Definition at line 180 of file v792.c.
Referenced by v792_Status().
00181 { 00182 int status, cmode; 00183 00184 mvme_get_dmode(mvme, &cmode); 00185 mvme_set_dmode(mvme, MVME_DMODE_D16); 00186 status = mvme_read_value(mvme, base+V792_CSR2_RO); 00187 mvme_set_dmode(mvme, cmode); 00188 return status; 00189 }
void v792_DataClear | ( | MVME_INTERFACE * | mvme, | |
DWORD | base | |||
) |
Definition at line 226 of file v792.c.
00227 { 00228 int cmode; 00229 mvme_get_dmode(mvme, &cmode); 00230 mvme_set_dmode(mvme, MVME_DMODE_D16); 00231 mvme_write_value(mvme, base+V792_BIT_SET2_RW, 0x4); 00232 mvme_write_value(mvme, base+V792_BIT_CLEAR2_WO, 0x4); 00233 mvme_set_dmode(mvme, cmode); 00234 }
int v792_DataRead | ( | MVME_INTERFACE * | mvme, | |
DWORD | base, | |||
DWORD * | pdest, | |||
int * | nentry | |||
) |
Definition at line 73 of file v792.c.
00074 { 00075 int cmode; 00076 00077 mvme_get_dmode(mvme, &cmode); 00078 mvme_set_dmode(mvme, MVME_DMODE_D32); 00079 *nentry = 128; 00080 if (v792_DataReady(mvme, base)) { 00081 mvme_read(mvme, pdest, base, *nentry*4); 00082 } 00083 mvme_set_dmode(mvme, cmode); 00084 return *nentry; 00085 }
int v792_DataReady | ( | MVME_INTERFACE * | mvme, | |
DWORD | base | |||
) |
Definition at line 308 of file v792.c.
00309 { 00310 int data_ready, cmode; 00311 00312 mvme_get_dmode(mvme, &cmode); 00313 mvme_set_dmode(mvme, MVME_DMODE_D16); 00314 data_ready = mvme_read_value(mvme, base+V792_CSR1_RO) & 0x1; 00315 mvme_set_dmode(mvme, cmode); 00316 return data_ready; 00317 }
void v792_EmptyEnable | ( | MVME_INTERFACE * | mvme, | |
DWORD | base | |||
) |
Definition at line 278 of file v792.c.
Referenced by v792_Setup().
00279 { 00280 int cmode; 00281 mvme_get_dmode(mvme, &cmode); 00282 mvme_set_dmode(mvme, MVME_DMODE_D16); 00283 mvme_write_value(mvme, base+V792_BIT_SET2_RW, 0x1000); 00284 mvme_set_dmode(mvme, cmode); 00285 }
int v792_EventRead | ( | MVME_INTERFACE * | mvme, | |
DWORD | base, | |||
DWORD * | pdest, | |||
int * | nentry | |||
) |
Definition at line 41 of file v792.c.
00042 { 00043 DWORD hdata; 00044 int cmode; 00045 00046 mvme_get_dmode(mvme, &cmode); 00047 mvme_set_dmode(mvme, MVME_DMODE_D32); 00048 00049 *nentry = 0; 00050 if (v792_DataReady(mvme, base)) { 00051 do { 00052 hdata = mvme_read_value(mvme, base); 00053 } while (!(hdata & 0x02000000)); // skip up to the header 00054 00055 pdest[*nentry] = hdata; 00056 *nentry += 1; 00057 do { 00058 pdest[*nentry] = mvme_read_value(mvme, base); 00059 *nentry += 1; 00060 } while (!(pdest[*nentry-1] & 0x04000000)); // copy until the trailer 00061 00062 nentry--; 00063 } 00064 mvme_set_dmode(mvme, cmode); 00065 return *nentry; 00066 }
void v792_EvtCntRead | ( | MVME_INTERFACE * | mvme, | |
DWORD | base, | |||
DWORD * | evtcnt | |||
) |
Definition at line 139 of file v792.c.
00140 { 00141 int cmode; 00142 00143 mvme_get_dmode(mvme, &cmode); 00144 mvme_set_dmode(mvme, MVME_DMODE_D16); 00145 *evtcnt = mvme_read_value(mvme, base+V792_EVT_CNT_L_RO); 00146 *evtcnt += (mvme_read_value(mvme, base+V792_EVT_CNT_H_RO) << 16); 00147 mvme_set_dmode(mvme, cmode); 00148 }
void v792_EvtCntReset | ( | MVME_INTERFACE * | mvme, | |
DWORD | base | |||
) |
Definition at line 288 of file v792.c.
00289 { 00290 int cmode; 00291 mvme_get_dmode(mvme, &cmode); 00292 mvme_set_dmode(mvme, MVME_DMODE_D16); 00293 mvme_write_value(mvme, base+V792_EVT_CNT_RST_WO, 1); 00294 mvme_set_dmode(mvme, cmode); 00295 }
void v792_EvtTriggerSet | ( | MVME_INTERFACE * | mvme, | |
DWORD | base, | |||
int | count | |||
) |
Definition at line 128 of file v792.c.
00129 { 00130 int cmode; 00131 00132 mvme_get_dmode(mvme, &cmode); 00133 mvme_set_dmode(mvme, MVME_DMODE_D16); 00134 mvme_write_value(mvme, base+V792_EVTRIG_REG_RW, (count & 0x1F)); 00135 mvme_set_dmode(mvme, cmode); 00136 }
void v792_IntDisable | ( | MVME_INTERFACE * | mvme, | |
DWORD | base | |||
) |
Definition at line 352 of file v792.c.
00353 { 00354 int cmode; 00355 mvme_get_dmode(mvme, &cmode); 00356 mvme_set_dmode(mvme, MVME_DMODE_D16); 00357 mvme_write_value(mvme, base+V792_EVTRIG_REG_RW, 0); 00358 /* Use the trigger buffer for int enable/disable 00359 Setting a level 0 reboot the VMIC ! 00360 mvme_write_value(mvme, base+V792_INT_LEVEL_WO, 0); 00361 */ 00362 mvme_set_dmode(mvme, cmode); 00363 }
void v792_IntEnable | ( | MVME_INTERFACE * | mvme, | |
DWORD | base, | |||
int | level | |||
) |
Definition at line 339 of file v792.c.
00340 { 00341 int cmode; 00342 mvme_get_dmode(mvme, &cmode); 00343 mvme_set_dmode(mvme, MVME_DMODE_D16); 00344 mvme_write_value(mvme, base+V792_EVTRIG_REG_RW, (level & 0x1F)); 00345 /* Use the trigger buffer for int enable/disable 00346 mvme_write_value(mvme, base+V792_INT_LEVEL_WO, (level & 0x7)); 00347 */ 00348 mvme_set_dmode(mvme, cmode); 00349 }
void v792_IntSet | ( | MVME_INTERFACE * | mvme, | |
DWORD | base, | |||
int | level, | |||
int | vector | |||
) |
Definition at line 328 of file v792.c.
00329 { 00330 int cmode; 00331 mvme_get_dmode(mvme, &cmode); 00332 mvme_set_dmode(mvme, MVME_DMODE_D16); 00333 mvme_write_value(mvme, base+V792_INT_VECTOR_WO, (vector & 0xFF)); 00334 mvme_write_value(mvme, base+V792_INT_LEVEL_WO, (level & 0x7)); 00335 mvme_set_dmode(mvme, cmode); 00336 }
int v792_isBusy | ( | MVME_INTERFACE * | mvme, | |
DWORD | base | |||
) |
Definition at line 163 of file v792.c.
00164 { 00165 int status, busy, timeout, cmode; 00166 00167 mvme_get_dmode(mvme, &cmode); 00168 mvme_set_dmode(mvme, MVME_DMODE_D16); 00169 timeout = 1000; 00170 do { 00171 status = mvme_read_value(mvme, base+V792_CSR1_RO); 00172 busy = status & 0x4; 00173 timeout--; 00174 } while (busy || timeout); 00175 mvme_set_dmode(mvme, cmode); 00176 return (busy != 0 ? 1 : 0); 00177 }
int v792_isEvtReady | ( | MVME_INTERFACE * | mvme, | |
DWORD | base | |||
) |
Definition at line 320 of file v792.c.
00321 { 00322 int csr; 00323 csr = v792_CSR1Read(mvme, base); 00324 return (csr & 0x100); 00325 }
int v792_isPresent | ( | MVME_INTERFACE * | mvme, | |
DWORD | base | |||
) |
Definition at line 543 of file v792.c.
00544 { 00545 int status, cmode; 00546 mvme_get_dmode(mvme, &cmode); 00547 mvme_set_dmode(mvme, MVME_DMODE_D16); 00548 status = mvme_read_value(mvme, base+V792_FIRM_REV); 00549 mvme_set_dmode(mvme, cmode); 00550 if (status == 0xFFFF) 00551 return 0; 00552 else 00553 return 1; 00554 }
void v792_LowThDisable | ( | MVME_INTERFACE * | mvme, | |
DWORD | base | |||
) |
Definition at line 268 of file v792.c.
00269 { 00270 int cmode; 00271 mvme_get_dmode(mvme, &cmode); 00272 mvme_set_dmode(mvme, MVME_DMODE_D16); 00273 mvme_write_value(mvme, base+V792_BIT_SET2_RW, 0x10); 00274 mvme_set_dmode(mvme, cmode); 00275 }
void v792_LowThEnable | ( | MVME_INTERFACE * | mvme, | |
DWORD | base | |||
) |
Definition at line 258 of file v792.c.
Referenced by v792_Setup().
00259 { 00260 int cmode; 00261 mvme_get_dmode(mvme, &cmode); 00262 mvme_set_dmode(mvme, MVME_DMODE_D16); 00263 mvme_write_value(mvme, base+V792_BIT_CLEAR2_WO, 0x10); 00264 mvme_set_dmode(mvme, cmode); 00265 }
void v792_OnlineSet | ( | MVME_INTERFACE * | mvme, | |
DWORD | base | |||
) |
Definition at line 248 of file v792.c.
Referenced by v792_Setup().
00249 { 00250 int cmode; 00251 mvme_get_dmode(mvme, &cmode); 00252 mvme_set_dmode(mvme, MVME_DMODE_D16); 00253 mvme_write_value(mvme, base+V792_BIT_CLEAR2_WO, 0x2); 00254 mvme_set_dmode(mvme, cmode); 00255 }
void v792_printEntry | ( | const v792_Data * | v | ) |
decoded printout of readout entry Not to be trusted for data decoding but acceptable for display purpose as its implementation is strongly compiler dependent and not flawless.
v |
Definition at line 519 of file v792.c.
00519 { 00520 switch (v->data.type) { 00521 case v792_typeMeasurement: 00522 printf("Data=0x%08x Measurement ch=%3d v=%6d over=%1d under=%1d\n", 00523 (int)v->raw,v->data.channel,v->data.adc,v->data.ov,v->data.un); 00524 break; 00525 case v792_typeHeader: 00526 printf("Data=0x%08x Header geo=%2x crate=%2x cnt=%2d\n", 00527 (int)v->raw,v->header.geo,v->header.crate,v->header.cnt); 00528 break; 00529 case v792_typeFooter: 00530 printf("Data=0x%08x Footer geo=%2x evtCnt=%7d\n", 00531 (int)v->raw,v->footer.geo,v->footer.evtCnt); 00532 break; 00533 case v792_typeFiller: 00534 printf("Data=0x%08x Filler\n",(int)v->raw); 00535 break; 00536 default: 00537 printf("Data=0x%08x Unknown %04x\n",(int)v->raw,v->data.type); 00538 break; 00539 } 00540 }
WORD v792_Read16 | ( | MVME_INTERFACE * | mvme, | |
DWORD | base, | |||
int | offset | |||
) |
Definition at line 24 of file v792.c.
Referenced by v792_Status().
00025 { 00026 mvme_set_dmode(mvme, MVME_DMODE_D16); 00027 return mvme_read_value(mvme, base+offset); 00028 }
int v792_Setup | ( | MVME_INTERFACE * | mvme, | |
DWORD | 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 | |
*nentry | number of entries requested and returned. |
Definition at line 415 of file v792.c.
00416 { 00417 int cmode; 00418 00419 mvme_get_dmode(mvme, &cmode); 00420 mvme_set_dmode(mvme, MVME_DMODE_D16); 00421 00422 switch (mode) { 00423 case 0x1: 00424 printf("Default setting after power up (mode:%d)\n", mode); 00425 printf("\n"); 00426 break; 00427 case 0x2: 00428 printf("Modified setting (mode:%d)\n", mode); 00429 printf("Empty Enable, Over Range disable, Low Th Enable\n"); 00430 v792_OnlineSet(mvme, base); 00431 v792_EmptyEnable(mvme, base); 00432 v792_LowThEnable(mvme, base); 00433 break; 00434 default: 00435 printf("Unknown setup mode\n"); 00436 mvme_set_dmode(mvme, cmode); 00437 return -1; 00438 } 00439 mvme_set_dmode(mvme, cmode); 00440 return 0; 00441 }
void v792_SingleShotReset | ( | MVME_INTERFACE * | mvme, | |
DWORD | base | |||
) |
Definition at line 298 of file v792.c.
00299 { 00300 int cmode; 00301 mvme_get_dmode(mvme, &cmode); 00302 mvme_set_dmode(mvme, MVME_DMODE_D16); 00303 mvme_write_value(mvme, base+V792_SINGLE_RST_WO, 1); 00304 mvme_set_dmode(mvme, cmode); 00305 }
void v792_SoftReset | ( | MVME_INTERFACE * | mvme, | |
DWORD | base | |||
) |
Definition at line 237 of file v792.c.
00238 { 00239 int cmode; 00240 mvme_get_dmode(mvme, &cmode); 00241 mvme_set_dmode(mvme, MVME_DMODE_D16); 00242 mvme_write_value(mvme, base+V792_BIT_SET1_RW, 0xA0); 00243 mvme_write_value(mvme, base+V792_BIT_CLEAR1_WO, 0xA0); 00244 mvme_set_dmode(mvme, cmode); 00245 }
void v792_Status | ( | MVME_INTERFACE * | mvme, | |
DWORD | base | |||
) |
Definition at line 444 of file v792.c.
00445 { 00446 int status, cmode, i; 00447 WORD threshold[V792_MAX_CHANNELS]; 00448 00449 mvme_get_dmode(mvme, &cmode); 00450 mvme_set_dmode(mvme, MVME_DMODE_D16); 00451 printf("V792 at VME A24 0x%06x:\n", base); 00452 status = mvme_read_value(mvme, base+V792_FIRM_REV); 00453 printf("Firmware revision: 0x%x\n", status); 00454 if (status == 0xFFFF) { 00455 printf("Module not present!\n"); 00456 return; 00457 } 00458 status = v792_CSR1Read(mvme, base); 00459 printf("CSR1: 0x%x\n", status); 00460 printf("DataReady :%s\t", status & 0x1 ? "Y" : "N"); 00461 printf(" - Global Dready:%s\t", status & 0x2 ? "Y" : "N"); 00462 printf(" - Busy :%s\n", status & 0x4 ? "Y" : "N"); 00463 printf("Global Busy :%s\t", status & 0x8 ? "Y" : "N"); 00464 printf(" - Amnesia :%s\t", status & 0x10 ? "Y" : "N"); 00465 printf(" - Purge :%s\n", status & 0x20 ? "Y" : "N"); 00466 printf("Term ON :%s\t", status & 0x40 ? "Y" : "N"); 00467 printf(" - TermOFF :%s\t", status & 0x80 ? "Y" : "N"); 00468 printf(" - Event Ready :%s\n", status & 0x100 ? "Y" : "N"); 00469 status = v792_CSR2Read(mvme, base); 00470 printf("CSR2: 0x%x\n", status); 00471 printf("Buffer Empty :%s\t", status & 0x2 ? "Y" : "N"); 00472 printf(" - Buffer Full :%s\n", status & 0x4 ? "Y" : "N"); 00473 int dtype = (status & 0xF0) >> 4; 00474 printf("Daughter card type (CSEL/DSEL) :%d%d%d%d (0x%x) ", 00475 status & 0x80 ? 1 : 0, 00476 status & 0x40 ? 1 : 0, 00477 status & 0x20 ? 1 : 0, 00478 status & 0x10 ? 1 : 0, 00479 dtype); 00480 switch (dtype) { 00481 default: 00482 printf("\n"); 00483 break; 00484 case 2: 00485 printf("V792 32ch QDC\n"); 00486 break; 00487 } 00488 status = v792_BitSet2Read(mvme, base); 00489 printf("BitSet2: 0x%x\n", status); 00490 printf("Test Mem :%s\t", status & 0x1 ? "Y" : "N"); 00491 printf(" - Offline :%s\t", status & 0x2 ? "Y" : "N"); 00492 printf(" - Clear Data :%s\n", status & 0x4 ? "Y" : "N"); 00493 printf("Over Range En:%s\t", status & 0x8 ? "Y" : "N"); 00494 printf(" - Low Thres En :%s\t", status & 0x10 ? "Y" : "N"); 00495 printf(" - Auto Incr :%s\n", status & 0x20 ? "Y" : "N"); 00496 printf("Empty Enable :%s\t", status & 0x1000 ? "Y" : "N"); 00497 printf(" - Slide sub En :%s\t", status & 0x2000 ? "Y" : "N"); 00498 printf(" - All Triggers :%s\n", status & 0x4000 ? "Y" : "N"); 00499 v792_EvtCntRead(mvme, base, &status); 00500 printf("Event counter: %d\n", status); 00501 printf("Iped value: %d\n", v792_Read16(mvme, base, V792_IPED_RW)); 00502 00503 v792_ThresholdRead(mvme, base, threshold); 00504 for (i=0;i<V792_MAX_CHANNELS;i+=2) { 00505 printf("Threshold[%2i] = 0x%4.4x\t - ", i, threshold[i]); 00506 printf("Threshold[%2i] = 0x%4.4x\n", i+1, threshold[i+1]); 00507 } 00508 mvme_set_dmode(mvme, cmode); 00509 }
int v792_ThresholdRead | ( | MVME_INTERFACE * | mvme, | |
DWORD | base, | |||
WORD * | threshold | |||
) |
Read Thresholds
Definition at line 113 of file v792.c.
Referenced by v792_Status().
00114 { 00115 int k, cmode; 00116 00117 mvme_get_dmode(mvme, &cmode); 00118 mvme_set_dmode(mvme, MVME_DMODE_D16); 00119 00120 for (k=0; k<V792_MAX_CHANNELS ; k++) { 00121 threshold[k] = mvme_read_value(mvme, base+V792_THRES_BASE+2*k) & 0x1FF; 00122 } 00123 mvme_set_dmode(mvme, cmode); 00124 return V792_MAX_CHANNELS; 00125 }
int v792_ThresholdWrite | ( | MVME_INTERFACE * | mvme, | |
DWORD | base, | |||
WORD * | threshold | |||
) |
Write Thresholds and read them back
Definition at line 91 of file v792.c.
00092 { 00093 int k, cmode; 00094 00095 mvme_get_dmode(mvme, &cmode); 00096 mvme_set_dmode(mvme, MVME_DMODE_D16); 00097 for (k=0; k<V792_MAX_CHANNELS ; k++) { 00098 mvme_write_value(mvme, base+V792_THRES_BASE+2*k, threshold[k] & 0x1FF); 00099 } 00100 00101 for (k=0; k<V792_MAX_CHANNELS ; k++) { 00102 threshold[k] = mvme_read_value(mvme, base+V792_THRES_BASE+2*k) & 0x1FF; 00103 } 00104 00105 mvme_set_dmode(mvme, cmode); 00106 return V792_MAX_CHANNELS; 00107 }
void v792_Trigger | ( | MVME_INTERFACE * | mvme, | |
DWORD | base | |||
) |
cause a software trigger
Definition at line 395 of file v792.c.
00395 { 00396 int cmode; 00397 mvme_get_dmode(mvme, &cmode); 00398 mvme_set_dmode(mvme, MVME_DMODE_D16); 00399 mvme_write_value(mvme, base+V792_SWCOMM_WO, 0); 00400 mvme_set_dmode(mvme, cmode); 00401 }
void v792_Write16 | ( | MVME_INTERFACE * | mvme, | |
DWORD | base, | |||
int | offset, | |||
WORD | value | |||
) |
Definition at line 30 of file v792.c.
00031 { 00032 mvme_set_dmode(mvme, MVME_DMODE_D16); 00033 mvme_write_value(mvme, base+offset, value); 00034 }