Skip to content

Commit d67bad0

Browse files
committed
Pass the divisor to common_hal_rotaryio_incrementalencoder_construct
1 parent 6d025a2 commit d67bad0

File tree

5 files changed

+30
-11
lines changed

5 files changed

+30
-11
lines changed

ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,12 @@
3535
#include "py/runtime.h"
3636
#include "supervisor/shared/translate.h"
3737

38-
void common_hal_rotaryio_incrementalencoder_construct(rotaryio_incrementalencoder_obj_t *self,
39-
const mcu_pin_obj_t *pin_a, const mcu_pin_obj_t *pin_b) {
38+
void common_hal_rotaryio_incrementalencoder_construct(
39+
rotaryio_incrementalencoder_obj_t *self,
40+
const mcu_pin_obj_t *pin_a,
41+
const mcu_pin_obj_t *pin_b,
42+
const mp_int_t divisor,
43+
) {
4044
if (!pin_a->has_extint || !pin_b->has_extint) {
4145
mp_raise_RuntimeError(translate("Both pins must support hardware interrupts"));
4246
}
@@ -57,6 +61,7 @@ void common_hal_rotaryio_incrementalencoder_construct(rotaryio_incrementalencode
5761
self->eic_channel_b = pin_b->extint_channel;
5862
self->pin_a = pin_a->number;
5963
self->pin_b = pin_b->number;
64+
self->divisor = divisor;
6065

6166
gpio_set_pin_function(self->pin_a, GPIO_PIN_FUNCTION_A);
6267
gpio_set_pin_pull_mode(self->pin_a, GPIO_PULL_UP);

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

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,12 @@
3030

3131
#include "py/runtime.h"
3232

33-
void common_hal_rotaryio_incrementalencoder_construct(rotaryio_incrementalencoder_obj_t *self,
34-
const mcu_pin_obj_t *pin_a, const mcu_pin_obj_t *pin_b) {
33+
void common_hal_rotaryio_incrementalencoder_construct(
34+
rotaryio_incrementalencoder_obj_t *self,
35+
const mcu_pin_obj_t *pin_a,
36+
const mcu_pin_obj_t *pin_b,
37+
const mp_int_t divisor,
38+
) {
3539
claim_pin(pin_a);
3640
claim_pin(pin_b);
3741

@@ -57,7 +61,7 @@ void common_hal_rotaryio_incrementalencoder_construct(rotaryio_incrementalencode
5761

5862
pcnt_unit_config(&pcnt_config);
5963

60-
if ((self->divisor == 2) || (self->divisor == 1)) {
64+
if ((divisor == 2) || (divisor == 1)) {
6165
// Setup channel 1 for divisor=2 or divisor=1
6266
pcnt_config.pulse_gpio_num = pin_b->number; // What was control is now signal
6367
pcnt_config.ctrl_gpio_num = pin_a->number; // What was signal is now control
@@ -93,6 +97,7 @@ void common_hal_rotaryio_incrementalencoder_construct(rotaryio_incrementalencode
9397
self->pin_a = pin_a->number;
9498
self->pin_b = pin_b->number;
9599
self->unit = (pcnt_unit_t)unit;
100+
self->divisor = divisor;
96101
}
97102

98103
bool common_hal_rotaryio_incrementalencoder_deinited(rotaryio_incrementalencoder_obj_t *self) {

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

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,16 @@ static void _intr_handler(nrfx_gpiote_pin_t pin, nrf_gpiote_polarity_t action) {
4949
shared_module_softencoder_state_update(self, new_state);
5050
}
5151

52-
void common_hal_rotaryio_incrementalencoder_construct(rotaryio_incrementalencoder_obj_t *self,
53-
const mcu_pin_obj_t *pin_a, const mcu_pin_obj_t *pin_b) {
52+
void common_hal_rotaryio_incrementalencoder_construct(
53+
rotaryio_incrementalencoder_obj_t *self,
54+
const mcu_pin_obj_t *pin_a,
55+
const mcu_pin_obj_t *pin_b,
56+
const mp_int_t divisor,
57+
) {
5458

5559
self->pin_a = pin_a->number;
5660
self->pin_b = pin_b->number;
61+
self->divisor = divisor;
5762

5863
_objs[self->pin_a] = self;
5964
_objs[self->pin_b] = self;

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

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,12 @@ STATIC const uint16_t encoder_init[] = {
5959

6060
STATIC void incrementalencoder_interrupt_handler(void *self_in);
6161

62-
void common_hal_rotaryio_incrementalencoder_construct(rotaryio_incrementalencoder_obj_t *self,
63-
const mcu_pin_obj_t *pin_a, const mcu_pin_obj_t *pin_b) {
62+
void common_hal_rotaryio_incrementalencoder_construct(
63+
rotaryio_incrementalencoder_obj_t *self,
64+
const mcu_pin_obj_t *pin_a,
65+
const mcu_pin_obj_t *pin_b,
66+
const mp_int_t divisor,
67+
) {
6468
mp_obj_t pins[] = {MP_OBJ_FROM_PTR(pin_a), MP_OBJ_FROM_PTR(pin_b)};
6569
// Start out with swapped to match behavior with other ports.
6670
self->swapped = true;
@@ -75,6 +79,7 @@ void common_hal_rotaryio_incrementalencoder_construct(rotaryio_incrementalencode
7579

7680
self->position = 0;
7781
self->sub_count = 0;
82+
self->divisor
7883

7984
common_hal_rp2pio_statemachine_construct(&self->state_machine,
8085
encoder, MP_ARRAY_SIZE(encoder),

shared-bindings/rotaryio/IncrementalEncoder.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,7 @@ STATIC mp_obj_t rotaryio_incrementalencoder_make_new(const mp_obj_type_t *type,
7777
rotaryio_incrementalencoder_obj_t *self = m_new_obj(rotaryio_incrementalencoder_obj_t);
7878
self->base.type = &rotaryio_incrementalencoder_type;
7979

80-
common_hal_rotaryio_incrementalencoder_set_divisor(self, args[ARG_divisor].u_int);
81-
common_hal_rotaryio_incrementalencoder_construct(self, pin_a, pin_b);
80+
common_hal_rotaryio_incrementalencoder_construct(self, pin_a, pin_b, args[ARG_divisor].u_int);
8281

8382
return MP_OBJ_FROM_PTR(self);
8483
}

0 commit comments

Comments
 (0)