diff options
| author | robert-hh <robert@hammelrath.com> | 2024-12-06 20:38:19 +0100 |
|---|---|---|
| committer | Damien George <damien@micropython.org> | 2025-03-25 12:38:00 +1100 |
| commit | 58f1ade318ecd72def23e9169a7a25d65d7967fb (patch) | |
| tree | 0fef62647e082606e661c4dcc78008d8b7e1051b | |
| parent | f1018ee5c2dd0eabcc0cfe7e02c607594e489788 (diff) | |
mimxrt/machine_adc: Add ADC.read_uv() method.
Matching the generic documentation.
Signed-off-by: robert-hh <robert@hammelrath.com>
| -rw-r--r-- | ports/mimxrt/machine_adc.c | 19 | ||||
| -rw-r--r-- | ports/mimxrt/mpconfigport.h | 1 |
2 files changed, 11 insertions, 9 deletions
diff --git a/ports/mimxrt/machine_adc.c b/ports/mimxrt/machine_adc.c index 29b73a206..c332bd703 100644 --- a/ports/mimxrt/machine_adc.c +++ b/ports/mimxrt/machine_adc.c @@ -41,6 +41,12 @@ // The ADC class doesn't have any constants for this port. #define MICROPY_PY_MACHINE_ADC_CLASS_CONSTANTS +#if defined(MIMXRT117x_SERIES) +#define ADC_UV_FULL_RANGE (3840000) +#else +#define ADC_UV_FULL_RANGE (3300000) +#endif + typedef struct _machine_adc_obj_t { mp_obj_base_t base; ADC_Type *adc; @@ -78,15 +84,6 @@ static mp_obj_t mp_machine_adc_make_new(const mp_obj_type_t *type, size_t n_args ADC_Type *adc_instance = pin->adc_list[0].instance; // NOTE: we only use the first ADC assignment - multiple assignments are not supported for now uint8_t channel = pin->adc_list[0].channel; - #if 0 // done in adc_read_u16 - // Configure ADC peripheral channel - adc_channel_config_t channel_config = { - .channelNumber = (uint32_t)channel, - .enableInterruptOnConversionCompleted = false, - }; - ADC_SetChannelConfig(adc_instance, 0UL, &channel_config); // NOTE: we always choose channel group '0' since we only perform software triggered conversion - #endif - // Create ADC Instance machine_adc_obj_t *o = mp_obj_malloc(machine_adc_obj_t, &machine_adc_type); o->adc = adc_instance; @@ -169,3 +166,7 @@ void machine_adc_init(void) { } } #endif + +static mp_int_t mp_machine_adc_read_uv(machine_adc_obj_t *self) { + return (uint64_t)ADC_UV_FULL_RANGE * mp_machine_adc_read_u16(self) / 65536; +} diff --git a/ports/mimxrt/mpconfigport.h b/ports/mimxrt/mpconfigport.h index 7da85f1ae..b9fb87e05 100644 --- a/ports/mimxrt/mpconfigport.h +++ b/ports/mimxrt/mpconfigport.h @@ -84,6 +84,7 @@ uint32_t trng_random_u32(void); #define MICROPY_PY_MACHINE_DISABLE_IRQ_ENABLE_IRQ (1) #define MICROPY_PY_MACHINE_ADC (1) #define MICROPY_PY_MACHINE_ADC_INCLUDEFILE "ports/mimxrt/machine_adc.c" +#define MICROPY_PY_MACHINE_ADC_READ_UV (1) #define MICROPY_PY_MACHINE_PIN_MAKE_NEW mp_pin_make_new #define MICROPY_PY_MACHINE_BITSTREAM (1) #define MICROPY_PY_MACHINE_DHT_READINTO (1) |
