S1D13700 Probleme (jaja ich weiß, wie so oft bei lcds)

Gast #976600
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
}
#976999
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.
Gast #977093
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
#977102
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.
Gast #977133
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
Gast #977251
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 :)
#977687
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
}
Gast #977722
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
#977725
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?
#977726
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.
#977925
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;
Gast #977934
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
#977976
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?
Gast #978032
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
#978450
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!
#1007669
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 :|
#1007682
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren