Forum: Mikrocontroller und Digitale Elektronik S1D13700 Probleme (jaja ich weiß, wie so oft bei lcds)


von morph (Gast)


Lesenswert?

Leider gibts keine Ausgabe.

Anschlussbelegung habe ich schon zig mal überprüft, ich weiß leider 
nicht mehr weiter!

Hat nicht irgendwer ein Code-Sniplet? Im Netz findet sich nichts in C 
für GENAU diesen Controller und ich will endlich die Software 
ausschließen können.

Desweiteren: Ein Display mit interner Spannungserzeugung, fiept das? ich 
schätz die Frequenz auf gute 5-7kHz und variabel vom eingestellten 
Kontrast.

1
#include "s1d13700.h"
2
3
4
#define S1D13700_DATA_PORT    LATE
5
#define S1D13700_DATA_PORT_IN  PORTE
6
#define S1D13700_DATA_DIR    TRISE
7
8
#define S1D13700_CONTROL_DIR  TRISH
9
10
#define S1D13700_A0        LATHbits.LATH0
11
#define S1D13700_WR        LATHbits.LATH1
12
#define S1D13700_RD        LATHbits.LATH2
13
#define S1D13700_CS        LATHbits.LATH3
14
#define S1D13700_RES      LATHbits.LATH4
15
16
void GLCD_Initialize(void);
17
void GLCD_WriteCommand(unsigned char);
18
void GLCD_WriteData(unsigned char);
19
void GLCD_InitPorts(void);
20
void GLCD_SetCursorAddress(unsigned int);
21
void GLCD_SetPixel(unsigned int,unsigned int, int);
22
//-------------------------------------------------------------------------------------------------
23
//-------------------------------------------------------------------------------------------------
24
void GLCD_Initialize(void)
25
{
26
  GLCD_InitPorts();
27
  S1D13700_RES = 0;
28
  Delay10KTCYx( 500 );
29
  S1D13700_RES = 1;
30
31
  GLCD_WriteCommand(S1D13700_SYSTEM_SET);
32
  GLCD_WriteData(S1D13700_SYS_P1);
33
  GLCD_WriteData(S1D13700_SYS_P2);
34
  GLCD_WriteData(S1D13700_FY);
35
  GLCD_WriteData(S1D13700_CR);
36
  GLCD_WriteData(S1D13700_TCR);
37
  GLCD_WriteData(S1D13700_LF);
38
  GLCD_WriteData(S1D13700_APL);
39
  GLCD_WriteData(S1D13700_APH);
40
41
  GLCD_WriteCommand(S1D13700_SCROLL);
42
  GLCD_WriteData(S1D13700_SAD1L);
43
  GLCD_WriteData(S1D13700_SAD1H);
44
  GLCD_WriteData(S1D13700_SL1);
45
  GLCD_WriteData(S1D13700_SAD2L);
46
  GLCD_WriteData(S1D13700_SAD2H);
47
  GLCD_WriteData(S1D13700_SL2);
48
  GLCD_WriteData(S1D13700_SAD3L);
49
  GLCD_WriteData(S1D13700_SAD3H);
50
  GLCD_WriteData(S1D13700_SAD4L);
51
  GLCD_WriteData(S1D13700_SAD4H);
52
53
  GLCD_WriteCommand(S1D13700_CSRFORM);
54
  GLCD_WriteData(S1D13700_CRX);
55
  GLCD_WriteData(S1D13700_CSRF_P2);
56
57
  GLCD_WriteCommand(S1D13700_CGRAM_ADR);
58
  GLCD_WriteData(S1D13700_SAGL);
59
  GLCD_WriteData(S1D13700_SAGH);
60
61
  GLCD_WriteCommand(S1D13700_CSRDIR_R);
62
63
  GLCD_WriteCommand(S1D13700_HDOT_SCR);
64
  GLCD_WriteData(S1D13700_SCRD);
65
66
  GLCD_WriteCommand(S1D13700_OVLAY);
67
  GLCD_WriteData(S1D13700_OVLAY_P1);
68
69
  GLCD_WriteCommand(S1D13700_DISP_ON);
70
  GLCD_WriteData(S1D13700_FLASH);
71
}
72
//-------------------------------------------------------------------------------------------------
73
//-------------------------------------------------------------------------------------------------
74
void GLCD_InitPorts(void)
75
{
76
  S1D13700_DATA_DIR = 0x00;
77
  S1D13700_CONTROL_DIR = 0x00;
78
  S1D13700_RES = 1;
79
}
80
//-------------------------------------------------------------------------------------------------
81
//-------------------------------------------------------------------------------------------------
82
void GLCD_WriteData(unsigned char dataToWrite)
83
{
84
  // M6800 Family
85
  S1D13700_CS = 0;
86
87
  S1D13700_DATA_PORT = dataToWrite;
88
  S1D13700_DATA_DIR = 0x00;
89
90
  S1D13700_A0 = 0;
91
  S1D13700_WR = 0;
92
  S1D13700_RD = 1;
93
94
  Delay10TCYx(1);
95
  S1D13700_A0 = 0;
96
  S1D13700_WR = 0;
97
  S1D13700_RD = 0;
98
  S1D13700_CS = 1;
99
  Delay10TCYx(1);
100
}
101
//-------------------------------------------------------------------------------------------------
102
//-------------------------------------------------------------------------------------------------
103
void GLCD_WriteCommand(unsigned char commandToWrite)
104
{
105
  S1D13700_CS = 0;
106
  S1D13700_DATA_PORT = commandToWrite;
107
  S1D13700_DATA_DIR = 0x00;
108
109
  S1D13700_A0 = 1;
110
  S1D13700_WR = 0;
111
  S1D13700_RD = 1;
112
113
  Delay10TCYx(1);
114
  S1D13700_A0 = 0;
115
  S1D13700_WR = 0;
116
  S1D13700_RD = 0;
117
  S1D13700_CS = 1;
118
  Delay10TCYx(1);
119
}
120
//-------------------------------------------------------------------------------------------------
121
//-------------------------------------------------------------------------------------------------
122
unsigned char GLCD_ReadData(void)
123
{
124
  unsigned char tmp;
125
  S1D13700_CS = 0;
126
  S1D13700_A0 = 1;
127
  S1D13700_WR = 1;
128
  S1D13700_RD = 1;
129
130
  NOP();
131
  S1D13700_DATA_DIR = 0xFF;
132
  NOP();
133
134
  tmp =  S1D13700_DATA_PORT_IN;
135
136
  Delay10TCYx(1);
137
  S1D13700_A0 = 0;
138
  S1D13700_WR = 0;
139
  S1D13700_RD = 0;
140
  S1D13700_CS = 1;
141
  Delay10TCYx(1);
142
143
  return tmp;
144
}
145
//-------------------------------------------------------------------------------------------------
146
//-------------------------------------------------------------------------------------------------
147
void GLCD_SetPixel(unsigned int x,unsigned int y, int color)
148
{
149
  unsigned char tmp = 0;
150
  unsigned int address = S1D13700_GRAPHICSTART + (40 * y) + (x/8); 
151
  GLCD_SetCursorAddress(address);
152
153
  GLCD_WriteCommand(S1D13700_MREAD);
154
  tmp = GLCD_ReadData();
155
156
  if(color)
157
    tmp |= (1 << (S1D13700_FX - (x % 8)));
158
  else
159
    tmp &= ~(1 << (S1D13700_FX - (x % 8)));
160
161
  GLCD_SetCursorAddress(address);
162
  GLCD_WriteCommand(S1D13700_MWRITE);
163
164
  GLCD_WriteData(tmp);
165
//  GLCD_WriteData(0xFF);
166
}
167
//-------------------------------------------------------------------------------------------------
168
//-------------------------------------------------------------------------------------------------
169
void GLCD_SetCursorAddress(unsigned int address)
170
{
171
  GLCD_WriteCommand(S1D13700_CSRW);
172
  GLCD_WriteData((unsigned char)(address & 0xFF));
173
  GLCD_WriteData((unsigned char)(address >> 8));
174
}

von gerhard (Gast)


Lesenswert?

hallo,
unter folgendem link findest du eine library für den sed1335, welcher 
sw-mäßig kompatibel zum s1d13700 ist.

gruss
gerhard

von Benedikt K. (benedikt)


Lesenswert?

morph wrote:
> Desweiteren: Ein Display mit interner Spannungserzeugung, fiept das? ich
> schätz die Frequenz auf gute 5-7kHz und variabel vom eingestellten
> Kontrast.

Normalerweise nicht. Sowas hatte ich bisher nur, wenn der Wandler 
überlastet war.

gerhard wrote:
> unter folgendem link findest du eine library für den sed1335, welcher
> sw-mäßig kompatibel zum s1d13700 ist.

Mal davon abgesehen, dass dein Link fehlt, ist der 13700 nicht 100% 
Software kompatibel. Epson hat da eine gemeine Falle eingebaut:

2. When using a crystal, after writing SYSTEM SET command wait 3ms or 
more to allow the internal clock to become stable before writing the 
remaining eight parameters.

@morph
Bau mal die Pause ein, es kann gut sein, dass es daran liegt.

von gerhard (Gast)


Lesenswert?

hier der vergessene link:
http://en.radzio.dxp.pl/sed1335/


gruss
gerhard

von gerhard (Gast)


Lesenswert?

@benedikt:
dein o.a. zitat kann ich im datenblatt des s1d13700 (rev. 4.01) 
nirgendwo finden
was aber in morpph's source code fehlt ist ein delay von mind. 3ms nach 
dem reset und vor dem system set command (das wird aber auch vom sed1335 
gefordert).


gruss
gerhard

von Benedikt K. (benedikt)


Lesenswert?

gerhard wrote:
> @benedikt:
> dein o.a. zitat kann ich im datenblatt des s1d13700 (rev. 4.01)
> nirgendwo finden

Stammt aus dem 13700F02 Revision 1.02 Datenblatt von 2007/06/06, Seite 
72.

> was aber in morpph's source code fehlt ist ein delay von mind. 3ms nach
> dem reset und vor dem system set command (das wird aber auch vom sed1335
> gefordert).

Ja, nur beim 13700 ist (zusätzlich) der Delay zwischen dem System Set 
Command und dessen Parametern notwendig. Das ist das gemeine daran.
Erst dann startet nämlich der Quarz und der ist für die Registerzugriffe 
notwendig.
Das stand auch in den älteren Versionen des Datenblatts nicht drein, ich 
bin selbst schon drüber gestolpert und es gibt hier im Forum auch einen 
Thread dazu.

von gerhard (Gast)


Lesenswert?

>gerhard wrote:
>> @benedikt:
>> dein o.a. zitat kann ich im datenblatt des s1d13700 (rev. 4.01)
>> nirgendwo finden

>Stammt aus dem 13700F02 Revision 1.02 Datenblatt von 2007/06/06, Seite
>72.
offensichtlich gibt es 3 varianten des s1d13700:
s1d13700f00
s1d13700f01
s1d13700f02

und nur in der f02 sind die 3ms nach dem system set erwähnt.

gruss
gerhard

von Benedikt K. (benedikt)


Lesenswert?

gerhard wrote:

> offensichtlich gibt es 3 varianten des s1d13700:
> s1d13700f00
> s1d13700f01
> s1d13700f02
>
> und nur in der f02 sind die 3ms nach dem system set erwähnt.

Ja, aber alle 3 benötigen die Pause...

von morph (Gast)


Lesenswert?

Leider bin ich mittlerweile etwas schlauer:

Das Ding hängt per FPC 24, 0.5mm pitch an der schaltung, ich kann leider 
nicht alle Signale durchpiepsen, ich denk also es kann zusätzlich noch 
an der Verkabelung liegen!

Ich meld mich wenn ich das ausschließen kann.

btw es fiept nur an einer der Schaltungen (hab 2 aufgebaut, sollten 
identisch sein) an der anderen ist das Geräusch zwar da, aber wohl 
unhörbar und stört höchstens katzen und hunde =)

Falls es dann immernoch nicht geht, werd ich wohl mal den Schaltpla 
posten!

Herzlichen Dank vorerst :)

von Michael H. (morph1)


Lesenswert?

leider (oder zum glück) kann ich die verkabelung ausschließen!

hier mal der aktuelle code, das display ist serienmäßig als M6800 
verkabelt, man kann es aber mit etwas zinn umjumpern :)

wäre generic besser?

nochmals vielen dank für alles :)
1
#include "s1d13700.h"
2
3
4
#define S1D13700_DATA_PORT    LATE
5
#define S1D13700_DATA_PORT_IN  PORTE
6
#define S1D13700_DATA_DIR    TRISE
7
8
#define S1D13700_CONTROL_DIR  TRISH
9
10
#define S1D13700_A0        LATHbits.LATH0
11
#define S1D13700_WR        LATHbits.LATH1
12
#define S1D13700_RD        LATHbits.LATH2
13
#define S1D13700_CS        LATHbits.LATH3
14
#define S1D13700_RES      LATHbits.LATH4
15
16
void GLCD_Initialize(void);
17
void GLCD_WriteCommand(unsigned char);
18
void GLCD_WriteData(unsigned char);
19
void GLCD_InitPorts(void);
20
void GLCD_SetCursorAddress(unsigned int);
21
void GLCD_SetPixel(unsigned int,unsigned int, int);
22
//-------------------------------------------------------------------------------------------------
23
//-------------------------------------------------------------------------------------------------
24
void GLCD_Initialize(void)
25
{
26
  GLCD_InitPorts();
27
  S1D13700_RES = 0;
28
  Delay10KTCYx( 500 );
29
  S1D13700_RES = 1;
30
  Delay10KTCYx( 500 );
31
32
  GLCD_WriteCommand(S1D13700_SYSTEM_SET);
33
  GLCD_WriteData(S1D13700_SYS_P1);
34
  GLCD_WriteData(S1D13700_SYS_P2);
35
  GLCD_WriteData(S1D13700_FY);
36
  GLCD_WriteData(S1D13700_CR);
37
  GLCD_WriteData(S1D13700_TCR);
38
  GLCD_WriteData(S1D13700_LF);
39
  GLCD_WriteData(S1D13700_APL);
40
  GLCD_WriteData(S1D13700_APH);
41
42
  GLCD_WriteCommand(S1D13700_SCROLL);
43
  GLCD_WriteData(S1D13700_SAD1L);
44
  GLCD_WriteData(S1D13700_SAD1H);
45
  GLCD_WriteData(S1D13700_SL1);
46
  GLCD_WriteData(S1D13700_SAD2L);
47
  GLCD_WriteData(S1D13700_SAD2H);
48
  GLCD_WriteData(S1D13700_SL2);
49
  GLCD_WriteData(S1D13700_SAD3L);
50
  GLCD_WriteData(S1D13700_SAD3H);
51
  GLCD_WriteData(S1D13700_SAD4L);
52
  GLCD_WriteData(S1D13700_SAD4H);
53
54
  GLCD_WriteCommand(S1D13700_CSRFORM);
55
  GLCD_WriteData(S1D13700_CRX);
56
  GLCD_WriteData(S1D13700_CSRF_P2);
57
58
  GLCD_WriteCommand(S1D13700_CGRAM_ADR);
59
  GLCD_WriteData(S1D13700_SAGL);
60
  GLCD_WriteData(S1D13700_SAGH);
61
62
  GLCD_WriteCommand(S1D13700_CSRDIR_R);
63
64
  GLCD_WriteCommand(S1D13700_HDOT_SCR);
65
  GLCD_WriteData(S1D13700_SCRD);
66
67
  GLCD_WriteCommand(S1D13700_OVLAY);
68
  GLCD_WriteData(S1D13700_OVLAY_P1);
69
70
  GLCD_WriteCommand(S1D13700_DISP_ON);
71
  GLCD_WriteData(S1D13700_FLASH);
72
}
73
//-------------------------------------------------------------------------------------------------
74
//-------------------------------------------------------------------------------------------------
75
void GLCD_InitPorts(void)
76
{
77
  S1D13700_DATA_DIR = 0x00;
78
  S1D13700_CONTROL_DIR = 0x00;
79
  S1D13700_RES = 1;
80
}
81
//-------------------------------------------------------------------------------------------------
82
//-------------------------------------------------------------------------------------------------
83
void GLCD_WriteData(unsigned char dataToWrite)
84
{
85
  // M6800 Family
86
  S1D13700_CS = 0;
87
88
  S1D13700_DATA_PORT = dataToWrite;
89
  S1D13700_DATA_DIR = 0x00;
90
91
  S1D13700_A0 = 0;
92
  S1D13700_WR = 0;
93
  S1D13700_RD = 1;
94
95
  NOP();
96
  S1D13700_A0 = 0;
97
  S1D13700_WR = 0;
98
  S1D13700_RD = 0;
99
  S1D13700_CS = 1;
100
}
101
//-------------------------------------------------------------------------------------------------
102
//-------------------------------------------------------------------------------------------------
103
void GLCD_WriteCommand(unsigned char commandToWrite)
104
{
105
  S1D13700_CS = 0;
106
  S1D13700_DATA_PORT = commandToWrite;
107
  S1D13700_DATA_DIR = 0x00;
108
109
  S1D13700_A0 = 1;
110
  S1D13700_WR = 0;
111
  S1D13700_RD = 1;
112
113
  NOP();
114
  S1D13700_A0 = 0;
115
  S1D13700_WR = 0;
116
  S1D13700_RD = 0;
117
  S1D13700_CS = 1;
118
}
119
//-------------------------------------------------------------------------------------------------
120
//-------------------------------------------------------------------------------------------------
121
unsigned char GLCD_ReadData(void)
122
{
123
  unsigned char tmp;
124
  S1D13700_CS = 0;
125
  S1D13700_A0 = 1;
126
  S1D13700_WR = 1;
127
  S1D13700_RD = 1;
128
129
  NOP();
130
  S1D13700_DATA_DIR = 0xFF;
131
  NOP();
132
133
  tmp =  S1D13700_DATA_PORT_IN;
134
135
  NOP();
136
  S1D13700_A0 = 0;
137
  S1D13700_WR = 0;
138
  S1D13700_RD = 0;
139
  S1D13700_CS = 1;
140
141
  return tmp;
142
}
143
//-------------------------------------------------------------------------------------------------
144
//-------------------------------------------------------------------------------------------------
145
void GLCD_SetPixel(unsigned int x,unsigned int y, int color)
146
{
147
  unsigned char tmp = 0;
148
  unsigned int address = S1D13700_GRAPHICSTART + (40 * y) + (x/8); 
149
  GLCD_SetCursorAddress(address);
150
151
  GLCD_WriteCommand(S1D13700_MREAD);
152
  tmp = GLCD_ReadData();
153
154
  if(color)
155
    tmp |= (1 << (S1D13700_FX - (x % 8)));
156
  else
157
    tmp &= ~(1 << (S1D13700_FX - (x % 8)));
158
159
  GLCD_SetCursorAddress(address);
160
  GLCD_WriteCommand(S1D13700_MWRITE);
161
162
  GLCD_WriteData(tmp);
163
//  GLCD_WriteData(0xFF);
164
}
165
//-------------------------------------------------------------------------------------------------
166
//-------------------------------------------------------------------------------------------------
167
void GLCD_SetCursorAddress(unsigned int address)
168
{
169
  GLCD_WriteCommand(S1D13700_CSRW);
170
  GLCD_WriteData((unsigned char)(address & 0xFF));
171
  GLCD_WriteData((unsigned char)(address >> 8));
172
}

von gerhard (Gast)


Lesenswert?

hallo michael,
hast du benedikts und mein posting gelesen?

benedikt hat auf ein delay nach dem command system set hingewiesen.

und meine wenigkeit würde ein delay von mind. 3ms nach dem reset 
einfügen.

danach würde ich mal die steuerleitungen (cs, a0, rd, wr) messen ob die 
tatsächlich auch angesteuert werden und wie lange.

p.s. doppeltes posten des gleichen codes bringt auch nicht viel.

gruss
gerhard

von Michael H. (morph1)


Lesenswert?

1
  GLCD_InitPorts();
2
  S1D13700_RES = 0;
3
  Delay10KTCYx( 500 );
4
  S1D13700_RES = 1;
5
  Delay10KTCYx( 500 );

das delay is ja nun eingebaut ;)

aber die idee mit den steuerleitungen is gut, wofür hat man denn ein 
oszi :)

leider verwundert mich noch was anderes, sollte das display nicht 
zumindest irgendwas anzeigen wenn ich den konstrast voll aufdrehe?

von Benedikt K. (benedikt)


Lesenswert?

Michael H. wrote:

> leider verwundert mich noch was anderes, sollte das display nicht
> zumindest irgendwas anzeigen wenn ich den konstrast voll aufdrehe?

Wenn es nicht initialisiert ist nicht, denn erst mit dem System Set 
Command wird der Quarzoszillator gestartet und somit das LCD 
angesteuert.

von Michael H. (morph1)


Lesenswert?

ok, bins nur von den kleinen 128x64 gewohnt das sie komplett zumachen 
und man den raster sieht :)

also signale sind alle da, ob deren polarität nun passt oder nicht, das 
sei dahingestellt ;)

kann auch nur immer 2 gleichzeitig anzeigen, hab nur ein HM1005 :/

von Peter B. (atmelfriend)


Lesenswert?

Das hier ist eine Initialisierungssequenz fuer Generic Mode, vielleicht 
hilft dirs.


    //Generic bus direct
    //Reset the chip
    S1d13700_Res_act;
    delay_ms(2);
    S1d13700_Res_inact;
    delay_ms(5);

    //Exit sleep mode after reset
    S1d13700_Command;       //Set virtual a15 to 1
    S1_PSMR = 0x00;         //8008
    delay_us(100);
    S1_MCR = 0x30;          //Dummy write, see manual 8000
    delay_us(100);

    S1_MCR = 0x30;          //Single panel 8000
    S1_HCSR = 87;           //FX 8001
    S1_VCSR = 10;           //FY 8002
    S1_CBPRR = 39;          //Bytes per line (320 / 8) - 1 8003
    S1_TCBPRR = 70;         //25 MHz
    S1_FHR = 239;           //240 lines 8005
    S1_HARR0 = 40;          //8006
    S1_HARR1 = 0;           //8007

    //First screen block starts at 0
    S1_SB1AR0 = 0x00;       //800b
    S1_SB1AR1 = 0x00;       //800c
    S1_SB1SR = 239;         //800d
    //Second screen block starts at 2580h = 320/8 * 240
    S1_SB2AR0 = 0x80;
    S1_SB2AR1 = 0x25;
    S1_SB2SR = 239;
    //Third screen block
    S1_SB3AR0 = 0x00;       //8011
    S1_SB3AR1 = 0x4b;       //8012
    //Forth screen block
    S1_SB4AR0 = 0x00;       //8013
    S1_SB4AR1 = 0x00;       //8014

    //Cursor, anyway not needed
    S1_CWR = 0x04;          //8015
    S1_CHR = 0x86;          //8016

    //Horizontal pixel scroll
    S1_HPSR = 0x00;         //801b

    //Overlay control
    S1_OR = 0x00;           //3 grafic layers, OR mode 8018
    S1_DAR = 0b11010100;    //Cursor attributes + display screen blocks 
on 800a

    //Erase the complete chip memory
    S1d13700_Data;                                      //Set the 
virtual A15 to Low
    memset((unsigned char*)S1d13700_MEMSTART_LAY1, 0x00, 
S1d13700_MEMSIZE);
    memset((unsigned char*)S1d13700_MEMSTART_LAY1, 0x20, 9600);

    #ifdef DEBUG_GEN
      printf("S1D13700 Text: ");
    #endif
    S1d13700_Command;       //Set virtual a15 to 1
    if(S1_MCR != 0x30)
    {
        S1_DER = 0x00;          //Display off to avoid demages
        global_err = GLB_ERR_S1;
        #ifdef DEBUG_GEN
          printf("FAILURE!\r\n");
        #endif
    }
    else
    {
        S1_DER = 0x01;          //Display enable 8009
        #ifdef DEBUG_GEN
          printf("OK\r\n");
        #endif
    }

    S1d13700_Data;                                      //Set the 
virtual A15 to Low
    S1d13700_txt_ptr = (unsigned char*)S1d13700_MEMSTART_LAY1;

von gerhard (Gast)


Lesenswert?

@michael:
es fehlt nach wie vor ein delay zwischen dem command system set und dem 
1.parameter:
1
GLCD_WriteCommand(S1D13700_SYSTEM_SET);
2
Delay10KTCYx( 300 );
3
GLCD_WriteData(S1D13700_SYS_P1);

gruss
gerhard

von Michael H. (morph1)


Lesenswert?

danke euch beiden :) werde mich heute nachmittag wieder dransetzen!

wenn ichs schaffe häng ich den quelltext klarerweise hier ins forum :)


aber nochmal zum konstrast:

egal wohin ich das poti drehe, es gibt weder beim reset noch sonstwann 
linien, oder eben ein komplett ausgefülltest display wie ichs von meinen 
kleinen mit dem ks108 kenne!

ist dieses verhalten normal oder haperts schon beim konstrast?

von gerhard (Gast)


Lesenswert?

@michael,
was steht den im datenblatt des lcd's zum thema kontrast-spannung?
normalerweise sind dort typ. werte für bestimmte temperaturen angegeben. 
den würde ich mal einstellen.

gruss
gerhard

von Michael H. (morph1)


Lesenswert?

datenblatt meint 26-30V, das display gibt 28V her

leider wars nicht das delay und es zeigt wirklich NICHTS an, in keinem 
zustand

von Benedikt K. (benedikt)


Lesenswert?

Mess mal am Quarz. Wenn der nicht schwingt ist der 13700 noch im Power 
Down Mode. Der Fehler liegt dann also irgendwo ganz am Anfang von der 
Initialisierung.

von Michael H. (morph1)


Lesenswert?

ok, quarz schwingt nicht

werd dem mal nachgehn :)

von Michael H. (morph1)


Lesenswert?

so, habs auf generic umgelötet, leider bringt mich das nicht weiter :/

weder zeigt das display irgendwas an, noch schwingt der quarz :| 
leitungen passen, bin mit meinem latein am ende :/

von Michael H. (morph1)


Lesenswert?

so das display zeigt nun endlich was an!!

das summen/fiepen allerdings krieg ich nicht weg und was er anzeigt is 
auch grauslich :|

von gerhard (Gast)


Lesenswert?

@michael:
>so das display zeigt nun endlich was an!!
wie kam es dazu?

kann es sein dass du auf den falschen layer schreibst?
wie sieht deine layeraufteilung aus?

gruss
gerhard

von Michael H. (morph1)


Lesenswert?

es war scheinbar ein problem beim timing, die art wie ich auf die ports 
zugegriffen hab war wohl nicht ausreichend schnell/gleichzeitig.

hab mich dann etwas genauer an deinen link gehalten, nur gehts so 
halbwegs.

ich kann löschen, einzelne punkte (an falsche positionen) setzen und 
verworrene texte ausgeben.

außerdem flimmert die darstellung stark.

ich hoffe ich krieg das noch irgendwie in den griff, aber es ist eine 
erleichterung das es zumindest mal ein lebenszeichen von sich gegeben 
hat!

von Michael H. (morph1)


Lesenswert?

Hallo :)

Also ich kann nun den Textmodus uneingeschränkt nutzen.

Leider ist das beim Grafikmodus nicht so ganz der Fall.

Schon das löschen des Bildspeichers klappt nicht, nur ein kleiner Teil, 
die oberen 5-8 Zeilen werden gelöscht.

Ich komm nicht dahinter woran es nun liegt :|

von Benedikt K. (benedikt)


Lesenswert?

Könnte es sein, dass du nur auf 256Bytes Zugriff hast?
Bei 40Byte pro Zeile wären 256Bytes etwa 6,4 Zeilen.

von Michael H. (morph1)


Lesenswert?

void GLCD_SetCursorAddress(unsigned int address)
{
  GLCD_WriteCommand(S1D13700_CSRW);
  GLCD_WriteData((unsigned char)(address & 0xFF));
  GLCD_WriteData((unsigned char)(address >> 8));
}

das sieht für mich recht brauchbar aus, es wird auch für den textmodus 
verwendet und 40*30 = 1200, da funzt es auch

sollte also kein fehler hierbei sein.

mir kommt eher vor als würde er den zeilenumbruch nicht richtig machen, 
also rechts über den rand schreiben.

soweit ichs verstanden habe hängt das aber von CR ab und das gilt sowohl 
für text als auch grafik.

von Michael H. (morph1)


Lesenswert?

korrektur, es sind eher 128byte

etwas mehr als 3 zeilen werden gelöscht :| das display macht mich 
langsam irre.

von Ting yu L. (lgeorge123)


Lesenswert?

Hi morph (Gast), can you post the code of s1d13700.h as I need it on 
pic18f452 , thanks !!

von morph1 (Gast)


Lesenswert?

the code here isnt working, use the page search, i posted the current 
state somewhere else

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.