Also: nach einigem Stillstand, mach ich seit heute nun weiter. folgendes dilemma: das display funktioniert einige zeit (<1min) dann scheint die übertragung der adresse nicht zu klappen, er zeichnet den zeileninhalt einfach in die nächste spalte, statt wie in meinem testbild gewünscht,in die nächste zeile, gleiche spalte. das wiederrum macht er ca 10 sek, dann wird der bildschirm komplett schwarz. merklich ist das eindeutig, weil ich ihn nur eine spalte beschreiben lasse (also text vertikal sozusagen). timingmäßig hab ich so ziemlich alles durch was mir möglich war. habt ihr eine idee?
Es klingt sehr nach einem Timingproblem oder sowas in der Art. Zeig mal deinen Code, vor allem die Routinen die Befehle/Daten an den 13700 senden.
1 | void GLCD_WriteData(unsigned char dataToWrite) |
2 | {
|
3 | // Generic Interface
|
4 | S1D13700_DATA_DIR = 0x00; |
5 | S1D13700_DATA_PORT = dataToWrite; |
6 | NOP(); |
7 | NOP(); |
8 | S1D13700_CONTROL_PORT &= ~(S1D13700_CS | S1D13700_A0 | S1D13700_WR); |
9 | |
10 | NOP(); |
11 | NOP(); |
12 | NOP(); |
13 | S1D13700_CONTROL_PORT |= (S1D13700_CS | S1D13700_A0 | S1D13700_WR); |
14 | |
15 | }
|
16 | //-------------------------------------------------------------------------------------------------
|
17 | //-------------------------------------------------------------------------------------------------
|
18 | void GLCD_WriteCommand(unsigned char commandToWrite) |
19 | {
|
20 | S1D13700_DATA_DIR = 0x00; |
21 | S1D13700_DATA_PORT = commandToWrite; |
22 | NOP(); |
23 | NOP(); |
24 | S1D13700_CONTROL_PORT &= ~(S1D13700_CS | S1D13700_WR); |
25 | |
26 | NOP(); |
27 | NOP(); |
28 | NOP(); |
29 | S1D13700_CONTROL_PORT |= (S1D13700_CS | S1D13700_WR); |
30 | }
|
31 | //-------------------------------------------------------------------------------------------------
|
32 | //-------------------------------------------------------------------------------------------------
|
33 | unsigned char GLCD_ReadData(void) |
34 | {
|
35 | unsigned char tmp; |
36 | S1D13700_DATA_DIR = 0xFF; |
37 | S1D13700_CONTROL_PORT &= ~(S1D13700_CS | S1D13700_RD); |
38 | NOP(); |
39 | NOP(); |
40 | NOP(); |
41 | NOP(); |
42 | tmp = S1D13700_DATA_PORT_IN; |
43 | S1D13700_CONTROL_PORT |= (S1D13700_CS | S1D13700_RD); |
44 | |
45 | return tmp; |
46 | }
|
danke das du dich meiner annimmst :)
Du verletzt die Timing Specs t1 und t2: CS und die Adressen müssen vor dem WR/RD Impuls anliegen.
ich adressiere indirekt, also keine adressen. aber ich werd mal CS vorziehen, melde gleich was passiert edit: nun
1 | void GLCD_WriteCommand(unsigned char commandToWrite) |
2 | {
|
3 | S1D13700_DATA_DIR = 0x00; |
4 | S1D13700_DATA_PORT = commandToWrite; |
5 | NOP(); |
6 | S1D13700_CONTROL_PORT &= ~(S1D13700_CS); |
7 | NOP(); |
8 | |
9 | S1D13700_CONTROL_PORT &= ~(S1D13700_CS | S1D13700_WR); |
10 | |
11 | NOP(); |
12 | NOP(); |
13 | NOP(); |
14 | S1D13700_CONTROL_PORT |= (S1D13700_CS | S1D13700_WR); |
15 | }
|
leider keine verbesserung.
Michael H. wrote:
> ich adressiere indirekt, also keine adressen.
Ist A0 keine Adresse?
naja, streng genommen wohl schon :) wie ich schon editiert hab, daran lags aber (scheinbar) nicht :|
meine güte, bisher scheint das echt zu klappen, ich wills nicht verschreien. ich werd wie versprochen die routinen in die codesammlung einpflegen :) herzlichen dank!!! eine frage noch, hast du eine software die mir passende schrift-arrays machen kann? die einteilung ist ja leider anders als beim ks108, folglich haben alle freewareprogramme für mich nichts passendes erzeugt. mittlerweile rennts schon mehr als 3 minuten =) ps: noch eine frage, mir scheint der konstrast etwas zu wenig, allerdings kommen mir balken mit unterschiedlicher helligkeit wenn ich am poti drehe, liegt das vl an der config?
Michael H. wrote: > meine güte, bisher scheint das echt zu klappen, ich wills nicht > verschreien. Die Epson Controller sind sehr pingelig was das Timing angeht. Ich hatte mal stunden gebraucht um einen S1D13504 zum Laufen zu bekommen (obwohl die Software copy&paste aus einem funktionierenden Projekt war, nur die IO Routinen musste ich anpassen). Der hatte ähnliche Anforderungen ans Timing, die man wirklich bis ins letze Detail befolgen musste, damit das ganze zuverlässig lief. > eine frage noch, hast du eine software die mir passende schrift-arrays > machen kann? Hier sind ein paar Schriftarten in allen möglichen Ausrichtungen. Beitrag "LCD Schriftarten ( Fonts in veschiedenen Größen )" Ansonsten sollten auch alle Font Tools für den T6963 funktionieren, z.B. sowas wie hier: Beitrag "GLCD T6963C Font-Tool" > ps: noch eine frage, mir scheint der konstrast etwas zu wenig, > allerdings kommen mir balken mit unterschiedlicher helligkeit wenn ich > am poti drehe, liegt das vl an der config? Kann ich mir eher nicht vorstellen. Wenn du große Blöcke, lange senkrechte oder waagrechte Linien anzeigst, dann kann es durchaus zu Übersprechen kommen, das ergibt dann unterschiedliche Helligkeiten. Oder hast du vielleicht den 4/16 Graustufenmodus aktiviert?
sorry, schlecht ausgedrückt. es sind zeilen a 10-12 pixel hoch -> von oben nach unten unterschiedlich hell, leuchten halt dezent durch. denke also an die zeilentreiber. wie gesagt, man kanns ja wegblenden, mich wundert nur das es nicht gleichmäßig ist. meins hatte ich übrigens auch übernommen ;) darum fand ich das mim timing so merkwürdig. nochmals danke =) graustufen kommen nun dran wo das schreiben langsam funktioniert.
Michael H. wrote: > es sind zeilen a 10-12 pixel hoch -> von oben nach unten unterschiedlich > hell, leuchten halt dezent durch. Ich kann mir das immer noch nicht so recht vorstellen. Mach am besten mal ein Foto.
mache ich bei gelegenheit, muss mir nur eine kamera dazu ausleihe, meine sony hat nach 5 jahren treue die patschen gestreckt.
Hallo Michael bin gerade auch dabei einen s1d13700 anzusteuern. könnt ich mir mal deinen code ansehen ? gruß eckard
Verzeiht mir das ungeschick, ich habs nicht vergessen, ich habs schlicht nicht fertig... der code sieht recht grausam aus, er entlockt dem display aber zumindest mal ein paar pixel. ich werd mich wie versprochen melden wenn ich das in eine vernünftige form gebracht hab, ich hatte nur bisher wenig interesse daran weil ich ein wenig was fürs studium tun musste :)
hoffe das bringt wen weiter und nicht noch mehr zu verzweiflung :) ich glaub/hoffe/hätts gern das ichs bis anfang februar überarbeiten kann, aber es sieht zeitlich wirklich mies aus
Hi morph1 (Gast), is the following code function well ?? void GLCD_GraphicGoTo(unsigned int x, unsigned int y) { GLCD_SetCursorAddress(SED1335_GRAPHICSTART + (y * 40) + x/8); } and void GLCD_Bitmap(char * bmp, int x, int y, int width, int height) { unsigned int i, j; for(i = 0; i < height ; i++) { GLCD_GraphicGoTo(x, y+i); GLCD_WriteCommand(SED1335_MWRITE); for(j = 0; j < width/8; j++) GLCD_WriteData(GLCD_ReadByteFromROMMemory(bmp+j+(40*i))); } } and char GLCD_ReadByteFromROMMemory(char * ptr) { return *(ptr); }
the posted code runs well, but not every function is neccessary or even used in my project. the project was killed some weeks ago, i had no time to complete it, i'm sorry
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.