浜松ホトニクス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) | 
ちゃんと期待通り動くかオシロスコープで確認して完成としたいのである。


