浜松ホトニクスc12880maをRaspberry Pi Pico、MicroPythonで使う(2)

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

ミニ分光器 C12880MA テクニカルシート より

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)

ちゃんと期待通り動くかオシロスコープで確認して完成としたいのである。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA