PaulStoffregen / OneWire

Library for Dallas/Maxim 1-Wire Chips
http://www.pjrc.com/teensy/td_libs_OneWire.html
595 stars 390 forks source link

Arduino IDE 2.1 with ESP32 board 3.0.0-alpha2 : OneWire not compatible #132

Closed sbarabe closed 7 months ago

sbarabe commented 10 months ago

I was trying to use OneWire with ESP32 bards and had error at compilation about GPIO.in.val not existing... I've rolllback to ESP32 2.0.14 and it compile just fine.

So you should expect request about this sooner or later.

I had the same issue with the TFT_eSPI library but they emitted a update version and it's fine now.

Thanks for the library !

YCottreau commented 10 months ago

Hi, I have the same issue using ESP32 3.0.0 with OneWire library. Thanks if you solve this soon, the 3.0.0 official release is annonced for end of decembre :-)

Emilevanderlaan commented 8 months ago

I have the same problem , I use the ESP32S3 and ONEWIRE_PIN 4

In file included from c:\Users\emile\OneDrive\Documents\Arduino\libraries\OneWire\OneWire.cpp:144: c:\Users\emile\OneDrive\Documents\Arduino\libraries\OneWire\util/OneWire_direct_gpio.h: In function 'uint32_t directRead(uint32_t)': c:\Users.\OneDrive\Documents\Arduino\libraries\OneWire\util/OneWire_direct_gpio.h:134:17: error: 'GPIO' was not declared in this scope; did you mean 'PI'? 134 | return (GPIO.in >> pin) & 0x1; | ^~~~ | PI c:\Users.\OneDrive\Documents\Arduino\libraries\OneWire\util/OneWire_direct_gpio.h:136:17: error: 'GPIO' was not declared in this scope; did you mean 'PI'? 136 | return (GPIO.in1.val >> (pin - 32)) & 0x1; | ^~~~ | PI c:\Users..\OneDrive\Documents\Arduino\libraries\OneWire\util/OneWire_direct_gpio.h: In function 'void directWriteLow(uint32_t)': c:\Users..\OneDrive\Documents\Arduino\libraries\OneWire\util/OneWire_direct_gpio.h:149:9: error: 'GPIO' was not declared in this scope; did you mean 'PI'? 149 | GPIO.out_w1tc = ((uint32_t)1 << pin); | ^~~~ | PI c:\Users.\OneDrive\Documents\Arduino\libraries\OneWire\util/OneWire_direct_gpio.h:151:9: error: 'GPIO' was not declared in this scope; did you mean 'PI'? 151 | GPIO.out1_w1tc.val = ((uint32_t)1 << (pin - 32)); | ^~~~ | PI c:\Users..\OneDrive\Documents\Arduino\libraries\OneWire\util/OneWire_direct_gpio.h: In function 'void directWriteHigh(uint32_t)': c:\Users..\OneDrive\Documents\Arduino\libraries\OneWire\util/OneWire_direct_gpio.h:162:9: error: 'GPIO' was not declared in this scope; did you mean 'PI'? 162 | GPIO.out_w1ts = ((uint32_t)1 << pin); | ^~~~ | PI c:\Users..\OneDrive\Documents\Arduino\libraries\OneWire\util/OneWire_direct_gpio.h:164:9: error: 'GPIO' was not declared in this scope; did you mean 'PI'? 164 | GPIO.out1_w1ts.val = ((uint32_t)1 << (pin - 32)); | ^~~~ | PI c:\Users.\OneDrive\Documents\Arduino\libraries\OneWire\util/OneWire_direct_gpio.h: In function 'void directModeInput(uint32_t)': c:\Users..\OneDrive\Documents\Arduino\libraries\OneWire\util/OneWire_direct_gpio.h:187:13: error: 'GPIO' was not declared in this scope; did you mean 'PI'? 187 | GPIO.enable_w1tc = ((uint32_t)1 << pin); | ^~~~ | PI c:\Users..\OneDrive\Documents\Arduino\libraries\OneWire\util/OneWire_direct_gpio.h:189:13: error: 'GPIO' was not declared in this scope; did you mean 'PI'? 189 | GPIO.enable1_w1tc.val = ((uint32_t)1 << (pin - 32)); | ^~~~ | PI c:\Users.\OneDrive\Documents\Arduino\libraries\OneWire\util/OneWire_direct_gpio.h: In function 'void directModeOutput(uint32_t)': c:\Users.\OneDrive\Documents\Arduino\libraries\OneWire\util/OneWire_direct_gpio.h:213:13: error: 'GPIO' was not declared in this scope; did you mean 'PI'? 213 | GPIO.enable_w1ts = ((uint32_t)1 << pin); | ^~~~ | PI c:\Users..\OneDrive\Documents\Arduino\libraries\OneWire\util/OneWire_direct_gpio.h:215:13: error: 'GPIO' was not declared in this scope; did you mean 'PI'? 215 | GPIO.enable1_w1ts.val = ((uint32_t)1 << (pin - 32)); | ^~~~ | PI

seansplayin commented 8 months ago

Same error, rolled back esp32 3.0.0-alpha3 to 2.1.14

meikjaeckle commented 7 months ago

This can be fixed by adding the missing include. GPIO is declared in <soc/gpio_struct.h>. Adding #include <soc/gpio_struct.h> after following include solved the issue for me: https://github.com/PaulStoffregen/OneWire/blob/dbf203344f5867b8c47a2e9f924267a91b35fb06/util/OneWire_direct_gpio.h#L159C1-L159C27 And the fix works with 2.0.14 of arduino-esp32 as well.

schreiekm commented 4 months ago

Issue appearing again upwards from version 2.3.3 and adding #include <soc/gpio_struct.h> doesn't fix it.