I am running two such simple strips right now, and it works very well.
I am running two such simple strips right now, and it works very well.
1) I already had an OS that ran on the AVR, and didn't want to spend the effort porting it entirely to the ESP8266. That being said, I've since mostly ported it over anyway. The ESP8266 is indeed wayyyy harder to use than an AVR. But, as it turns out, not harder than dealing with two extremely dissimilar CPUs.
2) The ESP8266 doesn't have great I/O. In particular, I wanted to run PWM LED strips and the AVR allowed me to do that (the LED driver circuit can run PWM or digital output on the same pins). However, I realized pretty quick after selling a few of them that nobody else cared about PWM and not long after that, neither did I. Only a handful of my projects still use the PWM circuit.
3) The AVR has a much, much better DMA than the ESP8266. There's a fast LED style dithering feature available for some LED strips, and the Xmega DMA is what made it possible to do that. Yet another feature than turned out to be less useful than I'd thought - most strips I use clock too slowly to dither anyway.
4) It also has more analog I/O, which I use in my own projects, but probably no one else does.
But the cottage industry around these addressable LED driver boards is getting pretty ridiculous. The PixelBlaze already does a great job of controlling them from an ESP8266. And the LEDs aren't that hard to use with generic hardware like Arduinos, even for people with zero prior experience.
There's no doubt about it, this world caters to the hucksters and the unrealistically optimistic.
I've had the same; sorting a big list of numbers or doing any action that takes a few seconds can make the WiFi unstable, disconnect, or not respond.
I'm curious though, there are some dual-core designs with ESP8266 compatibility out there, would that help?
1) Generally poor documentation. Non-existent at the register level - you are entirely at the mercy of the SDK and what other people have reverse engineered.
2) Crashes on unaligned pointer access. This is something that ARM generally handles with ease (though there are exceptions). Porting code from ARM or 8 bit machines to the ESP8266 can take a fair amount of effort in tracking down all of the unaligned access exceptions that come up. It's extremely frustrating.
3) To that point, the SPI flash access is also beholden to 32 bit alignment. That really complicates things if you port code that relied on a typical SPI flash's ability to access at a 1 byte granularity.
4) Poor compiler support. I think the latest GCC they support is 5.something. It requires a custom backend so it is vendor maintained. Contrast with ARM support in GCC which is generally outstanding.
5) No hardware debug support. You can run GDB over a serial port, but that's no where near as powerful as having an actual JTAG/SWD port.
6) The program memory architecture is complex and difficult to use (poor documentation is part of the issue here). There's no on-chip flash - code streams from a SPI flash into a RAM cache. Some code has to run out of RAM and must be placed by the linker as such.
All that being said - the chip works. The Wifi is excellent (I run dozens of these at a time, they are more reliable than my Unifi routers they connect to). For a $2 FCC certified module it's unbeatable. I have really come around to like this part in spite of its many flaws - it was built to do one thing very well at a price point no one else could touch - and by and large it succeeded.
One last question, platform.io? Pretty good ecosystem in general - and with the wide variety of assets to select from, a lot of your points become less painful ..
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/...