From dd2cd4af8b7ba667c6e89f7065389ff824e162bb Mon Sep 17 00:00:00 2001 From: enriquezgarc Date: Thu, 27 Jul 2023 11:52:23 +0200 Subject: [PATCH] ports/psoc6/modules/machine/machine_adc: Allocaed channel in ADC block. Signed-off-by: enriquezgarc --- ports/psoc6/modules/machine/machine_adc.c | 3 ++- ports/psoc6/modules/machine/machine_adcblock.c | 8 ++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/ports/psoc6/modules/machine/machine_adc.c b/ports/psoc6/modules/machine/machine_adc.c index 558b7209045b..bf6147a7ed3c 100644 --- a/ports/psoc6/modules/machine/machine_adc.c +++ b/ports/psoc6/modules/machine/machine_adc.c @@ -20,6 +20,7 @@ extern int16_t get_adc_block_id(uint32_t pin); extern machine_adc_obj_t *adc_block_get_pin_adc_obj(machine_adcblock_obj_t *adc_block, uint32_t pin); extern machine_adcblock_obj_t *adc_block_init_helper(uint8_t adc_id, uint8_t bits); +extern machine_adc_obj_t *adc_block_allocate_new_pin(machine_adcblock_obj_t *adc_block, uint32_t pin); /******************************************************************************/ // MicroPython bindings for machine.ADC @@ -28,7 +29,7 @@ const mp_obj_type_t machine_adc_type; static inline machine_adc_obj_t *adc_init_new(machine_adcblock_obj_t *adc_block, uint32_t pin, uint32_t sampling_time) { - machine_adc_obj_t *o = mp_obj_malloc(machine_adc_obj_t, &machine_adc_type); + machine_adc_obj_t *o = adc_block_allocate_new_pin(adc_block, pin); const cyhal_adc_channel_config_t channel_config = { .enable_averaging = false, diff --git a/ports/psoc6/modules/machine/machine_adcblock.c b/ports/psoc6/modules/machine/machine_adcblock.c index b0831a9d6190..3ef09c633929 100644 --- a/ports/psoc6/modules/machine/machine_adcblock.c +++ b/ports/psoc6/modules/machine/machine_adcblock.c @@ -4,6 +4,7 @@ #include "modmachine.h" #include "machine_adcblock.h" +#include "machine_adc.h" #include "pins.h" extern machine_adc_obj_t *adc_init_helper(uint32_t sampling_time, uint32_t pin); @@ -108,6 +109,13 @@ machine_adc_obj_t *adc_block_get_channel_obj(machine_adcblock_obj_t *adc_block, return adc_block->channel[channel]; } +machine_adc_obj_t *adc_block_allocate_new_pin(machine_adcblock_obj_t *adc_block, uint32_t pin) { + int16_t adc_channel_no = get_adc_channel_number(pin); + adc_block->channel[adc_channel_no] = mp_obj_malloc(machine_adc_obj_t, &machine_adc_type); + + return adc_block->channel[adc_channel_no]; +} + machine_adc_obj_t *adc_block_get_pin_adc_obj(machine_adcblock_obj_t *adc_block, uint32_t pin) { int16_t adc_channel_no = get_adc_channel_number(pin);