Skip to content

Commit 8dfeb41

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

File tree

6 files changed

+31
-13
lines changed

6 files changed

+31
-13
lines changed

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,11 @@
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) {
4043
if (!pin_a->has_extint || !pin_b->has_extint) {
4144
mp_raise_RuntimeError(translate("Both pins must support hardware interrupts"));
4245
}
@@ -57,6 +60,7 @@ void common_hal_rotaryio_incrementalencoder_construct(rotaryio_incrementalencode
5760
self->eic_channel_b = pin_b->extint_channel;
5861
self->pin_a = pin_a->number;
5962
self->pin_b = pin_b->number;
63+
self->divisor = divisor;
6064

6165
gpio_set_pin_function(self->pin_a, GPIO_PIN_FUNCTION_A);
6266
gpio_set_pin_pull_mode(self->pin_a, GPIO_PULL_UP);

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

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,11 @@
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) {
3538
claim_pin(pin_a);
3639
claim_pin(pin_b);
3740

@@ -57,7 +60,7 @@ void common_hal_rotaryio_incrementalencoder_construct(rotaryio_incrementalencode
5760

5861
pcnt_unit_config(&pcnt_config);
5962

60-
if ((self->divisor == 2) || (self->divisor == 1)) {
63+
if ((divisor == 2) || (divisor == 1)) {
6164
// Setup channel 1 for divisor=2 or divisor=1
6265
pcnt_config.pulse_gpio_num = pin_b->number; // What was control is now signal
6366
pcnt_config.ctrl_gpio_num = pin_a->number; // What was signal is now control
@@ -93,6 +96,7 @@ void common_hal_rotaryio_incrementalencoder_construct(rotaryio_incrementalencode
9396
self->pin_a = pin_a->number;
9497
self->pin_b = pin_b->number;
9598
self->unit = (pcnt_unit_t)unit;
99+
self->divisor = divisor;
96100
}
97101

98102
bool common_hal_rotaryio_incrementalencoder_deinited(rotaryio_incrementalencoder_obj_t *self) {

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,15 @@ 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) {
5457

5558
self->pin_a = pin_a->number;
5659
self->pin_b = pin_b->number;
60+
self->divisor = divisor;
5761

5862
_objs[self->pin_a] = self;
5963
_objs[self->pin_b] = self;

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,11 @@ 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) {
6467
mp_obj_t pins[] = {MP_OBJ_FROM_PTR(pin_a), MP_OBJ_FROM_PTR(pin_b)};
6568
// Start out with swapped to match behavior with other ports.
6669
self->swapped = true;
@@ -75,6 +78,7 @@ void common_hal_rotaryio_incrementalencoder_construct(rotaryio_incrementalencode
7578

7679
self->position = 0;
7780
self->sub_count = 0;
81+
self->divisor
7882

7983
common_hal_rp2pio_statemachine_construct(&self->state_machine,
8084
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
}

shared-bindings/rotaryio/IncrementalEncoder.h

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,11 @@
3232

3333
extern const mp_obj_type_t rotaryio_incrementalencoder_type;
3434

35-
extern void common_hal_rotaryio_incrementalencoder_construct(rotaryio_incrementalencoder_obj_t *self,
36-
const mcu_pin_obj_t *pin_a, const mcu_pin_obj_t *pin_b);
35+
extern void common_hal_rotaryio_incrementalencoder_construct(
36+
rotaryio_incrementalencoder_obj_t *self,
37+
const mcu_pin_obj_t *pin_a,
38+
const mcu_pin_obj_t *pin_b,
39+
const mp_int_t divisor);
3740
extern void common_hal_rotaryio_incrementalencoder_deinit(rotaryio_incrementalencoder_obj_t *self);
3841
extern bool common_hal_rotaryio_incrementalencoder_deinited(rotaryio_incrementalencoder_obj_t *self);
3942
extern mp_int_t common_hal_rotaryio_incrementalencoder_get_position(rotaryio_incrementalencoder_obj_t *self);

0 commit comments

Comments
 (0)