浜松ホトニクスc12880maをRaspberry Pi Pico、MicroPythonで使う(2)
浜松ホトニクスC12880MAのタイミングチャート。スタートパルス(ST)が1→0に落ちてから、88パルス目までをPIOで生成した後、PIOを停止。ビデオ信号はひたすら最速でADCで取り込む。多少遅れても取りこぼすことはないようである。

Video信号読み込み前のクロック生成
def accum_light(self, usec=250):
# accumulation of light
# The unit of usec is [micro sec].
THP_ST_pulse = int(usec / 10**6 * self.freq + 3 - 52)
TPI_ST = int( 40 / self.freq * 10**6 ) + usec
# State Machine reset
self.sm_reset()
self.sm.active(1)
self.sm.put(THP_ST_pulse) # The minimum pulse is 6.
self.sm.put(87)
time.sleep_us(TPI_ST)
self.sm.active(0)288個のVideo信号読み込み時のクロック生成(とADCによるデータ取得)。
def acquire(self, usec=250):
self.accum_light(usec)
clk = Pin(CLK_pin, Pin.OUT)
data = []
for i in range(288):
clk.value(1)
data.append(self.adc.read_u16())
clk.value(0)
# Terminate by sending 7 pulses after all data is acquired.
# This is not specified in the datasheet.
for i in range(7):
clk.value(1)
clk.value(0)
return(data)ちゃんと期待通り動くかオシロスコープで確認して完成としたいのである。


