Skip to content

Commit cca1e19

Browse files
adc init only once
1 parent c0b211f commit cca1e19

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

PicoAnalogCorrection.cpp

+7-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88

99
PicoAnalogCorrection::PicoAnalogCorrection(size_t adc_res, float vref) {
10+
_adc_init = false;
1011
_adc_res = adc_res;
1112
_max_channel = pow(2, adc_res) - 1;
1213
_gnd_offset = 0;
@@ -17,6 +18,7 @@ PicoAnalogCorrection::PicoAnalogCorrection(size_t adc_res, float vref) {
1718

1819

1920
PicoAnalogCorrection::PicoAnalogCorrection(size_t adc_res, size_t gnd_val, size_t vcc_val) {
21+
_adc_init = false;
2022
_adc_res = adc_res;
2123
_max_channel = pow(2, adc_res) - 1;
2224
_gnd_offset = gnd_val;
@@ -27,6 +29,7 @@ PicoAnalogCorrection::PicoAnalogCorrection(size_t adc_res, size_t gnd_val, size_
2729

2830

2931
PicoAnalogCorrection::PicoAnalogCorrection(size_t adc_res, float vref, size_t gnd_val, size_t vcc_val) {
32+
_adc_init = false;
3033
_adc_res = adc_res;
3134
_max_channel = pow(2, adc_res) - 1;
3235
_vref = vref;
@@ -104,7 +107,10 @@ int PicoAnalogCorrection::analogCRead(size_t pin, size_t avg_size) {
104107

105108

106109
float PicoAnalogCorrection::analogReadTemp(pactemp_t type) {
107-
adc_init();
110+
if (!_adc_init) {
111+
adc_init();
112+
_adc_init = true;
113+
}
108114
adc_set_temp_sensor_enabled(true);
109115
delay(1); // Allow things to settle. Without this, readings can be erratic
110116
adc_select_input(4); // Temperature sensor is analog pin 4

PicoAnalogCorrection.h

+1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ class PicoAnalogCorrection {
2222
private:
2323
size_t _max_channel, _gnd_offset, _vcc_offset, _adc_res;
2424
float _a, _d, _vref;
25+
bool _adc_init;
2526

2627
void setCorrectionValues();
2728

0 commit comments

Comments
 (0)