Hallo,
ich habe mir bei Pollin das recht günstige Grafikdisplay gekauft und
versucht mit einem atmega8 anzusteuern.
Ich benutze dazu den Code von http://en.radzio.dxp.pl/sed1520/ und habe
folgendes Problem. Die Schriftzeichen der font.h-Datei können wunderbar
angezeigt werden, will ich jedoch einezelne Pixel und somit ja auch
Linien und Bitmaps anzeigen, funktioniert es nicht. Es werden keine
Linien oder Pixel angezeigt sondern nur schwarze Balken der vier
"Zeilen" oder wie im Datenblatt Pages.
Ich glaube herausgefunden zu haben das es an er Funktion
GLCD_ReadData(); liegt, da bei mir der Rückgabewert immer 0xFF ist. Wenn
ich hier permanent 0x00 eingebe funktioniert es, überschreibt dann
jedoch die schon geschriebenen restlichen Pixel.
1 | unsigned char GLCD_ReadData(void)
|
2 | {
|
3 | unsigned char tmp;
|
4 |
|
5 | GLCD_WaitForStatus(0x80, 0);
|
6 | GLCD_WaitForStatus(0x80, 1);
|
7 | SED1520_CONTROL_PORT |= SED1520_A0;
|
8 | SED1520_CONTROL_PORT |= SED1520_RW;
|
9 | SED1520_DATA_DDR = 0x00;
|
10 | SED1520_DATA_PORT = 0xFF;
|
11 | if(lcd_x < 61)
|
12 | {
|
13 | SED1520_CONTROL_PORT |= SED1520_E1;
|
14 | asm("nop");asm("nop");
|
15 | SED1520_CONTROL_PORT &= ~SED1520_E1;
|
16 | asm("nop");asm("nop");
|
17 | SED1520_CONTROL_PORT |= SED1520_E1;
|
18 | asm("nop");asm("nop");
|
19 | tmp = SED1520_DATA_PIN;
|
20 | SED1520_CONTROL_PORT &= ~SED1520_E1;
|
21 | }
|
22 | else
|
23 | {
|
24 | SED1520_CONTROL_PORT |= SED1520_E2;
|
25 | asm("nop");asm("nop");
|
26 | SED1520_CONTROL_PORT &= ~SED1520_E2;
|
27 | asm("nop");asm("nop");
|
28 | SED1520_CONTROL_PORT |= SED1520_E2;
|
29 | asm("nop");asm("nop");
|
30 | tmp = SED1520_DATA_PIN;
|
31 | SED1520_CONTROL_PORT &= ~SED1520_E2;
|
32 | }
|
33 | SED1520_DATA_DDR = 0xFF;
|
34 | lcd_x++;
|
35 | if(lcd_x > 121)
|
36 | lcd_x = 0;
|
37 | return tmp;
|
38 | }
|
Ich habe schon mehr "NOPs" eingefügt usw. hilft alles nichts. löscht man
z.B. die oberen beiden Setzen und Rücksetzen des E1 bzw. E2 raus, ist
der Rückgabewert der Funktion die aktuelle Pageadresse aber eben nicht
der eigentliche Wert der angezeigten Pixel.
Ich hoffe jemand kann mir helfen, da mir absolut nichts mehr einfällt
was ich noch ausprobieren könnte.
Im Datenblatt des sed1520 Controllers habe ich noch gelesen, falls man
etwas lesen möchte muss der PIN /RD auf low sein, ich habe ihn jedoch
dauerhaft über pullup Widerstand auf high liegen. Dieser wird aber auch
in der Bibliothek überhaupt nicht berücksichtigt. Kann es hierdrann
liegen?
Habe schon alle Themen bezüglich dieses Displays durchgeschaut, aber
kein ähnliches Problem gefunden.
Vielen dank