Skip to content

Commit d239dbd

Browse files
committed
More fixes to pin pull thanks to jerryn:
* Correct atmel-samd pin pull state. * Correct conversion from python pull objects to C enum.
1 parent df96823 commit d239dbd

File tree

2 files changed

+9
-3
lines changed

2 files changed

+9
-3
lines changed

atmel-samd/common-hal/nativeio/DigitalInOut.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ enum digitalinout_pull_t common_hal_nativeio_digitalinout_get_pull(
175175
"Cannot get pull while in output mode."));
176176
return PULL_NONE;
177177
} else {
178-
if (port_base->PINCFG[pin % 32].bit.PULLEN != 0) {
178+
if (port_base->PINCFG[pin % 32].bit.PULLEN == 0) {
179179
return PULL_NONE;
180180
} if ((port_base->OUT.reg & pin_mask) > 0) {
181181
return PULL_UP;

shared-bindings/nativeio/DigitalInOut.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -302,14 +302,20 @@ STATIC mp_obj_t nativeio_digitalinout_obj_get_pull(mp_obj_t self_in) {
302302
}
303303
MP_DEFINE_CONST_FUN_OBJ_1(nativeio_digitalinout_get_pull_obj, nativeio_digitalinout_obj_get_pull);
304304

305-
STATIC mp_obj_t nativeio_digitalinout_obj_set_pull(mp_obj_t self_in, mp_obj_t pull) {
305+
STATIC mp_obj_t nativeio_digitalinout_obj_set_pull(mp_obj_t self_in, mp_obj_t pull_obj) {
306306
nativeio_digitalinout_obj_t *self = MP_OBJ_TO_PTR(self_in);
307307
if (common_hal_nativeio_digitalinout_get_direction(self) == DIRECTION_OUT) {
308308
nlr_raise(mp_obj_new_exception_msg(&mp_type_OSError,
309309
"Pull not used when direction is output."));
310310
return mp_const_none;
311311
}
312-
common_hal_nativeio_digitalinout_set_pull(self, (enum digitalinout_pull_t) MP_OBJ_SMALL_INT_VALUE(pull));
312+
enum digitalinout_pull_t pull = PULL_NONE;
313+
if (pull_obj == &nativeio_digitalinout_pull_up_obj) {
314+
pull = PULL_UP;
315+
} else if (pull_obj == &nativeio_digitalinout_pull_down_obj) {
316+
pull = PULL_DOWN;
317+
}
318+
common_hal_nativeio_digitalinout_set_pull(self, pull);
313319
return mp_const_none;
314320
}
315321
MP_DEFINE_CONST_FUN_OBJ_2(nativeio_digitalinout_set_pull_obj, nativeio_digitalinout_obj_set_pull);

0 commit comments

Comments
 (0)