Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Aug 12 17:58
    Makuna closed #585
  • Aug 12 17:44
    Makuna labeled #587
  • Aug 12 17:44
    Makuna closed #593
  • Aug 12 17:43
    Makuna opened #593
  • Aug 10 00:37
    Makuna closed #592
  • Aug 09 21:51
    morganm5665 opened #592
  • Aug 07 14:45
    Makuna closed #588
  • Aug 07 14:45
    Makuna locked #588
  • Aug 07 14:44
    Makuna assigned #587
  • Aug 07 14:44
    Makuna labeled #587
  • Aug 07 14:44
    Makuna labeled #587
  • Aug 07 06:04
    giangchipsieucuoi edited #588
  • Aug 07 06:03
    giangchipsieucuoi opened #588
  • Aug 07 06:03
    giangchipsieucuoi labeled #588
  • Aug 06 16:25
    furynick opened #587
  • Aug 03 10:20
    devarishi7 opened #586
  • Aug 02 14:47
    Makuna reopened #215
  • Jul 30 15:48
    Makuna opened #585
  • Jul 23 08:56
    silvan2468 closed #584
  • Jul 20 23:32
    silvan2468 opened #584
Michael
@sparkplug23
analogRead(4) (still no networking) seams to be okay
Drzony
@drzony
What helped me in a similar case was to create a task pinned to the core that arduino is running on with show() in it
Michael
@sparkplug23
@drzony Not a bad idea. Did you pin it to core0 or core1? Core1 is wifi right?
Connection to wifi, even without mqtt, is enough to stop the output updating (but does not hang)
Drzony
@drzony
For me only the RMT method works
although I haven't checked I2S for a long time now
Michael
@sparkplug23
NeoEsp32Rmt0Sk6812Method?
Drzony
@drzony
I'm using WS2812, but on my side I had random "sparks" every 30s or so
Michael
@sparkplug23
So pinning resolved it with RMT method?
Drzony
@drzony
the only way I was able to have a stable display was to create a task waiting on semaphore and then releasing it when I want to do show()
Michael
@sparkplug23
Okay cool, might be worth it as a temporary solution
Drzony
@drzony
while (true)
{
  while (ulTaskNotifyTake(pdTRUE, portMAX_DELAY) != 1)
    ;
  pixel_bus.Show();
  while (!_pixel_bus.CanShow())
    ;
  xSemaphoreGive(semaphore);
}
Michael
@sparkplug23
Awesome, thank you. Appreciate it
Drzony
@drzony
and to commit:
  xTaskNotifyGive(commit_task);
  while (xSemaphoreTake(semaphore, portMAX_DELAY) != pdTRUE)
    ;
it's for FastLED, but changing it to NeoPixelBus should be easy
combination of high cpu usage + WiFi sending made it reproducible very easily
Michael
@sparkplug23
Thanks I will try this on the weekend, got busy with work. Did you ever have an issue with other led types (ie ws8212?) with networking. I think I did a year ago but then I think it went away, maybe I just think it did.
Drzony
@drzony
I am using WS2812
Michael
@sparkplug23
image.png
NeoEsp8266DmaMethodBase([[maybe_unused]] uint8_t pin, uint16_t pixelCount, size_t elementSize, size_t settingsSize) :
it may be a programming issue on my part, but I upgraded the library and now my code does not compile
image.png
Does this seem like a known issue, I havent been able to figure out why the error is happening
Michael
@sparkplug23
Evidently yes, when I use the compile with an older version it works okay.
Michael
@sparkplug23

Makuna/NeoPixelBus#257

I see, its c17++ I need

Michael
@sparkplug23
Unfortunately as its part of my larger project, I can't switch to c17 yet. As a fork though, I removed the [maybe_unused] until I can upgrade compiler version. I am suppressing any warnings already.
Michael Miller
@Makuna
@sparkplug23 did you try to just define maybe_unused to an empty statement?
Michael
@sparkplug23
I didn't, but that would also work. Next time I pull/merge into my fork I will do that.
Michael Miller
@Makuna
BTW, c17++ should be fully compatible with older versions so the move upward is often just compiler flags. There are some very rare cases where some new warnings will appear but these are a good thing to look into.
Michael
@sparkplug23
I haven't yet had time to implement any fixes on the esp32, but it is definitely a huge issue now. I may have had some flickering in the past but now my devices stripbus output locks up. If I had any transitions (ie high data output) it freezes in seconds. The esp32 itself remains fully working (it is not hanging) but no output. I am going to implement drzony rtos solution soon to see if that can help
Michael
@sparkplug23

First results are promising

NeoEsp32I2s0Sk6812Method with RTOS pinned task for show appears to be working well (with mqtt/wifi active too). This method previously hung my esp32.

NeoEsp32Rmt0Sk6812Method still causes flickering

oh, crash. Will need to investigate. Had 5 minutes there
Drzony
@drzony
make sure you pin the task to Arduino core
ARDUINO_RUNNING_CORE
Michael
@sparkplug23
Thanks, was that a define you made yourself? (didn't work for me).
I just used xPortGetCoreID()which will give me the core the init part of my code is running from. For now, I am exclusively using dual core esp32's so I will worry about single core later
Drzony
@drzony
It's defined in Arduino core, but it might depend on the version you are using
Michael
@sparkplug23
Yeah cant seem to find it, I made sure the header was included correctly but still not showing. I will figure it later, 36 minutes running stable there (until I reflashed). No flickering noticed but only hitting 12 leds on my test rig
Thanks again for the code, dropped it into my big project and worked :) Going back over it now
I just had to add instance into the begin since my neopixel bus is inside another class
Michael
@sparkplug23
Uploading now to a few of my home automation devices that run 24/7 and will see how this works long term. Will report back if this helps. It would be great to introduce this as an example in neopixel library down the line.
Michael Miller
@Makuna
his sounds like a great topic to add to the wiki ;-)
Michael
@sparkplug23
Kinda unrelated, but from your experience you may have a nice solution for this. I am working on saving my crash reports like tasmota does in RTC_NOINIT etc, then using my binary to decode the crash.
Have you came across a nice program (or if arduino/vscode can nicely do this) to take a binary file saved from the last upload, and then copy and paste a crash stack? I want to start going after those illusive bugs that only happen once every few weeks now, harder to find.
Drzony
@drzony
nope
Michael
@sparkplug23
I have only done it via the built in decoder over serial. I have got many unique builds of my code (using defines to enable sensors etc) so need to work on a streamlined method. I need to look again how tas does it, its been a year since I looked
Drzony
@drzony
decoder is just a python script that reads the elf and decodes exception
you can run it separately
Michael
@sparkplug23
That is probably how they do it. Like I said, been a while. It is probably easier than I remember
I only have 12 leds plugged into test setup, but with sending for 1500 leds your method seems to be working well.
I also have another with 100 connected leds and it is good too
Michael
@sparkplug23
Gentleman, next fun!