@@ -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
125125static bool ap3_adc_initialized = false ; // flag to show if the ADC has been initialized
126126
127127uint16_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
668672uint8_t getServoResolution ()
669673{
670- return (_servoWriteBits);
674+ return (_servoWriteBits);
671675}
672676
673677ap3_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
678682ap3_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