@@ -30,6 +30,7 @@ extern "C" {
3030
3131static uint32_t saadcReference = SAADC_CH_CONFIG_REFSEL_Internal ;
3232static uint32_t saadcGain = SAADC_CH_CONFIG_GAIN_Gain1_6 ;
33+ static uint32_t saadcSampleTime = SAADC_CH_CONFIG_TACQ_3us ;
3334
3435static bool saadcBurst = SAADC_CH_CONFIG_BURST_Disabled ;
3536
@@ -140,6 +141,28 @@ void analogOversampling( uint32_t ulOversampling )
140141 }
141142}
142143
144+ void analogSampleTime ( uint8_t sTime )
145+ {
146+ saadcSampleTime = SAADC_CH_CONFIG_TACQ_3us ; // default is 3 us
147+ switch (sTime ) {
148+ case 5 :
149+ saadcSampleTime = SAADC_CH_CONFIG_TACQ_5us ;
150+ break ;
151+ case 10 :
152+ saadcSampleTime = SAADC_CH_CONFIG_TACQ_10us ;
153+ break ;
154+ case 15 :
155+ saadcSampleTime = SAADC_CH_CONFIG_TACQ_15us ;
156+ break ;
157+ case 20 :
158+ saadcSampleTime = SAADC_CH_CONFIG_TACQ_20us ;
159+ break ;
160+ case 40 :
161+ saadcSampleTime = SAADC_CH_CONFIG_TACQ_40us ;
162+ break ;
163+ }
164+ }
165+
143166static uint32_t analogRead_internal ( uint32_t psel )
144167{
145168 uint32_t saadcResolution ;
@@ -171,7 +194,7 @@ static uint32_t analogRead_internal( uint32_t psel )
171194 | ((SAADC_CH_CONFIG_RESP_Bypass << SAADC_CH_CONFIG_RESN_Pos ) & SAADC_CH_CONFIG_RESN_Msk )
172195 | ((saadcGain << SAADC_CH_CONFIG_GAIN_Pos ) & SAADC_CH_CONFIG_GAIN_Msk )
173196 | ((saadcReference << SAADC_CH_CONFIG_REFSEL_Pos ) & SAADC_CH_CONFIG_REFSEL_Msk )
174- | ((SAADC_CH_CONFIG_TACQ_3us << SAADC_CH_CONFIG_TACQ_Pos ) & SAADC_CH_CONFIG_TACQ_Msk )
197+ | ((saadcSampleTime << SAADC_CH_CONFIG_TACQ_Pos ) & SAADC_CH_CONFIG_TACQ_Msk )
175198 | ((SAADC_CH_CONFIG_MODE_SE << SAADC_CH_CONFIG_MODE_Pos ) & SAADC_CH_CONFIG_MODE_Msk )
176199 | ((saadcBurst << SAADC_CH_CONFIG_BURST_Pos ) & SAADC_CH_CONFIG_BURST_Msk );
177200 NRF_SAADC -> CH [0 ].PSELN = psel ;
0 commit comments