Open anecdata opened 3 years ago
correct, there's a busy pin, its waiting for the busy pin to change which it wont. its not a bug - dont do this :)
so... close this issue?
...the 2-color EPD code does not hang. I wonder if there's some timeout missing in the 3-color case.
well, we should probably time out on busy failure - wanna find where it does the busy wait and have it bail after some time with an exception?
Looking at the core, the busy_state
of the busy pin defaults to True
, and the difference between 2C & 3C behavior is explained by that and the library inits:
busy_state
, so the core uses the default True
busy_state
as False
Also (learned) EPDs can use either the busy pin or the refresh time parameter to determine when it's OK to refresh, i.e., the busy pin isn't required. And indeed, if the 3-color IL0373 is set up in CircuitPython code without the busy_pin=epd_busy
parameter, it does not hang. That makes the circumstances for this issue even more narrow.
I think there are two things to improve:
time to revisit this one on the FeatherS2 with 8.0.5 stable?
Firmware
Code/REPL
Behavior
If the display is not connected, or nor connected correctly, the code will hang (unreponsive to control-C, requires hard reset).
This may a case of:
me: "doctor, it hurts when I do that"
doctor: "don't do that"
But the use case is that displays are typically write-only and can't report their existence, identity, or status. There are a variety of hardware and software scenarios where code may expect a certain display and not be able to write to it.To demonstrate the issue, no display is required, just run it as-is to run the working case, then comment out the 2C EPD block and uncomment the 3C EPD block to run the hanging case.
The SSD1675 2-color EPD and ST7789 TFT displays do not exhibit this behavior.