Esempio n. 1
0
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");

}
Esempio n. 2
0
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());
  
}
Esempio n. 3
0
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());
  
}
Esempio n. 4
0
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");

}
Esempio n. 5
0
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;
}