doubleTriggerSequence.cxx

00001 {
00002 printf("starting double trigger sequence\n");
00003 
00004 const unsigned length=1000;
00005 const unsigned long ntrigs=10000;
00006 
00007 int trigs[length];
00008 for (int i=0; i<length; ++i){
00009   trigs[i]=0;
00010 }
00011 
00012 // add a couple of L1As:
00013 trigs[0]=0x01;
00014 trigs[130]=0x01;
00015 // sequence end
00016 
00017 
00018 // reset sequence control - need to do this before loading the sequence
00019 tapi.timRegLoad(0x1a,0x0200);
00020 tapi.timRegLoad(0x1a,0x0);
00021 
00022 // load the sequence
00023 tapi.timRegLoad(0x1C,length-1);
00024 for (int i=0; i<length; ++i){
00025   tapi.timRegLoad(0x8000 + i*2, trigs[i]);
00026   int in = tapi.timReadRegister(0x8000 + i*2);
00027   //printf("in[%d]=0x%x (%x)\n",i,in,trigs[i]);
00028 }
00029 
00030 // enables
00031 tapi.timRegLoad(0x0,0xFDFD);
00032 
00033 // run enables
00034 tapi.timRegLoad(0x18,0xFFFD);
00035 
00036 // L1 counters
00037 tapi.timRegLoad(0x12,0x0); 
00038 tapi.timRegLoad(0x10,0x0);
00039 
00040 // set up sequencer in cyclic, trigger, go mode
00041 tapi.timRegLoad(0x1a,0x0C01);
00042 
00043 unsigned long l1id=0;
00044 do{
00045   l1id = tapi.timReadRegister(0x10) + (tapi.timReadRegister(0x12)<<16);
00046 } while (l1id<ntrigs);
00047 
00048 // stop the sequence!
00049 tapi.timRegLoad(0x1a,0x0);
00050 
00051 l1id = tapi.timReadRegister(0x10) + (tapi.timReadRegister(0x12)<<16);
00052 printf("number of l1ids sent was %d \n\n",l1id);
00053 
00054 
00055 for (int i=0; i<length; ++i){
00056   int out = tapi.timReadRegister(0x8000 + i*2);
00057   if (out==0){
00058     printf(".");
00059   }else if (out==0xffff){
00060     printf("x");
00061   }else{
00062     printf("\nOutput[%d]=0x%x\n",i,out);
00063   }
00064 }
00065 printf("\n");
00066 
00067 } // end of macro

Generated on Mon Feb 6 14:01:19 2006 for SCT DAQ/DCS Software - C++ by  doxygen 1.4.6