No changes between revisions
/Designs/Measuring_instruments/RMDS02C/SW/Host_controller/setSi570.py
0,0 → 1,48
#!/usr/bin/python
#
# Utility for setting frequency of Si570 without a frequency measurement.
# The factory calibration is used for changing the frequency.
# This utility reset the Si570 to factory default 10 MHz first and than set a new frequency.
#
# This utility use an USBI2C01A module.
# (c) MLAB 2014
 
import time
import datetime
import sys
from pymlab import config
 
#### Script Arguments ###############################################
 
if (len(sys.argv) != 3):
sys.stderr.write("Invalid number of arguments.\n")
sys.stderr.write("Usage: %s PORT_ADDRESS/0 REQUIERED_MHz\n" % (sys.argv[0], ))
sys.exit(1)
 
port = eval(sys.argv[1])
#### Sensor Configuration ###########################################
 
cfg = config.Config(
port = port,
bus = [
{
"type": "i2chub",
"address": 0x70,
"children": [
{ "name":"clkgen", "type":"clkgen01", "channel": 5, },
],
},
],
)
cfg.initialize()
 
fgen = cfg.get_device("clkgen")
sys.stdout.write("Frequency will be set to " + sys.argv[2] + " MHz.\r\n")
fgen.reset() # Reset Si570 to 10 MHz
time.sleep(3)
fgen = cfg.get_device("clkgen") # Reopen CP2112
fgen.set_freq(10., float(eval(sys.argv[2]))) # Set frequency
sys.stdout.write("Done.\r\n")
sys.stdout.flush()
sys.exit(0)
 
/Designs/Measuring_instruments/RMDS02C/SW/Host_controller/frequency_log.py
0,0 → 1,76
#!/usr/bin/python
#
# Sample of measiring and correct frequency with ACOUNTER02A
 
import time
import datetime
import sys
from pymlab import config
 
#### Script Arguments ###############################################
 
if (len(sys.argv) > 3) or (len(sys.argv) < 2):
sys.stderr.write("Invalid number of arguments.\n")
sys.stderr.write("Usage: %s PORT_ADDRESS [REQUIERED_MHz]\n" % (sys.argv[0], ))
sys.exit(1)
 
port = eval(sys.argv[1])
#### Sensor Configuration ###########################################
 
cfg = config.Config(
port = port,
bus = [
{
"type": "i2chub",
"address": 0x70,
"children": [
{ "name":"counter", "type":"acount02", "channel": 2, },
{ "name":"clkgen", "type":"clkgen01", "channel": 5, },
],
},
],
)
cfg.initialize()
 
print "Frequency counter readout example \r\n"
fcount = cfg.get_device("counter")
fgen = cfg.get_device("clkgen")
time.sleep(0.5)
frequency = fcount.get_freq()
rfreq = fgen.get_rfreq()
hsdiv = fgen.get_hs_div()
n1 = fgen.get_n1_div()
fdco = 0
fxtal = 0
regs = [0, 0, 0]
 
 
#### Data Logging ###################################################
 
try:
with open("frequency.log", "a") as f:
while True:
now = datetime.datetime.now()
if (now.second == 15) or (now.second == 35) or (now.second == 55):
frequency = fcount.get_freq()
if (len(sys.argv) == 3):
regs = fgen.set_freq(frequency/1e6, float(eval(sys.argv[2])))
now = datetime.datetime.now()
 
rfreq = fgen.get_rfreq()
hsdiv = fgen.get_hs_div()
n1 = fgen.get_n1_div()
fdco = (frequency/1e6) * hsdiv * n1
fxtal = fdco / rfreq
 
sys.stdout.write("frequency: " + str(frequency) + " Hz Time: " + str(now.second))
sys.stdout.write(" RFREQ: " + str(rfreq) + " HSDIV: " + str(hsdiv) + " N1: " + str(n1))
sys.stdout.write(" fdco: " + str(fdco) + " fxtal: " + str(fxtal) + "\r")
f.write("%d\t%s\t%.3f\n" % (time.time(), datetime.datetime.now().isoformat(), frequency))
 
sys.stdout.flush()
time.sleep(0.9)
except KeyboardInterrupt:
sys.stdout.write("\r\n")
sys.exit(0)
f.close()
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/Designs/Measuring_instruments/RMDS02C/SW/Host_controller/plot.gp
0,0 → 1,12
set terminal png size 800,640
 
set output "Frequency_time.png"
set xdata time
set timefmt "%s"
set format x "%H:%M:%S"
set key under
set xlabel "Time"
set ylabel "Freq deviation [Hz]"
f0=140000000
plot "temperature.log" using 1:($3-f0) with linespoints title "CLKGEN01B 140 MHz"