mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-21 17:18:00 +02:00
somewhere in between cleaning up
This commit is contained in:
@ -61,12 +61,13 @@ typedef struct ip_header_struct {
|
||||
} ip_header;
|
||||
|
||||
|
||||
struct timeval tss,tse,tsss; //for timing
|
||||
|
||||
|
||||
|
||||
|
||||
u_int32_t CSP0BASE;
|
||||
int highvoltage = 0;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
FILE *debugfp, *datafp;
|
||||
int fr;
|
||||
int wait_time;
|
||||
@ -212,10 +213,19 @@ void initializeDetector(){
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*some registers set, which is in common with jungfrau, please check */
|
||||
prepareADC();
|
||||
/*some registers set, which is in common with jungfrau, please check */
|
||||
initDac(0); initDac(8); //initializes the two dacs
|
||||
/*initDac(0); initDac(8); Carlos later need to initialize dac 0 and dac8 doesnt exist */ //initializes the two dacs
|
||||
|
||||
|
||||
//set dacs
|
||||
@ -278,7 +288,7 @@ void initializeDetector(){
|
||||
setPeriod(2*1000*1000);
|
||||
setDelay(0);
|
||||
setGates(0);
|
||||
|
||||
initHighVoltage(0); /* ask Carlos Set it to a value so server is always updated in a get*/
|
||||
|
||||
setTiming(GET_EXTERNAL_COMMUNICATION_MODE);
|
||||
setMaster(GET_MASTER);
|
||||
@ -394,6 +404,7 @@ int setDAQRegister(){
|
||||
}
|
||||
|
||||
|
||||
/** Carlos later dont know if this is even used (all over the place in mcb_funcs.c) */
|
||||
// direct pattern output
|
||||
u_int32_t putout(char *s, int modnum) {
|
||||
int i;
|
||||
@ -410,8 +421,8 @@ u_int32_t putout(char *s, int modnum) {
|
||||
for (i=0;i<16;i++) {
|
||||
if (s[i]=='1') pat=pat+(1<<(15-i));
|
||||
}
|
||||
//addr=DAC_REG+(modnum<<4);
|
||||
addr=DAC_REG;//+(modnum<<SHIFTMOD); commented by dhanya
|
||||
//addr=SPI_REG+(modnum<<4);
|
||||
addr=SPI_REG;//+(modnum<<SHIFTMOD); commented by dhanya
|
||||
bus_w(addr, pat);
|
||||
|
||||
return OK;
|
||||
@ -1255,16 +1266,6 @@ int64_t getTrains(){
|
||||
}
|
||||
|
||||
|
||||
int64_t setSamples(int64_t value){
|
||||
if (value>=0)
|
||||
bus_w(NSAMPLES_REG,value);
|
||||
return bus_r(NSAMPLES_REG);
|
||||
}
|
||||
|
||||
int64_t getSamples(){
|
||||
return bus_r(NSAMPLES_REG);//get64BitReg(GET_CYCLES_LSB_REG, GET_CYCLES_MSB_REG);
|
||||
}
|
||||
|
||||
|
||||
int64_t setProbes(int64_t value){
|
||||
return 0;
|
||||
@ -1287,15 +1288,15 @@ int64_t getProgress() {
|
||||
}
|
||||
|
||||
int64_t getActualTime(){
|
||||
return get64BitReg(GET_ACTUAL_TIME_LSB_REG, GET_ACTUAL_TIME_MSB_REG)/(1E-9*CLK_FREQ);
|
||||
return get64BitReg(TIME_FROM_START_LSB_REG, TIME_FROM_START_MSB_REG)/(1E-9*CLK_FREQ);
|
||||
}
|
||||
|
||||
int64_t getMeasurementTime(){
|
||||
int64_t v=get64BitReg(GET_MEASUREMENT_TIME_LSB_REG, GET_MEASUREMENT_TIME_MSB_REG);
|
||||
int64_t v=get64BitReg(MEASUREMENT_START_TIME_LSB_REG, MEASUREMENT_START_TIME_MSB_REG);
|
||||
return v/(1E-9*CLK_FREQ);
|
||||
}
|
||||
|
||||
int64_t getFramesFromStart(){
|
||||
int64_t getFramesFromStart(){ /** ask Carlos.. sending back v, but not used in firmware? */
|
||||
int64_t v=get64BitReg(FRAMES_FROM_START_LSB_REG, FRAMES_FROM_START_MSB_REG);
|
||||
int64_t v1=get64BitReg(FRAMES_FROM_START_PG_LSB_REG, FRAMES_FROM_START_PG_MSB_REG);
|
||||
|
||||
@ -1420,59 +1421,79 @@ int getTemperature(int tempSensor, int imod){
|
||||
|
||||
int initHighVoltage(int val, int imod){
|
||||
|
||||
|
||||
u_int32_t offw,codata;
|
||||
u_int16_t valw, dacvalue;
|
||||
int i,ddx,csdx,cdx;
|
||||
u_int32_t addr = SPI_REG;
|
||||
float alpha=0.55;
|
||||
u_int16_t valw, dacvalue;
|
||||
u_int32_t codata;
|
||||
|
||||
if (val>=0) {
|
||||
if (val<60) {
|
||||
dacvalue=0;
|
||||
val=60;
|
||||
} else if (val>=200) {
|
||||
dacvalue=0x1;
|
||||
val=200;
|
||||
int numbits = 8;
|
||||
int valuemask = 0xff;
|
||||
|
||||
// setting hv
|
||||
if (val >= 0) {
|
||||
|
||||
// limit values
|
||||
if (val < 60) {
|
||||
dacvalue = 0;
|
||||
val = 60;
|
||||
} else if (val >= 200) {
|
||||
dacvalue = 0x1;
|
||||
val = 200;
|
||||
} else {
|
||||
dacvalue=1.+(200.-val)/alpha;
|
||||
dacvalue = 1. + (200.-val) / alpha;
|
||||
val=200.-(dacvalue-1)*alpha;
|
||||
}
|
||||
printf ("****************************** setting val %d, dacval %d\n",val, dacvalue);
|
||||
offw=DAC_REG;
|
||||
printf ("\n Setting High voltage to %d (dacval %d)\n",val, dacvalue);
|
||||
codata = dacvalue & valuemask;
|
||||
|
||||
ddx=8; csdx=10; cdx=9;
|
||||
codata=((dacvalue)&0xff);
|
||||
// start point 0xffff
|
||||
valw = 0xffff; //To make it compatible with old board
|
||||
//valw = DAC_SERIAL_DIGITAL_OUT_MSK & DAC_SERIAL_CLK_OUT_MSK & DAC_SERIAL_CS_OUT_MSK &
|
||||
//HV_SERIAL_DIGITAL_OUT_MSK & HV_SERIAL_CLK_OUT_MSK & HV_SERIAL_CS_OUT_MSK;
|
||||
bus_w (addr, valw);
|
||||
|
||||
// chip sel bar down
|
||||
valw &= ~HV_SERIAL_CS_OUT_MSK;
|
||||
bus_w (addr, valw);
|
||||
|
||||
{
|
||||
int i = 0;
|
||||
for (i = 0; i < numbits; i++) {
|
||||
|
||||
// clk down
|
||||
valw &= ~HV_SERIAL_CLK_OUT_MSK;
|
||||
bus_w (addr, valw);
|
||||
|
||||
valw=0xffff; bus_w(offw,(valw)); // start point
|
||||
valw=((valw&(~(0x1<<csdx))));bus_w(offw,valw); //chip sel bar down
|
||||
for (i=0;i<8;i++) {
|
||||
valw=(valw&(~(0x1<<cdx)));bus_w(offw,valw); //cldwn
|
||||
valw=((valw&(~(0x1<<ddx)))+(((codata>>(7-i))&0x1)<<ddx));bus_w(offw,valw);//write data (i)
|
||||
valw=((valw&(~(0x1<<cdx)))+(0x1<<cdx));bus_w(offw,valw);//clkup
|
||||
// write data (i) (each bit from codata starting from msb)
|
||||
valw = ((valw & ~HV_SERIAL_DIGITAL_OUT_MSK) +
|
||||
(((codata >> (7-i)) & 0x1) << HV_SERIAL_DIGITAL_OUT_OFST));
|
||||
bus_w (addr, valw);
|
||||
|
||||
// clk up
|
||||
valw |= HV_SERIAL_CLK_OUT_MSK ;
|
||||
bus_w (addr, valw);
|
||||
}
|
||||
valw=((valw&(~(0x1<<csdx)))+(0x1<<csdx));bus_w(offw,valw); //csup
|
||||
|
||||
valw=(valw&(~(0x1<<cdx)));bus_w(offw,valw); //cldwn
|
||||
|
||||
|
||||
valw=0xffff; bus_w(offw,(valw)); // stop point =start point of course */
|
||||
|
||||
|
||||
printf("Writing %d in HVDAC \n",dacvalue);
|
||||
|
||||
bus_w(HV_REG,val);
|
||||
}
|
||||
|
||||
// chip sel bar up
|
||||
valw |= HV_SERIAL_CS_OUT_MSK;
|
||||
bus_w (addr, valw);
|
||||
|
||||
//clk down
|
||||
valw &= ~HV_SERIAL_CLK_OUT_MSK;
|
||||
bus_w (addr, valw);
|
||||
|
||||
return bus_r(HV_REG);
|
||||
// stop point = start point of course 0xffff
|
||||
valw = 0xffff; //To make it compatible with old board
|
||||
//valw = DAC_SERIAL_DIGITAL_OUT_MSK & DAC_SERIAL_CLK_OUT_MSK & DAC_SERIAL_CS_OUT_MSK &
|
||||
//HV_SERIAL_DIGITAL_OUT_MSK & HV_SERIAL_CLK_OUT_MSK & HV_SERIAL_CS_OUT_MSK;
|
||||
bus_w (addr, valw);
|
||||
|
||||
printf(" High voltage set to %d (dacval %d)\n", val, dacvalue);
|
||||
highvoltage = val;
|
||||
}
|
||||
|
||||
|
||||
// return val;
|
||||
return highvoltage;
|
||||
}
|
||||
|
||||
|
||||
@ -1653,8 +1674,8 @@ int configureInterface(uint32_t destip,uint64_t destmac,uint64_t sourcemac,int
|
||||
|
||||
#endif
|
||||
|
||||
/*bus_w(CONTROL_REG,0); Carlos modification
|
||||
printf("System status register is %08x\n",bus_r(SYSTEM_STATUS_REG));*/
|
||||
/*bus_w(CONTROL_REG,0); Carlos modification*/
|
||||
/*printf("System status register is %08x\n",bus_r(SYSTEM_STATUS_REG)); Carlos modification */
|
||||
|
||||
printf("Reset mem machine fifos\n");
|
||||
bus_w(MEM_MACHINE_FIFOS_REG,0x4000);
|
||||
@ -2695,57 +2716,68 @@ uint64_t setPatternWaitTime(int level, uint64_t t) {
|
||||
}
|
||||
|
||||
|
||||
/** Carlos later, used only for 0 and 8 */
|
||||
void initDac(int dacnum) {
|
||||
printf("\nInitializing dac for %d\n",dacnum);
|
||||
|
||||
u_int32_t offw,codata;
|
||||
u_int32_t addr = SPI_REG;
|
||||
u_int16_t valw;
|
||||
int i,ddx,csdx,cdx;
|
||||
u_int32_t codata;
|
||||
|
||||
int csdx = dacnum / 8 + 2; // To make it compatible with old board (16 dacs), otherwise only DAC_SERIAL_CS_OUT_OFST
|
||||
printf("Chip select bit:%d\n"
|
||||
"Dac Channel Nr:%d\n",
|
||||
csdx, 0xf);
|
||||
|
||||
int numbits = 25;
|
||||
codata = (
|
||||
((0x6 << 4) + /* 110 for initdac, 011 for specific dac ?? */
|
||||
(0xf << 16)) + /* dac channel number (can be 0 - 8), f means all in initdac ??*/
|
||||
((0x0 << 4) & 0xfff0) /* value from bit 12 to 4?? */
|
||||
);
|
||||
|
||||
//setting int reference
|
||||
offw=DAC_REG;
|
||||
// start point
|
||||
valw = 0xffff; //To make it compatible with old board
|
||||
//valw = DAC_SERIAL_DIGITAL_OUT_MSK & DAC_SERIAL_CLK_OUT_MSK & DAC_SERIAL_CS_OUT_MSK &
|
||||
//HV_SERIAL_DIGITAL_OUT_MSK & HV_SERIAL_CLK_OUT_MSK & HV_SERIAL_CS_OUT_MSK;
|
||||
bus_w (addr, valw);
|
||||
|
||||
// chip sel bar down
|
||||
valw &= ~(0x1 << csdx);
|
||||
bus_w (addr, valw);
|
||||
|
||||
ddx=0; cdx=1;
|
||||
csdx=dacnum/8+2;
|
||||
{
|
||||
int i = 0;
|
||||
for (i = 0; i < numbits; i++) {
|
||||
|
||||
// clk down
|
||||
valw &= ~DAC_SERIAL_CLK_OUT_MSK;
|
||||
bus_w (addr, valw);
|
||||
|
||||
printf("data bit=%d, clkbit=%d, csbit=%d\n",ddx,cdx,csdx);
|
||||
codata=(((0x6<<4)+(0xf<<16))+((0x0<<4)&0xfff0));
|
||||
// write data (i) (each bit from codata starting from msb)
|
||||
valw = ((valw & ~DAC_SERIAL_DIGITAL_OUT_MSK) +
|
||||
(((codata >> (numbits - 1 - i)) & 0x1) << DAC_SERIAL_DIGITAL_OUT_OFST));
|
||||
bus_w (addr, valw);
|
||||
|
||||
valw=0xffff; bus_w(offw,(valw)); // start point
|
||||
valw=((valw&(~(0x1<<csdx))));bus_w(offw,valw); //chip sel bar down
|
||||
for (i=1;i<25;i++) {
|
||||
|
||||
valw=(valw&(~(0x1<<cdx)));bus_w(offw,valw); //cldwn
|
||||
valw=((valw&(~(0x1<<ddx)))+(((codata>>(24-i))&0x1)<<ddx));bus_w(offw,valw);//write data (i)
|
||||
// printf("%d ", ((codata>>(24-i))&0x1));
|
||||
|
||||
|
||||
valw=((valw&(~(0x1<<cdx)))+(0x1<<cdx));bus_w(offw,valw);//clkup
|
||||
// clk up
|
||||
valw |= DAC_SERIAL_CLK_OUT_MSK ;
|
||||
bus_w (addr, valw);
|
||||
}
|
||||
}
|
||||
// printf("\n ");
|
||||
|
||||
|
||||
valw=((valw&(~(0x1<<csdx)))+(0x1<<csdx));bus_w(offw,valw); //csup
|
||||
|
||||
valw=(valw&(~(0x1<<cdx)));bus_w(offw,valw); //cldwn
|
||||
|
||||
|
||||
|
||||
|
||||
valw=0xffff; bus_w(offw,(valw)); // stop point =start point of course */
|
||||
|
||||
|
||||
//end of setting int reference
|
||||
|
||||
|
||||
|
||||
|
||||
// chip sel bar up
|
||||
valw |= (0x1 << csdx);
|
||||
bus_w (addr, valw);
|
||||
|
||||
//clk down
|
||||
valw &= ~DAC_SERIAL_CLK_OUT_MSK;
|
||||
bus_w (addr, valw);
|
||||
|
||||
// stop point = start point of course
|
||||
valw = 0xffff; //To make it compatible with old board
|
||||
//valw = DAC_SERIAL_DIGITAL_OUT_MSK & DAC_SERIAL_CLK_OUT_MSK & DAC_SERIAL_CS_OUT_MSK &
|
||||
//HV_SERIAL_DIGITAL_OUT_MSK & HV_SERIAL_CLK_OUT_MSK & HV_SERIAL_CS_OUT_MSK;
|
||||
bus_w (addr, valw);
|
||||
|
||||
}
|
||||
|
||||
@ -2783,44 +2815,83 @@ int getDacRegister(int dacnum) {
|
||||
}
|
||||
|
||||
|
||||
int setDac(int dacnum,int dacvalue){
|
||||
printf("\nSetting of DAC %d with value %d\n",dacnum,dacvalue);
|
||||
int setDac(int dacnum, int dacvalue){
|
||||
printf("\nSetting of DAC %d with value %d\n",dacnum, dacvalue);
|
||||
|
||||
u_int32_t offw,codata;
|
||||
u_int32_t addr = SPI_REG;
|
||||
u_int16_t valw;
|
||||
int i,ddx,csdx,cdx;
|
||||
|
||||
int dacch=0;
|
||||
|
||||
if (dacvalue>=0) {
|
||||
|
||||
//setting int reference
|
||||
offw=DAC_REG;
|
||||
u_int32_t codata;
|
||||
|
||||
|
||||
ddx=0; cdx=1;
|
||||
csdx=dacnum/8+2;
|
||||
int csdx = dacnum / 8 + 2; // Chip select can be DAC_SERIAL_CS_OUT_OFST(2) or 3 (compatibility with old board 16 dacs)
|
||||
int dacch = dacnum % 8; // 0-8, dac channel number (also for dacnum 9-15 in old board)
|
||||
int numbits = 25;
|
||||
printf("Chip select bit:%d\n"
|
||||
"Dac Channel Nr:%d\n",
|
||||
csdx, dacch);
|
||||
|
||||
dacch=dacnum%8;
|
||||
|
||||
printf("data bit=%d, clkbit=%d, csbit=%d\n",ddx,cdx,csdx);
|
||||
//modified to power down single channels
|
||||
// codata=((((0x2)<<4)+((dacch)&0xf))<<16)+((dacvalue<<4)&0xfff0);
|
||||
codata=((((0x3)<<4)+((dacch)&0xf))<<16)+((dacvalue<<4)&0xfff0);
|
||||
valw=0xffff; bus_w(offw,(valw)); // start point
|
||||
valw=((valw&(~(0x1<<csdx))));bus_w(offw,valw); //chip sel bar down
|
||||
for (i=1;i<25;i++) {
|
||||
valw=(valw&(~(0x1<<cdx)));bus_w(offw,valw); //cldwn
|
||||
valw=((valw&(~(0x1<<ddx)))+(((codata>>(24-i))&0x1)<<ddx));bus_w(offw,valw);//write data (i)
|
||||
// printf("%d ", ((codata>>(24-i))&0x1));
|
||||
valw=((valw&(~(0x1<<cdx)))+(0x1<<cdx));bus_w(offw,valw);//clkup
|
||||
// setting dac
|
||||
if (dacvalue >= 0) {
|
||||
//modified to power down single channels codata=((((0x2)<<4)+((dacch)&0xf))<<16)+((dacvalue<<4)&0xfff0);
|
||||
|
||||
codata = (
|
||||
((0x3 << 4) + /** 110 for initdac, 011 for specific dac?? */
|
||||
((dacch)&0xf)) /** dac ch number (can be 0 - 8). f means all in initdac ?? */
|
||||
<< 16) + /** Carlos later, why change in bracket position */
|
||||
((dacvalue<<4)&0xfff0); /* value from bit 12 to 4?? */
|
||||
|
||||
|
||||
|
||||
|
||||
codata=(((0x6<<4)+(0xf<<16))+((0x0<<4)&0xfff0));
|
||||
codata=(((0x3<<4)+((dacch)&0xf))<<16)+((dacvalue<<4)&0xfff0);
|
||||
|
||||
|
||||
|
||||
// start point
|
||||
valw = 0xffff; //To make it compatible with old board
|
||||
//valw = DAC_SERIAL_DIGITAL_OUT_MSK & DAC_SERIAL_CLK_OUT_MSK & DAC_SERIAL_CS_OUT_MSK &
|
||||
//HV_SERIAL_DIGITAL_OUT_MSK & HV_SERIAL_CLK_OUT_MSK & HV_SERIAL_CS_OUT_MSK;
|
||||
bus_w (addr, valw);
|
||||
|
||||
// chip sel bar down
|
||||
valw &= ~(0x1 << csdx);
|
||||
bus_w (addr, valw);
|
||||
|
||||
{
|
||||
int i = 0;
|
||||
for (i = 0; i < numbits; i++) {
|
||||
|
||||
// clk down
|
||||
valw &= ~DAC_SERIAL_CLK_OUT_MSK;
|
||||
bus_w (addr, valw);
|
||||
|
||||
// write data (i) (each bit from codata starting from msb)
|
||||
valw = ((valw & ~DAC_SERIAL_DIGITAL_OUT_MSK) +
|
||||
(((codata >> (numbits - 1 - i)) & 0x1) << DAC_SERIAL_DIGITAL_OUT_OFST));
|
||||
bus_w (addr, valw);
|
||||
|
||||
// clk up
|
||||
valw |= DAC_SERIAL_CLK_OUT_MSK ;
|
||||
bus_w (addr, valw);
|
||||
}
|
||||
}
|
||||
// printf("\n ");
|
||||
valw=((valw&(~(0x1<<csdx)))+(0x1<<csdx));bus_w(offw,valw); //csup
|
||||
valw=(valw&(~(0x1<<cdx)));bus_w(offw,valw); //cldwn
|
||||
valw=0xffff; bus_w(offw,(valw)); // stop point =start point of course */
|
||||
|
||||
//printf("Writing %d in DAC(0-15) %d \n",dacvalue,dacnum);
|
||||
// chip sel bar up
|
||||
valw |= (0x1 << csdx);
|
||||
bus_w (addr, valw);
|
||||
|
||||
//clk down
|
||||
valw &= ~DAC_SERIAL_CLK_OUT_MSK;
|
||||
bus_w (addr, valw);
|
||||
|
||||
// stop point = start point of course
|
||||
valw = 0xffff; //To make it compatible with old board
|
||||
//valw = DAC_SERIAL_DIGITAL_OUT_MSK & DAC_SERIAL_CLK_OUT_MSK & DAC_SERIAL_CS_OUT_MSK &
|
||||
//HV_SERIAL_DIGITAL_OUT_MSK & HV_SERIAL_CLK_OUT_MSK & HV_SERIAL_CS_OUT_MSK;
|
||||
bus_w (addr, valw);
|
||||
|
||||
printf("Writing %d in DAC %d \n",dacvalue,dacnum);
|
||||
setDacRegister(dacnum,dacvalue);
|
||||
} else if (dacvalue==-100) {
|
||||
|
@ -127,9 +127,6 @@ int64_t getTrains();
|
||||
int64_t setProbes(int64_t value);
|
||||
int64_t getProbes();
|
||||
|
||||
int64_t setSamples(int64_t value);
|
||||
int64_t getSamples();
|
||||
|
||||
int64_t getProgress();
|
||||
int64_t setProgress();
|
||||
|
||||
|
@ -364,24 +364,6 @@ int getTemperatureByModule(int tempSensor, int imod)
|
||||
}
|
||||
|
||||
|
||||
int initHighVoltageByModule(int val, int imod)
|
||||
{
|
||||
int im;
|
||||
//for the particular module
|
||||
if (imod>=0 && imod<nModX) {
|
||||
return initHighVoltage(val,imod);
|
||||
}
|
||||
else{
|
||||
//checks if all modules have the same value(ALLMOD)
|
||||
for (im=1; im<nModX; im++) {
|
||||
if (initHighVoltage(val,im)!=initHighVoltage(val,0)) {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
return initHighVoltage(val,0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int initConfGainByModule(int isettings,int val, int imod)
|
||||
{
|
||||
|
@ -10,7 +10,6 @@
|
||||
#define MEM_SIZE 0x100000
|
||||
|
||||
/* FPGA Version register */
|
||||
|
||||
#define FPGA_VERSION_REG (0x00 << 11)
|
||||
|
||||
#define BOARD_REVISION_OFST (0)
|
||||
@ -33,10 +32,10 @@
|
||||
#define RUN_BUSY_MSK (0x00000001 << RUN_BUSY_BIT_OFST)
|
||||
#define WAITING_FOR_TRIGGER_OFST (3)
|
||||
#define WAITING_FOR_TRIGGER_MSK (0x00000001 << WAITING_FOR_TRIGGER_OFST)
|
||||
#define DELAYBEFORE_OFST (4)
|
||||
#define DELAYBEFORE_MSK (0x00000001 << DELAYBEFORE_OFST)
|
||||
#define DELAYAFTER_OFST (5)
|
||||
#define DELAYAFTER_MSK (0x00000001 << DELAYAFTER_OFST)
|
||||
#define DELAYBEFORE_OFST (4) //Not used in software
|
||||
#define DELAYBEFORE_MSK (0x00000001 << DELAYBEFORE_OFST) //Not used in software
|
||||
#define DELAYAFTER_OFST (5) //Not used in software
|
||||
#define DELAYAFTER_MSK (0x00000001 << DELAYAFTER_OFST) //Not used in software
|
||||
#define STOPPED_OFST (15)
|
||||
#define STOPPED_MSK (0x00000001 << STOPPED_OFST)
|
||||
#define RUNMACHINE_BUSY_OFST (17)
|
||||
@ -49,27 +48,84 @@
|
||||
/* System Status register */
|
||||
#define SYSTEM_STATUS_REG (0x04 << 11) //Not used in software
|
||||
|
||||
#define DDR3_CAL_DONE_OFST (0)
|
||||
#define DDR3_CAL_DONE_MSK (0x00000001 << DDR3_CAL_DONE_OFST)
|
||||
#define DDR3_CAL_FAIL_OFST (1)
|
||||
#define DDR3_CAL_FAIL_MSK (0x00000001 << DDR3_CAL_FAIL_OFST)
|
||||
#define DDR3_CAL_FAIL_OFST (1)
|
||||
#define DDR3_CAL_FAIL_MSK (0x00000001 << DDR3_CAL_FAIL_OFST)
|
||||
#define DDR3_CAL_DONE_OFST (0) //Not used in software
|
||||
#define DDR3_CAL_DONE_MSK (0x00000001 << DDR3_CAL_DONE_OFST) //Not used in software
|
||||
#define DDR3_CAL_FAIL_OFST (1) //Not used in software
|
||||
#define DDR3_CAL_FAIL_MSK (0x00000001 << DDR3_CAL_FAIL_OFST) //Not used in software
|
||||
#define DDR3_INIT_DONE_OFST (2) //Not used in software
|
||||
#define DDR3_INIT_DONE_MSK (0x00000001 << DDR3_INIT_DONE_OFST) //Not used in software
|
||||
#define RECONFIG_PLL_LCK_OFST (3) //Not used in software
|
||||
#define RECONFIG_PLL_LCK_MSK (0x00000001 << RECONFIG_PLL_LCK_OFST) //Not used in software
|
||||
#define PLL_A_LCK_OFST (4) //Not used in software
|
||||
#define PLL_A_LCK_MSK (0x00000001 << PLL_A_LCK_OFST) //Not used in software
|
||||
#define DD3_PLL_LCK_OFST (5) //Not used in software
|
||||
#define DD3_PLL_LCK_MSK (0x00000001 << DD3_PLL_LCK_OFST) //Not used in software
|
||||
|
||||
|
||||
/* Module Control Board Serial Number Register */
|
||||
#define MOD_SERIAL_NUM_REG (0x0A << 11) //Not used in software
|
||||
|
||||
#define HARDWARE_SERIAL_NUM_OFST (0) //Not used in software
|
||||
#define HARDWARE_SERIAL_NUM_MSK (0x000000FF << HARDWARE_SERIAL_NUM_OFST) //Not used in software
|
||||
#define HARDWARE_VERSION_NUM_OFST (16) //Not used in software
|
||||
#define HARDWARE_VERSION_NUM_MSK (0x0000003F << HARDWARE_VERSION_NUM_OFST) //Not used in software
|
||||
|
||||
|
||||
/* Time from Start 64 bit register */
|
||||
#define TIME_FROM_START_LSB_REG (0x10 << 11)
|
||||
#define TIME_FROM_START_MSB_REG (0x11 << 11)
|
||||
//#define GET_ACTUAL_TIME_LSB_REG 16<<11
|
||||
//#define GET_ACTUAL_TIME_MSB_REG 17<<11
|
||||
|
||||
/* Get Delay 64 bit register */
|
||||
#define GET_DELAY_LSB_REG (0x12 << 11)
|
||||
#define GET_DELAY_MSB_REG (0x13 << 11)
|
||||
|
||||
/* Get Cycles 64 bit register */
|
||||
#define GET_CYCLES_LSB_REG (0x14 << 11)
|
||||
#define GET_CYCLES_MSB_REG (0x15 << 11)
|
||||
|
||||
/* Get Frames 64 bit register */
|
||||
#define GET_FRAMES_LSB_REG (0x16 << 11)
|
||||
#define GET_FRAMES_MSB_REG (0x17 << 11)
|
||||
|
||||
/* Get Period 64 bit register */
|
||||
#define GET_PERIOD_LSB_REG (0x18 << 11)
|
||||
#define GET_PERIOD_MSB_REG (0x19 << 11)
|
||||
|
||||
/* Get Period 64 bit register */
|
||||
#define GET_EXPTIME_LSB_REG (0x1A << 11)
|
||||
#define GET_EXPTIME_MSB_REG (0x1B << 11)
|
||||
|
||||
/* Get Period 64 bit register */
|
||||
#define GET_GATES_LSB_REG (0x1C << 11)
|
||||
#define GET_GATES_MSB_REG (0x1D << 11)
|
||||
|
||||
/* Get Frames from Start 64 bit register (frames from start Data Streaming) ask Carlos used in software firmware_funcs.c getFramesFromStart, but not in firmware*/
|
||||
#define FRAMES_FROM_START_LSB_REG (0x22 << 11) /*Not used in firmware,used in software*/
|
||||
#define FRAMES_FROM_START_MSB_REG (0x23 << 11) /*Not used in firmware,used in software*/
|
||||
|
||||
/* Get Frames from Start 64 bit register (frames from start Run Control) ask Carlos*/
|
||||
#define FRAMES_FROM_START_PG_LSB_REG (0x24 << 11)
|
||||
#define FRAMES_FROM_START_PG_MSB_REG (0x25 << 11)
|
||||
|
||||
/* Measurement Time 64 bit register (start frame time) tell Carlos it should be measurement started time? */
|
||||
#define MEASUREMENT_START_TIME_LSB_REG (0x26 << 11)
|
||||
#define MEASUREMENT_START_TIME_MSB_REG (0x27 << 11)
|
||||
|
||||
/* SPI (Serial Peripheral Interface) Register */
|
||||
#define SPI_REG (0x40 << 11)
|
||||
|
||||
#define DAC_SERIAL_DIGITAL_OUT_OFST (0)
|
||||
#define DAC_SERIAL_DIGITAL_OUT_MSK (0x00000001 << DAC_SERIAL_DIGITAL_OUT_OFST)
|
||||
#define DAC_SERIAL_CLK_OUT_OFST (1)
|
||||
#define DAC_SERIAL_CLK_OUT_MSK (0x00000001 << DAC_SERIAL_CLK_OUT_OFST)
|
||||
#define DAC_SERIAL_CS_OUT_OFST (2)
|
||||
#define DAC_SERIAL_CS_OUT_MSK (0x00000001 << DAC_SERIAL_CS_OUT_OFST)
|
||||
#define HV_SERIAL_DIGITAL_OUT_OFST (8)
|
||||
#define HV_SERIAL_DIGITAL_OUT_MSK (0x00000001 << HV_SERIAL_DIGITAL_OUT_OFST)
|
||||
#define HV_SERIAL_CLK_OUT_OFST (9)
|
||||
#define HV_SERIAL_CLK_OUT_MSK (0x00000001 << HV_SERIAL_CLK_OUT_OFST)
|
||||
#define HV_SERIAL_CS_OUT_OFST (10)
|
||||
#define HV_SERIAL_CS_OUT_MSK (0x00000001 << HV_SERIAL_CS_OUT_OFST)
|
||||
|
||||
|
||||
|
||||
@ -108,7 +164,6 @@
|
||||
//#define ADC_OFFSET_REG 66<<11 //same as CONFGAIN_REG
|
||||
#define ADC_INVERSION_REG 0x43<<11
|
||||
|
||||
#define DAC_REG 64<<11//0x17<<11// control the dacs
|
||||
//ADC
|
||||
#define ADC_WRITE_REG 65<<11//0x18<<11
|
||||
//#define ADC_SYNC_REG 66<<11//0x19<<11
|
||||
@ -164,39 +219,31 @@
|
||||
|
||||
|
||||
|
||||
#define GET_MEASUREMENT_TIME_LSB_REG 38<<11
|
||||
#define GET_MEASUREMENT_TIME_MSB_REG 38<<11
|
||||
|
||||
|
||||
|
||||
#define SET_DELAY_LSB_REG 96<<11 //0x68<<11
|
||||
#define SET_DELAY_MSB_REG 97<<11 //0x69<<11
|
||||
#define GET_DELAY_LSB_REG 18<<11//0x6a<<11
|
||||
#define GET_DELAY_MSB_REG 19<<11//0x6b<<11
|
||||
|
||||
|
||||
#define SET_CYCLES_LSB_REG 98<<11//0x6c<<11
|
||||
#define SET_CYCLES_MSB_REG 99<<11//0x6d<<11
|
||||
#define GET_CYCLES_LSB_REG 20<<11//0x6e<<11
|
||||
#define GET_CYCLES_MSB_REG 21<<11//0x6f<<11
|
||||
|
||||
|
||||
#define SET_FRAMES_LSB_REG 100<<11//0x70<<11
|
||||
#define SET_FRAMES_MSB_REG 101<<11//0x71<<11
|
||||
#define GET_FRAMES_LSB_REG 22<<11//0x72<<11
|
||||
#define GET_FRAMES_MSB_REG 23<<11//0x73<<11
|
||||
|
||||
|
||||
#define SET_PERIOD_LSB_REG 102<<11//0x74<<11
|
||||
#define SET_PERIOD_MSB_REG 103<<11//0x75<<11
|
||||
#define GET_PERIOD_LSB_REG 24<<11//0x76<<11
|
||||
#define GET_PERIOD_MSB_REG 25<<11//0x77<<11
|
||||
|
||||
|
||||
#define SET_EXPTIME_LSB_REG 104<<11//0x78<<11
|
||||
#define SET_EXPTIME_MSB_REG 105<<11//0x79<<11
|
||||
#define GET_EXPTIME_LSB_REG 26<<11//0x7a<<11
|
||||
#define GET_EXPTIME_MSB_REG 27<<11//0x7b<<11
|
||||
|
||||
#define SET_GATES_LSB_REG 106<<11//0x7c<<11
|
||||
#define SET_GATES_MSB_REG 107<<11//0x7d<<11
|
||||
#define GET_GATES_LSB_REG 28<<11//0x7e<<11
|
||||
#define GET_GATES_MSB_REG 29<<11//0x7f<<11
|
||||
|
||||
|
||||
#define DATA_IN_LSB_REG 30<<11
|
||||
#define DATA_IN_MSB_REG 31<<11
|
||||
@ -204,12 +251,6 @@
|
||||
#define PATTERN_OUT_LSB_REG 32<<11
|
||||
#define PATTERN_OUT_MSB_REG 33<<11
|
||||
|
||||
#define FRAMES_FROM_START_LSB_REG 34<<11
|
||||
#define FRAMES_FROM_START_MSB_REG 35<<11
|
||||
|
||||
#define FRAMES_FROM_START_PG_LSB_REG 36<<11
|
||||
#define FRAMES_FROM_START_PG_MSB_REG 37<<11
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -916,7 +916,7 @@ int set_dac(int file_des) {
|
||||
retval=adcvpp;;
|
||||
|
||||
} else if (ind==HV_NEW )
|
||||
retval=initHighVoltageByModule(val,imod);
|
||||
retval=initHighVoltage(val,0);
|
||||
else
|
||||
printf("**********No dac with index %d\n",ind);
|
||||
}
|
||||
|
Reference in New Issue
Block a user