@@ -140,56 +140,12 @@ void analogOversampling( uint32_t ulOversampling )
140
140
}
141
141
}
142
142
143
- uint32_t analogRead ( uint32_t ulPin )
143
+ static uint32_t analogRead_internal ( uint32_t psel )
144
144
{
145
- uint32_t pin = SAADC_CH_PSELP_PSELP_NC ;
146
145
uint32_t saadcResolution ;
147
146
uint32_t resolution ;
148
147
volatile int16_t value = 0 ;
149
148
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
-
193
149
if (readResolution <= 8 ) {
194
150
resolution = 8 ;
195
151
saadcResolution = SAADC_RESOLUTION_VAL_8bit ;
@@ -218,8 +174,8 @@ uint32_t analogRead( uint32_t ulPin )
218
174
| ((SAADC_CH_CONFIG_TACQ_3us << SAADC_CH_CONFIG_TACQ_Pos ) & SAADC_CH_CONFIG_TACQ_Msk )
219
175
| ((SAADC_CH_CONFIG_MODE_SE << SAADC_CH_CONFIG_MODE_Pos ) & SAADC_CH_CONFIG_MODE_Msk )
220
176
| ((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 ;
223
179
224
180
225
181
NRF_SAADC -> RESULT .PTR = (uint32_t )& value ;
@@ -249,6 +205,62 @@ uint32_t analogRead( uint32_t ulPin )
249
205
return mapResolution (value , resolution , readResolution );
250
206
}
251
207
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
+
252
264
#ifdef __cplusplus
253
265
}
254
266
#endif
0 commit comments