Skip to content

Commit 893fc66

Browse files
committed
Use common_hal_rp2pio_statemachine_construct for PulseIn
1 parent 6f4f7e0 commit 893fc66

File tree

1 file changed

+18
-24
lines changed
  • ports/raspberrypi/common-hal/pulseio

1 file changed

+18
-24
lines changed

ports/raspberrypi/common-hal/pulseio/PulseIn.c

Lines changed: 18 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
#define MAX_PULSE 65535
4141
#define MIN_PULSE 10
4242

43-
uint16_t pulsein_program[] = {
43+
static const uint16_t pulsein_program[] = {
4444
0x4001, // 1: in pins, 1
4545
};
4646

@@ -57,29 +57,23 @@ void common_hal_pulseio_pulsein_construct(pulseio_pulsein_obj_t *self,
5757
self->start = 0;
5858
self->len = 0;
5959

60-
bool ok = rp2pio_statemachine_construct(&self->state_machine,
61-
pulsein_program, sizeof(pulsein_program) / sizeof(pulsein_program[0]),
62-
1000000,
63-
NULL, 0,
64-
NULL, 0,
65-
pin, 1,
66-
0,0,
67-
NULL, 0,
68-
NULL, 0,
69-
1, 0,
70-
NULL, // jump pin
71-
1 << self->pin, false, true,
72-
false, 8, false, // TX, unused
73-
false,
74-
true, 32, true, // RX auto-push every 32 bits
75-
false, // claim pins
76-
false, // Not user-interruptible.
77-
false, // No sideset enable
78-
0, -1); // wrap settings
79-
80-
if (!ok) {
81-
mp_raise_RuntimeError(translate("All state machines in use"));
82-
}
60+
common_hal_rp2pio_statemachine_construct(&self->state_machine,
61+
pulsein_program, MP_ARRAY_SIZE(pulsein_program),
62+
1000000, // frequency
63+
NULL, 0, // init, init_len
64+
NULL, 0, 0, 0, // first out pin, # out pins, initial_out_pin_state
65+
pin, 1, 0, 0, // first in pin, # in pins
66+
NULL, 0, 0, 0, // first set pin
67+
NULL, 0, 0, 0, // first sideset pin
68+
false, // No sideset enable
69+
NULL, PULL_NONE, // jump pin, jmp_pull
70+
0, // wait gpio pins
71+
true, // exclusive pin usage
72+
false, 8, false, // TX, setting we don't use
73+
false, // wait for TX stall
74+
true, 32, true, // RX auto pull every 32 bits. shift left to output msb first
75+
false, // Not user-interruptible.
76+
0, -1); // wrap settings
8377

8478
pio_sm_set_enabled(self->state_machine.pio,self->state_machine.state_machine, false);
8579
pio_sm_clear_fifos(self->state_machine.pio,self->state_machine.state_machine);

0 commit comments

Comments
 (0)