Hallo zusammen,
Das ist mein erstes Projekt, so verstehe wenn euch von mir übel ist :)
ich sollte EPD Display von Electronic Assembly
initialisieren. Das Problem liegt darin, dass ich die Funktion
1
delayMs()
nicht definieren weiß. Deswegen bitte ich um eure Hilfe. Dazu gibt´s
Code, die ich implementiert habe. Anbei sende ich euch Datenblatt von
meinem Controller.
Danke im Voraus!
LG
1
constUINT16lut_data[]=
2
{
3
0x82,0x00,0x00,0x00,0xAA,0x00,0x00,0x00,0xAA,
4
0xAA,0x00,0x00,0xAA,0xAA,0xAA,0x00,0x55,0xAA,
5
0xAA,0x00,0x55,0x55,0x55,0x55,0xAA,0xAA,0xAA,
6
0xAA,0x55,0x55,0x55,0x55,0xAA,0xAA,0xAA,0xAA,
7
0x15,0x15,0x15,0x15,0x05,0x05,0x05,0x05,0x01,
8
0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
9
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
10
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
11
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,
12
0x45,0xF1,0xFF,0x5F,0x55,0x01,0x00,0x00,0x00,
13
};
14
15
voidspiOut(UINT8display_data)
16
{
17
UINT16count;
18
UINT16cs=0;
19
UINT16sdin;
20
UINT16sclk;
21
for(count=0;count<8;count++)//send bit 7...0
22
{
23
if(display_data&0x80)//consider leftmost bit,set line high if bit is 1,low if bit
24
sdin=1;
25
else
26
sdin=0;
27
sclk=1;
28
display_data<<=1;
29
sclk=0;
30
}
31
cs=1;
32
}
33
voidwriteCmd(chardisplay_data)
34
{
35
UINT16dc=0;
36
spiOut(display_data);
37
}
38
39
voidwriteData(chardisplay_data)
40
{
41
UINT16dc=1;
42
spiOut(display_data);
43
}
44
45
voidinit(void)
46
{
47
UINT16i;
48
49
UINT16cs=1;//perform reset CS idle=1
50
UINT16sclk=0;
51
UINT16rst=1;
52
delayMs(1);
53
rst=0;
54
delayMs(2);
55
rst=1;
56
delayMs(3);
57
58
writeCmd(0x10);//do not enter deep sleep mode
59
writeData(0x00);
60
61
writeCmd(0x11);//data entry mode setting, 0x01, Y decrement, X dincrement
62
writeData(0x01);
63
writeCmd(0x44);//set RAM X-address start-end position
64
writeData(0x00);//RAM X-address start at 00H
65
writeData(0x11);//RAM X-address end et 11H -> 17D, that is (17+1*4=72) start-end position
66
67
writeData(0xAB);//RAM Y-address start at ABH -> 171D
68
writeData(0x00);//RAM Y-address end at 00H
69
writeCmd(0x4E);//set RAM x address count to 0
70
writeData(0xAB);
71
72
writeCmd(0xF0);//booster feedback selection, 0x1F -> internal feedback is used
73
writeData(0x1F);//0x83
74
writeCmd(0x21);//bypass the RAM data into the display,enable pass
writeCmd(0x24);//data write into RAM after this command
93
94
for(i=0;i<3096;i++)//3096 = 172x72/8x2, (2-Bit per dot)
95
{
96
writeData(dat);
97
}
98
writeCmd(0x20);
99
100
//Booster disable
101
writeCmd(0x22);//display updata sequence option, in page 33
102
writeData(0x02);
103
writeCmd(0x20);
104
}
Ich hab auch diese hier http://www.microchip.com/forums/m523604.aspx
gefunden aber weiß nicht, wie ich das implementieren kann.
Warum...verstehe nicht ganz gut wie mein Controller überhaupt
funktioniert!
1
voidDelayMs(unsignedintmsec)
2
{
3
unsignedinttWait,tStart;
4
5
tWait=(SYS_FREQ/2000)*msec;// SYS_FREQ (80000000)
6
tStart=ReadCoreTimer();
7
while((ReadCoreTimer()-tStart)<tWait);// wait for the time to pass
List G. schrieb:> tWait=(SYS_FREQ/2000)*msec; // SYS_FREQ (80000000)
Wenn dein Controller tatsächlich mit 80MHz läuft, würde diese Zeile
schon bei einem Delay von 2ms zu einem Überlauf des 'unsigned int'
führen. Prüf doch bitte nochmal, ob das nicht etwa 8 MHz sind und ob
SYS_FREQ überhaupt definiert ist.
Matthias Sch. schrieb:> List G. schrieb:>> tWait=(SYS_FREQ/2000)*msec; // SYS_FREQ (80000000)>> Wenn dein Controller tatsächlich mit 80MHz läuft, würde diese Zeile> schon bei einem Delay von 2ms zu einem Überlauf des 'unsigned int'> führen. Prüf doch bitte nochmal, ob das nicht etwa 8 MHz sind und ob> SYS_FREQ überhaupt definiert ist.
na das ist nur ein Beispiel, das ich im Netz gefunden hab. Wie kann ich
im Datenblatt auslesen auf welcher Frequenz arbeitet mein Controller ?
danke!
List G. schrieb:> Dazu gibt´s Code, die ich implementiert habe.List G. schrieb:> na das ist nur ein Beispiel, das ich im Netz gefunden hab.
Wie jetzt nochmal?
Für mich war bisher immmer "implementieren != finden"
> Wie kann ich im Datenblatt auslesen auf welcher Frequenz arbeitet> mein Controller ?
Im Datenblatt findest du das nicht unittelbar. Welchen streng geheimen
Controller mit welchen Quarz hast du denn?
List G. schrieb:> da ist mein Controller
Hach.
WELCHEN Mikrocontroller willst du mit diesem selbst gefundenen
C-Programm beglücken? Oder umgangssprachlicher: mit WAS steuerst du das
Display an?
List G. schrieb:> also NFC M7894 B13 Chip :)
Ach, der! Damit ist es ja ganz einfach...
Dann jetzt noch den Schaltplan bitte und dann sind wir auch gleich
fertig. Hör mal: DU hast ein Problem und suchst Hilfe. Und deshalb
solltest du freiwillig alles bereitstellen, dass Andere die dir evtl.
helfen können das auch wollen.
BTW: bitte keine Doppelposts!
Lothar Miller schrieb:> List G. schrieb:>> also NFC M7894 B13 Chip :)> Ach, der! Damit ist es ja ganz einfach...>> Dann jetzt noch den Schaltplan bitte und dann sind wir auch gleich> fertig. Hör mal: DU hast ein Problem und suchst Hilfe. Und deshalb> solltest du freiwillig alles bereitstellen, dass Andere die dir evtl.> helfen können das auch wollen.>> BTW: bitte keine Doppelposts!
ja du hast wirklich recht..wenn ich wusste was ich bereit stellen muss,
wahrscheinlich brauche deine Hilfe überhaupt nicht !? ;)