Commit 17dd79cf authored by Andrey Filippov's avatar Andrey Filippov

Merge branch 'master' of git@git.elphel.com:Elphel/x393.git

parents 5a9a6342 cca9678b
......@@ -42,6 +42,9 @@ import x393_utils
import time
import vrlg
import x393_mcntrl
import subprocess
#import x393_sens_cmprs
SENSOR_INTERFACE_PARALLEL = "PAR12"
SENSOR_INTERFACE_HISPI = "HISPI"
......@@ -2041,5 +2044,160 @@ input mem mtd4 ram1
((window_top & 0xffff) << 16) | (window_left & 0xffff)) #WINDOW_X0+ (WINDOW_Y0<<16));
self.x393_axi_tasks.write_control_register(base_addr + vrlg.MCNTRL_SCANLINE_WINDOW_STARTXY, 0)
self.x393_axi_tasks.write_control_register(base_addr + vrlg.MCNTRL_SCANLINE_MODE, mode)
def test_hispi_phases(self,num_sensor):
"""
Try to adjust phases
@param num_sensor - sensor port number (0..3)
"""
def thp_set_phase(num_sensor,phase):
path = "/sys/devices/soc0/elphel393-sensor-i2c@0/i2c"+str(num_sensor)
f = open(path,'w')
f.write("mt9f002 0 0x31c0 "+str(phase))
f.close()
def thp_reset_flags(num_sensor):
self.x393_axi_tasks.write_control_register(0x40e+0x40*num_sensor,0x0)
#self.x393_axi_tasks.write_control_register(0x40f+0x40*num_sensor,0x0)
def thp_read_flags(num_sensor,shift):
# read a few times
n = 1
switched = False
value = 0
count = 0
for j in range(n):
# reset bits
thp_reset_flags(num_sensor)
status = int(self.x393_axi_tasks.read_status(0x21+2*num_sensor) & 0x01ffffff)
barrel = (status>>14)&0xff
barrel = (barrel>>(2*shift))&0x3
print(str(barrel)+" ",end='')
return barrel
def thp_run(num_sensor,phase0,shift,bitshift):
shift = shift*3
switched = False
start = 0
stop = 0
count = 0
value = 0
for i in range(16):
if (i==8):
phase0 += 0x4000
print("| ",end='')
# set phase
phase = phase0+((i%8)<<shift)
thp_set_phase(num_sensor,phase)
phase_read = int(self.print_sensor_i2c(num_sensor,0x31c0,0xff,0x10,0))
if phase_read!=phase:
print("ERROR: phase_read ("+("{:04x}".format(phase_read))+") != phase ("+("{:04x}".format(phase))+")")
barrel = thp_read_flags(num_sensor,bitshift)
if i==0:
value = barrel
if i==8:
if not switched:
start = 0
count = 8
if (i<8 and i!=0):
if value!=barrel:
if not switched:
switched = True
else:
if not switched:
count += 1
if i>=8:
if value==barrel:
count += 1
print("")
return [start,count]
chn = num_sensor
print("Test HiSPI phases")
# check status register
status_reg = self.x393_axi_tasks.read_control_register(0x409+0x40*chn)
if (status_reg==0):
print("Programming status register")
self.x393_axi_tasks.write_control_register(0x409+0x40*chn,0xc0)
status_reg = self.x393_axi_tasks.read_control_register(0x409+0x40*chn)
print("Status register: "+hex(self.x393_axi_tasks.read_control_register(0x409+0x40*chn)))
phase0 = 0x8000
for i in range(4):
print("")
print("D"+str(i))
res = thp_run(num_sensor,phase0,i,i)
phase = ((res[0]+(res[1]>>1))%8)<<(3*i)
phase0 += phase
print("Updated phase = 0x"+"{:04x}".format(phase0))
print("i = "+str(res[0])+" count = "+str(res[1]))
if (res[1]<2):
print("ERROR_D"+str(i))
print("Done")
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment