From e21c185fa2218312e65e27a34cf095ce66aa212a Mon Sep 17 00:00:00 2001 From: hades Date: Sun, 28 May 2000 10:34:52 +0000 Subject: [PATCH] Running --- hadaq/hwtip.c | 66 ++++++++++++++++++++++++++++++++++++++------------ hadaq/hwtip.h | 1 + hadaq/startacq | 9 +++---- hadaq/stopacq | 4 +-- 4 files changed, 57 insertions(+), 23 deletions(-) diff --git a/hadaq/hwtip.c b/hadaq/hwtip.c index 4cd14ca..cf5329b 100644 --- a/hadaq/hwtip.c +++ b/hadaq/hwtip.c @@ -34,6 +34,7 @@ static LVme_L berrGetL(LVme * my, unsigned long offset) do { ourVmeAccessOK = 1; + retVal = LVme_getL(my, offset); retVal = LVme_getL(my, offset); retVal = LVme_getL(my, offset); retVal = LVme_getL(my, offset); @@ -43,7 +44,7 @@ static LVme_L berrGetL(LVme * my, unsigned long offset) retVal = LVme_getL(my, offset); retVal = LVme_getL(my, offset); retVal = LVme_getL(my, offset); - retVal = LVme_getL(my, offset); + } while (!ourVmeAccessOK); if (oldOff != offset && oldWord == retVal) { msglog(LOG_ERR, "wird twice: 0x%08x on 0x%08x\n", retVal, offset); @@ -53,6 +54,25 @@ static LVme_L berrGetL(LVme * my, unsigned long offset) return retVal; } +static void berrSetL(LVme * my, unsigned long offset, LVme_L v) +{ + + do { + ourVmeAccessOK = 1; + LVme_setL(my, offset, v); + LVme_setL(my, offset, v); + LVme_setL(my, offset, v); + LVme_setL(my, offset, v); + LVme_setL(my, offset, v); + LVme_setL(my, offset, v); + LVme_setL(my, offset, v); + LVme_setL(my, offset, v); + LVme_setL(my, offset, v); + LVme_setL(my, offset, v); + + } while (!ourVmeAccessOK); +} + static int bankRequested(HwTip * my) { UInt2 val; @@ -95,9 +115,9 @@ int conHwTip(HwTip * my, const char *name, const Param *param) } my->currAddr = 0xffffffff; /* start at the end */ my->bankRequested = 1; /* of the empty bank */ - my->pipeFull = 2; - my->daqRq = 1; - my->daqGr = 13; + my->pipeFull = LVL2_PIPE2_FULL; + my->daqRq = LVL2_DAQ2_RQ; + my->daqGr = LVL2_DAQ2_GR; my->fifo = LVL2_PIPE2_BASE; return 0; @@ -112,9 +132,14 @@ void desHwTip(HwTip * my) void HwTip_requestBuffer(HwTip * my) { - LVme_clrBitL(my->lvme, EXT_DAQ, my->daqRq); + { + LVme_L v; + + v = berrGetL(my->lvme, EXT_DAQ); + berrSetL(my->lvme, EXT_DAQ, v & ~my->daqRq); + } - while (LVme_tstBitL(my->lvme, EXT_STATUS, my->daqGr)) { + while (berrGetL(my->lvme, EXT_STATUS) & my->daqGr) { #if 1 struct timespec tS, *t = &tS; t->tv_sec = 0; @@ -124,19 +149,19 @@ void HwTip_requestBuffer(HwTip * my) } if (my->bankRequested == 0) { my->bankRequested = 1; - my->pipeFull = 2; - my->daqRq = 1; - my->daqGr = 13; + my->pipeFull = LVL2_PIPE2_FULL; + my->daqRq = LVL2_DAQ2_RQ; + my->daqGr = LVL2_DAQ2_GR; my->fifo = LVL2_PIPE2_BASE; } else { my->bankRequested = 0; - my->pipeFull = 1; - my->daqRq = 0; - my->daqGr = 12; + my->pipeFull = LVL2_PIPE1_FULL; + my->daqRq = LVL2_DAQ1_RQ; + my->daqGr = LVL2_DAQ1_GR; my->fifo = LVL2_PIPE1_BASE; } msglog(LOG_DEBUG, "wait for data\n"); - while (!LVme_tstBitL(my->lvme, EXT_STATUS, my->pipeFull)) { + while (!(berrGetL(my->lvme, EXT_STATUS) & my->pipeFull)) { #if 1 struct timespec tS, *t = &tS; t->tv_sec = 0; @@ -145,7 +170,12 @@ void HwTip_requestBuffer(HwTip * my) #endif } msglog(LOG_DEBUG, "data available\n"); - LVme_setBitL(my->lvme, EXT_DAQ, my->daqRq); + { + LVme_L v; + + v = berrGetL(my->lvme, EXT_DAQ); + berrSetL(my->lvme, EXT_DAQ, v | my->daqRq); + } #if 0 { @@ -161,12 +191,14 @@ void HwTip_requestBuffer(HwTip * my) #endif my->currAddr = my->fifo + 0x8; + while (!(berrGetL(my->lvme, EXT_STATUS) & my->daqGr)) { + } my->pipeSize = berrGetL(my->lvme, my->fifo); } int HwTip_isBusy(HwTip * my) { - return !LVme_tstBitL(my->lvme, EXT_STATUS, my->daqGr); + return !(berrGetL(my->lvme, EXT_STATUS) & my->daqGr); } int HwTip_isEmpty(HwTip * my) @@ -181,6 +213,10 @@ int HwTip_readSubEvt(HwTip * my, void *subEvt) size_t size; UInt1 trigTag; + if(berrGetL(my->lvme, my->fifo) == 0) { + msglog(LOG_ERR, "pipesize = 0\n"); + } + size = berrGetL(my->lvme, my->currAddr); msglog(LOG_DEBUG, "size: 0x%08x\n", size); if (size > 0x60) { diff --git a/hadaq/hwtip.h b/hadaq/hwtip.h index 84930e1..f9e15c9 100644 --- a/hadaq/hwtip.h +++ b/hadaq/hwtip.h @@ -12,6 +12,7 @@ typedef struct HwTipS { unsigned trigNr; unsigned long bankRequested; unsigned long pipeFull; + unsigned long pipeSize; unsigned long daqRq; unsigned long daqGr; unsigned long fifo; diff --git a/hadaq/startacq b/hadaq/startacq index 872a756..a67848b 100644 --- a/hadaq/startacq +++ b/hadaq/startacq @@ -1,10 +1,9 @@ : -./daq_evtbuild -p -1 -s 3 -v notice & +./daq_evtbuild -p -1 -s 1 -v notice & echo $! >evtbuild.pid sleep 1; -./daq_readout -p -2 -v notice & +./daq_readout -p -2 -v info & echo $! >readout.pid -sleep 1; -./daq_ctrlctu -v notice & -echo $! >ctrlctu.pid +sleep 1 +dtuctrl -t ctu start exit 0 diff --git a/hadaq/stopacq b/hadaq/stopacq index e9ec51b..090b2ed 100644 --- a/hadaq/stopacq +++ b/hadaq/stopacq @@ -1,7 +1,5 @@ : -kill $(cat ctrlctu.pid) -rm ctrlctu.pid -sleep 1 +dtuctrl -t ctu stop sleep 1 kill $(cat readout.pid) rm readout.pid -- 2.43.0