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.