diff options
| author | Damien George <damien@micropython.org> | 2021-08-16 14:38:11 +1000 |
|---|---|---|
| committer | Damien George <damien@micropython.org> | 2021-08-16 15:24:05 +1000 |
| commit | e25c5cb8d249c3200753199a6682bc9a028b8860 (patch) | |
| tree | 0c8bee99a5eb72851eceb7105245c243216a5b1e | |
| parent | 5b655665ab068c4ee7de7891ae2d3cb7ed630512 (diff) | |
esp32/machine_pin: Make check for non-output pins respect chip variant.
Fixes issue #7631.
Signed-off-by: Damien George <damien@micropython.org>
| -rw-r--r-- | ports/esp32/machine_pin.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/ports/esp32/machine_pin.c b/ports/esp32/machine_pin.c index 477623796..181f88b78 100644 --- a/ports/esp32/machine_pin.c +++ b/ports/esp32/machine_pin.c @@ -49,6 +49,12 @@ #define GPIO_PULL_UP (2) #define GPIO_PULL_HOLD (4) +#if CONFIG_IDF_TARGET_ESP32 +#define GPIO_FIRST_NON_OUTPUT (34) +#elif CONFIG_IDF_TARGET_ESP32S2 +#define GPIO_FIRST_NON_OUTPUT (46) +#endif + typedef struct _machine_pin_obj_t { mp_obj_base_t base; gpio_num_t id; @@ -265,11 +271,12 @@ STATIC mp_obj_t machine_pin_obj_init_helper(const machine_pin_obj_t *self, size_ // configure mode if (args[ARG_mode].u_obj != mp_const_none) { mp_int_t pin_io_mode = mp_obj_get_int(args[ARG_mode].u_obj); - if (self->id >= 34 && (pin_io_mode & GPIO_MODE_DEF_OUTPUT)) { + #ifdef GPIO_FIRST_NON_OUTPUT + if (self->id >= GPIO_FIRST_NON_OUTPUT && (pin_io_mode & GPIO_MODE_DEF_OUTPUT)) { mp_raise_ValueError(MP_ERROR_TEXT("pin can only be input")); - } else { - gpio_set_direction(self->id, pin_io_mode); } + #endif + gpio_set_direction(self->id, pin_io_mode); } // configure pull |
