@@ -475,7 +475,7 @@ STATIC void EXTI_Handler(uint port) {
475475
476476STATIC const mp_arg_t pin_init_args [] = {
477477 { MP_QSTR_mode , MP_ARG_REQUIRED | MP_ARG_INT },
478- { MP_QSTR_pull , MP_ARG_INT , {.u_int = PIN_TYPE_STD } },
478+ { MP_QSTR_pull , MP_ARG_OBJ , {.u_obj = mp_const_none } },
479479 { MP_QSTR_value , MP_ARG_KW_ONLY | MP_ARG_OBJ , {.u_obj = MP_OBJ_NULL } },
480480 { MP_QSTR_drive , MP_ARG_KW_ONLY | MP_ARG_INT , {.u_int = PIN_STRENGTH_4MA } },
481481 { MP_QSTR_alt , MP_ARG_KW_ONLY | MP_ARG_INT , {.u_int = -1 } },
@@ -492,8 +492,13 @@ STATIC mp_obj_t pin_obj_init_helper(pin_obj_t *self, mp_uint_t n_args, const mp_
492492 pin_validate_mode (mode );
493493
494494 // get the pull type
495- uint pull = args [1 ].u_int ;
496- pin_validate_pull (pull );
495+ uint pull ;
496+ if (args [1 ].u_obj == mp_const_none ) {
497+ pull = PIN_TYPE_STD ;
498+ } else {
499+ pull = mp_obj_get_int (args [1 ].u_obj );
500+ pin_validate_pull (pull );
501+ }
497502
498503 // get the value
499504 int value = -1 ;
@@ -562,13 +567,15 @@ STATIC void pin_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t
562567 // pin pull
563568 qstr pull_qst ;
564569 if (pull == PIN_TYPE_STD ) {
565- pull_qst = MP_QSTR_PULL_NONE ;
566- } else if (pull == PIN_TYPE_STD_PU ) {
567- pull_qst = MP_QSTR_PULL_UP ;
570+ mp_printf (print , ", pull=%q" , MP_QSTR_None );
568571 } else {
569- pull_qst = MP_QSTR_PULL_DOWN ;
572+ if (pull == PIN_TYPE_STD_PU ) {
573+ pull_qst = MP_QSTR_PULL_UP ;
574+ } else {
575+ pull_qst = MP_QSTR_PULL_DOWN ;
576+ }
577+ mp_printf (print , ", pull=Pin.%q" , pull_qst );
570578 }
571- mp_printf (print , ", pull=Pin.%q" , pull_qst );
572579
573580 // pin drive
574581 qstr drv_qst ;
@@ -656,10 +663,18 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(pin_mode_obj, 1, 2, pin_mode);
656663STATIC mp_obj_t pin_pull (mp_uint_t n_args , const mp_obj_t * args ) {
657664 pin_obj_t * self = args [0 ];
658665 if (n_args == 1 ) {
666+ if (self -> pull == PIN_TYPE_STD ) {
667+ return mp_const_none ;
668+ }
659669 return mp_obj_new_int (self -> pull );
660670 } else {
661- uint32_t pull = mp_obj_get_int (args [1 ]);
662- pin_validate_pull (pull );
671+ uint32_t pull ;
672+ if (args [1 ] == mp_const_none ) {
673+ pull = PIN_TYPE_STD ;
674+ } else {
675+ pull = mp_obj_get_int (args [1 ]);
676+ pin_validate_pull (pull );
677+ }
663678 self -> pull = pull ;
664679 pin_obj_configure (self );
665680 return mp_const_none ;
@@ -853,7 +868,6 @@ STATIC const mp_map_elem_t pin_locals_dict_table[] = {
853868 { MP_OBJ_NEW_QSTR (MP_QSTR_OPEN_DRAIN ), MP_OBJ_NEW_SMALL_INT (PIN_TYPE_OD ) },
854869 { MP_OBJ_NEW_QSTR (MP_QSTR_ALT ), MP_OBJ_NEW_SMALL_INT (GPIO_DIR_MODE_ALT ) },
855870 { MP_OBJ_NEW_QSTR (MP_QSTR_ALT_OPEN_DRAIN ), MP_OBJ_NEW_SMALL_INT (GPIO_DIR_MODE_ALT_OD ) },
856- { MP_OBJ_NEW_QSTR (MP_QSTR_PULL_NONE ), MP_OBJ_NEW_SMALL_INT (PIN_TYPE_STD ) },
857871 { MP_OBJ_NEW_QSTR (MP_QSTR_PULL_UP ), MP_OBJ_NEW_SMALL_INT (PIN_TYPE_STD_PU ) },
858872 { MP_OBJ_NEW_QSTR (MP_QSTR_PULL_DOWN ), MP_OBJ_NEW_SMALL_INT (PIN_TYPE_STD_PD ) },
859873 { MP_OBJ_NEW_QSTR (MP_QSTR_LOW_POWER ), MP_OBJ_NEW_SMALL_INT (PIN_STRENGTH_2MA ) },
0 commit comments