Random + TODOs?

A project log for Ridiculous [LCD] Display Hacks

What more can I say?

esot.ericesot.eric 02/15/2019 at 08:051 Comment

This project-page is REALLY random...

Here's Something for later avr-lvds-lcd (why didn't I call that avr-fpdlink? And why do I continue to call it the former despite its now handling a slew of LCD interfaces?):

Apparently Mike has broken the enigma that is MIPI-DSI, at least enough to drive an old iPod display.

That's a nice screen, as I recall, and from my understanding of Mike's work running it with an AVR may actually be possible.

And then...?

Kinda makes yah wonder about other MIPI-DSI displays... Great starting-point, anyhow.


UPDATE May-ish, 202...1:

ahhh, he mentions 'vertical dithering' which is a trick I thought I invented for avr-lvds-lcd to get 64 'colors' from an attiny85, which can only supply two pseudo-lvds channels (blue/timing and lvds-clock, as I recall) of the four, leaving red and green "pixels" to either full-on or full-off, since they were driven by GPIOs rather than the PWM outputs which can toggle much faster than the CPU clock.

[TODO2, thought-of just now, why use a pseudo-lvds channel for the clock, instead of a GPIO? Oh yeah, lvds-clock is 3 ticks high 4 ticks low during ONE AVR instruction cycle... but wait, only at the fastest refresh rate, which is completely unnecessary for MarioThing which only updates at about 2Hz framerate... hmmm...]

That setup displays HUGE blocks for each "pixel", 16x16 stretched onto a 1024x768 display... so each graphical "pixel" consists of numerous lines of physical pixels... so vertical-dithering is nearly invisible at the normal viewing distances. Thing is, the '85 has far too little RAM for something like this, so more than 64 colors isn't really doable as-is. On The Other Hand: I'd developed numerous image-ram-packing methods for various needs... (e.g. higher resolution at the cost of slower refresh rates)... and hadn't considered vertical-dithering in those other cases... so this is a TODO to consider such things. [Key factor from the vid: vertical dithering COMBINED with high vertical resolution allows for subpixels-ish... e.g. black background with yellow-green feathers, transitioning halfway down what would otherwise be a square pixel... and the sorts of images that would lend themselves well to such low-res-horizontal/high-res-vertical]

Above: 16x16 on a 1024x768 display, refreshing at 2Hz with vertical dithering on red and green channels from full-on to full-off gives 4 shades, each. Slow refresh captured partway down the image as the "question block" "shimmers" between different copper-ish hues, making it look like metal...

Above: High-res/low-refresh is NYI on attiny85, but I think it could be, with either fewer colors or dithering... this was an attiny861 as i recall. The image is drawn vertically, bottom to top, the white at the top is where the RAM was maxed-out from too many color-transitions. Each vertical pseudo-pixel is represented in memory as a color and number of pixels packed into each byte. Note how text uses a lot of color-changes, so uses far too much memory to rotate the display to landscape. And the three rainbows of blue almost look the same due to gamma, I guess. That can't really be changed, due to the pseudo-lvds implementation limits....(?) Weird, though, as the 4 shades of blue (as well as red and green) are distributed pretty evenly from 0-100%. Hmmm...

(Friggin google sites doesn't allow linking of images?!)


TODO: This project-page could use some serious redoing... the original "project" is long defunct, and this has turned into a bit of a catch-all for my LCD-related projects/ideas...

See also #(VFD) Panel-filter and #avr-lvds-lcd binary-clock