diff --git a/lib/lib_basic/OneWire-Stickbreaker-20190506-1.1/OneWire.h b/lib/lib_basic/OneWire-Stickbreaker-20190506-1.1/OneWire.h index edb31d1eb9ad..2747bea4eca4 100644 --- a/lib/lib_basic/OneWire-Stickbreaker-20190506-1.1/OneWire.h +++ b/lib/lib_basic/OneWire-Stickbreaker-20190506-1.1/OneWire.h @@ -161,7 +161,7 @@ IO_REG_TYPE directRead(IO_REG_TYPE pin) #else // plain ESP32 if ( pin < 32 ) return (GPIO.in >> pin) & 0x1; - else if ( pin < 40 ) + else if ( pin < 46 ) return (GPIO.in1.val >> (pin - 32)) & 0x1; #endif @@ -176,7 +176,7 @@ void directWriteLow(IO_REG_TYPE pin) #else // plain ESP32 if ( pin < 32 ) GPIO.out_w1tc = ((uint32_t)1 << pin); - else if ( pin < 34 ) + else if ( pin < 46 ) GPIO.out1_w1tc.val = ((uint32_t)1 << (pin - 32)); #endif } @@ -189,7 +189,7 @@ void directWriteHigh(IO_REG_TYPE pin) #else // plain ESP32 if ( pin < 32 ) GPIO.out_w1ts = ((uint32_t)1 << pin); - else if ( pin < 34 ) + else if ( pin < 46 ) GPIO.out1_w1ts.val = ((uint32_t)1 << (pin - 32)); #endif } @@ -211,19 +211,15 @@ void directModeInput(IO_REG_TYPE pin) ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_gpio_desc[pin].pullup | rtc_gpio_desc[pin].pulldown); } #elif ESP_IDF_VERSION_MAJOR > 3 // ESP32-S2 needs IDF 4.2 or later - int rtcio_num = rtc_io_number_get((gpio_num_t)pin); - - if (rtcio_num >= 0) { - uint32_t rtc_reg(rtc_io_desc[rtcio_num].reg); - - if ( rtc_reg ) // RTC pins PULL settings - { - ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_io_desc[rtcio_num].mux); - ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_io_desc[rtcio_num].pullup | rtc_io_desc[rtcio_num].pulldown); - } + int8_t rtc_io = esp32_gpioMux[pin].rtc; + uint32_t rtc_reg = (rtc_io != -1)?rtc_io_desc[rtc_io].reg:0; + if ( rtc_reg ) // RTC pins PULL settings + { + ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_io_desc[rtc_io].mux); + ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_io_desc[rtc_io].pullup | rtc_io_desc[rtc_io].pulldown); } #endif - + // Input if ( pin < 32 ) GPIO.enable_w1tc = ((uint32_t)1 << pin); else @@ -231,7 +227,7 @@ void directModeInput(IO_REG_TYPE pin) uint32_t pinFunction((uint32_t)2 << FUN_DRV_S); // what are the drivers? pinFunction |= FUN_IE; // input enable but required for output as well? - pinFunction |= ((uint32_t)2 << MCU_SEL_S); + pinFunction |= ((uint32_t)PIN_FUNC_GPIO << MCU_SEL_S); ESP_REG(DR_REG_IO_MUX_BASE + esp32_gpioMux[pin].reg) = pinFunction; @@ -257,19 +253,15 @@ void directModeOutput(IO_REG_TYPE pin) ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_gpio_desc[pin].pullup | rtc_gpio_desc[pin].pulldown); } #elif ESP_IDF_VERSION_MAJOR > 3 // ESP32-S2 needs IDF 4.2 or later - int rtcio_num = rtc_io_number_get((gpio_num_t)pin); - - if (rtcio_num >= 0) { - uint32_t rtc_reg(rtc_io_desc[rtcio_num].reg); - - if ( rtc_reg ) // RTC pins PULL settings - { - ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_io_desc[rtcio_num].mux); - ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_io_desc[rtcio_num].pullup | rtc_io_desc[rtcio_num].pulldown); - } + int8_t rtc_io = esp32_gpioMux[pin].rtc; + uint32_t rtc_reg = (rtc_io != -1)?rtc_io_desc[rtc_io].reg:0; + if ( rtc_reg ) // RTC pins PULL settings + { + ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_io_desc[rtc_io].mux); + ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_io_desc[rtc_io].pullup | rtc_io_desc[rtc_io].pulldown); } #endif - + // Output if ( pin < 32 ) GPIO.enable_w1ts = ((uint32_t)1 << pin); else // already validated to pins <= 33 @@ -277,7 +269,7 @@ void directModeOutput(IO_REG_TYPE pin) uint32_t pinFunction((uint32_t)2 << FUN_DRV_S); // what are the drivers? pinFunction |= FUN_IE; // input enable but required for output as well? - pinFunction |= ((uint32_t)2 << MCU_SEL_S); + pinFunction |= ((uint32_t)PIN_FUNC_GPIO << MCU_SEL_S); ESP_REG(DR_REG_IO_MUX_BASE + esp32_gpioMux[pin].reg) = pinFunction;