diff options
author | Jonathan Hogg <me@jonathanhogg.com> | 2020-11-09 13:11:52 +0000 |
---|---|---|
committer | Damien George <damien@micropython.org> | 2020-11-12 15:27:41 +1100 |
commit | 8a917ad2529ea3df5f47e2be5b4edf362d2d03f6 (patch) | |
tree | b49eebb152f320330de39fc1c1e863b09cd79e53 | |
parent | b04240cb77c5305a63b4ca7b36229d410eca2072 (diff) |
esp32/machine_pin: Reset pin if init sets mode.
This will forcibly grab the pin back from the ADC if it has previously been
associated with it.
Fixes #5771.
-rw-r--r-- | ports/esp32/machine_pin.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/ports/esp32/machine_pin.c b/ports/esp32/machine_pin.c index a55cc1f4a..dcdd53be9 100644 --- a/ports/esp32/machine_pin.c +++ b/ports/esp32/machine_pin.c @@ -150,6 +150,11 @@ STATIC mp_obj_t machine_pin_obj_init_helper(const machine_pin_obj_t *self, size_ mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)]; mp_arg_parse_all(n_args, pos_args, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args); + // reset the pin first if this is a mode-setting init (grab it back from ADC) + if (args[ARG_mode].u_obj != mp_const_none) { + gpio_reset_pin(self->id); + } + // configure the pin for gpio gpio_pad_select_gpio(self->id); |