Skip to content

Commit c054589

Browse files
authored
Merge pull request #27 from dihm/improved_gpio_init
Prevent blanking of all outputs when manual programming
2 parents 783634d + 20328ab commit c054589

File tree

1 file changed

+17
-5
lines changed

1 file changed

+17
-5
lines changed

prawnblaster/prawnblaster.cpp

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,9 @@ PIO pio_to_use;
6868
static mutex_t status_mutex;
6969
static mutex_t wait_mutex;
7070

71+
// SIO GPIO init status
72+
int gpio_inited = 0;
73+
7174
// STATUS flag
7275
int status;
7376
#define STOPPED 0
@@ -667,12 +670,17 @@ void core1_entry()
667670

668671
void configure_gpio()
669672
{
670-
configure_missing_pins();
671-
// initialise output pin. Needs to be done after state machine has run
672-
for (int i = 0; i < num_pseudoclocks_in_use; i++)
673+
if (!gpio_inited)
673674
{
674-
gpio_init(OUT_PINS[i]);
675-
gpio_set_dir(OUT_PINS[i], GPIO_OUT);
675+
configure_missing_pins();
676+
// initialise output pin. Needs to be done after state machine has run
677+
for (int i = 0; i < num_pseudoclocks_in_use; i++)
678+
{
679+
gpio_init(OUT_PINS[i]);
680+
gpio_set_dir(OUT_PINS[i], GPIO_OUT);
681+
}
682+
// update inited state
683+
gpio_inited = 1;
676684
}
677685
}
678686

@@ -1032,6 +1040,8 @@ void loop()
10321040
multicore_fifo_push_blocking(1);
10331041
// update status
10341042
set_status(TRANSITION_TO_RUNNING);
1043+
// update gpio inited status
1044+
gpio_inited = 0;
10351045
fast_serial_printf("ok\r\n");
10361046
}
10371047
else if ((strncmp(readstring, "start", 5) == 0))
@@ -1046,6 +1056,8 @@ void loop()
10461056
multicore_fifo_push_blocking(0);
10471057
// update status
10481058
set_status(TRANSITION_TO_RUNNING);
1059+
// update gpio inited status
1060+
gpio_inited = 0;
10491061
fast_serial_printf("ok\r\n");
10501062
}
10511063
// TODO: update this to support pseudoclock selection

0 commit comments

Comments
 (0)