mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-26 16:20:03 +02:00
included the ival for digital_test_bit and set adc_write_reg to all FFFFFFFF by default in DAQ reg initialization
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorSoftware@99 951219d9-93cf-4727-9268-0efd64621fa3
This commit is contained in:
parent
6abd580f95
commit
e5ab585ab0
@ -241,6 +241,18 @@ int setDAQRegister()
|
|||||||
#ifdef VERBOSE
|
#ifdef VERBOSE
|
||||||
printf("DAQ reg:20916770:%d",reg);
|
printf("DAQ reg:20916770:%d",reg);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
//setting ADC reg temporary
|
||||||
|
addr=ADC_WRITE_REG;
|
||||||
|
val=0xFFFFFFFF;
|
||||||
|
bus_w(addr,val);
|
||||||
|
reg=bus_r(addr);
|
||||||
|
#ifdef VERBOSE
|
||||||
|
printf("\n\nADC write reg:%X",reg);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -267,11 +279,10 @@ int setPhaseShiftOnce(){
|
|||||||
bus_w(addr,(INT_RSTN_BIT|ENET_RESETN_BIT|SW1_BIT&~PHASE_STEP_BIT));//0x2820
|
bus_w(addr,(INT_RSTN_BIT|ENET_RESETN_BIT|SW1_BIT&~PHASE_STEP_BIT));//0x2820
|
||||||
}
|
}
|
||||||
//confirming phase change by setting CHANGE_AT_POWER_ON_BIT(for later uses)
|
//confirming phase change by setting CHANGE_AT_POWER_ON_BIT(for later uses)
|
||||||
bus_w(addr,(CHANGE_AT_POWER_ON_BIT|
|
bus_w(addr,(CHANGE_AT_POWER_ON_BIT|//DIGITAL_TEST_BIT|
|
||||||
INT_RSTN_BIT|ENET_RESETN_BIT|SW1_BIT&~PHASE_STEP_BIT));
|
INT_RSTN_BIT|ENET_RESETN_BIT|SW1_BIT&~PHASE_STEP_BIT));
|
||||||
}
|
}
|
||||||
|
|
||||||
reg=bus_r(addr);
|
|
||||||
#ifdef VERBOSE
|
#ifdef VERBOSE
|
||||||
printf("Multipupose reg now:%d\n",reg);
|
printf("Multipupose reg now:%d\n",reg);
|
||||||
#endif
|
#endif
|
||||||
@ -1075,7 +1086,7 @@ int initConfGain(int val, int imod){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int configureMAC(int ipad, long long int macad){
|
int configureMAC(int ipad,long long int macad,long long int servermacad,int ival){
|
||||||
u_int32_t addrr=MULTI_PURPOSE_REG;
|
u_int32_t addrr=MULTI_PURPOSE_REG;
|
||||||
u_int32_t offset=ENET_CONF_REG, offset2=TSE_CONF_REG;
|
u_int32_t offset=ENET_CONF_REG, offset2=TSE_CONF_REG;
|
||||||
mac_conf *mac_conf_regs;
|
mac_conf *mac_conf_regs;
|
||||||
@ -1091,32 +1102,40 @@ int configureMAC(int ipad, long long int macad){
|
|||||||
#ifdef VERBOSE
|
#ifdef VERBOSE
|
||||||
printf("Configuring MAC\n");
|
printf("Configuring MAC\n");
|
||||||
#endif
|
#endif
|
||||||
powerOn=((bus_r(addrr)&0x00008000)>>CHANGE_AT_POWER_ON_OFFSET);
|
powerOn=((bus_r(addrr)&CHANGE_AT_POWER_ON_BIT)>>CHANGE_AT_POWER_ON_OFFSET);
|
||||||
|
|
||||||
|
|
||||||
|
if(ival)
|
||||||
bus_w(addrr,RESET_BIT); //0x080,reset mac (reset)
|
bus_w(addrr,(RESET_BIT|DIGITAL_TEST_BIT)); //0x080,reset mac (reset)
|
||||||
|
else
|
||||||
|
bus_w(addrr,RESET_BIT); //0x080,reset mac (reset)
|
||||||
val=bus_r(addrr);
|
val=bus_r(addrr);
|
||||||
#ifdef VERBOSE
|
#ifdef VERBOSE
|
||||||
printf("Value read from Multi-purpose Reg:%x\n",val);
|
printf("Value read from Multi-purpose Reg:%x\n",val);
|
||||||
#endif
|
#endif
|
||||||
if(val!=0x080) return -1;
|
// if(val!=0x080) return -1;
|
||||||
|
|
||||||
usleep(500000);
|
usleep(500000);
|
||||||
|
|
||||||
|
if(ival)
|
||||||
|
bus_w(addrr,(ENET_RESETN_BIT|WRITE_BACK_BIT|DIGITAL_TEST_BIT)); //0x840,write shadow regs(enet reset,write bak)
|
||||||
|
else
|
||||||
|
bus_w(addrr,(ENET_RESETN_BIT|WRITE_BACK_BIT)); //0x840,write shadow regs(enet reset,write bak)
|
||||||
|
val=bus_r(addrr);
|
||||||
|
#ifdef VERBOSE
|
||||||
|
printf("Value read from Multi-purpose Reg:%x\n",val);
|
||||||
|
#endif
|
||||||
|
// if(val!=0x840) return -1;
|
||||||
|
|
||||||
bus_w(addrr,(ENET_RESETN_BIT|WRITE_BACK_BIT)); //0x840,write shadow regs(enet reset,write bak)
|
if(ival)
|
||||||
|
bus_w(addrr,(ENET_RESETN_BIT|DIGITAL_TEST_BIT)); //0x800,nreset phy(enet reset)
|
||||||
|
else
|
||||||
|
bus_w(addrr,ENET_RESETN_BIT); //0x800,nreset phy(enet reset)
|
||||||
val=bus_r(addrr);
|
val=bus_r(addrr);
|
||||||
#ifdef VERBOSE
|
#ifdef VERBOSE
|
||||||
printf("Value read from Multi-purpose Reg:%x\n",val);
|
printf("Value read from Multi-purpose Reg:%x\n",val);
|
||||||
#endif
|
#endif
|
||||||
if(val!=0x840) return -1;
|
// if(val!=0x800) return -1;
|
||||||
|
|
||||||
bus_w(addrr,ENET_RESETN_BIT); //0x800,nreset phy(enet reset)
|
|
||||||
val=bus_r(addrr);
|
|
||||||
#ifdef VERBOSE
|
|
||||||
printf("Value read from Multi-purpose Reg:%x\n",val);
|
|
||||||
#endif
|
|
||||||
if(val!=0x800) return -1;
|
|
||||||
|
|
||||||
|
|
||||||
mac_conf_regs->mac.mac_dest_mac1 =((macad>>(8*5))&0xFF);// 0x00; //pc7060
|
mac_conf_regs->mac.mac_dest_mac1 =((macad>>(8*5))&0xFF);// 0x00; //pc7060
|
||||||
@ -1125,13 +1144,22 @@ int configureMAC(int ipad, long long int macad){
|
|||||||
mac_conf_regs->mac.mac_dest_mac4 =((macad>>(8*2))&0xFF);// 0x24; //pc7060
|
mac_conf_regs->mac.mac_dest_mac4 =((macad>>(8*2))&0xFF);// 0x24; //pc7060
|
||||||
mac_conf_regs->mac.mac_dest_mac5 =((macad>>(8*1))&0xFF);// 0xEB; //pc7060
|
mac_conf_regs->mac.mac_dest_mac5 =((macad>>(8*1))&0xFF);// 0xEB; //pc7060
|
||||||
mac_conf_regs->mac.mac_dest_mac6 =((macad>>(8*0))&0xFF);// 0xEE; //pc7060
|
mac_conf_regs->mac.mac_dest_mac6 =((macad>>(8*0))&0xFF);// 0xEE; //pc7060
|
||||||
|
/*
|
||||||
mac_conf_regs->mac.mac_src_mac1 = 0x00;
|
mac_conf_regs->mac.mac_src_mac1 = 0x00;
|
||||||
mac_conf_regs->mac.mac_src_mac2 = 0xAA;
|
mac_conf_regs->mac.mac_src_mac2 = 0xAA;
|
||||||
mac_conf_regs->mac.mac_src_mac3 = 0xBB;
|
mac_conf_regs->mac.mac_src_mac3 = 0xBB;
|
||||||
mac_conf_regs->mac.mac_src_mac4 = 0xCC;
|
mac_conf_regs->mac.mac_src_mac4 = 0xCC;
|
||||||
mac_conf_regs->mac.mac_src_mac5 = 0xDD;
|
mac_conf_regs->mac.mac_src_mac5 = 0xDD;
|
||||||
mac_conf_regs->mac.mac_src_mac6 = 0xEE;
|
mac_conf_regs->mac.mac_src_mac6 = 0xEE;
|
||||||
|
*/
|
||||||
|
mac_conf_regs->mac.mac_src_mac1 =((servermacad>>(8*5))&0xFF);
|
||||||
|
mac_conf_regs->mac.mac_src_mac2 =((servermacad>>(8*4))&0xFF);
|
||||||
|
mac_conf_regs->mac.mac_src_mac3 =((servermacad>>(8*3))&0xFF);
|
||||||
|
mac_conf_regs->mac.mac_src_mac4 =((servermacad>>(8*2))&0xFF);
|
||||||
|
mac_conf_regs->mac.mac_src_mac5 =((servermacad>>(8*1))&0xFF);
|
||||||
|
mac_conf_regs->mac.mac_src_mac6 =((servermacad>>(8*0))&0xFF);
|
||||||
mac_conf_regs->mac.mac_ether_type = 0x0800; //ipv4
|
mac_conf_regs->mac.mac_ether_type = 0x0800; //ipv4
|
||||||
|
|
||||||
|
|
||||||
mac_conf_regs->ip.ip_ver = 0x4;
|
mac_conf_regs->ip.ip_ver = 0x4;
|
||||||
mac_conf_regs->ip.ip_ihl = 0x5;
|
mac_conf_regs->ip.ip_ihl = 0x5;
|
||||||
@ -1147,7 +1175,22 @@ int configureMAC(int ipad, long long int macad){
|
|||||||
mac_conf_regs->ip.ip_destip = ipad; //CA57
|
mac_conf_regs->ip.ip_destip = ipad; //CA57
|
||||||
|
|
||||||
#ifdef VERBOSE
|
#ifdef VERBOSE
|
||||||
printf("mac_src_6:%x\n",mac_conf_regs->mac.mac_dest_mac6);
|
printf("mac_dest:%llx %x:%x:%x:%x:%x:%x\n",
|
||||||
|
macad,
|
||||||
|
mac_conf_regs->mac.mac_dest_mac1,
|
||||||
|
mac_conf_regs->mac.mac_dest_mac2,
|
||||||
|
mac_conf_regs->mac.mac_dest_mac3,
|
||||||
|
mac_conf_regs->mac.mac_dest_mac4,
|
||||||
|
mac_conf_regs->mac.mac_dest_mac5,
|
||||||
|
mac_conf_regs->mac.mac_dest_mac6);
|
||||||
|
printf("mac_src:%llx %x:%x:%x:%x:%x:%x\n",
|
||||||
|
servermacad,
|
||||||
|
mac_conf_regs->mac.mac_src_mac1,
|
||||||
|
mac_conf_regs->mac.mac_src_mac2,
|
||||||
|
mac_conf_regs->mac.mac_src_mac3,
|
||||||
|
mac_conf_regs->mac.mac_src_mac4,
|
||||||
|
mac_conf_regs->mac.mac_src_mac5,
|
||||||
|
mac_conf_regs->mac.mac_src_mac6);
|
||||||
printf("ip_ttl:%x\n",mac_conf_regs->ip.ip_ttl);
|
printf("ip_ttl:%x\n",mac_conf_regs->ip.ip_ttl);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -1195,21 +1238,31 @@ int configureMAC(int ipad, long long int macad){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
bus_w(addrr,(INT_RSTN_BIT|ENET_RESETN_BIT|WRITE_BACK_BIT)); //0x2840,write shadow regs..
|
bus_w(addrr,(INT_RSTN_BIT|ENET_RESETN_BIT|WRITE_BACK_BIT|(DIGITAL_TEST_BIT&ival))); //0x2840,write shadow regs..
|
||||||
val=bus_r(addrr);
|
val=bus_r(addrr);
|
||||||
#ifdef VERBOSE
|
#ifdef VERBOSE
|
||||||
printf("Value read from Multi-purpose Reg:%x\n",val);
|
printf("Value read from Multi-purpose Reg:%x\n",val);
|
||||||
#endif
|
#endif
|
||||||
if(val!=0x2840) return -1;
|
// if(val!=0x2840) return -1;
|
||||||
|
|
||||||
usleep(100000);
|
usleep(100000);
|
||||||
|
if(powerOn){
|
||||||
bus_w(addrr,(INT_RSTN_BIT|ENET_RESETN_BIT|SW1_BIT)); //0x2820,write shadow regs..
|
if(ival)
|
||||||
|
bus_w(addrr,(INT_RSTN_BIT|ENET_RESETN_BIT|SW1_BIT|DIGITAL_TEST_BIT|CHANGE_AT_POWER_ON_BIT)); //0x2820,write shadow regs..
|
||||||
|
else
|
||||||
|
bus_w(addrr,(INT_RSTN_BIT|ENET_RESETN_BIT|SW1_BIT|CHANGE_AT_POWER_ON_BIT)); //0x2820,write shadow regs..
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if(ival)
|
||||||
|
bus_w(addrr,(INT_RSTN_BIT|ENET_RESETN_BIT|SW1_BIT|DIGITAL_TEST_BIT)); //0x2820,write shadow regs..
|
||||||
|
else
|
||||||
|
bus_w(addrr,(INT_RSTN_BIT|ENET_RESETN_BIT|SW1_BIT)); //0x2820,write shadow regs..
|
||||||
|
}
|
||||||
val=bus_r(addrr);
|
val=bus_r(addrr);
|
||||||
#ifdef VERBOSE
|
#ifdef VERBOSE
|
||||||
printf("Value read from Multi-purpose Reg:%x\n",val);
|
printf("Value read from Multi-purpose Reg:%x\n",val);
|
||||||
#endif
|
#endif
|
||||||
if(val!=0x2820) return -1;
|
// if(val!=0x2820) return -1;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@ float getTemperature(int tempSensor, int imod);
|
|||||||
int initHighVoltage(int val, int imod);
|
int initHighVoltage(int val, int imod);
|
||||||
int initConfGain(int val, int imod);
|
int initConfGain(int val, int imod);
|
||||||
|
|
||||||
int configureMAC(int ipad, long long int macad);
|
int configureMAC(int ipad, long long int macad, long long int servermacad, int ival);
|
||||||
|
|
||||||
u_int64_t getMcsNumber();
|
u_int64_t getMcsNumber();
|
||||||
u_int32_t getMcsVersion();
|
u_int32_t getMcsVersion();
|
||||||
|
@ -32,6 +32,10 @@
|
|||||||
#define ENET_CONF_REG 0x91<<11
|
#define ENET_CONF_REG 0x91<<11
|
||||||
#define TSE_CONF_REG 0x90<<11
|
#define TSE_CONF_REG 0x90<<11
|
||||||
|
|
||||||
|
//ADC
|
||||||
|
#define ADC_WRITE_REG 0x3a<<11
|
||||||
|
#define ADC_SYNC_REG 0x3b<<11
|
||||||
|
|
||||||
//not used so far
|
//not used so far
|
||||||
#define SPEED_REG 0x006000
|
#define SPEED_REG 0x006000
|
||||||
#define SET_NBITS_REG 0x008000
|
#define SET_NBITS_REG 0x008000
|
||||||
@ -204,10 +208,10 @@
|
|||||||
#define PHASE_STEP_BIT 0x00000001
|
#define PHASE_STEP_BIT 0x00000001
|
||||||
#define PHASE_STEP_OFFSET 0
|
#define PHASE_STEP_OFFSET 0
|
||||||
|
|
||||||
#define READOUT_BUSY_BIT 0x00000002
|
/* #define READOUT_BUSY_BIT 0x00000002
|
||||||
#define FIFOTEST_BUSY_BIT 0x00000004
|
#define FIFOTEST_BUSY_BIT 0x00000004
|
||||||
#define WAITING_FOR_TRIGGER_BIT 0x00000008
|
#define WAITING_FOR_TRIGGER_BIT 0x00000008
|
||||||
#define DELAYBEFORE_BIT 0x00000010
|
#define DELAYBEFORE_BIT 0x00000010 */
|
||||||
|
|
||||||
#define SW1_BIT 0x00000020
|
#define SW1_BIT 0x00000020
|
||||||
#define SW1_OFFSET 5
|
#define SW1_OFFSET 5
|
||||||
@ -224,6 +228,9 @@
|
|||||||
#define INT_RSTN_BIT 0x00002000
|
#define INT_RSTN_BIT 0x00002000
|
||||||
#define INT_RSTN_OFFSET 13
|
#define INT_RSTN_OFFSET 13
|
||||||
|
|
||||||
|
#define DIGITAL_TEST_BIT 0x00004000
|
||||||
|
#define DIGITAL_TEST_OFFSET 14
|
||||||
|
|
||||||
#define CHANGE_AT_POWER_ON_BIT 0x00008000
|
#define CHANGE_AT_POWER_ON_BIT 0x00008000
|
||||||
#define CHANGE_AT_POWER_ON_OFFSET 15
|
#define CHANGE_AT_POWER_ON_OFFSET 15
|
||||||
|
|
||||||
|
@ -2723,14 +2723,13 @@ int configure_mac(int file_des) {
|
|||||||
|
|
||||||
int retval;
|
int retval;
|
||||||
int ret=OK;
|
int ret=OK;
|
||||||
char arg[2][50];
|
char arg[3][50];
|
||||||
int n,i;
|
int n,i,ival;
|
||||||
|
|
||||||
int imod=0;//should be in future sent from client as -1, arg[2]
|
int imod=0;//should be in future sent from client as -1, arg[2]
|
||||||
int ipad;
|
int ipad;
|
||||||
long long int imacadd;
|
long long int imacadd;
|
||||||
|
long long int iservermacadd;
|
||||||
int idac=0;
|
|
||||||
|
|
||||||
sprintf(mess,"Can't configure MAC\n");
|
sprintf(mess,"Can't configure MAC\n");
|
||||||
|
|
||||||
@ -2740,14 +2739,26 @@ int configure_mac(int file_des) {
|
|||||||
sprintf(mess,"Error reading from socket\n");
|
sprintf(mess,"Error reading from socket\n");
|
||||||
ret=FAIL;
|
ret=FAIL;
|
||||||
}
|
}
|
||||||
|
n = receiveDataOnly(file_des,&ival,sizeof(ival));
|
||||||
|
if (n < 0) {
|
||||||
|
sprintf(mess,"Error reading from socket\n");
|
||||||
|
ret=FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
sscanf(arg[0], "%x", &ipad);
|
sscanf(arg[0], "%x", &ipad);
|
||||||
sscanf(arg[1], "%llx", &imacadd);
|
sscanf(arg[1], "%llx", &imacadd);
|
||||||
|
sscanf(arg[2], "%llx", &iservermacadd);
|
||||||
#ifdef VERBOSE
|
#ifdef VERBOSE
|
||||||
printf("\n%x\t",ipad);
|
printf("\nival %d\t",ival);
|
||||||
|
printf("\nipadd %x\t",ipad);
|
||||||
printf("destination ip is %d.%d.%d.%d = 0x%x \n",(ipad>>24)&0xff,(ipad>>16)&0xff,(ipad>>8)&0xff,(ipad)&0xff,ipad);
|
printf("destination ip is %d.%d.%d.%d = 0x%x \n",(ipad>>24)&0xff,(ipad>>16)&0xff,(ipad>>8)&0xff,(ipad)&0xff,ipad);
|
||||||
printf("macad:%llx\n",imacadd);
|
printf("macad:%llx\n",imacadd);
|
||||||
for (i=0;i<6;i++)
|
for (i=0;i<6;i++)
|
||||||
printf("mac adress %d is 0x%x \n\n",6-i,((imacadd>>(8*i))&0xFF));
|
printf("mac adress %d is 0x%x \n",6-i,((imacadd>>(8*i))&0xFF));
|
||||||
|
printf("server macad:%llx\n",iservermacadd);
|
||||||
|
for (i=0;i<6;i++)
|
||||||
|
printf("server mac adress %d is 0x%x \n\n",6-i,((iservermacadd>>(8*i))&0xFF));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (imod>=getNModBoard())
|
if (imod>=getNModBoard())
|
||||||
@ -2760,7 +2771,7 @@ int configure_mac(int file_des) {
|
|||||||
#endif
|
#endif
|
||||||
#ifdef MCB_FUNCS
|
#ifdef MCB_FUNCS
|
||||||
if (ret==OK) {
|
if (ret==OK) {
|
||||||
retval=configureMAC(ipad,imacadd);
|
retval=configureMAC(ipad,imacadd,iservermacadd,ival);
|
||||||
if(retval==-1) ret=FAIL;
|
if(retval==-1) ret=FAIL;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user