Forum: Mikrocontroller und Digitale Elektronik Probleme mit EPSON S1D13700F01 Mega 2561


von Paul (Gast)


Angehängte Dateien:

Lesenswert?

Hallo

Bekomme das Display nicht initíalisiert.
Habe schon alles ausprobiert es zeigt nichts an außer einen schwarzen 
strich 1 pixel dick am oberen rand.

Mode ist 8080 generic.

Hier ist die Init. Habe diese von der S1335 LIB die auch schon mit einen 
Epson S1335 funktioniert.

Display ist ein :CFAG320240CX-TFH-T-TS.

WAIT,DISPL,FGND sind nicht Beschaltet lt Hersteller nicht notwendig.

Hat jemadn noch einen Rat??

Besten Dank

Gruß
Paulchen

von Paul (Gast)


Lesenswert?

Habe schon alle Verbindungen geprüft MEga zum Display aber nichts nur 
ein Schwarzer strich der nach der INIT verschwindet.

Habe auch sämmtliche Commadn Write Data Write Prozeduren durch sind alle 
total Unterschiedlich immer das gleiche Problem.

Kann ich die Gleiche INIT nehmen wie beim 1335 Epson dort geht mein 
LEdsee 320x240 Display???

Danke

Gruß

Paul

von Paul (Gast)


Lesenswert?

Hallo

Ich habe mal die Beiden Schaltungen verglichen vom Ledsee Display und 
vom Crystalfontz.

Das Ledsee wird Kontrastmäßig über GND und VEE gesteuert
Das Crystalfontz über 5V und VEE.

Ist das so????


Ich bekomme an VO maximal -9V bis +4,5V typisch laut DB ist -18V.

Kann es damit zusammenhängen das nach dem INIT der Streifen oben weg ist 
und ich nichts sehe weil der Kontrast nicht sauber geht????

Poti 10K eine seite an +5V die andere an VEE -25V und der Schleifer an 
VO.
Messen tue ich VO und GND.

Danke

Gruß

Paul

von Paul (Gast)


Lesenswert?

Hallo

Fehler ist gefunden habe den Kompletten Anschlußstecker Stftleisten 
falsch verbunden PIN 1 = PIN20

Alles umeglötet.

Nur habe ich das Problem das Layer 1 Grafiklayer geht aber Layer 2 und 3 
nur Müll anzeigen.
Habe die SAD1L+H Adressen vom 1335 Übernommen.
320/8=40
240*40=9600 =0x0000 Start  0x2580 ende Layer1
0x8581 start 0x4b01 ende Layer2
0x4b02 start 0x7082 ende Layer3


ist das beim 13700 genau so laut Datenblatt ja.

Danke

Gruß

Paul

von Paul (Gast)


Lesenswert?

Hallo

Also die Adressen für die Layer passen.
Es wird auch schon was angezeigt fonts und grafik.

Das was nicht geht sind linien und Kreise.

Die lib verwende ich auch 1:1 mit einen SED 1335 dort gehts.

void GLCD_Line(int X1, int Y1,int X2,int Y2,int layer)
{
int CurrentX, CurrentY, Xinc, Yinc,
    Dx, Dy, TwoDx, TwoDy,
  TwoDxAccumulatedError, TwoDyAccumulatedError;

Dx = (X2-X1); // obliczenie sk³adowej poziomej
Dy = (Y2-Y1); // obliczenie sk³adowej pionowej

TwoDx = Dx + Dx; // podwojona sk³adowa pozioma
TwoDy = Dy + Dy; // podwojona sk³adowa pionowa

CurrentX = X1; // zaczynamy od X1
CurrentY = Y1; // oraz Y1

Xinc = 1; // ustalamy krok zwiêkszania pozycji w poziomie
Yinc = 1; // ustalamy krok zwiêkszania pozycji w pionie

if(Dx < 0) // jesli sk³adowa pozioma jest ujemna
  {
  Xinc = -1; // to bêdziemy siê "cofaæ" (krok ujemny)
  Dx = -Dx;  // zmieniamy znak sk³adowej na dodatni
  TwoDx = -TwoDx; // jak równie¿ podwojonej sk³adowej
  }

if (Dy < 0) // jeœli sk³adowa pionowa jest ujemna
  {
  Yinc = -1; // to bêdziemy siê "cofaæ" (krok ujemny)
  Dy = -Dy; // zmieniamy znak sk³adowej na dodatki
  TwoDy = -TwoDy; // jak równiez podwojonej sk³adowej
  }

GLCD_SetPixel(X1,Y1, color,layer); // stawiamy pierwszy krok (zapalamy 
pierwszy piksel)

if ((Dx != 0) || (Dy != 0)) // sprawdzamy czy linia sk³ada siê z wiêcej 
ni¿ jednego punktu ;)
  {
  // sprawdzamy czy sk³adowa pionowa jest mniejsza lub równa sk³adowej 
poziomej
  if (Dy <= Dx) // jeœli tak, to idziemy "po iksach"
    {
    TwoDxAccumulatedError = 0; // zerujemy zmienn¹
    do // ruszamy w drogê
    {
      CurrentX += Xinc; // do aktualnej pozycji dodajemy krok
      TwoDxAccumulatedError += TwoDy; // a tu dodajemy podwojon¹ 
sk³adow¹ pionow¹
      if(TwoDxAccumulatedError > Dx)  // jeœli TwoDxAccumulatedError 
jest wiêkszy od Dx
        {
        CurrentY += Yinc; // zwiêkszamy aktualn¹ pozycjê w pionie
        TwoDxAccumulatedError -= TwoDx; // i odejmujemy TwoDx
        }
       GLCD_SetPixel(CurrentX,CurrentY, color,layer);// stawiamy 
nastêpny krok (zapalamy piksel)
       }while (CurrentX != X2); // idziemy tak d³ugo, a¿ osi¹gniemy 
punkt docelowy
     }
   else // w przeciwnym razie idziemy "po igrekach"
      {
      TwoDyAccumulatedError = 0;
      do
      {
        CurrentY += Yinc;
        TwoDyAccumulatedError += TwoDx;
        if(TwoDyAccumulatedError>Dy)
          {
          CurrentX += Xinc;
          TwoDyAccumulatedError -= TwoDy;
          }
         GLCD_SetPixel(CurrentX,CurrentY, color,layer);
         }while (CurrentY != Y2);
    }
  }
}

void GLCD_SetPixel(unsigned int x,unsigned int y, int color,int layer)
{
unsigned char tmp = 0;
unsigned int address;
if(layer==1)address=SED1335_GRAPHICSTART1 + (40 * y) + (x/8);
if(layer==2)address=SED1335_GRAPHICSTART2 + (40 * y) + (x/8);
if(layer==3)address=SED1335_GRAPHICSTART3 + (40 * y) + (x/8);

GLCD_SetCursorAddress(address);

GLCD_WriteCommand(SED1335_MREAD);
tmp = GLCD_ReadData();

if(color)
  tmp |= (1 << (SED1335_FX - (x % 8)));
else
  tmp &= ~(1 << (SED1335_FX - (x % 8)));

GLCD_SetCursorAddress(address);
GLCD_WriteCommand(SED1335_MWRITE);
GLCD_WriteData(tmp);
}


Die Linen sind gestrichelt.

Hat jemand eine Idee???

Vielen Dank

Gruß
Paul

von Paul (Gast)


Lesenswert?

Hallo

Nun ist alles IO.

Der fehler liegt in den Timing beim ReadGLCD.

Hier der Code der jetzt funktioniert
unsigned char GLCD_ReadData(void)
{
unsigned char tmp;
SED1335_DATA_DIR = 0x00;

SED1335_CONTROL_PORT &= ~(SED1335_CS);
SED1335_CONTROL_PORT &= ~(SED1335_RD);
_delay_us(10); //Hier war der fehler habe da 10µs eingefügt und nun 
gehts
tmp =  SED1335_DATA_PIN;
asm("nop");
asm("nop");
SED1335_CONTROL_PORT |= (SED1335_RD | SED1335_CS );

return tmp;
}


der 1S13700 scheint ziemlich kritsisch mit Timings zu sein der 1335 war 
da nicht anfällig.

So aber nun gehts.

Das Display ist bedeutend besser im Tageslicht betrieb als das ledsee.
Das BL habe ich Dimmbar gemacht über PWM und Mosfet geht auch ganz gut.

Nun muß ich noch den Touch anschließen.

Danke

Gruß

Paul

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.