Compare commits
No commits in common. "59887244b99a2952d3f4995de49a64b3445a88ea" and "10b3d0c493695d177785d8bd841a39dcebcb44be" have entirely different histories.
59887244b9
...
10b3d0c493
9 changed files with 34 additions and 234 deletions
2
Makefile
2
Makefile
|
|
@ -90,5 +90,3 @@ data/MDDM.HRP1: $(patsubst %.EI,%.EI.HRP1,$(wildcard data/20*-MDDM-[0-9]*.EI))
|
|||
%_BifA.2dhist: %.EI
|
||||
./RPi.awk -v U=uM 'isuMlight(A1,A2) && is2D(B1,B2) && Ai<500 && Aj<500 {do_2DHIST(Ai,Aj)}' $< > $@
|
||||
|
||||
%.sethat: %.EI %.epoch
|
||||
./sethat.awk 'isI(){pr()}' file_epoch=$(shell cat $*.epoch) $< > $@
|
||||
|
|
|
|||
2
RPi.awk
2
RPi.awk
|
|
@ -164,7 +164,7 @@ function isH() {
|
|||
Vio = $5*Vref*2/4096
|
||||
Vrpi = $6*Vref*2/4096
|
||||
Tfpga = degC($7, 3.3, 3.3, 4500)
|
||||
Tsh = degC($8, 3.3, 10.0, 3940)
|
||||
Tsh = degC($8, 3.3, 3.3, 4500)
|
||||
Tair = degC($9, 3.3, 3.3, 4500)
|
||||
Ibias = $10*Vref/3.3*0.077
|
||||
return 1
|
||||
|
|
|
|||
|
|
@ -113,7 +113,7 @@ def altera_from_file(fn='rpirena.rbf', hz=30000000):
|
|||
sleep(1)
|
||||
CD = gpio_read(CONF_DONE)
|
||||
if not CD:
|
||||
raise IOError(f"CONF_DONE did not go high after config nSTATUS={gpio_read(nSTATUS)}")
|
||||
raise IOError("CONF_DONE did not go high after config")
|
||||
spidev.set_mode(cpol=0, cpha=1)
|
||||
|
||||
def cmdstr(w):
|
||||
|
|
|
|||
|
|
@ -1,2 +0,0 @@
|
|||
import rpirena
|
||||
from rpirena import tanos_jr as config
|
||||
6
i2c.py
6
i2c.py
|
|
@ -82,13 +82,13 @@ class i2c:
|
|||
s.cmdi(s.STOP)
|
||||
return 4
|
||||
|
||||
def conf(self, a=0):
|
||||
self.cmda(a)
|
||||
def conf(self):
|
||||
self.cmda(0)
|
||||
s = 0
|
||||
for k, v in self.CONF.items():
|
||||
s += self.conf1(k, v)
|
||||
self._log(2, f"I²C conf({self.name}), len={s}")
|
||||
self.cmda(a, s)
|
||||
self.cmda(0, s)
|
||||
|
||||
def readi(s, k):
|
||||
s.cmdi(s.START, s.SAD)
|
||||
|
|
|
|||
30
rpirena.py
30
rpirena.py
|
|
@ -196,7 +196,6 @@ class configuration(object):
|
|||
hk = True,
|
||||
counter = True
|
||||
)
|
||||
self.NTC=[dict()]*8
|
||||
self.stream.update(stream)
|
||||
self.iniz()
|
||||
|
||||
|
|
@ -270,29 +269,24 @@ threediodes = configuration("3Diodes",
|
|||
)
|
||||
|
||||
tanos_jr = configuration("TANOS",
|
||||
nsamples=(1,),
|
||||
l1 = [
|
||||
dict(thr= 9.0*mV, flags=0b0100000001), # B2
|
||||
dict(thr= 12.0*mV, flags=0b1000000010), # CC
|
||||
dict(thr= 12.0*mV, flags=0b1000000100), # AA
|
||||
dict(thr= 10.0*mV, flags=0b0100001000), # B1
|
||||
dict(thr= 7.0*mV, flags=0b0000010000), # B2
|
||||
dict(thr= 10.0*mV, flags=0b0000100000), # CC
|
||||
dict(thr= 10.0*mV, flags=0b0001000000), # AA
|
||||
dict(thr= 8.0*mV, flags=0b0010000000), # B1
|
||||
dict(thr= 10.0*mV, flags=0b0110100001), # B2
|
||||
dict(thr= 12.0*mV, flags=0b0011100010), # CC
|
||||
dict(thr= 12.0*mV, flags=0b0011100100), # AA
|
||||
dict(thr= 10.0*mV, flags=0b0110001000), # B1
|
||||
],
|
||||
l2 = [
|
||||
dict(any=0b0011100000), # B1 & AA & CC
|
||||
dict(any=0b0000001000, none=0b0001110000), # B1 & ~(others)
|
||||
dict(any=0b0100000000), # B1 | B2
|
||||
dict(any=0b0000001110), # B1 & AA & CC
|
||||
dict(any=0b0000001000, none = 0b0000100000), # B1 & ~(others)
|
||||
dict(any=0b0000000001), # B2
|
||||
dict(any=0b0000000010), # CC
|
||||
dict(any=0b0000000100), # AA
|
||||
dict(any=0b1000000000, none=0b0010010000 ), # (AA|CC) & ~B1 & ~B2
|
||||
dict(any=0b0001100000), # AA & CC
|
||||
dict(any=0b0010010000), # B1 & B2
|
||||
dict(any=0b0000001000), # B1
|
||||
dict(any=0b0000000110), # AA & CC
|
||||
dict(any=0b0000001001), # B1 & B2
|
||||
],
|
||||
)
|
||||
tanos_jr.Vref = 3.337
|
||||
tanos_jr.NTC[4] = dict(R25=10e3)
|
||||
|
||||
mddm = configuration("MDDM",
|
||||
nsamples=(1,),
|
||||
|
|
@ -636,7 +630,7 @@ def monitor():
|
|||
monitor_Vprim = 0;
|
||||
if "Tfpga" in monitor_flags and monitor_hk:
|
||||
hk = monitor_hk[-1]
|
||||
Tfpga = degC(hk[4], **current.NTC[4])
|
||||
Tfpga = degC(hk[4])
|
||||
global monitor_Tfpga, monitor_Tsleep
|
||||
print(f"T_fpga {Tfpga:.1f} °C"
|
||||
f" ({monitor_Tfpga_temp_sleep:.1f}/{monitor_Tfpga_temp_shutdown:.1f}"
|
||||
|
|
|
|||
14
sethat.awk
14
sethat.awk
|
|
@ -1,10 +1,6 @@
|
|||
#! /usr/bin/gawk -i
|
||||
|
||||
BEGIN {
|
||||
file_epoch = 0
|
||||
}
|
||||
|
||||
/^H/ { Time= $2 - 3 + file_epoch }
|
||||
/^H/ { Time= $2 - 3 }
|
||||
|
||||
function magc(d) {
|
||||
if (d >= 0x8000)
|
||||
|
|
@ -46,9 +42,9 @@ isI() {
|
|||
acc_adc[1] = adcc($11)
|
||||
acc_temp = tempc($12)
|
||||
for (i=1; i<=18; i++) {
|
||||
mag[i][0] = magc($(10 + 3*i))
|
||||
mag[i][1] = magc($(11 + 3*i))
|
||||
mag[i][2] = magc($(12 + 3*i))
|
||||
mag[i][0] = magc($(13 + 3*i))
|
||||
mag[i][1] = magc($(14 + 3*i))
|
||||
mag[i][2] = magc($(15 + 3*i))
|
||||
}
|
||||
acc_status_fifo = $67
|
||||
acc_status = $68
|
||||
|
|
@ -66,7 +62,7 @@ function pr() {
|
|||
printf "IS %d 0x%04x 0x%04x 0x%04x 0x%04x %.2f %.2f %.4f %.4f\n", Time, \
|
||||
mag_status, acc_status, acc_status_aux, acc_status_fifo, \
|
||||
mag_temp, acc_temp, acc_adc[0], acc_adc[1]
|
||||
for (i=0; i<20; i++) {
|
||||
for (i=0; i<20; i++) if (i != 18) {
|
||||
printf "IV %.1f %7.4f %7.4f %7.4f %7.4f %7.4f %7.4f\n", Time+i/10, \
|
||||
mag[i][0], mag[i][1], mag[i][2], \
|
||||
acc[i][0], acc[i][1], acc[i][2]
|
||||
|
|
|
|||
|
|
@ -1,8 +1,6 @@
|
|||
#! /bin/bash
|
||||
# -*- sh -*-
|
||||
|
||||
DATA="/3diodes/data/"
|
||||
|
||||
cat <<EOT
|
||||
Content-type: text/html
|
||||
|
||||
|
|
@ -18,7 +16,7 @@ Content-type: text/html
|
|||
<li/><a href="rpirena?plot">Process</a> new data and show the plots. May time out for big files.
|
||||
<li/><a href="rpirena?trigger">Start processing</a> data, without waiting.
|
||||
<li/><a href="rpirena-control">RPiRENA control.</a>
|
||||
<li/><a href="${DATA}">Data Files.</a>
|
||||
<li/><a href="/data/">Data Files.</a>
|
||||
</ul>
|
||||
EOT
|
||||
|
||||
|
|
@ -132,11 +130,11 @@ set ylab "[counts/min]"
|
|||
set y2lab "p [mbar]"
|
||||
set term png
|
||||
set out "${cfn}-new"
|
||||
array CN[17] = ["T0", "-", "T2", "T3", "H0", "-", "H2", "H3", "X0", "X2", "X3", "C23", "C03", "C02", "C023", "L2", "L3"]
|
||||
array CN[13] = ["T0", "-", "T2", "T3", "X0", "X2", "X3", "C23", "C03", "C02", "C023", "L2", "L3"]
|
||||
plot \
|
||||
"<tail -n +8 ${pfn}.CP" u 23:22 axis x1y2 tit "p" w l lt 1, \
|
||||
for [c in "1 3 4 4 7 8"] "<tail -n +8 ${pfn}.CP" u 23:2+c tit "L_1[".(c-1)."]: ".CN[c+0] with l lt c+1, \
|
||||
for [c=9:16] "<tail -n +8 ${pfn}.CP" u 23:2+c tit "L_2[".(c-9)."]: ".CN[c+0] with steps lt c-3 lw 2
|
||||
"<tail -n +8 ${pfn}.CP" u 19:18 axis x1y2 tit "p" w l lt 1, \
|
||||
for [c in "1 3 4"] "<tail -n +8 ${pfn}.CP" u 19:2+c tit "L_1[".(c-1)."]: ".CN[c+0] with l lt c+1, \
|
||||
for [c=5:12] "<tail -n +8 ${pfn}.CP" u 19:2+c tit "L_2[".(c-5)."]: ".CN[c+0] with steps lt c-3 lw 2
|
||||
unset out
|
||||
|
||||
EOT
|
||||
|
|
@ -151,13 +149,13 @@ fi
|
|||
cat <<EOT
|
||||
<h3>File: $bfn</h3>
|
||||
<ul>
|
||||
<li><a href="${DATA}$bfn.CP">Count Rates</a>, <a href="/data/README.txt">README</a>
|
||||
<li><a href="${DATA}$bfn.HK">Housekeeping</a>
|
||||
<li><a href="${DATA}$bfn.EI">Raw Data</a>
|
||||
<li><a href="/data/$bfn.CP">Count Rates</a>, <a href="/data/README.txt">README</a>
|
||||
<li><a href="/data/$bfn.HK">Housekeeping</a>
|
||||
<li><a href="/data/$bfn.EI">Raw Data</a>
|
||||
</ul>
|
||||
<p/><img src="${DATA}$bfn-spectra.png"/>
|
||||
<p/><img src="${DATA}$bfn-hk.png"/>
|
||||
<p/><img src="${DATA}$bfn-counts.png"/>
|
||||
<p/><img src="/data/$bfn-spectra.png"/>
|
||||
<p/><img src="/data/$bfn-hk.png"/>
|
||||
<p/><img src="/data/$bfn-counts.png"/>
|
||||
|
||||
<h2>Older Spectra:</h2>
|
||||
<ul>
|
||||
|
|
@ -167,7 +165,7 @@ ls -r1 20??-??-??T??:??:??Z.EI | xargs -i echo '<li> <a href="rpirena?old&{}
|
|||
cat <<EOT
|
||||
</ul>
|
||||
|
||||
</p><img src="${DATA}IMG_5703-25.jpg"/>
|
||||
</p><img src="/data/IMG_5703-25.jpg"/>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -1,184 +0,0 @@
|
|||
#! /bin/bash
|
||||
# -*- sh -*-
|
||||
|
||||
DATA="/tanos/data/"
|
||||
|
||||
cat <<EOT
|
||||
Content-type: text/html
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<title>RPiRENA Data</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Live plots of TANOS-Jr on $(hostname)</h1>
|
||||
<ul>
|
||||
<li/><a href="rpirena?old">Show</a> the plots already processed (default).
|
||||
<li/><a href="rpirena?plot">Process</a> new data and show the plots. May time out for big files.
|
||||
<li/><a href="rpirena?trigger">Start processing</a> data, without waiting.
|
||||
<li/><a href="rpirena-control">RPiRENA control.</a>
|
||||
<li/><a href="${DATA}">Data Files.</a>
|
||||
</ul>
|
||||
EOT
|
||||
|
||||
exec 2>&1
|
||||
if [ -x ./rpirena.py ]
|
||||
then
|
||||
data=./data
|
||||
else
|
||||
data=../../www/data
|
||||
cd /home/$(hostname)/stephan/rpirena || exit
|
||||
fi
|
||||
lf=${data}/rpirena-cgi.log
|
||||
lkf=${data}/rpirena-cgi.lock
|
||||
|
||||
declare -a QUERY=(${QUERY_STRING//&/ })
|
||||
ACTION=${QUERY[0]}
|
||||
[ -z "$ACTION" ] && TARGET="" || TARGET=${QUERY[-1]}
|
||||
[ "$TARGET" = "$ACTION" ] && TARGET=""
|
||||
[ -z "$ACTION" ] && ACTION=old
|
||||
|
||||
echo "$REMOTE_ADDR $HTTP_USER_AGENT $QUERY_STRING $ACTION $TARGET" >>$lf
|
||||
[ -f "$lkf" ] && cat "$lkf" 2>/dev/null
|
||||
[ -z "$TARGET" ] || cat <<EOF
|
||||
<p/>Actions for the selected old data file:
|
||||
<a href="rpirena?plot&$TARGET">plot</a>
|
||||
<a href="rpirena?old&$TARGET">old</a>
|
||||
<a href="rpirena?trigger&$TARGET">trigger</a>
|
||||
<a href="rpirena?replot&$TARGET">replot</a>
|
||||
<a href="rpirena?nomake&$TARGET">nomake</a>
|
||||
EOF
|
||||
cat <<EOF
|
||||
<p/>Beware of the fake hwclock of the Raspberry Pi, the times in the filenames may be fake.
|
||||
<p/>You may need to reload the page in your browser to see the latest plots (Ctrl-Shift-R).
|
||||
EOF
|
||||
|
||||
if [ "$ACTION" = "trigger" ]
|
||||
then
|
||||
export QUERY_STRING="replot&$TARGET"
|
||||
nohup ../../www/cgi/rpirena > ${data}/rpirena-trigger.log 2>&1 &
|
||||
ACTION="old"
|
||||
fi
|
||||
if [ "$ACTION" = "restart" ]
|
||||
then
|
||||
echo restart > auto-run
|
||||
export ACTION="old"
|
||||
fi
|
||||
if [ "$ACTION" = "stop" ]
|
||||
then
|
||||
echo stop > auto-run
|
||||
export ACTION="old"
|
||||
fi
|
||||
|
||||
fn=${data}/$TARGET
|
||||
[ -f $fn ] || fn=$(ls -1 ${data}/20??-??-??T??:??:??Z.EI | tail -1)
|
||||
bfn=$(basename $fn .EI)
|
||||
pfn=${data}/$bfn
|
||||
sfn=${pfn}-spectra.png
|
||||
hfn=${pfn}-hk.png
|
||||
cfn=${pfn}-counts.png
|
||||
|
||||
REPLOT=$ACTION
|
||||
[ -f "$fn" -a "$fn" -nt "$sfn" -a "$ACTION" = "plot" ] && REPLOT=replot
|
||||
if [ -f "$fn" -a "$REPLOT" = "replot" ] && dotlockfile -r 0 $lkf
|
||||
then
|
||||
trap "rm $lkf" EXIT
|
||||
date +"Processing $bfn since %Y-%m-%d %H:%M:%S UTC" > $lkf
|
||||
|
||||
date +"Plot $bfn %Y-%m-%d %H:%M:%S" >>$lf
|
||||
|
||||
[ "$ACTION" = "nomake" ] || make UNIT=TANOS ${pfn}.EmV ${pfn}.hist ${pfn}.HK ${pfn}.CP >>$lf 2>&1
|
||||
|
||||
cat <<EOT | gnuplot >>$lf 2>&1
|
||||
|
||||
print "plot spectra"
|
||||
set title "$(hostname) RPiRENA $bfn" noenh
|
||||
set xrange [-10:160]
|
||||
set yrange [-10:160]
|
||||
set y2range [0.9:*]
|
||||
set log y2
|
||||
set ytics nomirror
|
||||
set y2tics
|
||||
set xlab "pulse height [mV]"
|
||||
set ylab "pulse height [mV]"
|
||||
set y2lab "[counts/mV]"
|
||||
set grid
|
||||
set timestamp "%Y-%m-%d %H:%M:%S"
|
||||
set term png size 1024,768
|
||||
set out "${sfn}-new"
|
||||
plot \
|
||||
"$pfn.EmV" u "AA":"CC" tit "A vs C" with d, \
|
||||
"$pfn.EmV" u "B1":"B2" tit "B_1 vs B_2" with d, \
|
||||
for [c in "AA CC B1 B2"] "$pfn.hist" u "mV":c axis x1y2 tit c w histeps
|
||||
unset out
|
||||
|
||||
print "plot HK"
|
||||
set xrange [*:*]
|
||||
set xtics timedate
|
||||
set format x "%d.%m.\n%Hh%M" time
|
||||
set yrange [0:10<*<100]
|
||||
set y2range [*:*]
|
||||
unset log y2
|
||||
set xlab "time [UTC]"
|
||||
set ylab "[V] [10nA]"
|
||||
set y2lab "[°C]"
|
||||
set term png
|
||||
set out "${hfn}-new"
|
||||
array HN[8] = [ "V_{CORE}", "V_{CC}", "V_{IO}", "V_{PRIM}", "T_{FPGA}", "T_{OUT}", "T_{EBOX}", "I_{BIAS}" ]
|
||||
plot \
|
||||
for [c=8:8] "<tail -n +25 ${pfn}.HK" u 2:(column(2+c)/10) axis x1y1 tit HN[c] with l lt c, \
|
||||
for [c=1:4] "<tail -n +25 ${pfn}.HK" u 2:2+c axis x1y1 tit HN[c] with l lt c lw 2, \
|
||||
for [c=5:7] "<tail -n +25 ${pfn}.HK" u 2:2+c axis x1y2 tit HN[c] with l lt c lw 2
|
||||
unset out
|
||||
|
||||
print "plot Counts"
|
||||
set yrange [0.9:*]
|
||||
set log y
|
||||
set xlab "time [UTC]"
|
||||
set ylab "[counts/min]"
|
||||
set log y2
|
||||
set y2lab "p [mbar]"
|
||||
set y2range [0.1<*:*<1100] noextend
|
||||
set term png
|
||||
set out "${cfn}-new"
|
||||
array CN[17] = ["B_2", "CC", "AA", "B_1", "B_2'", "CC'", "AA'", "B_1'", "B_1 AA CC", "B_1 only", "BB", "CC", "AA", "AA CC", "B_1 B_2", "L_3"]
|
||||
plot \
|
||||
for [c=1:4] "<tail -n +3 ${pfn}.CP" u 23:(column(2+c)*60./\$17) tit "L_1[".(c-1)."]: ".CN[c+0] with l lt c+1 lw 0.5, \
|
||||
for [c=9:16] "<tail -n +3 ${pfn}.CP" u 23:(column(2+c)*60./\$17) tit "L_2[".(c-5)."]: ".CN[c+0] with steps lt c-3 lw 1, \
|
||||
"<tail -n +3 ${pfn}.CP" u 23:22 axis x1y2 notit "pressure" with l lt 5 lw 2, \
|
||||
"<tail -n +3 ${pfn}.CP" u 23:22 axis x1y2 tit "pressure" with l lt 1 lw 0.8
|
||||
|
||||
unset out
|
||||
|
||||
EOT
|
||||
mv -v $sfn-new $sfn >>$lf 2>&1
|
||||
mv -v $hfn-new $hfn >>$lf 2>&1
|
||||
mv -v $cfn-new $cfn >>$lf 2>&1
|
||||
|
||||
rm -f $lkf
|
||||
trap EXIT
|
||||
fi
|
||||
|
||||
cat <<EOT
|
||||
<h3>File: $bfn</h3>
|
||||
<ul>
|
||||
<li><a href="${DATA}$bfn.CP">Count Rates</a>, <a href="/README.txt">README</a>
|
||||
<li><a href="${DATA}$bfn.HK">Housekeeping</a>
|
||||
<li><a href="${DATA}$bfn.EI">Raw Data</a>
|
||||
</ul>
|
||||
<p/><img src="${DATA}$bfn-spectra.png"/>
|
||||
<p/><img src="${DATA}$bfn-hk.png"/>
|
||||
<p/><img src="${DATA}$bfn-counts.png"/>
|
||||
|
||||
<h2>Older Spectra:</h2>
|
||||
<ul>
|
||||
EOT
|
||||
cd ${data}
|
||||
ls -r1 20??-??-??T??:??:??Z.EI | xargs -i echo '<li> <a href="rpirena?old&{}">{}</a>'
|
||||
cat <<EOT
|
||||
</ul>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
EOT
|
||||
Loading…
Add table
Add a link
Reference in a new issue