diff --git a/ports/raspberrypi/common-hal/pulseio/PulseIn.c b/ports/raspberrypi/common-hal/pulseio/PulseIn.c index 71633fcef7..557cb090c7 100644 --- a/ports/raspberrypi/common-hal/pulseio/PulseIn.c +++ b/ports/raspberrypi/common-hal/pulseio/PulseIn.c @@ -40,7 +40,7 @@ #define MAX_PULSE 65535 #define MIN_PULSE 10 -uint16_t pulsein_program[] = { +static const uint16_t pulsein_program[] = { 0x4001, // 1: in pins, 1 }; @@ -57,29 +57,23 @@ void common_hal_pulseio_pulsein_construct(pulseio_pulsein_obj_t *self, self->start = 0; self->len = 0; - bool ok = rp2pio_statemachine_construct(&self->state_machine, - pulsein_program, sizeof(pulsein_program) / sizeof(pulsein_program[0]), - 1000000, - NULL, 0, - NULL, 0, - pin, 1, - 0,0, - NULL, 0, - NULL, 0, - 1, 0, - NULL, // jump pin - 1 << self->pin, false, true, - false, 8, false, // TX, unused - false, - true, 32, true, // RX auto-push every 32 bits - false, // claim pins - false, // Not user-interruptible. - false, // No sideset enable - 0, -1); // wrap settings - - if (!ok) { - mp_raise_RuntimeError(translate("All state machines in use")); - } + common_hal_rp2pio_statemachine_construct(&self->state_machine, + pulsein_program, MP_ARRAY_SIZE(pulsein_program), + 1000000, // frequency + NULL, 0, // init, init_len + NULL, 0, 0, 0, // first out pin, # out pins, initial_out_pin_state + pin, 1, 0, 0, // first in pin, # in pins + NULL, 0, 0, 0, // first set pin + NULL, 0, 0, 0, // first sideset pin + false, // No sideset enable + NULL, PULL_NONE, // jump pin, jmp_pull + 0, // wait gpio pins + true, // exclusive pin usage + false, 8, false, // TX, setting we don't use + false, // wait for TX stall + true, 32, true, // RX auto pull every 32 bits. shift left to output msb first + false, // Not user-interruptible. + 0, -1); // wrap settings pio_sm_set_enabled(self->state_machine.pio,self->state_machine.state_machine, false); pio_sm_clear_fifos(self->state_machine.pio,self->state_machine.state_machine);