annotate trigger.pio @ 26:336f06fa6e47

Add comment
author Daniel O'Connor <darius@dons.net.au>
date Tue, 25 Feb 2025 17:03:51 +1030
parents 6070d2e66b4c
children e1d8fe3e418a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
12
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
1 ;
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
2 ; Copyright (c) 2025 Daniel O'Connor
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
3 ;
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
4
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
5 .program trigger
24
c7845db23ab2 Add sideset for trigger output.
Daniel O'Connor <darius@dons.net.au>
parents: 12
diff changeset
6 .define DAC_TRIGGER_IRQ 0
c7845db23ab2 Add sideset for trigger output.
Daniel O'Connor <darius@dons.net.au>
parents: 12
diff changeset
7 .define CTRL_TRIGGER_IRQ 1
c7845db23ab2 Add sideset for trigger output.
Daniel O'Connor <darius@dons.net.au>
parents: 12
diff changeset
8 ; Use 1 side set pin for debugging
c7845db23ab2 Add sideset for trigger output.
Daniel O'Connor <darius@dons.net.au>
parents: 12
diff changeset
9 .side_set 1
12
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
10
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
11 .wrap_target
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
12 ; Wait for trigger to be low
24
c7845db23ab2 Add sideset for trigger output.
Daniel O'Connor <darius@dons.net.au>
parents: 12
diff changeset
13 wait 0 pin 0 side 0
12
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
14 ; Wait for rising edge
24
c7845db23ab2 Add sideset for trigger output.
Daniel O'Connor <darius@dons.net.au>
parents: 12
diff changeset
15 wait 1 pin 0 side 0
25
6070d2e66b4c Cascade IRQs from DAC to control so manual & external trigger are the same.
Daniel O'Connor <darius@dons.net.au>
parents: 24
diff changeset
16 ; Signal DAC SM (which will trigger the control one)
24
c7845db23ab2 Add sideset for trigger output.
Daniel O'Connor <darius@dons.net.au>
parents: 12
diff changeset
17 irq nowait DAC_TRIGGER_IRQ side 1
12
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
18 .wrap
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
19
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
20 % c-sdk {
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
21 static inline void trigger_program_init(PIO pio, uint sm, uint offset, uint pin, uint clkdiv) {
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
22 pio_sm_config c = trigger_program_get_default_config(offset);
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
23
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
24 // Configure SM input pin mapping to point to trigger pin
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
25 sm_config_set_in_pins(&c, pin);
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
26 // Set to input
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
27 pio_sm_set_consecutive_pindirs(pio, sm, pin, 1, false);
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
28 // Connect this GPIO to this PIO block
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
29 pio_gpio_init(pio, pin);
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
30
24
c7845db23ab2 Add sideset for trigger output.
Daniel O'Connor <darius@dons.net.au>
parents: 12
diff changeset
31 // Configure side pin mapping to point to debug pin
c7845db23ab2 Add sideset for trigger output.
Daniel O'Connor <darius@dons.net.au>
parents: 12
diff changeset
32 sm_config_set_sideset_pins(&c, pin + 1);
c7845db23ab2 Add sideset for trigger output.
Daniel O'Connor <darius@dons.net.au>
parents: 12
diff changeset
33 // Set to output
c7845db23ab2 Add sideset for trigger output.
Daniel O'Connor <darius@dons.net.au>
parents: 12
diff changeset
34 pio_sm_set_consecutive_pindirs(pio, sm, pin + 1, 1, true);
c7845db23ab2 Add sideset for trigger output.
Daniel O'Connor <darius@dons.net.au>
parents: 12
diff changeset
35 // Connect this GPIO to this PIO block
c7845db23ab2 Add sideset for trigger output.
Daniel O'Connor <darius@dons.net.au>
parents: 12
diff changeset
36 pio_gpio_init(pio, pin + 1);
c7845db23ab2 Add sideset for trigger output.
Daniel O'Connor <darius@dons.net.au>
parents: 12
diff changeset
37
12
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
38 sm_config_set_clkdiv(&c, clkdiv);
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
39
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
40 // Load our configuration, and start the program from the beginning
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
41 pio_sm_init(pio, sm, offset, &c);
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
42 pio_sm_set_enabled(pio, sm, true);
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
43 }
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
44 %}