Mercurial > ~darius > hgwebdir.cgi > modulator
annotate trigger.pio @ 24:c7845db23ab2
Add sideset for trigger output.
Trigger both SMs
author | Daniel O'Connor <darius@dons.net.au> |
---|---|
date | Tue, 25 Feb 2025 16:47:00 +1030 |
parents | 283955273884 |
children | 6070d2e66b4c |
rev | line source |
---|---|
12 | 1 ; |
2 ; Copyright (c) 2025 Daniel O'Connor | |
3 ; | |
4 | |
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 | 10 |
11 .wrap_target | |
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 | 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 |
c7845db23ab2
Add sideset for trigger output.
Daniel O'Connor <darius@dons.net.au>
parents:
12
diff
changeset
|
16 ; Signal other state machines |
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 |
c7845db23ab2
Add sideset for trigger output.
Daniel O'Connor <darius@dons.net.au>
parents:
12
diff
changeset
|
18 irq nowait CTRL_TRIGGER_IRQ side 1 |
12 | 19 .wrap |
20 | |
21 % c-sdk { | |
22 static inline void trigger_program_init(PIO pio, uint sm, uint offset, uint pin, uint clkdiv) { | |
23 pio_sm_config c = trigger_program_get_default_config(offset); | |
24 | |
25 // Configure SM input pin mapping to point to trigger pin | |
26 sm_config_set_in_pins(&c, pin); | |
27 // Set to input | |
28 pio_sm_set_consecutive_pindirs(pio, sm, pin, 1, false); | |
29 // Connect this GPIO to this PIO block | |
30 pio_gpio_init(pio, pin); | |
31 | |
24
c7845db23ab2
Add sideset for trigger output.
Daniel O'Connor <darius@dons.net.au>
parents:
12
diff
changeset
|
32 // 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
|
33 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
|
34 // Set to output |
c7845db23ab2
Add sideset for trigger output.
Daniel O'Connor <darius@dons.net.au>
parents:
12
diff
changeset
|
35 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
|
36 // Connect this GPIO to this PIO block |
c7845db23ab2
Add sideset for trigger output.
Daniel O'Connor <darius@dons.net.au>
parents:
12
diff
changeset
|
37 pio_gpio_init(pio, pin + 1); |
c7845db23ab2
Add sideset for trigger output.
Daniel O'Connor <darius@dons.net.au>
parents:
12
diff
changeset
|
38 |
12 | 39 sm_config_set_clkdiv(&c, clkdiv); |
40 | |
41 // Load our configuration, and start the program from the beginning | |
42 pio_sm_init(pio, sm, offset, &c); | |
43 pio_sm_set_enabled(pio, sm, true); | |
44 } | |
45 %} |