From 1decd111d5fc901ca641fb5abc0cec1505b8c485 Mon Sep 17 00:00:00 2001 From: Kamil Tomaszewski Date: Fri, 18 Oct 2019 12:38:39 +0200 Subject: Do not open the same ADC device again --- ports/cxd56/common-hal/analogio/AnalogIn.c | 8 +++++--- ports/cxd56/common-hal/analogio/AnalogIn.h | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/ports/cxd56/common-hal/analogio/AnalogIn.c b/ports/cxd56/common-hal/analogio/AnalogIn.c index ebe291582..e2ca5e4a4 100644 --- a/ports/cxd56/common-hal/analogio/AnalogIn.c +++ b/ports/cxd56/common-hal/analogio/AnalogIn.c @@ -68,9 +68,11 @@ void common_hal_analogio_analogin_construct(analogio_analogin_obj_t *self, const mp_raise_ValueError(translate("Pin does not have ADC capabilities")); } - analogin_dev[self->number].fd = open(analogin_dev[pin->number].devpath, O_RDONLY); if (analogin_dev[self->number].fd < 0) { - mp_raise_ValueError(translate("Pin does not have ADC capabilities")); + analogin_dev[self->number].fd = open(analogin_dev[self->number].devpath, O_RDONLY); + if (analogin_dev[self->number].fd < 0) { + mp_raise_ValueError(translate("Pin does not have ADC capabilities")); + } } // SCU FIFO overwrite @@ -99,7 +101,7 @@ void common_hal_analogio_analogin_deinit(analogio_analogin_obj_t *self) { } bool common_hal_analogio_analogin_deinited(analogio_analogin_obj_t *self) { - return self->pin == mp_const_none; + return analogin_dev[self->number].fd < 0; } uint16_t common_hal_analogio_analogin_get_value(analogio_analogin_obj_t *self) { diff --git a/ports/cxd56/common-hal/analogio/AnalogIn.h b/ports/cxd56/common-hal/analogio/AnalogIn.h index 4e8b41e52..9cf73003f 100644 --- a/ports/cxd56/common-hal/analogio/AnalogIn.h +++ b/ports/cxd56/common-hal/analogio/AnalogIn.h @@ -34,7 +34,7 @@ typedef struct { mp_obj_base_t base; const mcu_pin_obj_t *pin; - uint8_t number; + int8_t number; } analogio_analogin_obj_t; void analogin_reset(void); -- cgit v1.2.3