void rocPrestart() { unsigned short iflag; int stat, itdc; unsigned long long time0, time1, time2; /* PRogram/Init VME Modules Here */ /* Program/Init VME Modules Here */ /* INIT C1190/C1290 - Must be A32 for 2eSST */ UINT32 list[NUM_V1190] = {0x08270000}; tdc1190InitList(list,NUM_V1190,1); /* Another way to do the same thing */ /* tdc1190Init(list[0],0x10000,NUM_V1190,1); */ for(itdc=0; itdc<NUM_V1190; itdc++) { tdc1190SetTriggerMatchingMode(itdc); tdc1190SetEdgeResolution(itdc,100); tdc1190EventFifo(itdc,0); tdc1190BusError(itdc,1); tdc1190Align64(itdc,1); } /* Disable some noisy channels */ /* tdc1190DisableChannel(1,12); */ /* tdc1190DisableChannel(1,13); */ for(itdc=0; itdc<NUM_V1190; itdc++) tdc1190Status(itdc); dscInit(0xbe0000,0,1); dscStatus(0,0); dscSetThreshold(0,0,550,TDCTRG); dscSetThreshold(0,14,750,TDCTRG); dscSetThreshold(0,15,750,TDCTRG); dscSetChannelMask(0,0xffff,TRG); dscSetChannelMask(0,0xffff,TDC); dscSetChannelORMask(0,0xffff,TDCTRG); time0 = rdtsc(); sleep(1); time1 = rdtsc(); printf("usleep(1) ticks = %lld\n",time1-time0); printf("rocPrestart: User Prestart Executed\n"); }
void rocEnd() { int status, count; int itdc; /* 1190/1290 Status - FIXME: Reset too? */ for(itdc=0; itdc<NUM_V1190; itdc++) tdc1190Status(itdc); printf("rocEnd: Ended after %d events\n",tirGetIntCount()); }
void rocEnd() { int itdc; /* Disable Modules here */ dscStatus(0,0); /* 1190/1290 Status - FIXME: Reset too? */ for(itdc=0; itdc<NUM_V1190; itdc++) tdc1190Status(itdc); printf("rocEnd: Ended after %d events\n",tirGetIntCount()); }
void rocPrestart() { unsigned short iflag; int itdc, stat; /* Setup Address and data modes for DMA transfers * * vmeDmaConfig(addrType, dataType, sstMode); * * addrType = 0 (A16) 1 (A24) 2 (A32) * dataType = 0 (D16) 1 (D32) 2 (BLK32) 3 (MBLK) 4 (2eVME) 5 (2eSST) * sstMode = 0 (SST160) 1 (SST267) 2 (SST320) */ vmeDmaConfig(2,5,2); printf("Done configuring dma\n"); /* Program/Init VME Modules Here */ /* INIT C1190/C1290 - Must be A32 for 2eSST */ UINT32 list[NUM_V1190] = {0x08270000,0x8280000}; tdc1190InitList(list,NUM_V1190,1); /* Another way to do the same thing */ /* tdc1190Init(list[0],0x10000,NUM_V1190,1); */ for(itdc=0; itdc<NUM_V1190; itdc++) { tdc1190SetTriggerMatchingMode(itdc); tdc1190SetEdgeResolution(itdc,100); tdc1190EventFifo(itdc,1); tdc1190BusError(itdc,1); tdc1190Align64(itdc,1); } /* Disable some noisy channels */ /* tdc1190DisableChannel(1,12); */ /* tdc1190DisableChannel(1,13); */ for(itdc=0; itdc<NUM_V1190; itdc++) tdc1190Status(itdc); printf("rocPrestart: User Prestart Executed\n"); }
static void __prestart() { int ii, i1, i2, i3; int ret; /* Clear some global variables etc for a clean start */ *(rol->nevents) = 0; event_number = 0; tiEnableVXSSignals(); #ifdef POLLING_MODE CTRIGRSS(TIPRIMARY, TIR_SOURCE, usrtrig, usrtrig_done); #else CTRIGRSA(TIPRIMARY, TIR_SOURCE, usrtrig, usrtrig_done); #endif printf(">>>>>>>>>> next_block_level = %d, block_level = %d, use next_block_level\n",next_block_level,block_level); block_level = next_block_level; /**************************************************************************/ /* setting TI busy conditions, based on boards found in Download */ /* tiInit() does nothing for busy, tiConfig() sets fiber, we set the rest */ /* NOTE: if ti is busy, it will not send trigger enable over fiber, since */ /* it is the same fiber and busy has higher priority */ #ifndef TI_SLAVE vmeBusLock(); tiSetBusySource(TI_BUSY_LOOPBACK,0); /*tiSetBusySource(TI_BUSY_FP,0);*/ vmeBusUnlock(); #endif #ifdef USE_PRAD #ifdef USE_V767 vmeBusLock(); v767Clear(0); v767Status(0, 0, 0); vmeBusUnlock(); #endif #ifdef USE_V1190 vmeBusLock(); tdc1190Clear(0); tdc1190Status(0); vmeBusUnlock(); #endif /*if(nfadc>0)*/ { printf("Set BUSY from FP for FASTBUS\n"); vmeBusLock(); tiSetBusySource(TI_BUSY_FP, 0); vmeBusUnlock(); } #endif /* USER code here */ /******************/ vmeBusLock(); tiIntDisable(); vmeBusUnlock(); /* master and standalone crates, NOT slave */ #ifndef TI_SLAVE sleep(1); vmeBusLock(); tiSyncReset(1); vmeBusUnlock(); sleep(1); vmeBusLock(); tiSyncReset(1); vmeBusUnlock(); sleep(1); vmeBusLock(); ret = tiGetSyncResetRequest(); vmeBusUnlock(); if(ret) { printf("ERROR: syncrequest still ON after tiSyncReset(); trying again\n"); sleep(1); vmeBusLock(); tiSyncReset(1); vmeBusUnlock(); sleep(1); } vmeBusLock(); ret = tiGetSyncResetRequest(); vmeBusUnlock(); if(ret) { printf("ERROR: syncrequest still ON after tiSyncReset(); try 'tcpClient <rocname> tiSyncReset'\n"); } else { printf("INFO: syncrequest is OFF now\n"); } /* printf("holdoff rule 1 set to %d\n",tiGetTriggerHoldoff(1)); printf("holdoff rule 2 set to %d\n",tiGetTriggerHoldoff(2)); */ #endif /* set block level in all boards where it is needed; it will overwrite any previous block level settings */ #ifdef TI_SLAVE /* assume that for master and standalone TIs block level is set from config file */ vmeBusLock(); tiSetBlockLevel(block_level); vmeBusUnlock(); #endif #ifdef USE_V1190 tdc1190SetBLTEventNumber(0, block_level); #endif vmeBusLock(); tdc1190Status(0); vmeBusUnlock(); #ifdef EVENT_CYCLE event_count = 0; #endif vmeBusLock(); printf("TISTATUS 1\n"); tiStatus(1); vmeBusUnlock(); vmeBusLock(); ti_usetrg(0); tiSetTriggerSource(TI_TRIGGER_PULSER); // ti_usetrg(TRG_TOTALSUM); // tiSetInputPrescale(5, 3); vmeBusUnlock(); vmeBusLock(); printf("TISTATUS 2\n"); tiStatus(1); vmeBusUnlock(); printf("INFO: Prestart1 Executed\n");fflush(stdout); *(rol->nevents) = 0; rol->recNb = 0; return; }