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; }
int main(int argc, char *argv[]) { int stat; printf("\nJLAB vfTDC Tests\n"); printf("----------------------------\n"); /* remexSetCmsgServer("dafarm28"); */ /* remexInit(NULL,1); */ vmeOpenDefaultWindows(); /* 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,1); /* INIT dmaPList */ dmaPFreeAll(); vmeIN = dmaPCreate("vmeIN",10244,500,0); vmeOUT = dmaPCreate("vmeOUT",0,0,0); dmaPStatsAll(); dmaPReInitAll(); /* gefVmeSetDebugFlags(vmeHdl,0x0); */ /* Set the TI structure pointer */ /* tiInit((2<<19),TI_READOUT_EXT_POLL,0); */ tiA32Base=0x08000000; if(tiInit(0,TI_READOUT_EXT_POLL,0)!=OK) goto CLOSE; tiCheckAddresses(); tiSetSyncEventInterval(10); tiSetEventFormat(3); char mySN[20]; printf("0x%08x\n",tiGetSerialNumber((char **)&mySN)); printf("mySN = %s\n",mySN); #ifndef DO_READOUT tiDisableDataReadout(); tiDisableA32(); #endif tiLoadTriggerTable(0); tiSetTriggerHoldoff(1,4,0); tiSetTriggerHoldoff(2,4,0); tiSetPrescale(0); tiSetBlockLevel(BLOCKLEVEL); stat = tiIntConnect(TI_INT_VEC, mytiISR, 0); if (stat != OK) { printf("ERROR: tiIntConnect failed \n"); goto CLOSE; } else { printf("INFO: Attached TI Interrupt\n"); } /* tiSetTriggerSource(TI_TRIGGER_TSINPUTS); */ tiSetTriggerSource(TI_TRIGGER_PULSER); tiEnableTSInput(0x1); /* tiSetFPInput(0x0); */ /* tiSetGenInput(0xffff); */ /* tiSetGTPInput(0x0); */ /* tiSetBusySource(TI_BUSY_LOOPBACK,1); */ tiSetBlockBufferLevel(1); tiSetFiberDelay(1,2); tiSetSyncDelayWidth(1,0x3f,1); tiSetBlockLimit(10); /*************************************************************/ /* VFTDC initialization */ /*************************************************************/ extern unsigned int vfTDCA32Base; vfTDCA32Base=0x09000000; vfTDCInit(14<<19, 1<<19, 1, VFTDC_INIT_VXS_SYNCRESET | VFTDC_INIT_VXS_TRIG | VFTDC_INIT_VXS_CLKSRC); vfTDCSetBlockLevel(0, BLOCKLEVEL); vfTDCSetWindowParamters(0, 1, 250); vfTDCStatus(0,0); printf("Hit enter to reset stuff\n"); getchar(); tiClockReset(); taskDelay(1); tiTrigLinkReset(); taskDelay(1); tiEnableVXSSignals(); int again=0; AGAIN: taskDelay(1); tiSyncReset(1); taskDelay(1); tiStatus(1); vfTDCStatus(0,0); printf("Hit enter to start triggers\n"); getchar(); tiIntEnable(0); tiStatus(1); #define SOFTTRIG #ifdef SOFTTRIG tiSetRandomTrigger(1,0x7); /* taskDelay(10); */ /* tiSoftTrig(1,0x1,0x700,0); */ #endif printf("Hit any key to Disable TID and exit.\n"); getchar(); tiStatus(1); #ifdef SOFTTRIG /* No more soft triggers */ /* tidSoftTrig(0x0,0x8888,0); */ tiSoftTrig(1,0,0x700,0); tiDisableRandomTrigger(); #endif tiIntDisable(); tiIntDisconnect(); vfTDCStatus(0,0); if(again==1) { again=0; goto AGAIN; } CLOSE: dmaPFreeAll(); vmeCloseDefaultWindows(); exit(0); }