Loading py393/x393_sensor.py +81 −37 Original line number Diff line number Diff line Loading @@ -2046,7 +2046,7 @@ input mem mtd4 ram1 self.x393_axi_tasks.write_control_register(base_addr + vrlg.MCNTRL_SCANLINE_MODE, mode) def test_hispi_phases(self,num_sensor): def hispi_phases_adjust(self,num_sensor): """ Try to adjust phases @param num_sensor - sensor port number (0..3) Loading @@ -2070,7 +2070,7 @@ input mem mtd4 ram1 value = 0 count = 0 for j in range(n): for i in range(n): # reset bits thp_reset_flags(num_sensor) Loading @@ -2078,7 +2078,14 @@ input mem mtd4 ram1 barrel = (status>>14)&0xff barrel = (barrel>>(2*shift))&0x3 print(str(barrel)+" ",end='') for j in range(4): v = (status>>14)&0xff v = (v>>(2*(3-j)))&0x3 print(str(v),end='') print(".",end='') #print(str(barrel)+" ",end='') return barrel Loading @@ -2088,16 +2095,19 @@ input mem mtd4 ram1 shift = shift*3 switched = False start = 0 stop = 0 count = 0 value = 0 i1 = 0 i2 = 0 im = 0 for i in range(16): if (i==8): if (i==0): phase0 += 0x4000 print("| ",end='') if (i==8): phase0 -= 0x4000 print("| ",end="") # set phase phase = phase0+((i%8)<<shift) Loading @@ -2109,28 +2119,36 @@ input mem mtd4 ram1 barrel = thp_read_flags(num_sensor,bitshift) if i==0: if ((i==0)or(i==8)): value = barrel if i==8: if not switched: start = 0 count = 8 if (i<8 and i!=0): if value!=barrel: switched = False else: if (value!=barrel): if i<8: if not switched: switched = True value = barrel i1 = i else: print("Unexpected phase shift at "+str(i)) else: if not switched: count += 1 switched = True value = barrel i2 = i else: print("Unexpected phase shift at "+str(i)) i1 = i1&0x7 i2 = i2&0x7 if i>=8: if value==barrel: count += 1 if (abs(i2-i1)<2): print("Error?") print("") return [start,count] target_phase = phase0 + (i1<<shift) thp_set_phase(num_sensor,target_phase) return target_phase chn = num_sensor Loading @@ -2151,22 +2169,48 @@ input mem mtd4 ram1 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 phase0 = thp_run(num_sensor,phase0,i,i) 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") print("Done") def hispi_test_i2c_write(self,num_sensor): """ Test i2c writes @param num_sensor - sensor port number (0..3) """ for i in range(10000000): if (i%10000==0): print("iteration: "+str(i)) fname = "/sys/devices/soc0/elphel393-sensor-i2c@0/i2c"+str(num_sensor) val = str(hex(0x8000+(i&0xfff))) f = open(fname,'w') f.write("mt9f002 0 0x31c0 "+val) f.close() #time.sleep(0.5) # initiate read f = open(fname,'w') f.write("mt9f002 0 0x31c0") f.close() # read f = open(fname,'r') res = int(f.read()) f.close() if (res!=int(val,0)): print(res+" vs "+val) break Loading Loading
py393/x393_sensor.py +81 −37 Original line number Diff line number Diff line Loading @@ -2046,7 +2046,7 @@ input mem mtd4 ram1 self.x393_axi_tasks.write_control_register(base_addr + vrlg.MCNTRL_SCANLINE_MODE, mode) def test_hispi_phases(self,num_sensor): def hispi_phases_adjust(self,num_sensor): """ Try to adjust phases @param num_sensor - sensor port number (0..3) Loading @@ -2070,7 +2070,7 @@ input mem mtd4 ram1 value = 0 count = 0 for j in range(n): for i in range(n): # reset bits thp_reset_flags(num_sensor) Loading @@ -2078,7 +2078,14 @@ input mem mtd4 ram1 barrel = (status>>14)&0xff barrel = (barrel>>(2*shift))&0x3 print(str(barrel)+" ",end='') for j in range(4): v = (status>>14)&0xff v = (v>>(2*(3-j)))&0x3 print(str(v),end='') print(".",end='') #print(str(barrel)+" ",end='') return barrel Loading @@ -2088,16 +2095,19 @@ input mem mtd4 ram1 shift = shift*3 switched = False start = 0 stop = 0 count = 0 value = 0 i1 = 0 i2 = 0 im = 0 for i in range(16): if (i==8): if (i==0): phase0 += 0x4000 print("| ",end='') if (i==8): phase0 -= 0x4000 print("| ",end="") # set phase phase = phase0+((i%8)<<shift) Loading @@ -2109,28 +2119,36 @@ input mem mtd4 ram1 barrel = thp_read_flags(num_sensor,bitshift) if i==0: if ((i==0)or(i==8)): value = barrel if i==8: if not switched: start = 0 count = 8 if (i<8 and i!=0): if value!=barrel: switched = False else: if (value!=barrel): if i<8: if not switched: switched = True value = barrel i1 = i else: print("Unexpected phase shift at "+str(i)) else: if not switched: count += 1 switched = True value = barrel i2 = i else: print("Unexpected phase shift at "+str(i)) i1 = i1&0x7 i2 = i2&0x7 if i>=8: if value==barrel: count += 1 if (abs(i2-i1)<2): print("Error?") print("") return [start,count] target_phase = phase0 + (i1<<shift) thp_set_phase(num_sensor,target_phase) return target_phase chn = num_sensor Loading @@ -2151,22 +2169,48 @@ input mem mtd4 ram1 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 phase0 = thp_run(num_sensor,phase0,i,i) 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") print("Done") def hispi_test_i2c_write(self,num_sensor): """ Test i2c writes @param num_sensor - sensor port number (0..3) """ for i in range(10000000): if (i%10000==0): print("iteration: "+str(i)) fname = "/sys/devices/soc0/elphel393-sensor-i2c@0/i2c"+str(num_sensor) val = str(hex(0x8000+(i&0xfff))) f = open(fname,'w') f.write("mt9f002 0 0x31c0 "+val) f.close() #time.sleep(0.5) # initiate read f = open(fname,'w') f.write("mt9f002 0 0x31c0") f.close() # read f = open(fname,'r') res = int(f.read()) f.close() if (res!=int(val,0)): print(res+" vs "+val) break Loading