Skip to content
Snippets Groups Projects
Commit 409b098c authored by Paulus Kruger's avatar Paulus Kruger
Browse files

Merge branch 'pypcc3' of https://git.astron.nl/lofar2.0/pypcc into pypcc3

parents 00a671a6 822e5092
No related branches found
No related tags found
No related merge requests found
...@@ -98,7 +98,7 @@ class yamlreader(): ...@@ -98,7 +98,7 @@ class yamlreader():
print("M2:",mask) print("M2:",mask)
dtype=v.get('dtype','integer'); dtype=v.get('dtype','integer');
width=(v.get('width',8)-1)//8+1 width=(v.get('width',8)-1)//8+1
if (dtype=="float"): if (dtype=="double"):
scale=v.get('scale',1.) scale=v.get('scale',1.)
data=[int(d/scale) for d in data] data=[int(d/scale) for d in data]
if (dtype=="boolean"): if (dtype=="boolean"):
...@@ -171,7 +171,7 @@ class yamlreader(): ...@@ -171,7 +171,7 @@ class yamlreader():
else: else:
print("OPCset unsupported type"); print("OPCset unsupported type");
return; return;
if dtype=="float": if dtype=="double":
scale=float(v.get('scale',1.)) scale=float(v.get('scale',1.))
data2=[(d*scale) for d in data2] data2=[(d*scale) for d in data2]
data3=v['OPCR'].get_value(); data3=v['OPCR'].get_value();
......
...@@ -210,6 +210,24 @@ variables: ...@@ -210,6 +210,24 @@ variables:
dim: 96 dim: 96
mask: Ant_mask mask: Ant_mask
- name: RCU_GPIO1
driver: I2C_RFCHAIN
devreg: [IO1.GPIO1,IO2.GPIO1,IO3.GPIO1]
width: 8
rw: ro
dtype: uint8
dim: 96
mask: Ant_mask
- name: RCU_GPIO2
driver: I2C_RFCHAIN
devreg: [IO1.GPIO2,IO2.GPIO2,IO3.GPIO2]
width: 8
rw: ro
dtype: uint8
dim: 96
mask: Ant_mask
- name: RCU_band - name: RCU_band
description: Band select switch 1=10MHz,2=30MHz description: Band select switch 1=10MHz,2=30MHz
driver: I2C_RFCHAIN driver: I2C_RFCHAIN
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
drvbase::drvbase(const t_driver config1) : config (config1){}; drvbase::drvbase(const t_driver config1) : config (config1){};
bool drvbase::I2Csend(int addr,int reg,int len,t_buffer* data,int direction){ bool drvbase::I2Csend(int addr,int reg,int len,t_buffer* data,int direction){
std::cout << "I2Csend "<<config.name <<" not implemented!\n"; // std::cout << "I2Csend "<<config.name <<" not implemented!\n";
return false; return false;
}; };
......
...@@ -94,6 +94,9 @@ void c_i2c_array::geti2c(const t_devreg devreg,int width,int bitoffset,t_buffer* ...@@ -94,6 +94,9 @@ void c_i2c_array::geti2c(const t_devreg devreg,int width,int bitoffset,t_buffer*
// buffer[0]=storedRegs[devreg.store-1][rcui]; // buffer[0]=storedRegs[devreg.store-1][rcui];
storedRegs[devreg.store-1][selectedRCU]=buffer[0]; storedRegs[devreg.store-1][selectedRCU]=buffer[0];
buffer[0]=UnMask(buffer[0],width,bitoffset); buffer[0]=UnMask(buffer[0],width,bitoffset);
} else
if ((bitoffset==0) && (len2*8-width>0)) {//Just mask on last byte
buffer[0]=UnMask(buffer[0],width-(len2-1)*8,0);
} }
} }
......
...@@ -33,7 +33,7 @@ int c_i2c_array2::getvar(int x,t_buffer* buffer,int lenmask,bool* mask){ ...@@ -33,7 +33,7 @@ int c_i2c_array2::getvar(int x,t_buffer* buffer,int lenmask,bool* mask){
N=parent->getvar2(variables[x],y,stride*N2,&(buffer[y*stride]),1,mask); N=parent->getvar2(variables[x],y,stride*N2,&(buffer[y*stride]),1,mask);
else else
for (int y=0;y<N2;y++) for (int y=0;y<N2;y++)
N=parent->getvar2(variables[x],y,stride*N2,&(buffer[y*stride]),stepmask,&(mask[y])); N=parent->getvar2(variables[x],y,stride*N2,&(buffer[y*stride]),lenmask,&(mask[y]));
return stride*N*N2; return stride*N*N2;
}; };
......
...@@ -8,9 +8,10 @@ c_spibitbang1::c_spibitbang1(const t_driver config1) : drvbase (config1){ ...@@ -8,9 +8,10 @@ c_spibitbang1::c_spibitbang1(const t_driver config1) : drvbase (config1){
SDIO=config1.devreg[1]; SDIO=config1.devreg[1];
SDIOdir=config1.devreg[2]; SDIOdir=config1.devreg[2];
CS=config1.devreg[3]; CS=config1.devreg[3];
CLKpin=config1.parameters[0]; CLKpin=config1.parameters[0];
SDIOpin=config1.parameters[1]; SDIOpin=config1.parameters[1];
CSpin=config1.parameters[2]; CSpin=config1.parameters[3];
}; };
bool c_spibitbang1::I2Csend(int addr,int reg,int len,t_buffer* data,int direction){ bool c_spibitbang1::I2Csend(int addr,int reg,int len,t_buffer* data,int direction){
...@@ -44,7 +45,7 @@ bool c_spibitbang1::I2Csend(int addr,int reg,int len,t_buffer* data,int directio ...@@ -44,7 +45,7 @@ bool c_spibitbang1::I2Csend(int addr,int reg,int len,t_buffer* data,int directio
data2=0; data2=0;
for (int x=0;x<8;x++){ for (int x=0;x<8;x++){
parent->geti2c(SDIO,1,SDIOpin,bit); parent->geti2c(SDIO,1,SDIOpin,bit);
data2<<=2; data2<<=1;
data2+=bit[0]; data2+=bit[0];
bit[0]=1;parent->seti2c(CLK,1,CLKpin,bit); bit[0]=1;parent->seti2c(CLK,1,CLKpin,bit);
bit[0]=0;parent->seti2c(CLK,1,CLKpin,bit); bit[0]=0;parent->seti2c(CLK,1,CLKpin,bit);
...@@ -53,7 +54,8 @@ bool c_spibitbang1::I2Csend(int addr,int reg,int len,t_buffer* data,int directio ...@@ -53,7 +54,8 @@ bool c_spibitbang1::I2Csend(int addr,int reg,int len,t_buffer* data,int directio
bit[0]=1;parent->seti2c(CS,1,CSpin,bit);//disable bit[0]=1;parent->seti2c(CS,1,CSpin,bit);//disable
bit[0]=1;parent->seti2c(SDIO,1,SDIOpin,bit); bit[0]=1;parent->seti2c(SDIO,1,SDIOpin,bit);
bit[0]=0;parent->seti2c(SDIOdir,1,SDIOpin,bit); bit[0]=0;parent->seti2c(SDIOdir,1,SDIOpin,bit);
std::cout << "spibitbang reg="<<reg<<" data="<<data2<<"\n";
data[0]=data2;
} }
return true; return true;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment