mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-22 03:40:04 +02:00
jungfrau module data, fixel moench02 for jctb and jctb server actualized for both buses
This commit is contained in:
parent
52b1e98726
commit
921ae01bbe
@ -8,6 +8,23 @@ class jungfrau10ModuleData : public slsDetectorData<uint16_t> {
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
uint64_t frameNumber; /**< is the frame number */
|
||||||
|
uint32_t expLength; /**< is the subframe number (32 bit eiger) or real time exposure time in 100ns (others) */
|
||||||
|
uint32_t packetNumber; /**< is the packet number */
|
||||||
|
uint64_t bunchId; /**< is the bunch id from beamline */
|
||||||
|
uint64_t timestamp; /**< is the time stamp with 10 MHz clock */
|
||||||
|
uint16_t modId; /**< is the unique module id (unique even for left, right, top, bottom) */
|
||||||
|
uint16_t xCoord; /**< is the x coordinate in the complete detector system */
|
||||||
|
uint16_t yCoord; /**< is the y coordinate in the complete detector system */
|
||||||
|
uint16_t zCoord; /**< is the z coordinate in the complete detector system */
|
||||||
|
uint32_t debug; /**< is for debugging purposes */
|
||||||
|
uint16_t roundRNumber; /**< is the round robin set number */
|
||||||
|
uint8_t detType; /**< is the detector type see :: detectorType */
|
||||||
|
uint8_t version; /**< is the version number of this structure format */
|
||||||
|
} sls_detector_header;
|
||||||
|
|
||||||
|
|
||||||
int iframe;
|
int iframe;
|
||||||
int nadc;
|
int nadc;
|
||||||
int sc_width;
|
int sc_width;
|
||||||
@ -25,7 +42,7 @@ class jungfrau10ModuleData : public slsDetectorData<uint16_t> {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
jungfrau10ModuleData(int ns=16384): slsDetectorData<uint16_t>(256*4, 256*2, 256*256*8*2, NULL, NULL, NULL) , iframe(0), nadc(32), sc_width(64), sc_height(256) {
|
jungfrau10ModuleData(int ns=16384): slsDetectorData<uint16_t>(256*4, 256*2, 256*256*8*2+48, NULL, NULL, NULL) , iframe(0) {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -38,43 +55,51 @@ class jungfrau10ModuleData : public slsDetectorData<uint16_t> {
|
|||||||
int ichip;
|
int ichip;
|
||||||
|
|
||||||
// cout << sizeof(uint16_t) << endl;
|
// cout << sizeof(uint16_t) << endl;
|
||||||
|
int ip=0;
|
||||||
for (iadc=0; iadc<nadc; iadc++) {
|
for (int iy=0; iy<256*2; iy++) {
|
||||||
ichip=iadc/4;
|
for (int ix=0; ix<256*4; ix++){
|
||||||
|
dataMap[iy][ix]=ip*2+48;
|
||||||
for (int i=0; i<sc_width*sc_height; i++) {
|
ip++;
|
||||||
|
}
|
||||||
if (ichip%2==0) {
|
|
||||||
row=sc_height+i/sc_width;
|
|
||||||
col=(ichip/2)*256+iadc%4*sc_width+(i%sc_width);
|
|
||||||
} else {
|
|
||||||
row=sc_height-1-i/sc_width;
|
|
||||||
col=((ichip/2)*256+iadc%4*sc_width)+sc_width-(i%sc_width)-1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* for (iadc=0; iadc<nadc; iadc++) { */
|
||||||
|
/* ichip=iadc/4; */
|
||||||
|
|
||||||
/* if (iadc<nadc/2) { */
|
/* for (int i=0; i<sc_width*sc_height; i++) { */
|
||||||
|
|
||||||
|
/* if (ichip%2==0) { */
|
||||||
/* row=sc_height+i/sc_width; */
|
/* row=sc_height+i/sc_width; */
|
||||||
/* col=iadc*sc_width+(i%sc_width); */
|
/* col=(ichip/2)*256+iadc%4*sc_width+(i%sc_width); */
|
||||||
/* } else { */
|
/* } else { */
|
||||||
/* row=sc_height-1-i/sc_width; */
|
/* row=sc_height-1-i/sc_width; */
|
||||||
/* col=(nx-1)-((iadc-16)*sc_width)-(i%sc_width); */
|
/* col=((ichip/2)*256+iadc%4*sc_width)+sc_width-(i%sc_width)-1; */
|
||||||
/* } */
|
/* } */
|
||||||
if (row<0 || row>=ny || col<0 || col>=nx) {
|
|
||||||
cout << "Wrong row, column " << row << " " << col << " " << iadc << " " << i << endl;
|
|
||||||
} else
|
|
||||||
dataMap[row][col]=(nadc*i+iadc)*2;
|
|
||||||
if (dataMap[row][col]<0 || dataMap[row][col]>=dataSize)
|
|
||||||
cout << "Error: pointer " << dataMap[row][col] << " out of range " << row << " " << col <<" " << iadc << " " << i << endl;
|
|
||||||
else {
|
|
||||||
xmap[nadc*i+iadc]=col;
|
|
||||||
ymap[nadc*i+iadc]=row;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
/* /\* if (iadc<nadc/2) { *\/ */
|
||||||
|
/* /\* row=sc_height+i/sc_width; *\/ */
|
||||||
|
/* /\* col=iadc*sc_width+(i%sc_width); *\/ */
|
||||||
|
/* /\* } else { *\/ */
|
||||||
|
/* /\* row=sc_height-1-i/sc_width; *\/ */
|
||||||
|
/* /\* col=(nx-1)-((iadc-16)*sc_width)-(i%sc_width); *\/ */
|
||||||
|
/* /\* } *\/ */
|
||||||
|
/* if (row<0 || row>=ny || col<0 || col>=nx) { */
|
||||||
|
/* cout << "Wrong row, column " << row << " " << col << " " << iadc << " " << i << endl; */
|
||||||
|
/* } else */
|
||||||
|
/* dataMap[row][col]=(nadc*i+iadc)*2; */
|
||||||
|
/* if (dataMap[row][col]<0 || dataMap[row][col]>=dataSize) */
|
||||||
|
/* cout << "Error: pointer " << dataMap[row][col] << " out of range " << row << " " << col <<" " << iadc << " " << i << endl; */
|
||||||
|
/* else { */
|
||||||
|
/* xmap[nadc*i+iadc]=col; */
|
||||||
|
/* ymap[nadc*i+iadc]=row; */
|
||||||
|
|
||||||
|
/* } */
|
||||||
|
/* } */
|
||||||
|
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -91,7 +116,7 @@ class jungfrau10ModuleData : public slsDetectorData<uint16_t> {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
int getFrameNumber(char *buff){(void)buff; return iframe;};
|
int getFrameNumber(return (sls_detector_header*)buff)->frameNumber;};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
||||||
@ -123,28 +148,65 @@ class jungfrau10ModuleData : public slsDetectorData<uint16_t> {
|
|||||||
\returns pointer to the begin of the last good frame, NULL if no frame is found or last frame is incomplete
|
\returns pointer to the begin of the last good frame, NULL if no frame is found or last frame is incomplete
|
||||||
|
|
||||||
*/
|
*/
|
||||||
char *readNextFrame(ifstream &filebin){
|
virtual char *readNextFrame(ifstream &filebin) {
|
||||||
// int afifo_length=0;
|
int ff=-1, np=-1;
|
||||||
uint16_t *afifo_cont;
|
return readNextFrame(filebin, ff, np);
|
||||||
int ib=0;
|
|
||||||
if (filebin.is_open()) {
|
|
||||||
afifo_cont=new uint16_t[dataSize/2];
|
|
||||||
while (filebin.read(((char*)afifo_cont)+ib,2)) {
|
|
||||||
ib+=2;
|
|
||||||
if (ib==dataSize) break;
|
|
||||||
}
|
|
||||||
if (ib>0) {
|
|
||||||
iframe++;
|
|
||||||
// cout << ib << "-" << endl;
|
|
||||||
return (char*)afifo_cont;
|
|
||||||
} else {
|
|
||||||
delete [] afifo_cont;
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return NULL;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
virtual char *readNextFrame(ifstream &filebin, int &ff) {
|
||||||
|
int np=-1;
|
||||||
|
return readNextFrame(filebin, ff, np);
|
||||||
|
};
|
||||||
|
|
||||||
|
virtual char *readNextFrame(ifstream &filebin, int& ff, int &np) {
|
||||||
|
char *data=new char[dataSize];
|
||||||
|
char *d=readNextFrame(filebin, ff, np, data);
|
||||||
|
if (d==NULL) {delete [] data; data=NULL;}
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
virtual char *readNextFrame(ifstream &filebin, int& ff, int &np, char *data) {
|
||||||
|
// char *readNextFrame(ifstream &filebin){
|
||||||
|
// int afifo_length=0;
|
||||||
|
/* uint16_t *afifo_cont; */
|
||||||
|
/* int ib=0; */
|
||||||
|
/* if (filebin.is_open()) { */
|
||||||
|
/* afifo_cont=new uint16_t[dataSize/2]; */
|
||||||
|
/* while (filebin.read(((char*)afifo_cont)+ib,2)) { */
|
||||||
|
/* ib+=2; */
|
||||||
|
/* if (ib==dataSize) break; */
|
||||||
|
/* } */
|
||||||
|
/* if (ib>0) { */
|
||||||
|
/* iframe++; */
|
||||||
|
/* // cout << ib << "-" << endl; */
|
||||||
|
/* return (char*)afifo_cont; */
|
||||||
|
/* } else { */
|
||||||
|
/* delete [] afifo_cont; */
|
||||||
|
/* return NULL; */
|
||||||
|
/* } */
|
||||||
|
/* } */
|
||||||
|
/* return NULL; */
|
||||||
|
/* }; */
|
||||||
|
|
||||||
|
char *retval=0;
|
||||||
|
int nd;
|
||||||
|
int fnum = -1;
|
||||||
|
np=0;
|
||||||
|
int pn;
|
||||||
|
|
||||||
|
// cout << dataSize << endl;
|
||||||
|
if (ff>=0)
|
||||||
|
fnum=ff;
|
||||||
|
|
||||||
|
if (filebin.is_open()) {
|
||||||
|
if (filebin.read(data, dataSize) ){
|
||||||
|
ff=getFrameNumber(data);
|
||||||
|
np=getPacketNumber(data);
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -34,7 +34,7 @@ class moench02CtbData : public slsDetectorData<uint16_t> {
|
|||||||
moench02CtbData(int ns=6400): slsDetectorData<uint16_t>(160, 160, ns*2*32, NULL, NULL) , nadc(32), sc_width(40), sc_height(160) {
|
moench02CtbData(int ns=6400): slsDetectorData<uint16_t>(160, 160, ns*2*32, NULL, NULL) , nadc(32), sc_width(40), sc_height(160) {
|
||||||
|
|
||||||
|
|
||||||
int adc_off[4]={0,40,80,120};
|
int adc_off[4]={40,0,120,80};
|
||||||
int adc_nr[4]={8,10,20,23};
|
int adc_nr[4]={8,10,20,23};
|
||||||
int row, col;
|
int row, col;
|
||||||
|
|
||||||
@ -86,10 +86,10 @@ class moench02CtbData : public slsDetectorData<uint16_t> {
|
|||||||
if(ip>=0 && ip<maplength){
|
if(ip>=0 && ip<maplength){
|
||||||
x=xmap[ip];
|
x=xmap[ip];
|
||||||
y=ymap[ip];
|
y=ymap[ip];
|
||||||
}else{
|
}/*else{
|
||||||
cerr<<"WRONG ARRAY LENGTH"<<endl;
|
cerr<<"WRONG ARRAY LENGTH"<<endl;
|
||||||
cerr<<"Trying to access the "<<ip<<"-th element"<<endl;
|
cerr<<"Trying to access the "<<ip<<"-th element"<<endl;
|
||||||
}
|
}*/
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
CROSS = bfin-uclinux-
|
CROSS = bfin-uclinux-
|
||||||
CC = $(CROSS)gcc
|
CC = $(CROSS)gcc
|
||||||
|
|
||||||
CFLAGS += -Wall -DMOENCHD -DMCB_FUNCS -DDACS_INT -DDEBUG -DV1 -DCTB -DOLDVERSION #-DVERBOSE #-DVERYVERBOSE #-DVIRTUAL #-DDACS_INT_CSERVER
|
CFLAGS += -Wall -DMOENCHD -DMCB_FUNCS -DDACS_INT -DDEBUG -DV1 -DCTB
|
||||||
|
|
||||||
|
|
||||||
PROGS= jctbDetectorServer
|
PROGS= jctbDetectorServer
|
||||||
@ -24,22 +24,18 @@ OBJS = $(SRCS:%.c=%.o)
|
|||||||
|
|
||||||
all: clean versioning $(PROGS)
|
all: clean versioning $(PROGS)
|
||||||
|
|
||||||
test: clean jungfrauADCTEst
|
test: clean jungfrauADCTest
|
||||||
|
|
||||||
boot: $(OBJS)
|
boot: $(OBJS)
|
||||||
|
|
||||||
versioning:
|
versioning:
|
||||||
@echo `tput setaf 6; ./updateGitVersion.sh; tput sgr0;`
|
@echo `tput setaf 6; ./updateGitVersion.sh; tput sgr0;`
|
||||||
|
|
||||||
jctbDetectorServerNew: $(OBJS)
|
jctbDetectorServer: $(OBJS)
|
||||||
echo $(OBJS)
|
echo $(OBJS)
|
||||||
$(CC) $(CFLAGS) -o $@ $^ $(LDLIBS_$@) $(LDFLAGS_$@)
|
$(CC) $(CFLAGS) -o $@ $^ $(LDLIBS_$@) $(LDFLAGS_$@)
|
||||||
|
|
||||||
jctbDetectorServer: $(OBJS)
|
jungfrauADCTest: $(OBJS)
|
||||||
echo $(OBJS)
|
|
||||||
$(CC) $(CFLAGS) -o $@ $^ $(LDLIBS_$@) $(LDFLAGS_$@) -DOLDVERSION
|
|
||||||
|
|
||||||
jungfrauADCTEst: $(OBJS)
|
|
||||||
echo $(OBJS)
|
echo $(OBJS)
|
||||||
$(CC) $(CFLAGS) -o $@ $^ $(LDLIBS_$@) $(LDFLAGS_$@) -DTESTADC
|
$(CC) $(CFLAGS) -o $@ $^ $(LDLIBS_$@) $(LDFLAGS_$@) -DTESTADC
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
#include "registers_m.h"
|
#include "registers_m.h"
|
||||||
|
|
||||||
//for memory mapping
|
//for memory mapping
|
||||||
u_int32_t CSP0BASE;
|
u_int64_t CSP0BASE;
|
||||||
|
|
||||||
u_int16_t volatile *values;
|
u_int16_t volatile *values;
|
||||||
|
|
||||||
@ -43,8 +43,8 @@ int mapCSP0(void) {
|
|||||||
}
|
}
|
||||||
printf("/dev/mem opened\n");
|
printf("/dev/mem opened\n");
|
||||||
|
|
||||||
CSP0BASE = (u_int32_t)mmap(0, MEM_SIZE, PROT_READ|PROT_WRITE, MAP_FILE|MAP_SHARED, fd, CSP0);
|
CSP0BASE = mmap(0, MEM_SIZE, PROT_READ|PROT_WRITE, MAP_FILE|MAP_SHARED, fd, CSP0);
|
||||||
if (CSP0BASE == (u_int32_t)MAP_FAILED) {
|
if (CSP0BASE == MAP_FAILED) {
|
||||||
printf("\nCan't map memmory area!!\n");
|
printf("\nCan't map memmory area!!\n");
|
||||||
return FAIL;
|
return FAIL;
|
||||||
}
|
}
|
||||||
@ -61,8 +61,8 @@ int mapCSP0(void) {
|
|||||||
return FAIL;
|
return FAIL;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
printf("CSPObase is 0x%08x \n",CSP0BASE);
|
printf("CSPObase is 0x%08llx \n",CSP0BASE);
|
||||||
printf("CSPOBASE=from %08x to %08x\n",CSP0BASE,CSP0BASE+MEM_SIZE);
|
printf("CSPOBASE=from %08llx to %08llx\n",CSP0BASE,CSP0BASE+MEM_SIZE);
|
||||||
|
|
||||||
u_int32_t address;
|
u_int32_t address;
|
||||||
address = FIFO_DATA_REG;//_OFF;
|
address = FIFO_DATA_REG;//_OFF;
|
||||||
@ -73,12 +73,24 @@ int mapCSP0(void) {
|
|||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
u_int16_t bus_r16(u_int32_t offset){
|
|
||||||
|
|
||||||
|
|
||||||
|
u_int16_t a_bus_r16(u_int32_t offset){
|
||||||
volatile u_int16_t *ptr1;
|
volatile u_int16_t *ptr1;
|
||||||
ptr1=(u_int16_t*)(CSP0BASE+offset*2);
|
ptr1=(u_int16_t*)(CSP0BASE+offset*2);
|
||||||
return *ptr1;
|
return *ptr1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
u_int16_t bus_r16(u_int32_t offset){
|
||||||
|
u_int16_t r= a_bus_r16(offset);
|
||||||
|
#ifndef OLDVERSION
|
||||||
|
while (r!=a_bus_r16(offset))
|
||||||
|
r=a_bus_r16(offset);
|
||||||
|
#endif
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
u_int16_t bus_w16(u_int32_t offset, u_int16_t data) {
|
u_int16_t bus_w16(u_int32_t offset, u_int16_t data) {
|
||||||
volatile u_int16_t *ptr1;
|
volatile u_int16_t *ptr1;
|
||||||
ptr1=(u_int16_t*)(CSP0BASE+offset*2);
|
ptr1=(u_int16_t*)(CSP0BASE+offset*2);
|
||||||
@ -97,12 +109,21 @@ u_int32_t bus_w(u_int32_t offset, u_int32_t data) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
u_int32_t bus_r(u_int32_t offset) {
|
u_int32_t a_bus_r(u_int32_t offset) {
|
||||||
volatile u_int32_t *ptr1;
|
volatile u_int32_t *ptr1;
|
||||||
ptr1=(u_int32_t*)(CSP0BASE+offset*2);
|
ptr1=(u_int32_t*)(CSP0BASE+offset*2);
|
||||||
return *ptr1;
|
return *ptr1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
u_int32_t bus_r(u_int32_t offset){
|
||||||
|
u_int32_t r= a_bus_r(offset);
|
||||||
|
#ifndef OLDVERSION
|
||||||
|
while (r!=a_bus_r(offset))
|
||||||
|
r=a_bus_r(offset);
|
||||||
|
#endif
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
// program dacq settings
|
// program dacq settings
|
||||||
|
|
||||||
int64_t set64BitReg(int64_t value, int aLSB, int aMSB){
|
int64_t set64BitReg(int64_t value, int aLSB, int aMSB){
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
Path: slsDetectorsPackage/slsDetectorSoftware/jctbDetectorServer
|
Path: slsDetectorsPackage/slsDetectorSoftware/jctbDetectorServer
|
||||||
URL: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git
|
URL: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git
|
||||||
Repository Root: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git
|
Repository Root: origin git@github.com:slsdetectorgroup/slsDetectorPackage.git
|
||||||
Repsitory UUID: 9ae128961675230ad322ff2867f1862dbe8566a7
|
Repsitory UUID: 52b1e987263c831adcfab79c1c2b7bb9c68b09c7
|
||||||
Revision: 25
|
Revision: 26
|
||||||
Branch: developer
|
Branch: anna
|
||||||
Last Changed Author: Anna_Bergamaschi
|
Last Changed Author: Anna_Bergamaschi
|
||||||
Last Changed Rev: 3764
|
Last Changed Rev: 3960
|
||||||
Last Changed Date: 2018-05-07 14:30:14.000000002 +0200 ./Makefile
|
Last Changed Date: 2018-08-09 14:00:05.000000002 +0200 ./server_funcs.c
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#define GITURL "git@github.com:slsdetectorgroup/slsDetectorPackage.git"
|
#define GITURL "git@github.com:slsdetectorgroup/slsDetectorPackage.git"
|
||||||
#define GITREPUUID "9ae128961675230ad322ff2867f1862dbe8566a7"
|
#define GITREPUUID "52b1e987263c831adcfab79c1c2b7bb9c68b09c7"
|
||||||
#define GITAUTH "Anna_Bergamaschi"
|
#define GITAUTH "Anna_Bergamaschi"
|
||||||
#define GITREV 0x3764
|
#define GITREV 0x3960
|
||||||
#define GITDATE 0x20180507
|
#define GITDATE 0x20180809
|
||||||
#define GITBRANCH "developer"
|
#define GITBRANCH "anna"
|
||||||
|
@ -70,6 +70,8 @@ int N_CHANS=NCHANS;
|
|||||||
int init_detector(int b, int checkType) {
|
int init_detector(int b, int checkType) {
|
||||||
|
|
||||||
int i;
|
int i;
|
||||||
|
int ret;
|
||||||
|
int ii;
|
||||||
if (mapCSP0()==FAIL) { printf("Could not map memory\n");
|
if (mapCSP0()==FAIL) { printf("Could not map memory\n");
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
@ -81,8 +83,18 @@ int init_detector(int b, int checkType) {
|
|||||||
for (i=0; i<1000000; i++) {
|
for (i=0; i<1000000; i++) {
|
||||||
bus_w(SET_DELAY_LSB_REG, i*100);
|
bus_w(SET_DELAY_LSB_REG, i*100);
|
||||||
bus_r(FPGA_VERSION_REG);
|
bus_r(FPGA_VERSION_REG);
|
||||||
if (i*100!=bus_r(SET_DELAY_LSB_REG))
|
//usleep(100);
|
||||||
printf("ERROR: wrote 0x%x, read 0x%x\n",i*100,bus_r(SET_DELAY_LSB_REG));
|
ii=0;
|
||||||
|
// usleep(100);
|
||||||
|
//usleep(100);
|
||||||
|
|
||||||
|
// ret=bus_r(SET_DELAY_LSB_REG);
|
||||||
|
ret=bus_r(SET_DELAY_LSB_REG);
|
||||||
|
while (ret!=i*100 && ii<100) {
|
||||||
|
//if (i*100!=ret)
|
||||||
|
printf("ERROR %d: wrote 0x%x, read 0x%x\n",i, i*100,ret);
|
||||||
|
ret=bus_r(SET_DELAY_LSB_REG);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
printf("Finished\n");
|
printf("Finished\n");
|
||||||
}else
|
}else
|
||||||
|
Loading…
x
Reference in New Issue
Block a user