1818// adc = pyb.ADC(pin)
1919// val = adc.read()
2020//
21- // adc = pyb.ADC_all (resolution)
21+ // adc = pyb.ADCAll (resolution)
2222// val = adc.read_channel(channel)
2323// val = adc.read_core_temp()
2424// val = adc.read_core_vbat()
@@ -129,7 +129,7 @@ STATIC mp_obj_t adc_make_new(mp_obj_t type_in, uint n_args, uint n_kw, const mp_
129129 if (MP_OBJ_IS_INT (pin_obj )) {
130130 channel = mp_obj_get_int (pin_obj );
131131 } else {
132- const pin_obj_t * pin = pin_map_user_obj (pin_obj );
132+ const pin_obj_t * pin = pin_find (pin_obj );
133133 if ((pin -> adc_num & PIN_ADC1 ) == 0 ) {
134134 // No ADC1 function on that pin
135135 nlr_raise (mp_obj_new_exception_msg_varg (& mp_type_ValueError , "pin %s does not have ADC capabilities" , pin -> name ));
@@ -138,10 +138,10 @@ STATIC mp_obj_t adc_make_new(mp_obj_t type_in, uint n_args, uint n_kw, const mp_
138138 }
139139
140140 if (!IS_ADC_CHANNEL (channel )) {
141- nlr_raise (mp_obj_new_exception_msg_varg (& mp_type_ValueError , "Not a valid ADC Channel: %d" , channel ));
141+ nlr_raise (mp_obj_new_exception_msg_varg (& mp_type_ValueError , "not a valid ADC Channel: %d" , channel ));
142142 }
143143 if (pin_adc1 [channel ] == NULL ) {
144- nlr_raise (mp_obj_new_exception_msg_varg (& mp_type_ValueError , "Channel %d not available on this board" , channel ));
144+ nlr_raise (mp_obj_new_exception_msg_varg (& mp_type_ValueError , "channel %d not available on this board" , channel ));
145145 }
146146
147147 pyb_obj_adc_t * o = m_new_obj (pyb_obj_adc_t );
@@ -211,12 +211,12 @@ const mp_obj_type_t pyb_adc_type = {
211211/******************************************************************************/
212212/* adc all object */
213213
214- typedef struct _pyb_obj_adc_all_t {
214+ typedef struct _pyb_adc_all_obj_t {
215215 mp_obj_base_t base ;
216216 ADC_HandleTypeDef handle ;
217- } pyb_obj_adc_all_t ;
217+ } pyb_adc_all_obj_t ;
218218
219- void adc_init_all (pyb_obj_adc_all_t * adc_all , uint32_t resolution ) {
219+ void adc_init_all (pyb_adc_all_obj_t * adc_all , uint32_t resolution ) {
220220
221221 switch (resolution ) {
222222 case 6 : resolution = ADC_RESOLUTION6b ; break ;
@@ -314,65 +314,59 @@ float adc_read_core_vref(ADC_HandleTypeDef *adcHandle) {
314314/******************************************************************************/
315315/* Micro Python bindings : adc_all object */
316316
317- STATIC void adc_all_print (void (* print )(void * env , const char * fmt , ...), void * env , mp_obj_t self_in , mp_print_kind_t kind ) {
318- print (env , "<ADC all>" );
317+ STATIC mp_obj_t adc_all_make_new (mp_obj_t type_in , uint n_args , uint n_kw , const mp_obj_t * args ) {
318+ // check number of arguments
319+ mp_check_nargs (n_args , 1 , 1 , n_kw , false);
320+
321+ // make ADCAll object
322+ pyb_adc_all_obj_t * o = m_new_obj (pyb_adc_all_obj_t );
323+ o -> base .type = & pyb_adc_all_type ;
324+ adc_init_all (o , mp_obj_get_int (args [0 ])); // args[0] is the resolution
325+
326+ return o ;
319327}
320328
321329STATIC mp_obj_t adc_all_read_channel (mp_obj_t self_in , mp_obj_t channel ) {
322- pyb_obj_adc_all_t * self = self_in ;
323-
330+ pyb_adc_all_obj_t * self = self_in ;
324331 uint32_t chan = mp_obj_get_int (channel );
325332 uint32_t data = adc_config_and_read_channel (& self -> handle , chan );
326333 return mp_obj_new_int (data );
327334}
335+ STATIC MP_DEFINE_CONST_FUN_OBJ_2 (adc_all_read_channel_obj , adc_all_read_channel );
328336
329337STATIC mp_obj_t adc_all_read_core_temp (mp_obj_t self_in ) {
330- pyb_obj_adc_all_t * self = self_in ;
331-
338+ pyb_adc_all_obj_t * self = self_in ;
332339 int data = adc_read_core_temp (& self -> handle );
333340 return mp_obj_new_int (data );
334341}
342+ STATIC MP_DEFINE_CONST_FUN_OBJ_1 (adc_all_read_core_temp_obj , adc_all_read_core_temp );
335343
336344STATIC mp_obj_t adc_all_read_core_vbat (mp_obj_t self_in ) {
337- pyb_obj_adc_all_t * self = self_in ;
338-
345+ pyb_adc_all_obj_t * self = self_in ;
339346 float data = adc_read_core_vbat (& self -> handle );
340347 return mp_obj_new_float (data );
341348}
349+ STATIC MP_DEFINE_CONST_FUN_OBJ_1 (adc_all_read_core_vbat_obj , adc_all_read_core_vbat );
342350
343351STATIC mp_obj_t adc_all_read_core_vref (mp_obj_t self_in ) {
344- pyb_obj_adc_all_t * self = self_in ;
345-
352+ pyb_adc_all_obj_t * self = self_in ;
346353 float data = adc_read_core_vref (& self -> handle );
347354 return mp_obj_new_float (data );
348355}
349-
350- STATIC MP_DEFINE_CONST_FUN_OBJ_2 (adc_all_read_channel_obj , adc_all_read_channel );
351- STATIC MP_DEFINE_CONST_FUN_OBJ_1 (adc_all_read_core_temp_obj , adc_all_read_core_temp );
352- STATIC MP_DEFINE_CONST_FUN_OBJ_1 (adc_all_read_core_vbat_obj , adc_all_read_core_vbat );
353356STATIC MP_DEFINE_CONST_FUN_OBJ_1 (adc_all_read_core_vref_obj , adc_all_read_core_vref );
354357
355358STATIC const mp_map_elem_t adc_all_locals_dict_table [] = {
356- { MP_OBJ_NEW_QSTR (MP_QSTR_read_channel ), (mp_obj_t ) & adc_all_read_channel_obj },
359+ { MP_OBJ_NEW_QSTR (MP_QSTR_read_channel ), (mp_obj_t )& adc_all_read_channel_obj },
357360 { MP_OBJ_NEW_QSTR (MP_QSTR_read_core_temp ), (mp_obj_t )& adc_all_read_core_temp_obj },
358361 { MP_OBJ_NEW_QSTR (MP_QSTR_read_core_vbat ), (mp_obj_t )& adc_all_read_core_vbat_obj },
359362 { MP_OBJ_NEW_QSTR (MP_QSTR_read_core_vref ), (mp_obj_t )& adc_all_read_core_vref_obj },
360363};
361364
362365STATIC MP_DEFINE_CONST_DICT (adc_all_locals_dict , adc_all_locals_dict_table );
363366
364- STATIC const mp_obj_type_t adc_all_type = {
367+ const mp_obj_type_t pyb_adc_all_type = {
365368 { & mp_type_type },
366- .name = MP_QSTR_ADC ,
367- .print = adc_all_print ,
369+ .name = MP_QSTR_ADCAll ,
370+ .make_new = adc_all_make_new ,
368371 .locals_dict = (mp_obj_t )& adc_all_locals_dict ,
369372};
370-
371- STATIC mp_obj_t pyb_ADC_all (mp_obj_t resolution ) {
372- pyb_obj_adc_all_t * o = m_new_obj (pyb_obj_adc_all_t );
373- o -> base .type = & adc_all_type ;
374- adc_init_all (o , mp_obj_get_int (resolution ));
375- return o ;
376- }
377-
378- MP_DEFINE_CONST_FUN_OBJ_1 (pyb_ADC_all_obj , pyb_ADC_all );
0 commit comments