浜松ホトニクスc12880maをRaspberry Pi Pico、MicroPythonで使う(2)
浜松ホトニクスC12880MAのタイミングチャート。スタートパルス(ST)が1→0に落ちてから、88パルス目までをPIOで生成した後、PIOを停止。ビデオ信号はひたすら最速でADCで取り込む。多少遅れても取りこぼすことはないようである。
Video信号読み込み前のクロック生成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
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によるデータ取得)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
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) |
ちゃんと期待通り動くかオシロスコープで確認して完成としたいのである。