probe: use a more generic method for direction changes
diff --git a/src/probe.c b/src/probe.c
index 2c46a5c..0ec32be 100644
--- a/src/probe.c
+++ b/src/probe.c
@@ -129,12 +129,12 @@
 
 void probe_read_mode(void) {
     pio_sm_exec(pio0, PROBE_SM, pio_encode_jmp(probe.offset + probe_offset_in_posedge));
-    while(pio0->dbg_padoe & (1 << PROBE_PIN_SWDIO));
+    while(pio_sm_get_pc(pio0, PROBE_SM) != probe.offset + probe_offset_in_idle);
 }
 
 void probe_write_mode(void) {
     pio_sm_exec(pio0, PROBE_SM, pio_encode_jmp(probe.offset + probe_offset_out_negedge));
-    while(!(pio0->dbg_padoe & (1 << PROBE_PIN_SWDIO)));
+    while(pio_sm_get_pc(pio0, PROBE_SM) != probe.offset + probe_offset_out_idle);
 }
 
 void probe_gpio_init()
diff --git a/src/probe.pio b/src/probe.pio
index 4a242ba..e8e8683 100644
--- a/src/probe.pio
+++ b/src/probe.pio
@@ -28,6 +28,7 @@
 
 public out_negedge:
     set pindirs, 1 side 0x0 ; Init OE clock 0
+public out_idle:
     pull           ; Pull number of bits to shift -1 from tx fifo and put into output shift register
     mov x, osr     ; mov bits to shift -1 from output shift register into x
     pull           ; Pull data to shift out
@@ -40,6 +41,7 @@
 
 public in_posedge:
     set pindirs, 0 side 0x0 ; INIT IE clock 0
+public in_idle:
     pull                   ; Pull number of bits to shift -1 from tx fifo and put into output shift register
     mov x, osr             ; mov bits to shift -1 from output shift register into x into x
 in_posedge_bitloop: