WHOOF okay some victories to report with the OLED board.
first of all the documentation is .. inconsitent.. clearly translated, with some outright wrong information, and some very difficult-to-decipher stuff. Luckily there was a fairly complete set of sample code provided, even if it was horrifically ineffecient. I was able to knock the framerate up to 40fps with some optimization passes, or a screen reload in just a hair over 25 milliseconds, thats the important thing, the ability to refresh the whole screen without being able to see a vertical flash with the naked eye. In practice I won't be running it that fast, but I AM going to need to fetch/move the frame buffer from a serial SRAM to the OLED board, and it looks like that is going to work.
The default addressing mode is.. weird.. and it's made weirder by the prehistoric reverse-martian configuration options provided by the manufacturer. I have no idea what they intended some of these addressing modes for but it has the feel of a small team of engineers (maybe even a single programmer) just brainstorming everything that COULD be done.. and doing it all.. even if it wasn't clear anyone would ever need it.
Anyways I have it the way I want it now, which is selectable left-right/top-bottom (for screen flipping), continuous address space:
bit 0
.
0x0000 ------------------------------------------------ 0x007F
.
bit 7
0
.
0x0080 ------------------------------------------------ 0x00FF
.
7
0
.
0x0100 ------------------------------------------------ 0x017F
.
7
0
.
0x0180 ------------------------------------------------ 0x01FF
.
7
So I reset the pointer to the top left, then load data sequentially (the memory address auto-increments) this is where a lot of the speed increase came from, the rest came from not doing a start-command-stop for EVERY WORD. now I load it all in one go.
So I have some software on the PC side to do font/glyph/bitmap translations, as soon as it can cook anything like usably I'll release it. Anyone who wants to create animations, you will be able to load them
-Curt
Team Akkadian Paintball Squad
B.S. Mechanical Engineering UW-Platteville 2012
Originally Posted by neftaly
Redesigned OLED board today, made it smaller and added the serial SRAM for frame buffer.
BOM:
OLED 1.0 Bill of Materials
Part Description
Mouser Part #
U1 ATTiny84a
U2 EEPROM CAT24C512XI-T2
U3 Serial RAM 23K640-I/SN
H3 12pin .5mm zif 538-52745-1297
R1 0805 4.7k ERJ-6ENF4701V
R2 0805 4.7k ERJ-6ENF4701V
R3 0805 4.7k ERJ-6ENF4701V
C1 0805 1uf VJ0805Y105KXQTW1BC
C2 0805 10uf GRM21BR61E106KA73L
C3 0805 .1uf 08055C104MAT2A
C4 0805 .1uf 08055C104MAT2A
VR 3.3 LDO TLV70433DBVR
don't go crazy yet, U1 might be too close to the ZIF socket, I need to make sure the cable clears it (will have the parts in a few days) and I still need to solve the problem of how to mount it.
I am right now thinking tabs, but that seems like it could get in the way in a lot of cases.
Got the SRAM serial chip in today and wrote some proof-of-concept code to get data streaming through a bit-banged serial interface and out i2c onto the oled chip (sram2oled() in firmware/oled/main.c if you are following along the git repository)
long smashing-head-on-keyboard-staring-at-'scope story short, it works, and at full speed is able to knock out 33fps! plenty fast for fluid animations.
here is a video update:
http://northarc.com/dna/videoupdate.mp4
CRO is unimpressed -_-
Cathode Ray Oscilloscope.