Notice. New forum software under development. It's going to miss a few functions and look a bit ugly for a while, but I'm working on it full time now as the old forum was too unstable. Couple days, all good. If you notice any issues, please contact me.
jwettroth Regular Member Joined: 02/08/2011 Location: United StatesPosts: 80
Posted: 02:22am 30 Jul 2022
Copy link to clipboard
Print this post
I recently finished a User LCD Panel Driver for the EPSON SED1565, I added it to the old thread about User Drivers as requested. LinK: https://www.thebackshed.com/forum/ViewTopic.php?FID=16&TID=10159#189740
I was a bit disappointed at the speed of this driver. It takes over a second to print an 8 character string? With the speed of even a basic Micromite, this was a lot of instructions. I have to say I didn't fully understand the driver code and copied from the SSD1306 Driver that was provided by others. I'm now looking into a the speed of this driver and have found what I think is a basic flaw. Usually, when I think I've found a basic flaw, I'm very weary that maybe I don't understand something.
The problem is that the organization of my display is 100 x 64. The 64 vertical pixels are divided into 8x 8bit pages. I can quickly write 8 pixels at a time by sending a byte to the display which fills in one column in a given page once the start is set.
The organization of the data for the fonts and the bitmaps is oriented horizontally I belive. The first byte is the pixel on the very first row of the LCD, if I'm reading things correctly. When I do a display update as in the code I wrote, it updates a single pixel at a time rather than an 8 bit column.
Code that I've written in the past, was byte oriented to take advantage of a byte writing 8 pixels in a column.
Am I missing something?John Wettroth
matherp Guru Joined: 11/12/2012 Location: United KingdomPosts: 10628
Posted: 09:26am 30 Jul 2022
Copy link to clipboard
Print this post
Not sure what you want us to say. The majority of displays write pixels columns then rows and the fonts are defined accordingly. Your display is incompatible with this from an efficiency perspective. If you can't get the speed you need in Basic you will need to write a proper loadable driver in C.
jwettroth Regular Member Joined: 02/08/2011 Location: United StatesPosts: 80
Posted: 05:38pm 30 Jul 2022
Copy link to clipboard
Print this post
Thank you very much for the response. My main concern is that was that I had some fundamental misunderstanding and how things work. I guess I have an oddball display. I will try it in C. Thanks again.John Wettroth
jwettroth Regular Member Joined: 02/08/2011 Location: United StatesPosts: 80
Posted: 06:02pm 30 Jul 2022
Copy link to clipboard
Print this post
Peter, What confused me further is that this memory organization is the same way that the OLED SSD1306 is organized which is what I started with and is given as a starting point as a good example in the LCD User Docs for a BASIC based driver. I think the author of this BASIC oled driver worked on this driver in BASIC and then found a C version. I'll look at the C coded version of this driver- its not compatible but shouldn't be difficult to tailor. I just don't want to be chasing a misunderstanding- you are saying that the current organization works for the majority of displays. Can anyone verify that the BASIC version of the SSD1306 driver as posted takes roughly 100 mS/character.
Thanks again. Edited 2022-07-31 04:05 by jwettrothJohn Wettroth