8000 Add a rough-and-ready and possibly working battery voltage reader. · davidgiven/micropython@578c4fc · GitHub
[go: up one dir, main page]

Skip to content

Commit 578c4fc

Browse files
committed
Add a rough-and-ready and possibly working battery voltage reader.
1 parent 235a7e7 commit 578c4fc

File tree

2 files changed

+33
-0
lines changed

2 files changed

+33
-0
lines changed

ports/tc32/modtc32.c

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,45 @@
2525
*/
2626

2727
#include "modtc32.h"
28+
#include "machine_pin.h"
2829
#include "py/mphal.h"
2930
#include "py/runtime.h"
3031

32+
#define BATTERY_SAMPLE_NUM 8
33+
static mp_obj_t tc32_battery_mv(void) {
34+
static bool adc_hw_initialized = 0;
35+
if (!adc_hw_initialized) {
36+
adc_hw_initialized = 1;
37+
adc_init();
38+
}
39+
40+
adc_set_misc_rns_capture_state_length(0xf0); // max_mc
41+
adc_set_all_set_state_length(0x0a); // max_s
42+
43+
adc_set_chn_en(ADC_MISC_CHN);
44+
adc_set_max_state_cnt(0x02);
45+
46+
adc_set_all_vref(ADC_MISC_CHN, ADC_VREF_1P2V);
47+
adc_set_vref_vbat_div(ADC_VBAT_DIVIDER_OFF);
48+
49+
adc_set_misc_n_ain(GND);
50+
adc_set_misc_p_ain(VBAT);
51+
adc_set_misc_input_mode(DIFFERENTIAL_MODE);
52+
53+
adc_set_all_resolution(ADC_MISC_CHN, RES14);
54+
adc_set_all_tsample_cycle(ADC_MISC_CHN, SAMPLING_CYCLES_6);
55+
adc_set_all_ain_pre_scaler(ADC_PRESCALER_1F4);
56+
adc_set_mode(ADC_NORMAL_MODE);
57+
58+
return MP_OBJ_NEW_SMALL_INT(adc_set_sample_and_get_result());
59+
}
60+
static MP_DEFINE_CONST_FUN_OBJ_0(tc32_battery_mv_obj, tc32_battery_mv);
61+
3162
static const mp_rom_map_elem_t tc32_module_globals_table[] = {
3263
{MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_tc32)},
3364
{MP_ROM_QSTR(MP_QSTR_Flash), MP_ROM_PTR(&tc32_flash_type)},
3465
{MP_ROM_QSTR(MP_QSTR_Screen), MP_ROM_PTR(&tc32_screen_type)},
66+
{MP_ROM_QSTR(MP_QSTR_battery_mv), MP_ROM_PTR(&tc32_battery_mv_obj)},
3567
};
3668
static MP_DEFINE_CONST_DICT(tc32_module_globals, tc32_module_globals_table);
3769

ports/tc32/modtc32.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
#ifndef MICROPY_INCLUDED_TC32_MODTC32_H
2727
#define MICROPY_INCLUDED_TC32_MODTC32_H
2828

29+
#include "port.h"
2930
#include "py/obj.h"
3031

3132
extern const mp_obj_type_t tc32_flash_type;

0 commit comments

Comments
 (0)
0