Forum: Mikrocontroller und Digitale Elektronik s1d13700 die 2.


von Michael H. (morph1)


Lesenswert?

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?

von Benedikt K. (benedikt)


Lesenswert?

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.

von Michael H. (morph1)


Lesenswert?

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 :)

von Benedikt K. (benedikt)


Lesenswert?

Du verletzt die Timing Specs t1 und t2: CS und die Adressen müssen vor 
dem WR/RD Impuls anliegen.

von Michael H. (morph1)


Lesenswert?

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.

von Benedikt K. (benedikt)


Lesenswert?

Michael H. wrote:
> ich adressiere indirekt, also keine adressen.

Ist A0 keine Adresse?

von Michael H. (morph1)


Lesenswert?

naja, streng genommen wohl schon :)

wie ich schon editiert hab, daran lags aber (scheinbar) nicht :|

von Benedikt K. (benedikt)


Lesenswert?

Und dasselbe auch beim Abschalten der RD/WR Signale (t5/6 im Datenblatt)

von Michael H. (morph1)


Lesenswert?

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?

von Benedikt K. (benedikt)


Lesenswert?

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?

von Michael H. (morph1)


Lesenswert?

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.

von Benedikt K. (benedikt)


Lesenswert?

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.

von Michael H. (morph1)


Lesenswert?

mache ich bei gelegenheit, muss mir nur eine kamera dazu ausleihe, meine 
sony hat nach 5 jahren treue die patschen gestreckt.

von Ecki B. (ecki)


Lesenswert?

Hallo Michael
bin gerade auch dabei einen s1d13700 anzusteuern.
könnt ich mir mal deinen code ansehen ?


gruß eckard

von morph1 (Gast)


Angehängte Dateien:

Lesenswert?

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 :)

von Michael H. (morph1)


Angehängte Dateien:

Lesenswert?

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

von Ting yu L. (lgeorge123)


Lesenswert?

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);
}

von morph1 (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.