4
« on: November 15, 2016, 12:55:12 AM »
Hey NHD,
EDIT: after trying to catch the trigger for the flickering, I found it depends on the first char of the first line. a "tall" char causes flickering, a "short" char doesn't.
Common chars I found be "unharmful" are: acegmnopqrsuvwxyz-+=.
So far this theory is consistent. Anyone has a clue about the cause of it and maybe a solution?
Original:
The repetitive issue is that the display keeps flickering after some changing prints. The flicker is a row of dots for a split second and once it starts it won't stop until a power off then on. I still can't figure out the exact trigger that starts the flickering but it always eventually starts, and my application send new prints every 250 ms so that it starts pretty soon on system start.
My init routine is copied from the data sheet and is also compared to some examples from the web.
Here it is just in case:
RES = 1; //reset HIGH – inactive
delayms(1); //delay
command(0x2A); //function set (extended command set)
command(0x71); //function selection A
data(0x00); // disable internal VDD regulator (2.8V I/O). data(0x5C) = enable regulator (5V I/O)
command(0x28); //function set (fundamental command set)
command(0x08); //display off, cursor off, blink off
command(0x2A); //function set (extended command set)
command(0x79); //OLED command set enabled
command(0xD5); //set display clock divide ratio/oscillator frequency
command(0x70); //set display clock divide ratio/oscillator frequency
command(0x78); //OLED command set disabled
command(0x08); //extended function set (2‐lines)
command(0x06); //COM SEG direction
command(0x72); //function selection B
data(0x00); //ROM CGRAM selection
command(0x2A); //function set (extended command set)
command(0x79); //OLED command set enabled
command(0xDA); //set SEG pins hardware configuration
command(0x10); //set SEG pins hardware configuration
command(0xDC); //function selection C
command(0x00); //function selection C
command(0x81); //set contrast control
command(0x7F); //set contrast control
command(0xD9); //set phase length
command(0xF1); //set phase length
command(0xDB); //set VCOMH deselect level
command(0x40); //set VCOMH deselect level
command(0x78); //OLED command set disabled
command(0x28); //function set (fundamental command set)
command(0x01); //clear display
command(0x80); //set DDRAM address to 0x00
command(0x0C); //display ON
delayms(100); //delay
Any and all ideas are welcome.
Thanks,
Eyar