User Tools

Site Tools


sequencer

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
sequencer [2016/05/24 14:59]
vik [Sequencer Timing Performance]
sequencer [2016/10/04 15:13] (current)
Line 51: Line 51:
 The BLOCK state logic structure is shown in the illustration below. The BLOCK state logic structure is shown in the illustration below.
  
-[{{ :​documentation:​sequencer_flowchart.png?​direct&​300 |Figure 1:  BLOCK logic structure.}}]+[{{ sequencer_flowchart.png?​direct&​300 |Figure 1:  BLOCK logic structure.}}]
    
 BLOCKs are defined with the BLK command with syntax and parameter values: BLOCKs are defined with the BLK command with syntax and parameter values:
Line 68: Line 68:
 The transitions points in the BLOCK sequence progression can be used as conditions to start, repeat, stop, step, or reset other sequencer components. ​ Blocks spend most of their time either IDLE, waiting for a REPEAT condition, or timing out a programmed DELAY.  ​ The transitions points in the BLOCK sequence progression can be used as conditions to start, repeat, stop, step, or reset other sequencer components. ​ Blocks spend most of their time either IDLE, waiting for a REPEAT condition, or timing out a programmed DELAY.  ​
  
-[{{ :​documentation:​basic_block_sequence_execution.png?​direct&​300 |Figure 2: Basic BLOCK sequence execution.}}] ​+[{{ basic_block_sequence_execution.png?​direct&​300 |Figure 2: Basic BLOCK sequence execution.}}] ​
  
 Transition states in one block can be used to place another block in a transition state. ​ There is the potential that several transitions states must be quickly processed in one time step.  Up to six simultaneous transition states may be processed before a recursion error is flagged. Transition states in one block can be used to place another block in a transition state. ​ There is the potential that several transitions states must be quickly processed in one time step.  Up to six simultaneous transition states may be processed before a recursion error is flagged.
Line 291: Line 291:
 Even though BLK3 only has 2 repetitions,​ we get a total of three filter change pulses and Z-series because we changed the BLK1 start condition to be when BLK3 starts as well as when it repeats. ​ When doing this interactively,​ only the first two parameters need to be typed in; the rest will remain unchanged. ​ In this way, it is possible to setup the inner sequence structure and test it with the @ button trigger. ​ When that block is working as desired, you can set up another control block with a repeat condition that can be used to start the first (inner) sequence.  ​ Even though BLK3 only has 2 repetitions,​ we get a total of three filter change pulses and Z-series because we changed the BLK1 start condition to be when BLK3 starts as well as when it repeats. ​ When doing this interactively,​ only the first two parameters need to be typed in; the rest will remain unchanged. ​ In this way, it is possible to setup the inner sequence structure and test it with the @ button trigger. ​ When that block is working as desired, you can set up another control block with a repeat condition that can be used to start the first (inner) sequence.  ​
  
-[{{ :​documentation:​seq_timing.png?​direct&​300 |Figure 3: Oscillogram generated by the Sequencer Timing as Master example.}}]+[{{ seq_timing.png?​direct&​300 |Figure 3: Oscillogram generated by the Sequencer Timing as Master example.}}]
    
  
Line 312: Line 312:
 TTL3 8,​1,​0,​6,​1,​0,​1 ​ The pulse goes high when Block 1 STARTs and goes low again when Block 1 is COMPLETE. TTL3 8,​1,​0,​6,​1,​0,​1 ​ The pulse goes high when Block 1 STARTs and goes low again when Block 1 is COMPLETE.
  
-[{{ :​documentation:​seq_timing2.png?​direct&​300 |Figure 4: Oscillogram generated by Camera as Master example.}}] ​+[{{ seq_timing2.png?​direct&​300 |Figure 4: Oscillogram generated by Camera as Master example.}}] ​
  
 ===== Incorporating XY Stage Positions ===== ===== Incorporating XY Stage Positions =====
Line 340: Line 340:
 ''​AVO1 0,​0,​0,​6,​4,​5000,​0''​ The LST statement above controls AVO1 except for the RESET voltage, set here. ''​AVO1 0,​0,​0,​6,​4,​5000,​0''​ The LST statement above controls AVO1 except for the RESET voltage, set here.
  
-[{{ :​documentation:​seq_timing3.png?​direct&​300 |Figure 5: Timing for one position of XY ARRAY example.}}] ​+[{{ seq_timing3.png?​direct&​300 |Figure 5: Timing for one position of XY ARRAY example.}}] ​
  
-To start this sequence, the master timing loop is waiting for the ARRAY_MOVE_DONE condition. ​ This is condition is satisfied whenever an array move is complete, or once the ARRAY task starts, the stage is in position at the first XY location. ​ The ARRAY task can be started with either the command [[documentation:​commands:​rbmode|RM X=0]], or with a long-press of the **@** button. ​  The timing to request the controller to move to the next XY position is established with BLK4.  The block starts on the second (last) repetition of BLK3 – roughly at the beginning of the last series of Z-moves – and completes when the Z-moves and camera triggers are done.  The waveform on TTL3 shows the timing, and the END ACTION for BLK4 specifies the ACTION_ARRAY_NEXT_POSITION.+To start this sequence, the master timing loop is waiting for the ARRAY_MOVE_DONE condition. ​ This is condition is satisfied whenever an array move is complete, or once the ARRAY task starts, the stage is in position at the first XY location. ​ The ARRAY task can be started with either the command [[commands:​rbmode|RM X=0]], or with a long-press of the **@** button. ​  The timing to request the controller to move to the next XY position is established with BLK4.  The block starts on the second (last) repetition of BLK3 – roughly at the beginning of the last series of Z-moves – and completes when the Z-moves and camera triggers are done.  The waveform on TTL3 shows the timing, and the END ACTION for BLK4 specifies the ACTION_ARRAY_NEXT_POSITION.
  
 ===== Debugging Sequence Programming ===== ===== Debugging Sequence Programming =====
sequencer.txt · Last modified: 2016/10/04 15:13 (external edit)