@@ -140,56 +140,12 @@ void analogOversampling( uint32_t ulOversampling )
140140 }
141141}
142142
143- uint32_t analogRead ( uint32_t ulPin )
143+ static uint32_t analogRead_internal ( uint32_t psel )
144144{
145- uint32_t pin = SAADC_CH_PSELP_PSELP_NC ;
146145 uint32_t saadcResolution ;
147146 uint32_t resolution ;
148147 volatile int16_t value = 0 ;
149148
150- if (ulPin >= PINS_COUNT ) {
151- return 0 ;
152- }
153-
154- ulPin = g_ADigitalPinMap [ulPin ];
155-
156- switch ( ulPin ) {
157- case 2 :
158- pin = SAADC_CH_PSELP_PSELP_AnalogInput0 ;
159- break ;
160-
161- case 3 :
162- pin = SAADC_CH_PSELP_PSELP_AnalogInput1 ;
163- break ;
164-
165- case 4 :
166- pin = SAADC_CH_PSELP_PSELP_AnalogInput2 ;
167- break ;
168-
169- case 5 :
170- pin = SAADC_CH_PSELP_PSELP_AnalogInput3 ;
171- break ;
172-
173- case 28 :
174- pin = SAADC_CH_PSELP_PSELP_AnalogInput4 ;
175- break ;
176-
177- case 29 :
178- pin = SAADC_CH_PSELP_PSELP_AnalogInput5 ;
179- break ;
180-
181- case 30 :
182- pin = SAADC_CH_PSELP_PSELP_AnalogInput6 ;
183- break ;
184-
185- case 31 :
186- pin = SAADC_CH_PSELP_PSELP_AnalogInput7 ;
187- break ;
188-
189- default :
190- return 0 ;
191- }
192-
193149 if (readResolution <= 8 ) {
194150 resolution = 8 ;
195151 saadcResolution = SAADC_RESOLUTION_VAL_8bit ;
@@ -218,8 +174,8 @@ uint32_t analogRead( uint32_t ulPin )
218174 | ((SAADC_CH_CONFIG_TACQ_3us << SAADC_CH_CONFIG_TACQ_Pos ) & SAADC_CH_CONFIG_TACQ_Msk )
219175 | ((SAADC_CH_CONFIG_MODE_SE << SAADC_CH_CONFIG_MODE_Pos ) & SAADC_CH_CONFIG_MODE_Msk )
220176 | ((saadcBurst << SAADC_CH_CONFIG_BURST_Pos ) & SAADC_CH_CONFIG_BURST_Msk );
221- NRF_SAADC -> CH [0 ].PSELN = pin ;
222- NRF_SAADC -> CH [0 ].PSELP = pin ;
177+ NRF_SAADC -> CH [0 ].PSELN = psel ;
178+ NRF_SAADC -> CH [0 ].PSELP = psel ;
223179
224180
225181 NRF_SAADC -> RESULT .PTR = (uint32_t )& value ;
@@ -249,6 +205,62 @@ uint32_t analogRead( uint32_t ulPin )
249205 return mapResolution (value , resolution , readResolution );
250206}
251207
208+
209+ uint32_t analogRead ( uint32_t ulPin )
210+ {
211+ uint32_t psel = SAADC_CH_PSELP_PSELP_NC ;
212+
213+ if (ulPin >= PINS_COUNT ) {
214+ return 0 ;
215+ }
216+
217+ ulPin = g_ADigitalPinMap [ulPin ];
218+
219+ switch ( ulPin ) {
220+ case 2 :
221+ psel = SAADC_CH_PSELP_PSELP_AnalogInput0 ;
222+ break ;
223+
224+ case 3 :
225+ psel = SAADC_CH_PSELP_PSELP_AnalogInput1 ;
226+ break ;
227+
228+ case 4 :
229+ psel = SAADC_CH_PSELP_PSELP_AnalogInput2 ;
230+ break ;
231+
232+ case 5 :
233+ psel = SAADC_CH_PSELP_PSELP_AnalogInput3 ;
234+ break ;
235+
236+ case 28 :
237+ psel = SAADC_CH_PSELP_PSELP_AnalogInput4 ;
238+ break ;
239+
240+ case 29 :
241+ psel = SAADC_CH_PSELP_PSELP_AnalogInput5 ;
242+ break ;
243+
244+ case 30 :
245+ psel = SAADC_CH_PSELP_PSELP_AnalogInput6 ;
246+ break ;
247+
248+ case 31 :
249+ psel = SAADC_CH_PSELP_PSELP_AnalogInput7 ;
250+ break ;
251+
252+ default :
253+ return 0 ;
254+ }
255+
256+ return analogRead_internal (psel );
257+ }
258+
259+ uint32_t analogReadVDD ( void )
260+ {
261+ return analogRead_internal (SAADC_CH_PSELP_PSELP_VDD );
262+ }
263+
252264#ifdef __cplusplus
253265}
254266#endif
0 commit comments