static void __go() { int ii, jj, id, slot; logMsg("INFO: Entering Go 1\n",1,2,3,4,5,6); #ifndef TI_SLAVE /* set sync event interval (in blocks) */ vmeBusLock(); tiSetSyncEventInterval(100000/*10000*//*block_level*/); printf("TI: Sync Event Block-Interval = %d\n", tiGetSyncEventInterval()); vmeBusUnlock(); #endif #ifdef USE_PRAD /* Enable modules, if needed, here */ #ifdef USE_V767 vmeBusLock(); v767Clear(0); vmeBusUnlock(); #endif #ifdef USE_V1190 vmeBusLock(); tdc1190Clear(0); vmeBusUnlock(); #endif /* DCS2 dsc2LatchScalers(0,1); */ #endif tiStatus(1); /* always clear exceptions */ jlabgefClearException(1); nusertrig = 0; ndone = 0; CDOENABLE(TIPRIMARY,TIR_SOURCE,0); /* bryan has (,1,1) ... */ tiSoftTrig(1,1,0x448C,1); logMsg("INFO: Go 1 Executed\n",1,2,3,4,5,6); }
static void __end() { int iwait=0; int blocksLeft=0; int id; tiSoftTrig(1,0,0x1123,1); CDODISABLE(TIPRIMARY,TIR_SOURCE,0); /* Before disconnecting... wait for blocks to be emptied */ vmeBusLock(); blocksLeft = tiBReady(); vmeBusUnlock(); printf(">>>>>>>>>>>>>>>>>>>>>>> %d blocks left on the TI\n",blocksLeft);fflush(stdout); if(blocksLeft) { printf(">>>>>>>>>>>>>>>>>>>>>>> before while ... %d blocks left on the TI\n",blocksLeft);fflush(stdout); while(iwait < 10) { taskDelay(10); if(blocksLeft <= 0) break; vmeBusLock(); blocksLeft = tiBReady(); printf(">>>>>>>>>>>>>>>>>>>>>>> inside while ... %d blocks left on the TI\n",blocksLeft);fflush(stdout); vmeBusUnlock(); iwait++; } printf(">>>>>>>>>>>>>>>>>>>>>>> after while ... %d blocks left on the TI\n",blocksLeft);fflush(stdout); } vmeBusLock(); tiStatus(1); vmeBusUnlock(); #ifdef EVENT_CYCLE //reset lms phase printf("INFO: trying to reset lms phase."); vmeBusLock(); lms_phase_change((6 + 1 - lms_phase)%6); vmeBusUnlock(); #endif printf("INFO: End1 Executed\n\n\n");fflush(stdout); 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); }