Skip to content

Commit d757bcc

Browse files
author
Owen L - SFE
committed
disable adc channels while reconfiguring
1 parent c0308f6 commit d757bcc

File tree

1 file changed

+19
-15
lines changed

1 file changed

+19
-15
lines changed

cores/arduino/ard_sup/analog/ap3_analog.cpp

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -119,14 +119,15 @@ static const uint8_t outcfg_tbl[32][4] =
119119
{OUTC(1, 7, 1), OUTC(0, 6, 0), OUTC(1, 7, 0), OUTC(1, 3, 1)}, // CTX31: B7OUT2, A6OUT, B7OUT, B3OUT2
120120
};
121121

122-
uint16_t _analogBits = 10; //10-bit by default
123-
uint8_t _analogWriteBits = 8; // 8-bit by default for writes
124-
uint8_t _servoWriteBits = 8; // 8-bit by default for writes
122+
uint16_t _analogBits = 10; //10-bit by default
123+
uint8_t _analogWriteBits = 8; // 8-bit by default for writes
124+
uint8_t _servoWriteBits = 8; // 8-bit by default for writes
125125
static bool ap3_adc_initialized = false; // flag to show if the ADC has been initialized
126126

127127
uint16_t analogRead(uint8_t pinNumber)
128128
{
129-
if(!ap3_adc_initialized){
129+
if (!ap3_adc_initialized)
130+
{
130131
ap3_adc_setup();
131132
ap3_adc_initialized = true;
132133
}
@@ -297,13 +298,6 @@ ap3_err_t ap3_adc_setup()
297298
return AP3_ERR;
298299
}
299300

300-
// Enable the ADC.
301-
if (AM_HAL_STATUS_SUCCESS != am_hal_adc_enable(g_ADCHandle))
302-
{
303-
//Serial.println("Error - enabling ADC failed.\n");
304-
return AP3_ERR;
305-
}
306-
307301
return AP3_OK;
308302
}
309303

@@ -350,6 +344,11 @@ ap3_err_t ap3_change_channel(uint8_t padNumber)
350344
ADCSlotConfig.eMeasToAvg = AM_HAL_ADC_SLOT_AVG_1;
351345
ADCSlotConfig.ePrecisionMode = AM_HAL_ADC_SLOT_14BIT;
352346

347+
if (AM_HAL_STATUS_SUCCESS != am_hal_adc_disable(g_ADCHandle))
348+
{
349+
return AP3_ERR;
350+
}
351+
353352
//Look up adc channel based on pad number
354353
uint8_t indi;
355354
for (indi = 0; indi < AP3_ANALOG_CHANNELS; indi++)
@@ -375,6 +374,11 @@ ap3_err_t ap3_change_channel(uint8_t padNumber)
375374
return AP3_ERR;
376375
}
377376

377+
if (AM_HAL_STATUS_SUCCESS != am_hal_adc_enable(g_ADCHandle))
378+
{
379+
return AP3_ERR;
380+
}
381+
378382
return AP3_OK;
379383
}
380384

@@ -667,12 +671,12 @@ ap3_err_t servoWriteResolution(uint8_t res)
667671

668672
uint8_t getServoResolution()
669673
{
670-
return(_servoWriteBits);
674+
return (_servoWriteBits);
671675
}
672676

673677
ap3_err_t servoWrite(uint8_t pin, uint32_t val)
674678
{
675-
return(servoWrite(pin, val, 544, 2400)); //Call servoWrite with Arduino default min/max microseconds. See: https://www.arduino.cc/en/Reference/ServoAttach
679+
return (servoWrite(pin, val, 544, 2400)); //Call servoWrite with Arduino default min/max microseconds. See: https://www.arduino.cc/en/Reference/ServoAttach
676680
}
677681

678682
ap3_err_t servoWrite(uint8_t pin, uint32_t val, uint16_t minMicros, uint16_t maxMicros)
@@ -684,9 +688,9 @@ ap3_err_t servoWrite(uint8_t pin, uint32_t val, uint16_t minMicros, uint16_t max
684688
uint32_t fw = 60000; // 20 ms wide frame
685689

686690
//Convert microSeconds to PWM counts.
687-
uint32_t min = minMicros * 3;
691+
uint32_t min = minMicros * 3;
688692
uint32_t max = maxMicros * 3;
689-
693+
690694
uint32_t th = (uint32_t)(((max - min) * val) / fsv) + min;
691695

692696
return ap3_pwm_output(pin, th, fw, clk);

0 commit comments

Comments
 (0)