Compare commits
2 commits
31e5155586
...
a8c60193c6
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a8c60193c6 | ||
|
|
f399dcd2ad |
3 changed files with 68 additions and 55 deletions
118
dorn.py
118
dorn.py
|
|
@ -20,7 +20,7 @@ def HK_fmt(s, i, n, d):
|
|||
|
||||
def HK3_fmt(s, i, n, d):
|
||||
return f"""{i}. {n}
|
||||
T = {d[5]:6.2f} °C" Ibias = {d[0]:6.3f} V,
|
||||
T = {d[5]:6.2f} °C" GND = {d[0]:6.3f} V,
|
||||
Vff = {d[1]:6.3f} V, Vnn = {d[2]:6.3f} V, Vpp = {d[3]:6.3f} V, Vdig = {d[4]:6.3f} V,
|
||||
Vcc = {d[6]:6.3f} V, Vss = {d[7]:6.3f} V.
|
||||
"""
|
||||
|
|
@ -69,7 +69,7 @@ class DORN_CONFIG:
|
|||
)
|
||||
|
||||
HK3 = [[
|
||||
("Ibias", 10470/470 * 51/1051 * 100),
|
||||
("GND",),
|
||||
("Vff", 2.0),
|
||||
("Vnn", 2.5, ("Vpp", -1.5)),
|
||||
("Vpp", 2.0),
|
||||
|
|
@ -79,16 +79,36 @@ class DORN_CONFIG:
|
|||
("Vss", 2.5, ("Vcc", -1.5)),
|
||||
]]
|
||||
|
||||
HK4_AHBGO = [[
|
||||
("Tbgo₁", (degC, {})),
|
||||
("Tbgo₂", (degC, {})),
|
||||
("Vbias", -1/0.047),
|
||||
("Tbgo₃", (degC, {})),
|
||||
("Ibias₁", 10470/470 * 51/1051 * 100),
|
||||
("Ibias₂", 10470/470 * 51/1051 * 100),
|
||||
("Vss", 2.5, ("Vcc", -1.5)),
|
||||
("Vcc", 2.0),
|
||||
]]
|
||||
HK = [
|
||||
("INP₀", None, HK_fmt),
|
||||
("INP₁", None, HK_fmt),
|
||||
("INP₂", None, HK_fmt),
|
||||
("HK ADC", HK3, HK3_fmt),
|
||||
("HK PA", None, HK_fmt),
|
||||
("VrefL", None, HK_fmt),
|
||||
("VrefH", None, HK_fmt),
|
||||
("HK_PWR", None, HK_fmt),
|
||||
]
|
||||
|
||||
def n_adc(self):
|
||||
return self.n_channels//3
|
||||
|
||||
def Vref(self, slice=None):
|
||||
try:
|
||||
return self.VREF[slice]
|
||||
except:
|
||||
pass
|
||||
return 3.3
|
||||
|
||||
def n_trigs(self):
|
||||
if self.n_channels > 16:
|
||||
return self.n_adc()
|
||||
return self.n_channels
|
||||
|
||||
def m_trigs(self):
|
||||
return (1 << self.n_trigs()) - 1
|
||||
|
||||
NTC = [dict(R1=10e3, R25=10e3, B25=3940, res=0x1000)]
|
||||
|
||||
HK4_SETH = [
|
||||
[
|
||||
|
|
@ -115,20 +135,14 @@ class DORN_CONFIG:
|
|||
|
||||
HK7_SETH = [
|
||||
[
|
||||
("na₁",),
|
||||
("na₂",),
|
||||
("na₃",),
|
||||
("na₄",),
|
||||
("na₁",), ("na₂",), ("na₃",), ("na₄",),
|
||||
("Iprim", 2000.0),
|
||||
("Vprim", 16.3),
|
||||
("Tpwr", (degC, {})),
|
||||
("Ibias⁺", 100.0),
|
||||
],
|
||||
[
|
||||
("na₁",),
|
||||
("na₂",),
|
||||
("na₃",),
|
||||
("na₄",),
|
||||
("na₁",), ("na₂",), ("na₃",), ("na₄",),
|
||||
("Ibias", 100.0),
|
||||
("Vbias⁺", 100.0),
|
||||
("Text", (degC, {})),
|
||||
|
|
@ -136,42 +150,26 @@ class DORN_CONFIG:
|
|||
],
|
||||
]
|
||||
|
||||
HK = [
|
||||
("INP₀", None, HK_fmt),
|
||||
("INP₁", None, HK_fmt),
|
||||
("INP₂", None, HK_fmt),
|
||||
("HK ADC", HK3, HK3_fmt),
|
||||
("HK PA", HK4_AHBGO, HK4_AHBGO_fmt),
|
||||
("VrefL", None, HK_fmt),
|
||||
("VrefH", None, HK_fmt),
|
||||
("HK_PWR", None, HK_fmt),
|
||||
]
|
||||
|
||||
def n_adc(self):
|
||||
return self.n_channels//3
|
||||
|
||||
def Vref(self, slice=None):
|
||||
try:
|
||||
return self.VREF[slice]
|
||||
except:
|
||||
pass
|
||||
return 3.3
|
||||
|
||||
def n_trigs(self):
|
||||
if self.n_channels > 16:
|
||||
return self.n_adc()
|
||||
return self.n_channels
|
||||
|
||||
def m_trigs(self):
|
||||
return (1 << self.n_trigs()) - 1
|
||||
|
||||
NTC = [dict(R1=10e3, R25=10e3, B25=3940, res=0x1000)]
|
||||
|
||||
def seth(self):
|
||||
# ! change the class attribute
|
||||
# ! change the class attribute .HK
|
||||
self.HK[4] = ("HK PA", self.HK4_SETH, HK4_SETH_fmt)
|
||||
self.HK[7] = ("HK_PWR", self.HK7_SETH, HK7_SETH_fmt)
|
||||
|
||||
HK4_AHBGO = [[
|
||||
("Tbgo₁", (degC, {})),
|
||||
("Tbgo₂", (degC, {})),
|
||||
("Vbias", -1/0.047),
|
||||
("Tbgo₃", (degC, {})),
|
||||
("Ibias₁", 10470/470 * 51/1051 * 100),
|
||||
("Ibias₂", 10470/470 * 51/1051 * 100),
|
||||
("Vss", 2.5, ("Vcc", -1.5)),
|
||||
("Vcc", 2.0),
|
||||
]]
|
||||
|
||||
def ahbgo(self):
|
||||
# ! change the class attribute .HK
|
||||
self.HK[4] = ("HK PA", self.HK4_AHBGO, HK4_AHBGO_fmt)
|
||||
|
||||
CONFIG = DORN_CONFIG()
|
||||
|
||||
def hk(sl, what="print", data=None):
|
||||
|
|
@ -184,8 +182,20 @@ def hk(sl, what="print", data=None):
|
|||
time.sleep(0.1)
|
||||
fifo_read(sl=sl, hk=True)
|
||||
data=_ifc.read_fifo()
|
||||
if data[0] != 0x5710 + sl:
|
||||
raise ValueError("Read HK packet error", data)
|
||||
if data[0] != 0x5710 + sl:
|
||||
raise ValueError("Read HK packet error", data)
|
||||
if isinstance(data, str):
|
||||
# HDORN … data line
|
||||
if "x" in data:
|
||||
return
|
||||
data = data.split()
|
||||
if data[0] != "HDORN":
|
||||
return
|
||||
data = list(map(int, data[1:]))
|
||||
if sl is None:
|
||||
sl = data[0] & 3;
|
||||
if data[0] & 3 != sl:
|
||||
return None
|
||||
if what=="data":
|
||||
return data
|
||||
ND = CONFIG.n_adc()
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -49,11 +49,14 @@ def aenable(sl=None, hk=True, ev=True, **aa):
|
|||
|
||||
if __name__=="__main__":
|
||||
ifc,_oo = armlib.init_irena(scope = globals(), name = "AHEPAM", prod = (0xee0c,),
|
||||
long_options=["seth"])
|
||||
long_options=["seth", "ahbgo"])
|
||||
for o,v in _oo[0]:
|
||||
if o=="--seth":
|
||||
dorn.CONFIG.seth()
|
||||
armlib.set_prompt("SETH")
|
||||
if o=="--ahbgo":
|
||||
dorn.CONFIG.ahbgo()
|
||||
armlib.set_prompt("AHBGO")
|
||||
ifc._stream_fifos = 'hk1/f1/f2/f3'
|
||||
if ifc.is_a("USB"):
|
||||
findnmahepam()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue