|
As you said yesterday I find anagrams easy
Life should not be a journey to the grave with the intention of arriving safely in a pretty and well-preserved body, but rather to skid in broadside in a cloud of smoke, thoroughly used up, totally worn out, and loudly proclaiming “Wow! What a Ride!" - Hunter S Thompson - RIP
|
|
|
|
|
|
Yes
Life should not be a journey to the grave with the intention of arriving safely in a pretty and well-preserved body, but rather to skid in broadside in a cloud of smoke, thoroughly used up, totally worn out, and loudly proclaiming “Wow! What a Ride!" - Hunter S Thompson - RIP
|
|
|
|
|
I love the ESP32S3
I hate the ESP32S3
It has far more GPIO pins available than the traditional ESP32, which I'll call the S1 since they should have to begin with, probably.
Typically you can read or write as many as 32 pins at a time in one shot, for very fast GPIO switching or sampling of multiple pins. This is necessary to drive LCD displays connected via an 8 or 16 bit i8080 bus for example.
The problem is Espressif has the header for the function to read the high pins, but you get a linker error if you try to use it - it's not implemented.
And the S3 is often driving LCDs at least in part from the high pins. This isn't an issue on the "S1" because it doesn't have very many. Barely more than 32. The first 32 can be read and written just fine.
The higher pins can be written to but not read from, at least not using these high speed functions.
Long story short, this means you can't read the frame buffer back off on LCD display. That doesn't seem like a big deal until you need to do alpha blending. You may not think you need to do alpha blending but it's necessary for anti-aliasing, which is necessary for rendering smooth crisp vector fonts.
You can work around it by drawing to your own in memory bitmap buffer and then sending that to the display as a unit but sometimes that's not practical.
I've contacted Espressif about it and they haven't been very helpful. I opened an issue on github and it went nowhere.
So I tried another approach. I tried endeavoring to get them to revise their LCD Panel API for driving LCDs only to find out they're not doing anything that I haven't already tried, and don't support reads at all, even on low pins.
Well, come to find out, a similar (but different) graphics library than mine came around to supporting the S3, and I was intrigued. I've used Bodmer's code as a guide before (with appropriate accreditation) and so I thought this was a huge win.
Until I looked at it and found he doesn't support reads either. They're just not implemented.
*headdesk*
There's only one graphics library that works well under these write only constraints, and all the complications it brings involving rendering things like PNGs with an alpha layer, or true type fonts, and that library is LVGL.
And the only reason they can do it is because they use a "widget" / "user control" paradigm where each screen keeps state of all its controls, and - this is critical - can redraw them on a whim.
So it can move around the screen with a small bitmap, drawing parts of controls, and sending that to the display all day long, and that's exactly what it does, very efficiently, for a system that uses controls and screen state at least.
But if you want a stateless setup (direct drawing rather than controls - more suitable for animations for example) you are out of luck.
htcw_gfx (my library) and TFT_eSPI (Bodmer's) leave you with half measures at best.
And Espressif looks to want nothing to do with any of it.
It's a shame too, because it's such a great platform otherwise, and this is such a minor issue, with such major ramifications. If only they would just implement that function.
It might be possible for me to go to the machine datasheet for this chip but holy hell diving through those register offsets has got to be a nightmare. Even thinking about it makes me feel overwhelmed.
To err is human. Fortune favors the monsters.
|
|
|
|
|
Silly API.., good HW stuff though.
Let's go deeper and hack the registers.
Uhhhhhhhhhhhhhhhm....
Crappy registers.........
Let's redesign the chip from scratch.
"In testa che avete, Signor di Ceprano?"
-- Rigoletto
|
|
|
|
|
Shame them on their facebook page?
I have found a couple of constants across the years. 1) As a customer, you will push the hardware far further and harder than the maker anticipated. You will become the subject matter expert. I've had several calls where the support engineer said, "Huh, I didn't know you could do that."
2) As a maker, you can never anticipate customers using your product the way you intended. It's like herding cats.
Charlie Gilley
“They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759
Has never been more appropriate.
|
|
|
|
|
ditto
"A little time, a little trouble, your better day"
Badfinger
|
|
|
|
|
Wordle 584 4/6
⬛⬛⬛🟨⬛
⬛🟩⬛🟩🟩
⬛🟩🟩🟩🟩
🟩🟩🟩🟩🟩
|
|
|
|
|
Wordle 584 4/6
🟩⬛⬛🟩⬛
🟩⬛⬛🟩⬛
🟩⬛🟩🟩⬛
🟩🟩🟩🟩🟩
|
|
|
|
|
Wordle 584 4/6
⬜⬜⬜⬜🟨
⬜⬜🟩⬜⬜
🟩⬜🟩⬜⬜
🟩🟩🟩🟩🟩
|
|
|
|
|
Wordle 584 4/6
⬜🟨⬜⬜🟨
⬜🟩🟩🟨⬜
🟩🟩🟩⬜🟩
🟩🟩🟩🟩🟩
|
|
|
|
|
Wordle 584 3/6*
⬜⬜🟨⬜⬜
⬜🟩🟩🟨⬜
🟩🟩🟩🟩🟩
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
Wordle 584 3/6
⬛⬛⬛⬛⬛
⬛🟩🟩🟩🟩
🟩🟩🟩🟩🟩
3/6 and less than 20 seconds too. Lucky starter.
GCS/GE d--(d) s-/+ a C+++ U+++ P-- L+@ E-- W+++ N+ o+ K- w+++ O? M-- V? PS+ PE Y+ PGP t+ 5? X R+++ tv-- b+(+++) DI+++ D++ G e++ h--- r+++ y+++* Weapons extension: ma- k++ F+2 X
|
|
|
|
|
Wordle 584 4/6
⬜🟨⬜🟩⬜
⬜⬜⬜⬜⬜
🟩⬜🟨⬜⬜
🟩🟩🟩🟩🟩
|
|
|
|
|
🟩⬜⬜🟩⬜
🟩⬜⬜🟩⬜
🟩⬜🟩🟩⬜
🟩🟩🟩🟩🟩
Life should not be a journey to the grave with the intention of arriving safely in a pretty and well-preserved body, but rather to skid in broadside in a cloud of smoke, thoroughly used up, totally worn out, and loudly proclaiming “Wow! What a Ride!" - Hunter S Thompson - RIP
|
|
|
|
|
Wordle 584 5/6
⬛⬛🟨🟩⬛
⬛🟩⬛🟩⬛
⬛🟩⬛🟩⬛
⬛🟩🟩🟩🟩
🟩🟩🟩🟩🟩
Get me coffee and no one gets hurt!
|
|
|
|
|
Wordle 584 4/6*
⬜🟨⬜⬜⬜
🟨⬜⬜🟩⬜
⬜⬜🟩🟩🟩
🟩🟩🟩🟩🟩
Happiness will never come to those who fail to appreciate what they already have. -Anon
|
|
|
|
|
Wordle 584 4/6*
⬜🟨⬜⬜⬜
⬜⬜⬜🟩🟩
⬜🟩🟩🟩🟩
🟩🟩🟩🟩🟩
|
|
|
|
|
Wordle 584 4/6
⬜🟩⬜⬜⬜
⬜🟩⬜⬜⬜
🟩🟩🟩⬜⬜
🟩🟩🟩🟩🟩
"A little time, a little trouble, your better day"
Badfinger
|
|
|
|
|
Visual Studio "intellisense" shows signs of brilliance; then there is:
I typed:
public void Initialize( float minutes ) {
this.TimeRemaining = TimeSpan.
}
I expected:
this.TimeRemaining = TimeSpan.FromMinutes( minutes );
I got:
this.TimeRemaining = TimeSpan.FromSeconds( minutes );
... repeatedly.
"Before entering on an understanding, I have meditated for a long time, and have foreseen what might happen. It is not genius which reveals to me suddenly, secretly, what I have to say or to do in a circumstance unexpected by other people; it is reflection, it is meditation." - Napoleon I
|
|
|
|
|
In my copy of VS 2022 when I start typing the word "From" I see a list of all available methods, including FromMinutes. It doesn't auto select FromSeconds. I just arrow down to fromminutes and select that. when I type frommi it automatically shows fromminutes.
As far as I can tell this is by design and I don't see anything out of the ordinary. It is what I would expect.
|
|
|
|
|
I'm using VS2022 17.4.4 and get what you expected:
this.TimeRemaining = TimeSpan.FromMinutes(minutes);
|
|
|
|
|
It's probably selecting the TimeSpan method you've used repeatedly recently. VS's intellisense has tried to become better at predicting what you intend to type. What happens if you wait a couple of seconds? Does it then show you all the methods?
/ravi
|
|
|
|
|
It's the minute details that count
|
|
|
|
|
When Minutes count Intellisense is only Seconds away!
If you can't laugh at yourself - ask me and I will do it for you.
|
|
|
|