mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-12 12:57:13 +02:00
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:
@ -29,7 +29,7 @@ int nModX=NMAXMOD;
|
|||||||
int dynamicRange=16;//32;
|
int dynamicRange=16;//32;
|
||||||
int dataBytes=NMAXMOD*NCHIP*NCHAN*2;
|
int dataBytes=NMAXMOD*NCHIP*NCHAN*2;
|
||||||
int storeInRAM=0;
|
int storeInRAM=0;
|
||||||
|
int ROI_flag=0;
|
||||||
u_int32_t *ram_values=NULL;
|
u_int32_t *ram_values=NULL;
|
||||||
volatile char *now_ptr=NULL;
|
volatile char *now_ptr=NULL;
|
||||||
volatile u_int16_t *values;
|
volatile u_int16_t *values;
|
||||||
@ -252,13 +252,21 @@ int cleanFifo(){
|
|||||||
addr=ADC_SYNC_REG;
|
addr=ADC_SYNC_REG;
|
||||||
|
|
||||||
//88322114
|
//88322114
|
||||||
|
if (ROI_flag==0) {
|
||||||
val=ADCSYNC_VAL | ADCSYNC_CLEAN_FIFO_BITS | TOKEN_RESTART_DELAY;
|
val=ADCSYNC_VAL | ADCSYNC_CLEAN_FIFO_BITS | TOKEN_RESTART_DELAY;
|
||||||
bus_w(addr,val);
|
bus_w(addr,val);
|
||||||
|
|
||||||
//88022114
|
//88022114
|
||||||
val=ADCSYNC_VAL | TOKEN_RESTART_DELAY;
|
val=ADCSYNC_VAL | TOKEN_RESTART_DELAY;
|
||||||
bus_w(addr,val);
|
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);
|
reg=bus_r(addr);
|
||||||
#ifdef DDEBUG
|
#ifdef DDEBUG
|
||||||
printf("\nADC SYNC reg:%d\n",reg);
|
printf("\nADC SYNC reg:%d\n",reg);
|
||||||
@ -277,9 +285,9 @@ int setDAQRegister(int adcval)
|
|||||||
if(adcval==-1) packetlength=0x13f;
|
if(adcval==-1) packetlength=0x13f;
|
||||||
|
|
||||||
//depended on pcb rev
|
//depended on pcb rev
|
||||||
int tokenTiming = 0x2010;
|
int tokenTiming = TOKEN_TIMING_REV2;
|
||||||
if(bus_r(PCB_REV_REG)==1)
|
if(bus_r(PCB_REV_REG)==1)
|
||||||
tokenTiming=0x2018;
|
tokenTiming= TOKEN_TIMING_REV1;
|
||||||
|
|
||||||
|
|
||||||
val = (packetlength<<16) + tokenTiming;
|
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 2:
|
||||||
case 3:
|
case 3:
|
||||||
case 4:
|
case 4:
|
||||||
|
ROI_flag=1;
|
||||||
reg = (NCHAN*2)<<CHANNEL_OFFSET;
|
reg = (NCHAN*2)<<CHANNEL_OFFSET;
|
||||||
reg&=CHANNEL_MASK;
|
reg&=CHANNEL_MASK;
|
||||||
int mask =1<<adc;
|
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;
|
udpPacketSize=256*2+4+8+2;
|
||||||
break;
|
break;
|
||||||
//for all adcs
|
//for all adcs
|
||||||
default:
|
default:
|
||||||
reg = (NCHAN*NCHIP)<<CHANNEL_OFFSET;
|
ROI_flag=0;
|
||||||
|
reg = (NCHAN*NCHIP)<<CHANNEL_OFFSET;
|
||||||
reg&=CHANNEL_MASK;
|
reg&=CHANNEL_MASK;
|
||||||
reg|=ACTIVE_ADC_MASK;
|
reg|=ACTIVE_ADC_MASK;
|
||||||
bus_w(CHIP_OF_INTRST_REG,reg);
|
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() {
|
int clearRAM() {
|
||||||
|
@ -33,10 +33,11 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define ADCSYNC_VAL 0x22114
|
#define ADCSYNC_VAL 0x32214
|
||||||
#define TOKEN_RESTART_DELAY 0x88000000
|
#define TOKEN_RESTART_DELAY 0x88000000
|
||||||
|
#define TOKEN_RESTART_DELAY_ROI 0x1b000000
|
||||||
|
#define TOKEN_TIMING_REV1 0x1f16
|
||||||
|
#define TOKEN_TIMING_REV2 0x1f0f
|
||||||
|
|
||||||
#ifdef VIRTUAL
|
#ifdef VIRTUAL
|
||||||
#define DEBUGOUT
|
#define DEBUGOUT
|
||||||
@ -45,5 +46,5 @@
|
|||||||
#define CLK_FREQ 32.1E+6
|
#define CLK_FREQ 32.1E+6
|
||||||
|
|
||||||
|
|
||||||
#define THIS_SOFTWARE_VERSION 0x20120919
|
#define THIS_SOFTWARE_VERSION 0x20121210
|
||||||
#endif
|
#endif
|
||||||
|
@ -73,12 +73,14 @@ int init_detector( int b) {
|
|||||||
testRAM();
|
testRAM();
|
||||||
//gotthard specific
|
//gotthard specific
|
||||||
setPhaseShiftOnce();
|
setPhaseShiftOnce();
|
||||||
|
|
||||||
|
prepareADC();
|
||||||
setDAQRegister(-1);
|
setDAQRegister(-1);
|
||||||
setSettings(GET_SETTINGS,-1);
|
setSettings(GET_SETTINGS,-1);
|
||||||
//Initialization
|
//Initialization
|
||||||
setFrames(1);
|
setFrames(1);
|
||||||
setTrains(1);
|
setTrains(1);
|
||||||
setExposureTime(1e9);
|
setExposureTime(1e6);
|
||||||
setPeriod(1e9);
|
setPeriod(1e9);
|
||||||
setDelay(0);
|
setDelay(0);
|
||||||
setGates(0);
|
setGates(0);
|
||||||
|
@ -65,6 +65,7 @@ int set_dynamic_range(int);
|
|||||||
int set_roi(int);
|
int set_roi(int);
|
||||||
int get_roi(int);
|
int get_roi(int);
|
||||||
int set_speed(int);
|
int set_speed(int);
|
||||||
|
void prepareADC(void);
|
||||||
int set_readout_flags(int);
|
int set_readout_flags(int);
|
||||||
int execute_trimming(int);
|
int execute_trimming(int);
|
||||||
int lock_server(int);
|
int lock_server(int);
|
||||||
|
Reference in New Issue
Block a user