Skip to content

Commit 6097afd

Browse files
authored
Merge pull request #4559 from jepler/rp2-rotary-encoder-fixes
raspberrypi: Several rotary encoder fixes
2 parents e532e6a + 1a2ce27 commit 6097afd

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

ports/raspberrypi/common-hal/rotaryio/IncrementalEncoder.c

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,11 @@ void common_hal_rotaryio_incrementalencoder_construct(rotaryio_incrementalencode
6161
const mcu_pin_obj_t *pin_a, const mcu_pin_obj_t *pin_b) {
6262
mp_obj_t pins[] = {MP_OBJ_FROM_PTR(pin_a), MP_OBJ_FROM_PTR(pin_b)};
6363
if (!common_hal_rp2pio_pins_are_sequential(2, pins)) {
64-
mp_raise_RuntimeError(translate("Pins must be sequential"));
64+
pins[0] = MP_OBJ_FROM_PTR(pin_b);
65+
pins[1] = MP_OBJ_FROM_PTR(pin_a);
66+
if (!common_hal_rp2pio_pins_are_sequential(2, pins)) {
67+
mp_raise_RuntimeError(translate("Pins must be sequential"));
68+
}
6569
}
6670

6771
self->position = 0;
@@ -71,8 +75,8 @@ void common_hal_rotaryio_incrementalencoder_construct(rotaryio_incrementalencode
7175
encoder, MP_ARRAY_SIZE(encoder),
7276
1000000,
7377
encoder_init, MP_ARRAY_SIZE(encoder_init), // init
74-
NULL, 1, 0, 0xffffffff, // out pin
75-
pin_a, 2, // in pins
78+
NULL, 0, 0, 0, // out pin
79+
pins[0], 2, // in pins
7680
3, 0, // in pulls
7781
NULL, 0, 0, 0x1f, // set pins
7882
NULL, 0, 0, 0x1f, // sideset pins
@@ -101,6 +105,7 @@ void common_hal_rotaryio_incrementalencoder_deinit(rotaryio_incrementalencoder_o
101105
if (common_hal_rotaryio_incrementalencoder_deinited(self)) {
102106
return;
103107
}
108+
common_hal_rp2pio_statemachine_set_interrupt_handler(&self->state_machine, NULL, NULL, 0);
104109
common_hal_rp2pio_statemachine_deinit(&self->state_machine);
105110
}
106111

0 commit comments

Comments
 (0)