Difference between revisions of "Trigger 393"

From ElphelWiki
Jump to: navigation, search
(Description)
(10389 trigger testing)
(One intermediate revision by the same user not shown)
Line 101: Line 101:
 
==<font color="blue">10389 trigger testing</font>==
 
==<font color="blue">10389 trigger testing</font>==
  
===external connector===
+
===External connector===
 
In this test the camera triggers itself via audio cable. For cable wiring see [[103891]].  
 
In this test the camera triggers itself via audio cable. For cable wiring see [[103891]].  
 
* To test:
 
* To test:
Line 115: Line 115:
 
|}
 
|}
  
===internal connectors===
+
===Internal connectors===
 
In this test the camera triggers itself via 4-pin flex cable.  
 
In this test the camera triggers itself via 4-pin flex cable.  
 
* Connect as displayed on the pictures below.
 
* Connect as displayed on the pictures below.
Line 134: Line 134:
 
|}
 
|}
  
 +
===Sync example: from external to internal (chaining)===
 +
* The simplest synchronization would be making a custom audio cable to sync all cameras in the system
 +
* In case there are multiple cameras in the same enclosure it might make sense to sync them by chaining using 4-pin flex cables
 +
{|
 +
|valign='top'|[[File:10389 sync example 1.jpeg|thumb|400px]]
 +
|}
  
  
 
[[Category:393]]
 
[[Category:393]]

Revision as of 08:46, 16 October 2018

Description

10389 board is required (and possible 103891).

Use cases:

  • Trigger a single camera from external source
  • Synchronize multiple cameras to a master camera or external trigger source
  • Program frame rate

The conditions of the trigger can be generated either internally or externally:

  • for external triggering a 103891 board and a 4-conductor 2.5mm audio plug with cable (example: digikey) is required.
  • for internal triggering use J4-J6 connectors with a 4-pin flex cable: J4 - internal trigger source (also transmits timestamps that can be decoded by other cameras), J5-6 - receive trigger

To program trigger go to: http://192.168.0.9/parsedit.php => External Trigger Controls

NOTE: Be careful with changing parameters when TRIG=4. Camera drivers are driven by the frame sync interrupts from the sensor, so if the sensor is not triggered - everything can get stuck. The Program Ahead value sets the number of frame sync interrupts the camera will wait wait for until a parameter is reprogrammed.

External Trigger Controls page

Parameters

parameter description
TRIG Trigger mode. 0x0 - free running, 0x4 - triggered by external signal or FPGA timing generator, 0x14 - triggered in GRR mode
TRIG_MASTER Master sensor_port (0..3) for triggering setup, other ports will have settings duplicated
TRIG_CONDITION FPGA trigger sequencer trigger condition, 0 - internal, else dibits: 00 - do not use, 01 - keep, 10 - active low, 11 - active high for each GPIO[9:0] pin). 10389 board inverts signals, so 0x80000 - input from external connector, 0x08000 - input from internal flex cable (as in Eyesis)
TRIG_DELAY FPGA trigger sequencer trigger delay, 32 bits in pixel clocks (100MHz or 10ns)
TRIG_OUT FPGA trigger sequencer trigger output to GPIO, dibits: 00 - do not use, 01 - keep, 10 - active low GPIO output, 11 - active high GPIO output. 10389 board inverts signals, so 0x02000 - output to external connector (active high), 0x20000 - output to internal flex connector
TRIG_PERIOD FPGA trigger sequencer output sync period (32 bits, in pixel clocks (100MHz or 10ns)). 0- stop. 1 - single, >=256 repetitive with specified period
TRIG_BITLENGTH Bit length minus 1 (in pixel clock cycles) when transmitting/receiving timestamps, without timestamps the output pulse width is 8*(TRIG_BITLENGTH+1). Legal values 2..255
EXTERN_TIMESTAMP When 1 camera will use external timestamp (received over inter-camera synchronization cable) if it is available (no action when external syncronization is not connected), when 0 - local timestamp will be used
XMIT_TIMESTAMP Specify output signal sent through internal/external connector (defined by TRIG_OUT). 0 - transmit just sync pulse (8*(TRIG_BITLENGTH+1) pixel clock periods long), 1 - pulse+timestamp 64*(TRIG_BITLENGTH+1) pixel clock periods long

Examples

Internal periodic trigger (10 fps, from fpga generator)

Internal periodic trigger (4 fps, from fpga generator) + output the signal to external port

External trigger receive

Recover from missing external trigger signal to internal trigger

Manual triggering from PC

Enable

http://192.168.0.9:2323/trig/pointers
  • TRIG=4 should be set in advance
  • The command automatically sets a single-shot trigger mode with TRIG_PERIOD=0x1, but it writes the register directly into the FPGA,

not updating the TRIG_PERIOD in the PHP interface:

http://192.168.0.9/parsedit.php?TRIG&TRIG_CONDITION&TRIG_DELAY&TRIG_OUT&TRIG_PERIOD&TRIG_BITLENGTH&EXTERN_TIMESTAMP&XMIT_TIMESTAMP&refresh

Trigger/Refresh

http://192.168.0.9:8081/trig/pointers

Check status

http://192.168.0.9/parsedit.php?immediate&TRIG&TRIG_PERIOD&SENS_AVAIL&FRAME

Disable

Update the TRIG_PERIOD in the current frame
Update the TRIG_PERIOD from the user interface
http://192.168.0.9:8081/trig/pointers


Links

  • 10389 extension board
  • 103891 adapter board for external trigger connection

10389 trigger testing

External connector

In this test the camera triggers itself via audio cable. For cable wiring see 103891.

  • To test:
- connect a sensor to port 0
- http://192.168.0.9/parsedit.php?sensor_port=0&immediate&TRIG_CONDITION=0&TRIG_OUT=0x66555&TRIG_PERIOD=25000000&TRIG=4
visual: LED is blinking
software: frame counter is running
  • It's easy to modify the cable to trigger itself and other multiple cameras.
10389 extsync selftest.jpeg

Internal connectors

In this test the camera triggers itself via 4-pin flex cable.

  • Connect as displayed on the pictures below.
    • J4 - trigger output (master port)
    • J5-J6 - trigger input (slave ports)
  • To test:
- connect a sensor to port 0
- http://192.168.0.9/parsedit.php?sensor_port=0&immediate&TRIG_CONDITION=0x8000&TRIG_OUT=0x66555&TRIG_PERIOD=25000000&TRIG=4
software: frame counter is running
  • To sync multiple camera, example:
cable 1: camera1 (J4) -> camera2 (J6)
cable 2: camera2 (J5) -> camera3 (J6)
cable 3: camera3 (J5) -> camera4 (J6)
etc.
10389 intsync selftest.jpeg
10389 intsync selftest closeup.jpeg

Sync example: from external to internal (chaining)

  • The simplest synchronization would be making a custom audio cable to sync all cameras in the system
  • In case there are multiple cameras in the same enclosure it might make sense to sync them by chaining using 4-pin flex cables
10389 sync example 1.jpeg