@@ -161,7 +161,7 @@ IO_REG_TYPE directRead(IO_REG_TYPE pin)
161
161
#else // plain ESP32
162
162
if ( pin < 32 )
163
163
return (GPIO.in >> pin) & 0x1 ;
164
- else if ( pin < 40 )
164
+ else if ( pin < 46 )
165
165
return (GPIO.in1 .val >> (pin - 32 )) & 0x1 ;
166
166
#endif
167
167
@@ -176,7 +176,7 @@ void directWriteLow(IO_REG_TYPE pin)
176
176
#else // plain ESP32
177
177
if ( pin < 32 )
178
178
GPIO.out_w1tc = ((uint32_t )1 << pin);
179
- else if ( pin < 34 )
179
+ else if ( pin < 46 )
180
180
GPIO.out1_w1tc .val = ((uint32_t )1 << (pin - 32 ));
181
181
#endif
182
182
}
@@ -189,7 +189,7 @@ void directWriteHigh(IO_REG_TYPE pin)
189
189
#else // plain ESP32
190
190
if ( pin < 32 )
191
191
GPIO.out_w1ts = ((uint32_t )1 << pin);
192
- else if ( pin < 34 )
192
+ else if ( pin < 46 )
193
193
GPIO.out1_w1ts .val = ((uint32_t )1 << (pin - 32 ));
194
194
#endif
195
195
}
@@ -211,27 +211,23 @@ void directModeInput(IO_REG_TYPE pin)
211
211
ESP_REG (rtc_reg) = ESP_REG (rtc_reg) & ~(rtc_gpio_desc[pin].pullup | rtc_gpio_desc[pin].pulldown );
212
212
}
213
213
#elif ESP_IDF_VERSION_MAJOR > 3 // ESP32-S2 needs IDF 4.2 or later
214
- int rtcio_num = rtc_io_number_get ((gpio_num_t )pin);
215
-
216
- if (rtcio_num >= 0 ) {
217
- uint32_t rtc_reg (rtc_io_desc[rtcio_num].reg );
218
-
219
- if ( rtc_reg ) // RTC pins PULL settings
220
- {
221
- ESP_REG (rtc_reg) = ESP_REG (rtc_reg) & ~(rtc_io_desc[rtcio_num].mux );
222
- ESP_REG (rtc_reg) = ESP_REG (rtc_reg) & ~(rtc_io_desc[rtcio_num].pullup | rtc_io_desc[rtcio_num].pulldown );
223
- }
214
+ int8_t rtc_io = esp32_gpioMux[pin].rtc ;
215
+ uint32_t rtc_reg = (rtc_io != -1 )?rtc_io_desc[rtc_io].reg :0 ;
216
+ if ( rtc_reg ) // RTC pins PULL settings
217
+ {
218
+ ESP_REG (rtc_reg) = ESP_REG (rtc_reg) & ~(rtc_io_desc[rtc_io].mux );
219
+ ESP_REG (rtc_reg) = ESP_REG (rtc_reg) & ~(rtc_io_desc[rtc_io].pullup | rtc_io_desc[rtc_io].pulldown );
224
220
}
225
221
#endif
226
-
222
+ // Input
227
223
if ( pin < 32 )
228
224
GPIO.enable_w1tc = ((uint32_t )1 << pin);
229
225
else
230
226
GPIO.enable1_w1tc .val = ((uint32_t )1 << (pin - 32 ));
231
227
232
228
uint32_t pinFunction ((uint32_t )2 << FUN_DRV_S); // what are the drivers?
233
229
pinFunction |= FUN_IE; // input enable but required for output as well?
234
- pinFunction |= ((uint32_t )2 << MCU_SEL_S);
230
+ pinFunction |= ((uint32_t )PIN_FUNC_GPIO << MCU_SEL_S);
235
231
236
232
ESP_REG (DR_REG_IO_MUX_BASE + esp32_gpioMux[pin].reg ) = pinFunction;
237
233
@@ -257,27 +253,23 @@ void directModeOutput(IO_REG_TYPE pin)
257
253
ESP_REG (rtc_reg) = ESP_REG (rtc_reg) & ~(rtc_gpio_desc[pin].pullup | rtc_gpio_desc[pin].pulldown );
258
254
}
259
255
#elif ESP_IDF_VERSION_MAJOR > 3 // ESP32-S2 needs IDF 4.2 or later
260
- int rtcio_num = rtc_io_number_get ((gpio_num_t )pin);
261
-
262
- if (rtcio_num >= 0 ) {
263
- uint32_t rtc_reg (rtc_io_desc[rtcio_num].reg );
264
-
265
- if ( rtc_reg ) // RTC pins PULL settings
266
- {
267
- ESP_REG (rtc_reg) = ESP_REG (rtc_reg) & ~(rtc_io_desc[rtcio_num].mux );
268
- ESP_REG (rtc_reg) = ESP_REG (rtc_reg) & ~(rtc_io_desc[rtcio_num].pullup | rtc_io_desc[rtcio_num].pulldown );
269
- }
256
+ int8_t rtc_io = esp32_gpioMux[pin].rtc ;
257
+ uint32_t rtc_reg = (rtc_io != -1 )?rtc_io_desc[rtc_io].reg :0 ;
258
+ if ( rtc_reg ) // RTC pins PULL settings
259
+ {
260
+ ESP_REG (rtc_reg) = ESP_REG (rtc_reg) & ~(rtc_io_desc[rtc_io].mux );
261
+ ESP_REG (rtc_reg) = ESP_REG (rtc_reg) & ~(rtc_io_desc[rtc_io].pullup | rtc_io_desc[rtc_io].pulldown );
270
262
}
271
263
#endif
272
-
264
+ // Output
273
265
if ( pin < 32 )
274
266
GPIO.enable_w1ts = ((uint32_t )1 << pin);
275
267
else // already validated to pins <= 33
276
268
GPIO.enable1_w1ts .val = ((uint32_t )1 << (pin - 32 ));
277
269
278
270
uint32_t pinFunction ((uint32_t )2 << FUN_DRV_S); // what are the drivers?
279
271
pinFunction |= FUN_IE; // input enable but required for output as well?
280
- pinFunction |= ((uint32_t )2 << MCU_SEL_S);
272
+ pinFunction |= ((uint32_t )PIN_FUNC_GPIO << MCU_SEL_S);
281
273
282
274
ESP_REG (DR_REG_IO_MUX_BASE + esp32_gpioMux[pin].reg ) = pinFunction;
283
275
0 commit comments