adafruit / Adafruit_Protomatter

RGB matrix library for Arduino
70 stars 24 forks source link

Not compatible with esp32 version 3.0.0 #78

Closed chockenberry closed 2 months ago

chockenberry commented 6 months ago

I recently updated to version 3.0.0 of Espressif's 'esp32' package (after being prompted to by the IDE).

When building Protomatter with this new version, I see the following errors:

In file included from /Users/CHOCK/Documents/Arduino/libraries/Adafruit_Protomatter/src/arch/arch.h:190,
                 from /Users/CHOCK/Documents/Arduino/libraries/Adafruit_Protomatter/src/core.c:33:
/Users/CHOCK/Documents/Arduino/libraries/Adafruit_Protomatter/src/arch/esp32-common.h: In function '_PM_esp32commonTimerInit':
/Users/CHOCK/Documents/Arduino/libraries/Adafruit_Protomatter/src/arch/esp32-common.h:92:19: error: too many arguments to function 'timerBegin'
   92 |     core->timer = timerBegin(_PM_timerNum, 2, true); // 1:2 prescale, count up
      |                   ^~~~~~~~~~
In file included from /Users/CHOCK/Library/Arduino15/packages/esp32/hardware/esp32/3.0.0/cores/esp32/esp32-hal.h:84,
                 from /Users/CHOCK/Library/Arduino15/packages/esp32/hardware/esp32/3.0.0/cores/esp32/Arduino.h:36,
                 from /Users/CHOCK/Documents/Arduino/libraries/Adafruit_Protomatter/src/arch/arch.h:166:
/Users/CHOCK/Library/Arduino15/packages/esp32/hardware/esp32/3.0.0/cores/esp32/esp32-hal-timer.h:35:13: note: declared here
   35 | hw_timer_t *timerBegin(uint32_t frequency);
      |             ^~~~~~~~~~
/Users/CHOCK/Documents/Arduino/libraries/Adafruit_Protomatter/src/arch/esp32-common.h:94:3: error: too many arguments to function 'timerAttachInterrupt'
   94 |   timerAttachInterrupt(timer, &_PM_esp32timerCallback, true);
      |   ^~~~~~~~~~~~~~~~~~~~
/Users/CHOCK/Library/Arduino15/packages/esp32/hardware/esp32/3.0.0/cores/esp32/esp32-hal-timer.h:50:6: note: declared here
   50 | void timerAttachInterrupt(hw_timer_t *timer, void (*userFunc)(void));
      |      ^~~~~~~~~~~~~~~~~~~~

exit status 1

The workaround is to go into the Boards Manager, find 'esp32', and downgrade to version 2.0.17.

lboue commented 4 months ago

Same issue for me. Could you fix this?

biomurph commented 4 months ago

Hi, An issue came up here https://github.com/WorldFamousElectronics/PulseSensorPlayground/issues/195 Similar to the one you are posting about.

Does the other thread solve your problem?

lboue commented 4 months ago

Hi, An issue came up here WorldFamousElectronics/PulseSensorPlayground#195 Similar to the one you are posting about.

Does the other thread solve your problem?

@biomurph No but I found a fix. You can download Adafruit_Protomatter-master.zip and install it manually in the Arduino IDE. The patch is already in the repo but has not been released in a new version.

biomurph commented 3 months ago

@lboue I am getting a runtime error: E (127) gptimer: gptimer_start(348): timer is not enabled yet It seems the timer is not turned on? Or not started? After that serial message, it sends the following:

Refresh FPS = ~205
Refresh FPS = ~204
Refresh FPS = ~205
Refresh FPS = ~204

Which means that it is in the loop. I am not sure about the significance of the FPS number?

I am targeting ESP32-S2 Dev Generic. The ESP32-S2 is mounted on a board labeled FK-8F1. Link provided for reference. I have managed to reverse engineer the connections from ESP to level shifter to HUB75 pinout.

The Matrix is 32 pix tall and 160 pix wide (5 32x32 panels). This is what it looks like when I run the ‘simple’ sketch. It is clearly scanning the rows correctly, because I can see single row lit up on power-down.

First Try

When I roll back the ESP32 board files to v2.0.17, I don’t see the gptimer error, but I get the same patter of lights…

UPDATE:

In my decoding of the pin connections, I must have accidentally crossed some wires. After dragging an exacto blade tip between all of the ESP32 pins (I know) I am finally getting something!

Second Try

codeforlibre commented 3 months ago

Hi, An issue came up here WorldFamousElectronics/PulseSensorPlayground#195 Similar to the one you are posting about. Does the other thread solve your problem?

@biomurph No but I found a fix. You can download Adafruit_Protomatter-master.zip and install it manually in the Arduino IDE. The patch is already in the repo but has not been released in a new version.

@biomurph Hello, This fixed my "error: too many arguments to function 'timerBegin' 92 | core->timer = timerBegin(_PM_timerNum, 2, true); // 1:2 prescale, count up". Arduino IDE 2.3.2 Board: Adafruit Metro ESP32-S2 @lboue Thank you for reporting the issue on Github. https://github.com/adafruit/Adafruit_Protomatter/issues/79

biomurph commented 3 months ago

@codeforlibre 🤘🏻

CyanBlob commented 2 months ago

@lboue I am getting a runtime error: E (127) gptimer: gptimer_start(348): timer is not enabled yet It seems the timer is not turned on? Or not started? After that serial message, it sends the following:

Are you still seeing this error? I'm running into this as well

tannewt commented 2 months ago

I've published 1.7.0 with IDF 5 (in Arduino ESP 3) support.