Moin,
ich probiere hier gerade ein Display (240x128) mit einem RA8835A
Controller zum laufen zu bekommen. Dafür habe ich die lib von hier
genommen: http://en.radzio.dxp.pl/sed1335/. Soweit funktioniert das
auch, allerdings flackert der Bildschirm ganz schön, wenn ich Daten
lese/schreibe. Im Datenblatt steht dazu folgendes:
"Display flicker may occur if there is more than one
consecutive access that cannot be ignored within a frame.
The microprocessor can minimize this either by performing
these accesses intermittently, or by continuously
checking the status flag (D6) and waiting for it to become
HIGH.
When CS, A0 and RD are LOW, D6 functions as the
display status indication output. It is HIGH during the
TV-mode vertical retrace period or the LCD-mode horizontal
retrace period, and LOW, during the period the
controller is writing to the display. By monitoring D6 and
writing to the data memory only during retrace periods,
the display can be updated without causing screen flicker."
Hat das jemand von Euch schon einmal gemacht???
Hier noch einmal die WriteData Funktion:
1 | void RA8835A_WriteData(unsigned char dataToWrite)
|
2 | {
|
3 | RA8835A_fWait();
|
4 |
|
5 | RA8835A_DATA_PORT = dataToWrite;
|
6 | RA8835A_DATA_DIR = 0xFF;
|
7 | RA8835A_CONTROL_PORT &= ~(RA8835A_CS | RA8835A_A0 | RA8835A_WR);
|
8 | asm("nop");
|
9 | RA8835A_CONTROL_PORT |= (RA8835A_CS | RA8835A_A0 | RA8835A_WR);
|
10 | }
|
Wenn ich das so mache:
1 | static void RA8835A_Wait( void )
|
2 | {
|
3 | RA8835A_CONTROL_PORT &= ~(RA8835A_CS | RA8835A_A0 | RA8835A_RD);
|
4 | RA8835A_DATA_PORT = 0x00;
|
5 | RA8835A_DATA_DIR = 0x00;
|
6 |
|
7 | while(!(RA8835A_DATA_PIN & 0x40))
|
8 | ;
|
9 | }
|
dann wird das läuft er da nie durch... Habt Ihr da eine Idee? Ist das
eigentlich richtig, da den RD-Pin zu nehmen?
Viele Grüße
Ozzy