annotate trigger.pio @ 12:283955273884

Add trigger PIO file
author Daniel O'Connor <darius@dons.net.au>
date Mon, 24 Feb 2025 17:27:20 +1030
parents
children c7845db23ab2
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
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
6 .define TRIGGER_IRQ 0
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
7
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
8 .wrap_target
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
9 ; Wait for trigger to be low
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
10 wait 0 pin 0
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
11 ; Wait for rising edge
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
12 wait 1 pin 0
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
13 ; Signal other state machine
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
14 irq nowait TRIGGER_IRQ
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
15 .wrap
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
16
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
17 % c-sdk {
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
18 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
19 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
20
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
21 // 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
22 sm_config_set_in_pins(&c, pin);
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
23 // Set to input
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
24 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
25 // Connect this GPIO to this PIO block
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
26 pio_gpio_init(pio, pin);
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
27
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
28 sm_config_set_clkdiv(&c, clkdiv);
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
29
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
30 // 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
31 pio_sm_init(pio, sm, offset, &c);
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
32 pio_sm_set_enabled(pio, sm, true);
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
33 }
283955273884 Add trigger PIO file
Daniel O'Connor <darius@dons.net.au>
parents:
diff changeset
34 %}