added adcprepare in server and updaed TOKEN_RESTART_DELAY and TOKEN_TIMING_REV

git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorSoftware@373 951219d9-93cf-4727-9268-0efd64621fa3
This commit is contained in:
l_cartier 2012-12-10 11:22:37 +00:00
parent 9341a2875a
commit 9d9d00cdc7
4 changed files with 48 additions and 11 deletions

View File

@ -29,7 +29,7 @@ int nModX=NMAXMOD;
int dynamicRange=16;//32;
int dataBytes=NMAXMOD*NCHIP*NCHAN*2;
int storeInRAM=0;
int ROI_flag=0;
u_int32_t *ram_values=NULL;
volatile char *now_ptr=NULL;
volatile u_int16_t *values;
@ -252,13 +252,21 @@ int cleanFifo(){
addr=ADC_SYNC_REG;
//88322114
if (ROI_flag==0) {
val=ADCSYNC_VAL | ADCSYNC_CLEAN_FIFO_BITS | TOKEN_RESTART_DELAY;
bus_w(addr,val);
//88022114
val=ADCSYNC_VAL | TOKEN_RESTART_DELAY;
bus_w(addr,val);
}
else {
val=ADCSYNC_VAL | ADCSYNC_CLEAN_FIFO_BITS | TOKEN_RESTART_DELAY_ROI;
bus_w(addr,val);
//88022114
val=ADCSYNC_VAL | TOKEN_RESTART_DELAY_ROI;
}
reg=bus_r(addr);
#ifdef DDEBUG
printf("\nADC SYNC reg:%d\n",reg);
@ -277,9 +285,9 @@ int setDAQRegister(int adcval)
if(adcval==-1) packetlength=0x13f;
//depended on pcb rev
int tokenTiming = 0x2010;
int tokenTiming = TOKEN_TIMING_REV2;
if(bus_r(PCB_REV_REG)==1)
tokenTiming=0x2018;
tokenTiming= TOKEN_TIMING_REV1;
val = (packetlength<<16) + tokenTiming;
@ -1263,6 +1271,7 @@ int configureMAC(int ipad,long long int macad,long long int servermacad,int ival
case 2:
case 3:
case 4:
ROI_flag=1;
reg = (NCHAN*2)<<CHANNEL_OFFSET;
reg&=CHANNEL_MASK;
int mask =1<<adc;
@ -1272,8 +1281,9 @@ int configureMAC(int ipad,long long int macad,long long int servermacad,int ival
udpPacketSize=256*2+4+8+2;
break;
//for all adcs
default:
reg = (NCHAN*NCHIP)<<CHANNEL_OFFSET;
default:
ROI_flag=0;
reg = (NCHAN*NCHIP)<<CHANNEL_OFFSET;
reg&=CHANNEL_MASK;
reg|=ACTIVE_ADC_MASK;
bus_w(CHIP_OF_INTRST_REG,reg);
@ -1965,7 +1975,30 @@ int allocateRAM() {
}
int prepareADC(){
u_int32_t valw,codata,csmask;
int i,cdx,ddx;
cdx=0; ddx=1;
csmask=0x7c; // 1111100
codata=0;
codata=(0x14<<8)+(0x0); //command and value;
valw=0xff; bus_w(ADC_WRITE_REG,(valw)); // start point
valw=((0xffffffff&(~csmask)));bus_w(ADC_WRITE_REG,valw); //chip sel bar down
for (i=0;i<24;i++) {
valw=valw&(~(0x1<<cdx));bus_w(ADC_WRITE_REG,valw);usleep(0); //cldwn
printf("DOWN 0x%x \n",valw);
valw=(valw&(~(0x1<<ddx)))+(((codata>>(23-i))&0x1)<<ddx); bus_w(ADC_WRITE_REG,valw); usleep(0); //write data (i)
printf("LOW 0x%x \n",valw);
valw=valw+(0x1<<cdx);bus_w(ADC_WRITE_REG,valw); usleep(0); //clkup
printf("up 0x%x \n",valw);
}
valw=valw&(~(0x1<<cdx));usleep(0);
valw=0xff; bus_w(ADC_WRITE_REG,(valw)); // stop point =start point */
return;
}
int clearRAM() {

View File

@ -33,10 +33,11 @@
#define ADCSYNC_VAL 0x22114
#define ADCSYNC_VAL 0x32214
#define TOKEN_RESTART_DELAY 0x88000000
#define TOKEN_RESTART_DELAY_ROI 0x1b000000
#define TOKEN_TIMING_REV1 0x1f16
#define TOKEN_TIMING_REV2 0x1f0f
#ifdef VIRTUAL
#define DEBUGOUT
@ -45,5 +46,5 @@
#define CLK_FREQ 32.1E+6
#define THIS_SOFTWARE_VERSION 0x20120919
#define THIS_SOFTWARE_VERSION 0x20121210
#endif

View File

@ -73,12 +73,14 @@ int init_detector( int b) {
testRAM();
//gotthard specific
setPhaseShiftOnce();
prepareADC();
setDAQRegister(-1);
setSettings(GET_SETTINGS,-1);
//Initialization
setFrames(1);
setTrains(1);
setExposureTime(1e9);
setExposureTime(1e6);
setPeriod(1e9);
setDelay(0);
setGates(0);

View File

@ -65,6 +65,7 @@ int set_dynamic_range(int);
int set_roi(int);
int get_roi(int);
int set_speed(int);
void prepareADC(void);
int set_readout_flags(int);
int execute_trimming(int);
int lock_server(int);